Steady State
LinearOptics
The time evolution of LinearOptics
follows the equation:
\[\frac{d\vec{\beta}}{dt} = G\vec{\beta} + \vec{\Omega}\]
which has a well-defined formal solution:
\[\vec{\beta}_{s} = -G^{-1}\vec{\Omega}\]
Scalar
In the Scalar
case, the solution is a Vector
:
using CoupledDipoles
r =[1 2 0;
1 0 1.0]
atoms = Atom(Cube(), Array(transpose(r)), 10)
laser = Laser(PlaneWave3D(), 1e-6, 1.0)
problem = LinearOptics(Scalar(), atoms, laser)
βₛ = steady_state(problem) # N-array
2-element Vector{ComplexF64}:
0.00037248446780549374 + 0.000622054602877758im
-0.00018637781550957864 + 0.0004955719149269015im
Vectorial
In Vectorial
case, one gets a Matrix
:
- each row represents the
x,y,z
-components of the polarization - each colums correspond to different atoms
# (...) same as Scalar case
problem = LinearOptics(Vectorial(), atoms, laser)
βₛ = steady_state(problem) # 3xN-matrix
3×2 Matrix{ComplexF64}:
0.000385645+0.000694009im -0.000109419+0.000587907im
-0.0+0.0im -0.0+0.0im
-0.0+0.0im -0.0+0.0im
NonLinearOptics
NonLinearOptics
does not have a formal solution, therefore steady_state
have two approaches
- Use
NewtonRaphson
methods (default) - If
ode_solver=true
, use thetime_evolution
function over the periodtspan = (0, 250)
and return the final state
MeanField
The solution is a Vector
of size 2N
, corresponding to [$\langle \sigma^- \rangle$ $\langle \sigma^z \rangle$].
# (...) same as Scalar case
problem = NonLinearOptics(MeanField(), atoms, laser)
βₛ = steady_state(problem) # default with NewtonRaphson
βₛ = steady_state(problem; ode_solver=true) # bruteforce time evoltuion
4-element Vector{ComplexF64}:
0.0003724840385984874 + 0.0006220539385480154im
-0.0001863778636785792 + 0.0004955717059511942im
-0.9999989486079716 + 0.0im
-0.999999439343638 + 0.0im
PairCorrelation
The solution is a Vector
of size 2N + 4N^2
, corresponding to [$\sigma^{-}, \sigma^{z}, \sigma^{z}\sigma^{-}, \sigma^{+}\sigma^{-}, \sigma^{-}\sigma^{-}, \sigma^{z}\sigma^{z}$].
# (...) same as Scalar case
problem = NonLinearOptics(PairCorrelation(), atoms, laser)
βₛ = steady_state(problem) # default with NewtonRaphson
βₛ = steady_state(problem; ode_solver=true) # bruteforce time evoltuion
20-element Vector{ComplexF64}:
0.0003724840352055006 + 0.0006220539349245167im
-0.0001863778646998907 + 0.0004955716851249581im
-0.9999989486078887 + 0.0im
-0.9999994393436333 + 0.0im
0.0 + 0.0im
-0.0003724838697200902 - 0.0006220535493750646im
0.00018637759236526198 - 0.000495571179211688im
0.0 + 0.0im
0.0 + 0.0im
2.388494645885594e-7 - 3.0052961751755523e-7im
2.3884946458574537e-7 + 3.0052961752087586e-7im
0.0 + 0.0im
0.0 + 0.0im
-3.958044104219162e-7 + 1.8107310277958134e-8im
-3.9580441042191605e-7 + 1.8107310277957492e-8im
0.0 + 0.0im
0.0 + 0.0im
0.99999838795215 - 6.845823432320048e-129im
0.99999838795215 - 1.0625480329777334e-23im
0.0 + 0.0im
CoupledDipoles.steady_state
— Functionsteady_state(problem::LinearOptics{Scalar})
Solve x=-G\Ω
, with default interaction_matrix
and laser_field
.
steady_state(problem::LinearOptics{Vectorial})
Solve x=-G\Ω
, with default interaction_matrix
and laser_field
. The solution x is reshaped as a 3xN matrix.
steady_state(problem::NonLinearOptics{MeanField}; tmax = 250.0, reltol = 1e-11, abstol = 1e-10, m = 90, ode_solver = false)