summaryrefslogtreecommitdiff
path: root/eit.xmds
blob: 50419f5cf07ed8702b509532fd6b7a9a1657c46d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?xml version="1.0" encoding="UTF-8"?>
<simulation xmds-version="2">

  <!-- While not strictly necessary, the following two tags are handy. -->
  <author>Hunter Rew</author>
  <description>
    Model of 3 state atom
  </description>

  <!--
  This element defines some constants.  It can be used for other
  features as well, but we will go into that in more detail later.
  -->
  <features>
    <precision> double </precision>
    <globals>
      <![CDATA[
        real drive;
        real decay;
        real decay_bc;
        complex r_ca;
        real probe = .0001;
        real delta1;
        real dephase_bc;
        
      ]]>
     </globals>
     <validation kind="run-time"/>
     <arguments>
      <argument name="drive_arg" type="real" default_value="0.1" />
      <argument name="decay_arg" type="real" default_value="10.0" />
      <argument name="decay_bc_arg" type="real" default_value="0.001" />
      <argument name="domain_min" type="real" default_value="-1" />
      <argument name="domain_max" type="real" default_value="1" />
      <argument name="delta1_arg" type="real" default_value="0" />
      <argument name="dephase_bc_arg" type="real" default_value="0" />
      <argument name="final_time" type="real" default_value="10000" />
      <![CDATA[
        drive = drive_arg;
        decay = decay_arg;
        decay_bc = decay_bc_arg;
        delta1 = delta1_arg;
        dephase_bc = dephase_bc_arg;
        r_ca = decay - i*delta1;
      ]]>
    </arguments>
   </features>

  <!--
  This part defines all of the dimensions used in the problem,
  in this case, only the dimension of 'time' is needed.
  -->
  <geometry>
    <propagation_dimension> t </propagation_dimension>
    <transverse_dimensions>
      <dimension name="detuning" lattice="256"  domain="(domain_min, domain_max)" />
    </transverse_dimensions>
  </geometry>

  <!-- A 'vector' describes the variables that we will be evolving. -->
  <vector name="Gamma" type="complex">
    <components> r_ab r_cb </components>
    <initialisation>
      <![CDATA[
      r_ab = decay + i*(delta1 + detuning);
      r_cb = decay_bc + i*detuning + dephase_bc;
      ]]>
    </initialisation>
  </vector>
  <vector name="population" type="complex" dimensions="detuning">
    <components>
      Paa Pbb Pcc Pab Pca Pcb 
    </components>
    <initialisation>
      <![CDATA[
      Pcc = .5;
      Pbb = .5;
      Paa = Pab = Pca = Pcb = 0;
      ]]>
    </initialisation>
  </vector>

  <sequence>
    <!--
    Here we define what differential equations need to be solved
    and what algorithm we want to use.
    -->
    <integrate algorithm="ARK89" interval="final_time" tolerance="1e-10">
      <samples>10</samples>
      <operators>
        <integration_vectors>population</integration_vectors>
        <![CDATA[
        dPcc_dt = i*drive*(-Pca) - i*drive*Pca + decay*Paa - decay_bc*Pcc + decay_bc*Pbb;

        dPbb_dt = i*probe*Pab - i*probe*(-Pab) + decay*Paa - decay_bc*Pbb + decay_bc*Pcc;

        dPaa_dt = -i*probe*Pab + i*probe*(-Pab) - i*drive*(-Pca) + i*drive*Pca - 2*decay*Paa;

        dPab_dt = -r_ab*Pab + i*probe*(Pbb-Paa) + i*drive*Pcb;

        dPca_dt = -r_ca*Pca + i*drive*(Paa-Pcc) - i*probe*Pcb;

        dPcb_dt = -r_cb*Pcb - i*probe*Pca + i*drive*Pab;
        ]]>
        <dependencies>Gamma</dependencies>
      </operators>
    </integrate>
  </sequence>

  <!-- This part defines what data will be saved in the output file -->
  <output format="hdf5" >
    <sampling_group basis="detuning" initial_sample="yes">
      <!-- <moments>PaaR PaaI PbbR PbbI PccR PccI PabR PabI PcaR PcaI PcbR PcbI</moments>
      <dependencies>population</dependencies>
      <![CDATA[
        PaaR = Paa.Re();
        PaaI = Paa.Im();
        PbbR = Pbb.Re();
        PbbI = Pbb.Im();
        PccR = Pcc.Re();
        PccI = Pcc.Im();
        PabR = Pab.Re();
        PabI = Pab.Im();
        PcaR = Pca.Re();
        PcaI = Pca.Im();
        PcbR = Pcb.Re();
        PcbI = Pcb.Im();
      ]]> -->
      <moments>PabI</moments>
      <dependencies>population</dependencies>
      <![CDATA[
      	PabI = Pab.Im();
      ]]>
    </sampling_group>
  </output>
</simulation>