From 5dc70bc823ccbd97e718f68341c84d3f2fbf2596 Mon Sep 17 00:00:00 2001 From: Eugeniy Mikhailov Date: Mon, 10 Oct 2011 23:08:53 -0400 Subject: four-wave mixing added --- xmds2/Nlevels_no_dopler_with_z_4wm/Makefile | 37 +++ .../Nlevels_no_dopler_with_z.xmds | 259 +++++++++++++++++++++ xmds2/Nlevels_no_dopler_with_z_4wm/pp.m | 173 ++++++++++++++ 3 files changed, 469 insertions(+) create mode 100644 xmds2/Nlevels_no_dopler_with_z_4wm/Makefile create mode 100644 xmds2/Nlevels_no_dopler_with_z_4wm/Nlevels_no_dopler_with_z.xmds create mode 100644 xmds2/Nlevels_no_dopler_with_z_4wm/pp.m diff --git a/xmds2/Nlevels_no_dopler_with_z_4wm/Makefile b/xmds2/Nlevels_no_dopler_with_z_4wm/Makefile new file mode 100644 index 0000000..a89800a --- /dev/null +++ b/xmds2/Nlevels_no_dopler_with_z_4wm/Makefile @@ -0,0 +1,37 @@ +### -*- make -*- +### This file is part of the Debian xmds package +### Copyright (C) 2006 Rafael Laboissiere +### This file is relased under the GNU General Public License +### NO WARRANTIES! + +### This makefile can be used to build and run the XMDS examples + +XMDS_FILES = $(shell ls *.xmds) +RUN_FILES = $(patsubst %.xmds,%.run,$(XMDS_FILES)) +CC_FILES = $(patsubst %.xmds,%.cc,$(XMDS_FILES)) +XSIL_FILES = $(patsubst %.xmds,%.xsil,$(XMDS_FILES)) +M_FILES = $(patsubst %.xmds,%.m,$(XMDS_FILES)) + +XMDS = xmds2 +XSIL2GRAPHICS = xsil2graphics + +all: $(M_FILES) + +%.run: %.xmds + $(XMDS) $< + mv $(patsubst %.xmds,%,$<) $@ + +%.xsil: %.run + ./$< + +%.m: %.xsil + $(XSIL2GRAPHICS) $< + +plot: $(M_FILES) + octave pp.m + +clean: + rm -f $(CC_FILES) $(RUN_FILES) $(M_FILES) $(XSIL_FILES) *.wisdom.fftw3 *.dat octave-core *.wisdom *.pdf + +.PRECIOUS: %.run %.xsil %.m +.PHONY: all clean diff --git a/xmds2/Nlevels_no_dopler_with_z_4wm/Nlevels_no_dopler_with_z.xmds b/xmds2/Nlevels_no_dopler_with_z_4wm/Nlevels_no_dopler_with_z.xmds new file mode 100644 index 0000000..b17ef61 --- /dev/null +++ b/xmds2/Nlevels_no_dopler_with_z_4wm/Nlevels_no_dopler_with_z.xmds @@ -0,0 +1,259 @@ + + + + Nlevels_no_dopler_with_z + + Eugeniy Mikhailov + + License GPL. + + Solving 4 level atom in N-field configuration, + with field propagation along spatial axis Z + no Doppler broadening + + We assume four-wave mixing condition when w3-w4=w2-w1 i.e. fields E3 and E4 drive the same + resonance as fields E2 and E1. + + + * --------------- |4> + * \ \ + * \ E3 \ -------- |3> + * \ E4 \ / \ + * \ \ / E2 \ + * \ / \ E1 + * |2> -------------- \ + * \ \ + * \ \ + * ------------- |1> + * + + + We are solving + dE/dz+(1/c)*dE/dt=i*eta*rho_ij, where j level is higher then i. + Note that E is actually a Rabi frequency of electromagnetic field not the EM field + in xmds terms it looks like + dE_dz = i*eta*rhoij - 1/c*L[E], here we moved t dependence to Fourier space + + VERY IMPORTANT: all Rabi frequency should be given in [1/s], if you want to + normalize it to something else look drho/dt equation. + No need to renormalizes eta as long as its express through i + the upper level decay rate in the same units as Rabi frequency. + + + + + + + + + + + + + + + + + + + + + + + + + + + z + + + + + + + + E1 E2 E3 E4 + + + + + + + + + r11 r22 r33 r12 r13 r14 r23 r24 r34 r44 + + + + // this is because if r11=1, everything else is 0 and then every small increment + // seems to be huge and adaptive solver makes smaller and smaller steps. + // As quick and dirty fix I reshuffle initial population + // 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 + // r11 = 1; r22 = 0; r33 = 0; r44 = 0; + // r12 = 0; r13 = 0; r14 = 0; + // r23 = 0; r24 = 0; + // r34 = 0; + ]]> + + + + + + + + + + + 200 200 + + + density_matrix + E_field + + + + + + + Lt + + + E_field + density_matrix + + + + + + + + + + + + + E_field + I1_out I2_out I3_out I4_out + + + + + + + density_matrix + + r11_out r22_out r33_out r44_out + r12_re_out r12_im_out r13_re_out r13_im_out r14_re_out r14_im_out + r23_re_out r23_im_out r24_re_out r24_im_out + r34_re_out r34_im_out + + + + + + + + + diff --git a/xmds2/Nlevels_no_dopler_with_z_4wm/pp.m b/xmds2/Nlevels_no_dopler_with_z_4wm/pp.m new file mode 100644 index 0000000..ab536be --- /dev/null +++ b/xmds2/Nlevels_no_dopler_with_z_4wm/pp.m @@ -0,0 +1,173 @@ +Nlevels_no_dopler_with_z + +%% field propagation +z_1=z_1*100; % z in cm +t_1=t_1*1e6; % time now measured in uS +figure(1) +subplot(1,3,1); imagesc(z_1, t_1, I1_out_1); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('I_1') +title('I_1') +subplot(1,3,2); imagesc(z_1, t_1, I2_out_1); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('I_2') +title('I_2') +subplot(1,3,3); imagesc(z_1, t_1, I3_out_1); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('I_3') +title('I_3') + +print('-color','fields_propagation.eps') + + + +%% fields before and after the cell +figure(2) +subplot(1,3,1); +plot( ... + t_1,I1_out_1(:,1),'-;before;', "linewidth", 4, ... + t_1,I1_out_1(:,end), '-;after;', "linewidth", 4 ... + ) +xlabel('t (uS)') +ylabel('I_1 (1/s)^2') +title('I_1 before and after cell') +subplot(1,3,2); +plot( ... + t_1,I2_out_1(:,1),'-;before;', "linewidth", 4, ... + t_1,I2_out_1(:,end), '-;after;', "linewidth", 4 ... + ) +xlabel('t (uS)') +ylabel('I_2 (1/s)^2') +title('I_2 before and after cell') +subplot(1,3,3); +plot( ... + t_1,I3_out_1(:,1),'-;before;', "linewidth", 4, ... + t_1,I3_out_1(:,end), '-;after;', "linewidth", 4 ... + ) +xlabel('t (uS)') +ylabel('I_3 (1/s)^2') +title('I_3 before and after cell') + +[b, a]=butter(3, 0.05); +I2_out_after=I2_out_1(:,end); +I2_out_after_filtered=filtfilt(b,a,I2_out_after); +[m,max_pos_before]=max(I2_out_1(:,1) ); [m,max_pos_after]=max(I2_out_after_filtered); +delay_time=t_1(max_pos_after)-t_1(max_pos_before); +printf('Second field delay time = %f uS\n',delay_time); + +print('-color','fields_before_after_cell.eps') + +figure(4) +I2_max_in=max(I2_out_1(:,1)); +I2_max_out=max(I2_out_1(:,end)); +I2_in_norm=(I2_out_1(:,1))/I2_max_in; +I2_out_norm=(I2_out_1(:,end))/I2_max_out; +tmin=-0.05; +tmax=0.05; +indx=(t_1>=tmin & t_1<=tmax); % soom in in time to this region +plot( ... + t_1(indx),I2_in_norm(indx),'-;before;', "linewidth", 4, ... + t_1(indx),I2_out_norm(indx), '-;after;', "linewidth", 4 ... + ) +xlim([tmin,tmax],'manual'); +xlabel('t (uS)') +ylabel('I_2') +title('I_2 before and after cell normalized') +print('-color','probe_before_after_cell.eps') + +%return; + +%% all density matrix elements in one plot +% diagonal populations, +% upper triangle real part of coherences, +% lower diagonal imaginary part of coherences +z_2=z_2*100; % z in cm +t_2=t_2*1e6; % time now measured in uS +figure(3) +subplot(4,4,1); imagesc (z_2, t_2, r11_out_2); caxis([0,1]); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('rho_{11}') +title('rho_{11}') +subplot(4,4,6); imagesc (z_2, t_2, r22_out_2); caxis([0,1]); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('rho_{22}') +title('rho_{22}') +subplot(4,4,11); imagesc (z_2, t_2, r33_out_2); caxis([0,1]); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('rho_{33}') +title('rho_{33}') +subplot(4,4,16); imagesc (z_2, t_2, r44_out_2); caxis([0,1]); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('rho_{44}') +title('rho_{44}') +% real parts of coherences +subplot(4,4,2); imagesc(z_2, t_2, r12_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{12})') +title('Real(rho_{12})') +subplot(4,4,3); imagesc(z_2, t_2, r13_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{13})') +title('Real(rho_{13})') +subplot(4,4,4); imagesc(z_2, t_2, r14_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{14})') +title('Real(rho_{14})') +subplot(4,4,7); imagesc(z_2, t_2, r23_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{23})') +title('Real(rho_{23})') +subplot(4,4,8); imagesc(z_2, t_2, r24_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{24})') +title('Real(rho_{24})') +subplot(4,4,12); imagesc(z_2, t_2, r34_re_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Real(rho_{34})') +title('Real(rho_{34})') +% imaginary parts of coherences +subplot(4,4,5); imagesc(z_2, t_2, r12_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{12})') +title('Imag(rho_{12})') +subplot(4,4,9); imagesc(z_2, t_2, r13_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{13})') +title('Imag(rho_{13})') +subplot(4,4,10); imagesc(z_2, t_2, r23_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{23})') +title('Imag(rho_{23})') +subplot(4,4,13); imagesc(z_2, t_2, r14_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{14})') +title('Imag(rho_{14})') +subplot(4,4,14); imagesc(z_2, t_2, r24_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{24})') +title('Imag(rho_{24})') +subplot(4,4,15); imagesc(z_2, t_2, r34_im_out_2); colorbar +xlabel('z (cm)') +ylabel('t (uS)') +zlabel('Imag(rho_{34})') +title('Imag(rho_{34})') + + -- cgit v1.2.3