DickeModel.ClassicalDicke

For examples of usage, go to Examples for ClassicalDicke.

DickeModel.ClassicalDicke.ClassicalDickeSystemType
struct ClassicalDickeSystem <: DickeSystem

Subtype of ClassicalSystems.ClassicalSystem which represents the classical Dicke model with the given parameters $ω_0$, $ω$, and $γ$. See Eq. (5) of Ref. [13]. To generate this struct, use the constructor

ClassicalDickeSystem(;ω₀::Real,ω::Real,γ::Real)

For example, system = ClassicalDickeSystem(ω₀=1, ω=1, γ=1).

This struct may be passed to all functions in this module that require an instance of DickeSystem, as well as functions in other modules that require ClassicalSystems.ClassicalSystem, such as ClassicalSystems.integrate.

source

Phase space

DickeModel.ClassicalDicke.PointFunction
function Point(;Q::Real,q::Real,P::Real,p::Real)

Returns the array [Q,q,P,p]. This ordering is used throughout this package.

source
function Point(system::DickeSystem;
    Q::Real,
    P::Real,
    p::Real,
    ϵ::Real,
    sgn::Union{typeof(-),typeof(+)} = +)

Returns a list [Q,q,P,p], where q is calculated with ClassicalDicke.q_of_ϵ. If there are no solutions for $q$, an error is raised.

source
DickeModel.ClassicalDicke.energy_shell_volumeFunction
function energy_shell_volume(system::DickeSystem,ϵ::Real)

Returns the volume of the classical energy shell in the phase space, that is,

\[\mathcal{V}(\mathcal{M}_ϵ) = \int_\mathcal{M} \text{d}\mathbf{x} \, \delta(h_\text{cl}(\mathbf{x})- \epsilon).\]

This is computed using a modified version of Eq. (A2) in [15], (the integral is performed in the variable $Q$ instead of $y$). That equation was originally derived in Ref. [3], with different units for $\epsilon$.

The integration is performed using QuadGK.

Arguments

  • system should be a subtype of DickeSystem.

  • ϵ is the energy.

source
DickeModel.ClassicalDicke.phase_space_dist_squaredFunction
function phase_space_dist_squared(x::AbstractVector{<:Real},y::AbstractVector{<:Real})

Returns the phase-space distance $d_{\mathcal{M}}(\mathbf{x},\mathbf{y})$ (See App. C of Ref [13]), where x and y are vectors in the form [Q,q,P,p].

source
DickeModel.ClassicalDicke.classical_path_random_samplerFunction
function classical_path_random_sampler(system::DickeSystem; ϵ::Real, dt::Real=3)

This function returns a function sample(), which produces random points within the classical energy shell at energy ϵ. The function sample() returns points from a fixed chaotic trajectory picked at random separated by a fixed time interval dt. If the classical dynamics are ergodic, which only happens in chaotic regions, this produces random points in the energy shell.

Arguments

Keyword arguments

  • ϵ is the energy of the energy shell from where to sample.
  • dt is the fixed time interval that separates the points that are returned by sample().
source

Energy minimizing

DickeModel.ClassicalDicke.minimum_energyFunction
function minimum_energy(system::DickeSystem)

Returns the ground-state energy, as given by multiplying Eq. (15) of Ref. [3] by $\omega_0$ (because in that work they use $\epsilon =E/(\omega_0 j)$, and in this module we use $\epsilon = E/j$).

Arguments

source
DickeModel.ClassicalDicke.minimum_ϵ_forFunction
function minimum_ϵ_for(system::DickeSystem;
    Q::Union{Real,Nothing}=nothing,
    q::Union{Real,Nothing}=nothing,
    P::Union{Real,Nothing}=nothing,
    p::Union{Real,Nothing}=nothing)

Returns the minimum energy $\epsilon$ when constraining the system to three fixed values of the coordinates $Q$, $q$, $P$, $p$.

Arguments

Keyword arguments

  • You may pass either $(Q,q,P)$ or $(q,P,p)$. The other combinanations are not implemented.

This function can be especially useful to draw contours of the available phase space (see Drawing contours of the available phase space)

source
DickeModel.ClassicalDicke.minimum_energy_pointFunction
function minimum_energy_point(system::DickeSystem,
    Qsign::Union{typeof(-),typeof(+)} = +)

Returns the ground-state coordinate, that is, (0, 0, 0, 0) for the normal phase and $\mathbf{x}_\text{GS}$ below Eq. (7) of Ref. [13] for the superradiant phase.

Arguments

  • system should be a subtype of DickeSystem.

  • Qsign toggles the sign of the $Q$ coordinate in the superradiant phase, that is, + for $\mathbf{x}_\text{GS}$ and - for $\widetilde{\mathbf{x}}_\text{GS}$ . Defaults to +.

source
DickeModel.ClassicalDicke.normal_frequencyFunction
function normal_frequency(system::DickeSystem,
    sgn::Union{typeof(-),typeof(+)} = +)

Returns the ground-state normal frequency, that is, $\Omega_{\epsilon_{\text{GS}}}^{A,B}$ at the bottom of page 3 of Ref. [13].

Arguments

  • system should be a subtype of DickeSystem.

  • sgn is - for $\Omega^A$ and + for $\Omega^B$. Defaults to +.

Note: This function currently only works for the supperadiant phase.

source

Roots in $q$

DickeModel.ClassicalDicke.discriminant_of_q_solutionFunction
function discriminant_of_q_solution(system::DickeSystem; 
    Q::Real,
    P::Real,
    p::Real,
    ϵ::Real)

Returns the discriminant of the second degree equation in $q$ given by

\[ h_\text{cl}(Q,q,P,p)=\epsilon,\]

where $h_\text{cl}$ is given by Eq. (5) of Ref. [13].

Arguments

Keyword arguments

  • Q, P, p, and ϵ are the values of $Q$, $P$, $p$, and $\epsilon$, respectively.
source
DickeModel.ClassicalDicke.q_of_ϵFunction
function q_of_ϵ(system::DickeSystem;
    Q::Real,
    P::Real,
    p::Real,
    ϵ::Real,
    sgn::Union{typeof(-),typeof(+)}=+,
    returnNaNonError::Bool=true)

Returns the solutions $q_\pm$ of the second degree equation in $q$ given by

\[ h_\text{cl}(Q,q,P,p)=\epsilon,\]

where $h_\text{cl}$ is given by Eq. (5) of Ref. [13].

Arguments

Keyword arguments

  • Q, P, p, and ϵ are values of $Q$, $P$, $p$, and $\epsilon$, respectively.
  • sgn is + for $q_+$ and - for $q_-$
  • If returnNaNonError is true, then NaN is returned if there are no solutions. If it is false, and error is raised.
source
DickeModel.ClassicalDicke.q_signFunction
function q_sign(system::DickeSystem,
    x::AbstractVector{<:Real},
    ϵ::Real=hamiltonian(system)(x))

Returns the sign of the root of the second degree equation in $q$ given by

\[ h_\text{cl}(Q,q,P,p)=\epsilon.\]

That is, this function returns + if q=x[2] ≈ q_of_ϵ(system;Q=x[1],P=x[3],p=x[4],ϵ=ϵ,sgn=+) and returns - if q=x[2] ≈ q_of_ϵ(system;Q=x[1],P=x[3],p=x[4],ϵ=ϵ,sgn=-).

Arguments

  • system should be a subtype of DickeSystem.

  • x is a vector in the form [Q,q,P,p].

  • ϵ should be the energy of x. If this is not passed, it is computed using hamiltonian(system)(x).

source

Atomic boundary of energy shells