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 the time_evolution function over the period tspan = (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_stateFunction
steady_state(problem::LinearOptics{Scalar})

Solve x=-G\Ω, with default interaction_matrix and laser_field.

source
steady_state(problem::LinearOptics{Vectorial})

Solve x=-G\Ω, with default interaction_matrix and laser_field. The solution x is reshaped as a 3xN matrix.

source
steady_state(problem::NonLinearOptics{MeanField}; tmax = 250.0, reltol = 1e-11, abstol = 1e-10, m = 90, ode_solver = false)
source