Ionisation.jl
Luna.Ionisation.ADK_threshold
— MethodADK_threshold(ionpot)
Determine the lowest electric field strength at which the ADK ionisation rate for the ionisation potential ionpot
is non-zero to within 64-bit floating-point precision.
Luna.Ionisation.barrier_suppression
— Methodbarrier_suppression(ionpot, Z)
Calculate the barrier-suppresion field strength for the ionisation potential ionpot
and charge state Z
.
Luna.Ionisation.ionfrac
— Methodionfrac(rate, E, δt)
Given an ionisation rate function rate
and an electric field array E
sampled with time spacing δt
, calculate the ionisation fraction as a function of time on the same time axis.
The function rate
should have the signature rate!(out, E)
and place its results into out
, like the functions returned by e.g. ionrate_fun!_ADK
or ionrate_fun!_PPTcached
.
Luna.Ionisation.ionrate_fun!_ADK
— Functionionrate_fun!_ADK(ionpot::Float64, threshold=true)
ionrate_fun!_ADK(material::Symbol)
Return a closure ionrate!(out, E)
which calculates the ADK ionisation rate for the electric field E
and places the result in out
. If threshold
is true, use ADK_threshold
to avoid calculation below floating-point precision. If cycle_average
is true
, calculate the cycle-averaged ADK ionisation rate instead.
Luna.Ionisation.ionrate_fun!_PPTaccel
— Methodionrate_fun!_PPTaccel(material::Symbol, λ0; kwargs...)
ionrate_fun!_PPTaccel(ionpot::Float64, λ0, Z, l; kwargs...)
Create an accelerated (interpolated) PPT ionisation rate function.
Luna.Ionisation.ionrate_fun!_PPTcached
— Methodionrate_fun!_PPTcached(material::Symbol, λ0; kwargs...)
ionrate_fun!_PPTcached(ionpot::Float64, λ0, Z, l; kwargs...)
Create a cached (saved) interpolated PPT ionisation rate function. If a saved lookup table exists, load this rather than recalculate.
Keyword arguments
N::Int
: Number of samples with which to create theCSpline
interpolant.Emax::Number
: Maximum field strength to include in the interpolant.cachedir::String
: Path to the directory where the cache should be stored and loaded from. Defaults to HOME/.luna/pptcache
Other keyword arguments are passed on to ionrate_fun_PPT
Luna.Ionisation.ionrate_fun_PPT
— Methodionrate_fun_PPT(ionpot::Float64, λ0, Z, l; kwargs...)
Create closure to calculate PPT ionisation rate.
Keyword arguments
sum_tol::Number
: Relative tolerance used to truncate the infinite sum.cycle_average::Bool
: Iffalse
(default), calculate the cycle-averaged ratesum_integral::Bool
: whether to approximate the infinite sum in the PPT rate equation with an integral (this neglects the multiphoton thresholds).Δα::Number
: polarisability difference between the ground state and the cation (in SI units) to calculate the Stark shift of the ground-state energy levels. Defaults to 0.msum::Bool
: for l ≠ 0, whether or not to sum over different m states. Defaults totrue
.Cnl::Real
: Pre-calculatedCₙₗ
constant. If not given, defaults to the approximate expression from the PPT papers.occupancy
: Occupancy of the state(s) from which ionisation is considered. Defaults to 2 for a state with two electrons (spin up/down).
References
[1] Ilkov, F. A., Decker, J. E. & Chin, S. L. Ionization of atoms in the tunnelling regime with experimental evidence using Hg atoms. Journal of Physics B: Atomic, Molecular and Optical Physics 25, 4005–4020 (1992)
[2] Bergé, L., Skupin, S., Nuter, R., Kasparian, J. & Wolf, J.-P. Ultrashort filaments of light in weakly ionized, optically transparent media. Rep. Prog. Phys. 70, 1633–1713 (2007) (Appendix A)
[3] A. Couairon and A. Mysyrowicz, "Femtosecond filamentation in transparent media," Physics Reports 441(2–4), 47–189 (2007).
Luna.Ionisation.keldysh
— Methodkeldysh(material, λ, E)
Calculate the Keldysh parameter for the given material
at wavelength λ
and electric field strength E
.
Luna.Ionisation.φ
— Methodφ(m, x)
Calculate the φ function for the PPT ionisation rate.
Note that wm(x) in [1] and φm(x) in [2] look slightly different but are in fact identical.