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 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.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_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