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.000347004+0.000192822im -0.000293954-5.47096e-5im
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.0003724840386004647 + 0.0006220539385510853im
-0.0001863778636805565 + 0.0004955717059481242im
-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.00037248403520545755 + 0.0006220539349244842im
-0.00018637786469991762 + 0.0004955716851249633im
-0.9999989486078886 + 0.0im
-0.9999994393436333 + 0.0im
0.0 + 0.0im
-0.0003724838697201426 - 0.0006220535493751911im
0.00018637759236537834 - 0.0004955711792119313im
0.0 + 0.0im
0.0 + 0.0im
2.388494645887755e-7 - 3.0052961751459104e-7im
2.388494645858018e-7 + 3.0052961751927947e-7im
0.0 + 0.0im
0.0 + 0.0im
-3.958042380025274e-7 + 1.8107278897628807e-8im
-3.958042380025274e-7 + 1.8107278897628482e-8im
0.0 + 0.0im
0.0 + 0.0im
0.99999838795215 - 6.744127389838634e-129im
0.99999838795215 - 8.96971611984418e-24im
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)