summaryrefslogtreecommitdiff
path: root/useful_functions.m
diff options
context:
space:
mode:
Diffstat (limited to 'useful_functions.m')
-rw-r--r--useful_functions.m28
1 files changed, 21 insertions, 7 deletions
diff --git a/useful_functions.m b/useful_functions.m
index 74dd9a5..4b239a5 100644
--- a/useful_functions.m
+++ b/useful_functions.m
@@ -72,7 +72,9 @@ function [L0m, polarizability_m]=L0_and_polarization_submatrices( ...
decay_part_m=zeros(rho_size); % (NxN)x(NxN) matrix
% polarization matrix will be multiplied by field amplitude letter
% polarization is part of perturbation part of Hamiltonian
- polarizability_m=zeros(rho_size); % (NxN)x(NxN) matrix
+ polarizability_m.linear = zeros(rho_size); % (NxN)x(NxN) matrix
+ polarizability_m.left = zeros(rho_size); % (NxN)x(NxN) matrix
+ polarizability_m.right = zeros(rho_size); % (NxN)x(NxN) matrix
for p=1:rho_size
% p= j*Nlevels+k
% this might speed up stuff since less matrix passed back and force
@@ -92,7 +94,9 @@ function [L0m, polarizability_m]=L0_and_polarization_submatrices( ...
+ g_dephasing(j,k) ...
)* kron_delta(j,m)*kron_delta(k,n) ...
- kron_delta(m,n)*kron_delta(j,k)*g_decay(m,j) ;
- polarizability_m(p,s)= ( dipole_elements(j,m)*kron_delta(k,n)-dipole_elements(n,k)*kron_delta(j,m) );
+ polarizability_m.linear(p,s)= ( dipole_elements.linear(j,m)*kron_delta(k,n)-dipole_elements.linear(n,k)*kron_delta(j,m) );
+ polarizability_m.left(p,s)= ( dipole_elements.left(j,m)*kron_delta(k,n)-dipole_elements.left(n,k)*kron_delta(j,m) );
+ polarizability_m.right(p,s)= ( dipole_elements.right(j,m)*kron_delta(k,n)-dipole_elements.right(n,k)*kron_delta(j,m) );
endfor
endfor
L0m=-im_one/hbar*L0m - decay_part_m;
@@ -150,7 +154,10 @@ function L=Liouville_operator_matrix( ...
% calculate perturbed part (Hamiltonian with EM field)
% in other word interactive part of Hamiltonian
L(p0:p0+rho_size-1,s0:s0+rho_size-1)= ...
- -im_one/hbar*polarizability_m* E_field(w3i);
+ -im_one/hbar*polarizability_m.linear * E_field.linear(w3i) ...
+ -im_one/hbar*polarizability_m.left * E_field.left(w3i) ...
+ -im_one/hbar*polarizability_m.right * E_field.right(w3i) ...
+ ;
endif
% diagonal elements are self modulated
% due to rotating wave approximation
@@ -193,12 +200,16 @@ endfunction
function kappa=susceptibility(wi, rhoLiouville, dipole_elements)
% calculate susceptibility for the field at given frequency index
- Nlevels=( size(dipole_elements)(1) );
+ Nlevels=( size(dipole_elements.linear)(1) );
rho=rhoOfFreq(rhoLiouville, wi, Nlevels);
- kappa=0;
+ kappa.linear=0;
+ kappa.left=0;
+ kappa.right=0;
for i=1:Nlevels
for j=1:Nlevels
- kappa+=dipole_elements(j,i)*rho(i,j);
+ kappa.linear += dipole_elements.linear(j,i) * rho(i,j);
+ kappa.left += dipole_elements.left(j,i) * rho(i,j);
+ kappa.right += dipole_elements.right(j,i) * rho(i,j);
endfor
endfor
endfunction
@@ -233,7 +244,7 @@ function rhoLiouville=rhoLiouville_steady_state(L0m, polarizability_m, E_field,
rhoLiouville=L\rhoLiouville_dot;
endfunction
-function xi=susceptibility_steady_state_at_freq( atom_field_problem)
+function [xi_linear, xi_left, xi_right]=susceptibility_steady_state_at_freq( atom_field_problem)
% find steady state susceptibility at particular modulation frequency element
% at given E_field
global atom_properties;
@@ -247,6 +258,9 @@ function xi=susceptibility_steady_state_at_freq( atom_field_problem)
rhoLiouville=rhoLiouville_steady_state(L0m, polarizability_m, E_field, modulation_freq);
xi=susceptibility(freq_index, rhoLiouville, dipole_elements);
+ xi_linear = xi.linear;
+ xi_right = xi.right;
+ xi_left = xi.left;
endfunction
% vim: ts=2:sw=2:fdm=indent