diff options
author | Eugeniy Mikhailov <evgmik@gmail.com> | 2009-12-15 06:54:26 +0000 |
---|---|---|
committer | Eugeniy Mikhailov <evgmik@gmail.com> | 2009-12-15 06:54:26 +0000 |
commit | f2016941452e10b44afd63478645a93afb34efe8 (patch) | |
tree | 8432b554459da451f83ae8629d9296eab493616f /rb87_D1_line.m | |
parent | e7f9feea33c3a4f10a4581c64f0077f7588cf76f (diff) | |
download | multi_mode_eit-f2016941452e10b44afd63478645a93afb34efe8.tar.gz multi_mode_eit-f2016941452e10b44afd63478645a93afb34efe8.zip |
added Rb87 D1 levels structure
Diffstat (limited to 'rb87_D1_line.m')
-rw-r--r-- | rb87_D1_line.m | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/rb87_D1_line.m b/rb87_D1_line.m new file mode 100644 index 0000000..09b2359 --- /dev/null +++ b/rb87_D1_line.m @@ -0,0 +1,130 @@ +1; +useful_constants; + +% 87Rb D1 line +% +% m=-2 m=-1 m=0 m=1 m=2 +% ---- ---- ---- ---- ---- |P,F=2> +% +% ---- ---- ---- |P,F=1> +% m=-1 m=0 m=1 +% +% +% +% +% +% m=-2 m=-1 m=0 m=1 m=2 +% ---- ---- ---- ---- ---- |S,F=2> +% +% ---- ---- ---- |S,F=1> +% m=-1 m=0 m=1 + +w_hpf_ground=6834; +w_hpf_exited=817; +w_sf2 = w_hpf_ground; % Distance from |S,F=1> to |S,F=2> +w_pf1 =1e9; % something big Distance from |S,F=1> to |P,F=1> +w_pf2 = w_pf1+w_hpf_exited; %Distance from |S,F=1> to |P,F=2> +gmg=.7; % gyro magnetic ration for ground level +gme=.7; % gyro magnetic ration for exited level + + +%bottom level |F=1> +levels( 1)=struct( "ang_momentum", 0, "total_momentum", 1, "m", -1, "energy", 0, "gm", -gmg); +levels( 2)=struct( "ang_momentum", 0, "total_momentum", 1, "m", 0, "energy", 0, "gm", -gmg); +levels( 3)=struct( "ang_momentum", 0, "total_momentum", 1, "m", 1, "energy", 0, "gm", -gmg); + +%second bottom level |F=2> +levels( 4)=struct( "ang_momentum", 0, "total_momentum", 2, "m", -2, "energy", w_sf2, "gm", gmg); +levels( 5)=struct( "ang_momentum", 0, "total_momentum", 2, "m", -1, "energy", w_sf2, "gm", gmg); +levels( 6)=struct( "ang_momentum", 0, "total_momentum", 2, "m", 0, "energy", w_sf2, "gm", gmg); +levels( 7)=struct( "ang_momentum", 0, "total_momentum", 2, "m", 1, "energy", w_sf2, "gm", gmg); +levels( 8)=struct( "ang_momentum", 0, "total_momentum", 2, "m", 2, "energy", w_sf2, "gm", gmg); + +% first exited level |F=1> +levels( 9)=struct( "ang_momentum", 1, "total_momentum", 1, "m", -1, "energy", w_pf1, "gm", -gme); +levels(10)=struct( "ang_momentum", 1, "total_momentum", 1, "m", 0, "energy", w_pf1, "gm", -gme); +levels(11)=struct( "ang_momentum", 1, "total_momentum", 1, "m", 1, "energy", w_pf1, "gm", -gme); + +% second exited level |F=2> +levels(12)=struct( "ang_momentum", 1, "total_momentum", 2, "m", -2, "energy", w_pf2, "gm", gme); +levels(13)=struct( "ang_momentum", 1, "total_momentum", 2, "m", -1, "energy", w_pf2, "gm", gme); +levels(14)=struct( "ang_momentum", 1, "total_momentum", 2, "m", 0, "energy", w_pf2, "gm", gme); +levels(15)=struct( "ang_momentum", 1, "total_momentum", 2, "m", 1, "energy", w_pf2, "gm", gme); +levels(16)=struct( "ang_momentum", 1, "total_momentum", 2, "m", 2, "energy", w_pf2, "gm", gme); + +Nlevels=size(levels)(2); + + +H0=zeros(Nlevels); +ang_momentum = [1:Nlevels]; +total_momentum = [1:Nlevels]; +m = [1:Nlevels]; +gm = [1:Nlevels]; + +for i=1:Nlevels + H0(i,i) = levels(i).energy; + ang_momentum(i) = levels(i).ang_momentum; + total_momentum(i) = levels(i).total_momentum; + m(i) = levels(i).m; + gm(i) = levels(i).gm; +endfor +H0=H0*hbar; + + +dipole_elements.left = zeros(Nlevels); +dipole_elements.right = zeros(Nlevels); +dipole_elements.linear = zeros(Nlevels); +for j=1:Nlevels + for k=1:Nlevels + if ( abs(ang_momentum(j) - ang_momentum(k)) == 1) + %transition allowed for L =L' +/- 1 + % incorrect Clebsch-Gordan coefficients but should show some ideas + % but they correct within a factor, but not sign + if ( ((m(j)- m(k))==1) && ( H0(j,j) > H0(k,k)) ) + dipole_elements.left(j,k)=1; + endif + if ( ((m(j)- m(k))==-1) && ( H0(j,j) > H0(k,k)) ) + dipole_elements.right(j,k)=1; + endif + if ( ((m(j)- m(k))==0) && ( H0(j,j) > H0(k,k)) ) + dipole_elements.linear(j,k)=1; + endif + endif + endfor +endfor +dipole_elements.linear+=dipole_elements.linear'; +dipole_elements.left+=dipole_elements.left'; +dipole_elements.right+=dipole_elements.right'; + +maximum_dipole_elements=dipole_elements.linear + dipole_elements.left + dipole_elements.right; + +%defasing matrix +g_deph=0; +g_dephasing=zeros(Nlevels); +% dephasing only for non zero dipole elements (am I right?) +g_dephasing=g_deph*(abs(maximum_dipole_elements) != 0); + +% decay matrix g(i,j) correspnds to decay from i-->j +gamma=6; +g_decay=zeros(Nlevels); +for i=1:Nlevels + for j=1:Nlevels + if ( H0(i,i) > H0(j,j) ) + % only upper levels decaying and decay is always positive + g_decay(i,j)=gamma * abs( maximum_dipole_elements(i,j) ); + endif + endfor +endfor + +% ground level mixing need to be artificial +gamma_hpf=.001; +for i=1:Nlevels + for j=1:Nlevels + if ( abs( H0(i,i) - H0(j,j)) == w_hpf_ground ) + % ground hyperfine are mixed together + g_decay(i,j)=gamma_hpf; + endif + endfor +endfor + + |