diff options
-rw-r--r-- | xmds2/Nlevels_no_dopler_no_z.example/Nlevels_no_dopler_no_z_from_mathematica.xmds | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/xmds2/Nlevels_no_dopler_no_z.example/Nlevels_no_dopler_no_z_from_mathematica.xmds b/xmds2/Nlevels_no_dopler_no_z.example/Nlevels_no_dopler_no_z_from_mathematica.xmds new file mode 100644 index 0000000..d98d514 --- /dev/null +++ b/xmds2/Nlevels_no_dopler_no_z.example/Nlevels_no_dopler_no_z_from_mathematica.xmds @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<simulation xmds-version="2"> + + <name>Nlevels_no_dopler_no_z_from_mathematica</name> + + <author>Eugeniy Mikhailov</author> + <description> + License GPL. + + Solving 4 level atom in N-field configuration, + no field propagation along spatial axis included + no Doppler broadening + + For master equations look "Four-level 'N-scheme' in bare and quasi-dressed states pictures" + by T. Abi-Salloum, S. Meiselman, J.P. Davis and F.A. Narducci + Journal of Modern Optics, 56: 18, 1926 -- 1932, (2009). + + Present calculation matches Fig.3 (b) from the above paper. + Note that I need to double all Rabi frequencies to match the figure. + + * -------- |4> + * \ + * \ Ec -------- |3> + * \ / \ + * \ E2 / \ + * \ / \ E1 + * ------- |2> \ + * \ + * ------- |1> + * + + We moved to dimensionless units + t -> t*g ,time + z -> z*g/c , distance + rabi_frequency -> rabi_frequency/g + eta -> eta*c/g^2 , coupling constant + gij -> gij/g + Wij -> Wij/g + + where g is 1MHz rate + </description> + + <features> + <benchmark /> + <bing /> + <fftw plan="patient" /> + <openmp /> + <auto_vectorise /> + <globals> + <![CDATA[ + // repopulation rate (atoms flying in/out the laser beam) in MHz + const double gt=0.01/2; + // Natural linewidth of j's level in MHz + const double G3=2.7; + const double G4=3.0; + + // branching ratios + const double R41=0.0, R42=1; + const double R31=0.5, R32=0.5; + + // const double d1=0; // E2 detuning in MHz + const double d2=0; // E2 detuning in MHz + const double d3=0; // Ec detuning in MHz + + const complex E1=0.005/2; // Rabi frequency in MHz + const complex E2=5.0/2; // Rabi frequency in MHz + const complex Ec=6.0/2; // Rabi frequency in MHz + + complex E1c, E2c, Ecc; // Complex conjugated Rabi frequencies + + //complex r21, r31, r41, r32, r42, r43; + + ]]> + </globals> + </features> + + <geometry> + <propagation_dimension> t </propagation_dimension> + <transverse_dimensions> + <dimension name="d1" lattice="1280" domain="(-60, 60)" /> + </transverse_dimensions> + </geometry> + + <vector name="density_matrix" type="complex" dimensions="d1"> + <components>r11 r22 r33 r44 r12 r13 r14 r23 r24 r34 r21 r31 r41 r32 r42 r43</components> + <!-- + note one of the level population is redundant since + r11+r22+r33+r44=1 + so r11 is missing + --> + <initialisation> + <![CDATA[ + // Note: + // convergence is really slow if all populations concentrated at the bottom level |1> + // this is because if r11=1, everything else is 0 and then every small incriment + // seems to be huge and adaptive solver makes smaller and smaller steps. + // As quicj and dirty fix I reshufle initial poulation + // so some of the population sits at the second ground level |2> + // TODO: Fix above. Make the equation of motion for r11 + // and express other level, let's say r44 + // through population normalization + r22 = 0.001; r33 = 0; r44 = 0; + r12 = 0; r13 = 0; r14 = 0; + r23 = 0; r24 = 0; + r34 = 0; + ]]> + </initialisation> + </vector> + + <sequence> + <integrate algorithm="ARK45" interval="600" tolerance="1e-3"> + <samples>128</samples> + <operators> + <integration_vectors>density_matrix</integration_vectors> + <![CDATA[ + E1c = conj(E1); + E2c = conj(E2); + Ecc = conj(Ec); + + // r21=conj(r12); + // r31=conj(r13); + // r41=conj(r14); + // r32=conj(r23); + // r42=conj(r24); + // r43=conj(r34); + + // Equations of motions see page 1928 of the Frank's JMO paper + dr11_dt = gt - 2*gt*r11 + E1*i*(-r13 + r31) + 2*G3*r33*R31 + 2*G4*r44*R41; + dr12_dt = -2*gt*r12 + i*((-d1 + d2)*r12 - E2*r13 - Ec*r14 + E1*r32); + dr13_dt = -((G3 + 2*gt)*r13) + i*(-(E1*r11) - E2*r12 - d1*r13 + E1*r33); + dr14_dt = -((G4 + 2*gt)*r14) + i*(-(Ec*r12) - (d1 - d2 + d3)*r14 + E1*r34); + dr21_dt = -2*gt*r21 + i*((d1 - d2)*r21 - E1*r23 + E2*r31 + Ec*r41); + dr22_dt = gt - 2*gt*r22 + i*(-(E2*r23) - Ec*r24 + E2*r32 + Ec*r42) + 2*G3*r33*R32 + 2*G4*r44*R42; + dr23_dt = -((G3 + 2*gt)*r23) + i*(-(E1*r21) - E2*r22 - d2*r23 + E2*r33 + Ec*r43); + dr24_dt = -((G4 + 2*gt)*r24) + i*(-(Ec*r22) - d3*r24 + E2*r34 + Ec*r44); + dr31_dt = -((G3 + 2*gt)*r31) + i*(E1*r11 + E2*r21 + d1*r31 - E1*r33); + dr32_dt = -((G3 + 2*gt)*r32) + i*(E1*r12 + E2*r22 + d2*r32 - E2*r33 - Ec*r34); + dr33_dt = i*(E1*r13 + E2*r23 - E1*r31 - E2*r32) - 2*(G3 + gt)*r33; + dr34_dt = -((G3 + G4 + 2*gt)*r34) + i*(E1*r14 + E2*r24 - Ec*r32 + (d2 - d3)*r34); + dr41_dt = -((G4 + 2*gt)*r41) + i*(Ec*r21 + (d1 - d2 + d3)*r41 - E1*r43); + dr42_dt = -((G4 + 2*gt)*r42) + i*(Ec*r22 + d3*r42 - E2*r43 - Ec*r44); + dr43_dt = -((G3 + G4 + 2*gt)*r43) + i*(Ec*r23 - E1*r41 - E2*r42 + (-d2 + d3)*r43); + dr44_dt = Ec*i*(r24 - r42) - 2*(G4 + gt)*r44; + ]]> + </operators> + </integrate> + </sequence> + + + + + <!-- The output to generate --> + <output format="binary" filename="Nlevels_no_dopler_no_z_from_mathematica.xsil"> + <group> + <sampling basis="d1" initial_sample="yes"> + <dependencies>density_matrix</dependencies> + <moments>>r13_rlOut r13_imOut >r23_rlOut r23_imOut r24_rlOut r24_imOut</moments> + <![CDATA[ + r13_rlOut = r13.Re(); + r13_imOut = r13.Im(); + r23_rlOut = r23.Re(); + r23_imOut = r23.Im(); + r24_rlOut = r24.Re(); + r24_imOut = r24.Im(); + ]]> + </sampling> + </group> + </output> + +</simulation> + +<!-- +vim: ts=2 sw=2 foldmethod=indent: +--> |