Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,7 @@ docs/xml/
docs/doxygen_sqlite3.db
# sphinx & breathe output
docs/build/

# generated docs output
docs/source/models/field_ionization_comparison_c_ii_ionization.svg
docs/source/models/field_ionization_effective_potentials.svg
4 changes: 4 additions & 0 deletions docs/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,7 @@ recommonmark
sphinx
breathe>=4.5
sphinxcontrib.programoutput
# generate plots
matplotlib
scipy
numpy
4 changes: 4 additions & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@
html_theme = "sphinx_rtd_theme"
html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]

# generate plots for the docs
subprocess.call('cd models; python ./field_ionization_comparison_c_ii_ionization.py', shell=True)
subprocess.call('cd models; python ./field_ionization_effective_potentials.py', shell=True)

# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']

Expand Down
3 changes: 2 additions & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,8 @@ Models

models/pic
models/LL_RR
models/ionization
models/field_ionization
models/collisional_ionization
models/photons

***************
Expand Down
30 changes: 30 additions & 0 deletions docs/source/models/collisional_ionization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
.. _model-collisionalIonization:

Collisional Ionization
======================

LTE Models
----------

.. moduleauthor:: Marco Garten

Implemented LTE Model: Thomas-Fermi Ionization according to [More1985]_
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPTIONAL:
Please remove capitalization model, ionization


Get started here https://github.com/ComputationalRadiationPhysics/picongpu/wiki/Ionization-in-PIConGPU

NLTE Models
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPTIONAL:
either write model or capitalize line 6

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this header is fine, line 6 needs capitalization

-----------

.. moduleauthor:: Axel Huebl

in development

References
----------

.. [More1985]
R. M. More.
*Pressure Ionization, Resonances, and the Continuity of Bound and Free States*,
Advances in Atomic, Molecular and Optical Physics Vol. 21 C, 305-356 (1985),
https://dx.doi.org/10.1016/S0065-2199(08)60145-1

167 changes: 167 additions & 0 deletions docs/source/models/field_ionization.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,167 @@
.. _model-fieldIonization:

Field Ionization
================

.. sectionauthor:: Marco Garten
.. moduleauthor:: Marco Garten

Get started here https://github.com/ComputationalRadiationPhysics/picongpu/wiki/Ionization-in-PIConGPU

PIConGPU features an adaptable ionization framework for arbitrary and combinable ionization models.

.. note::

Most of the calculations and formulae in this section of the docs are done in the **Atomic Units (AU)** system.

.. math::

\hbar = \mathrm{e} = m_\mathrm{e} = 1

.. table:: **Atomic Unit System**
:widths: auto
:name: atomic_units

================ =====
AU SI
================ =====
length :math:`5.292 \cdot 10^{-11}\,\mathrm{m}`
time :math:`2.419 \cdot 10^{-17}\,\mathrm{s}`
energy :math:`4.360 \cdot 10^{-18}\,\mathrm{J}\quad` (= 27.21 eV = 1 Rydberg)
electrical field :math:`5.142 \cdot 10^{11}\,\frac{\mathrm{V}}{\mathrm{m}}`
================ =====

Overview: Implemented Models
----------------------------
.. table::
:widths: auto
:name: implemented__field_ionization_models

+---------------------+-----------------------------+---------------------------+
| ionization regime | implemented model | reference |
+=====================+=============================+===========================+
| Multiphoton | None, yet | |
+---------------------+-----------------------------+---------------------------+
| Tunneling | * ``Keldysh`` | * [BauerMulser1999]_ |
| | * ``ADKLinPol`` | * [DeloneKrainov]_ |
| | * ``ADKCircPol`` | * [DeloneKrainov]_ |
+---------------------+-----------------------------+---------------------------+
| Barrier Suppression | * ``BSI`` | * [MulserBauer2010]_ |
| | * ``BSIEffectiveZ`` | * [ClementiRaimondi1963]_ |
| | | [ClementiRaimondi1967]_ |
| | * ``BSIStarkShifted`` (R&D) | * [BauerMulser1999]_ |
+---------------------+-----------------------------+---------------------------+

.. attention::

Models marked with "(R&D)" are under *research and development* and should be used with care.

Usage
-----

Input for ionization models is defined in :ref:`speciesDefinition.param <usage-params-core>`, :ref:`ionizer.param and ionizationEnergies.param <usage-params-extensions>`.


Barrier Suppression Ionization
------------------------------

The so-called barrier-suppression ionization regime is reached for strong fields where the potential barrier binding an electron is completely suppressed.

Tunneling Ionization
--------------------

Tunneling ionization describes the process during which an initially bound electron quantum-mechanically tunnels through a potential barrier of finite height.

Keldysh
"""""""

.. math::

\Gamma_\mathrm{K} = \frac{\left(6 \pi\right)^{1/2}}{2^{5/4}} E_\mathrm{ip} \left( \frac{F}{(2 E_\mathrm{ip})^{3/2}} \right)^{1/2} \exp\left(-\frac{2 \left(2 E_\mathrm{ip}\right)^{3/2}}{3 F}\right)

The Keldysh ionization rate has been implemented according to the equation (9) in [BauerMulser1999]_. See also [Keldysh]_ for the original work.

.. note::

Assumptions:

* low field - perturbation theory
* :math:`\omega_\mathrm{laser} \ll E_\mathrm{ip}`
* :math:`F \ll F_\mathrm{BSI}`
* tunneling is instantaneous


Ammosov-Delone-Krainov (ADK)
""""""""""""""""""""""""""""

.. math::

\begin{align}
\Gamma_\mathrm{ADK} &= \underbrace{\sqrt{\frac{3 n^{*3} F}{\pi Z^3}}}_\text{lin. pol.} \frac{F D^2}{8 \pi Z} \exp\left(-\frac{2Z}{3n^{*3}F}\right) \\
D &\equiv \left( \frac{4 \exp Z^3}{F n^{*4}} \right)^{n^*} \hspace{2cm} n^* = \frac{Z}{\sqrt{2 E_\mathrm{ip}}}
\end{align}

We implemented equation (7) from [DeloneKrainov]_ which is a *simplified result assuming s-states* (since we have no atomic structure implemented, yet).
Leaving out the pre-factor distinguishes ``ADKCircPol`` from ``ADKLinPol``.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPTIONAL:
This statement is not clear to me, please specify what you mean with this sentence.

``ADKLinPol`` results from replacing an instantaneous field strength :math:`F` by :math:`F \cos(\omega t)` and averaging over one laser period.

.. attention::

Be aware that :math:`Z` denotes the **residual ion charge** and not the proton number of the nucleus!

In the following comparison one can see the ``ADKLinPol`` ionization rates for the transition from Carbon II to III (meaning 1+ to 2+).
For a reference the rates for Hydrogen as well as the barrier suppression field strengths :math:`F_\mathrm{BSI}` have been plotted.
They mark the transition from the tunneling to the barrier suppression regime.

.. figure:: field_ionization_comparison_c_ii_ionization.svg
:name: field_ionization_comparison_c_ii_ionization
:alt: Comparison of ADK ionization rates for Carbon-II and Hydrogen

Comparison of ADK ionization rates for Carbon-II and Hydrogen.

When we account for orbital structure in shielding of the ion charge :math:`Z` according to [ClementiRaimondi1963]_ in ``BSIEffectiveZ`` the barrier suppression field strengths of Hydrogen and Carbon-II are very close to one another.
One would expect much earlier ionization of Hydrogen due to lower ionization energy. The following image shows how this can be explained by the shape of the ion potential that is assumed in this model.

.. figure:: field_ionization_effective_potentials.svg
:name: field_ionization_effective_potentials
:alt: Effective atomic potentials of Carbon-II and Hydrogen in homogeneous electric field

Effective atomic potentials of Carbon-II and Hydrogen in homogeneous electric field :math:`F_\mathrm{BSI}` (C-II).

References
----------
.. [DeloneKrainov]
N. B. Delone and V. P. Krainov.
*Tunneling and barrier-suppression ionization of atoms and ions in a laser radiation field*,
Phys. Usp. 41 469–485 (1998),
http://dx.doi.org/10.1070/PU1998v041n05ABEH000393

.. [BauerMulser1999]
D. Bauer and P. Mulser.
*Exact field ionization rates in the barrier-suppression regime from numerical time-dependent Schrödinger-equation calculations*,
Physical Review A 59, 569 (1999),
https://dx.doi.org/10.1103/PhysRevA.59.569

.. [MulserBauer2010]
P. Mulser and D. Bauer.
*High Power Laser-Matter Interaction*,
Springer-Verlag Berlin Heidelberg (2010),
https://dx.doi.org/10.1007/978-3-540-46065-7

.. [Keldysh]
L.V. Keldysh.
*Ionization in the field of a strong electromagnetic wave*,
Soviet Physics JETP 20, 1307-1314 (1965),
http://jetp.ac.ru/cgi-bin/dn/e_020_05_1307.pdf

.. [ClementiRaimondi1963]
E. Clementi and D. Raimondi.
*Atomic Screening Constant from SCF Functions*,
The Journal of Chemical Physics 38, 2686-2689 (1963)
https://dx.doi.org/10.1063/1.1733573

.. [ClementiRaimondi1967]
E. Clementi and D. Raimondi.
*Atomic Screening Constant from SCF Functions. II. Atoms with 37 to 86 Electrons*,
The Journal of Chemical Physics 47, 1300-1307 (1967)
https://dx.doi.org/10.1063/1.1712084
103 changes: 103 additions & 0 deletions docs/source/models/field_ionization_comparison_c_ii_ionization.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
import matplotlib as mpl
from matplotlib import pyplot as plt
from scipy.misc import factorial as mfac
from scipy.special import gamma as gam
import numpy as np


params = {
'font.size': 20,
'lines.linewidth': 3,
'legend.fontsize': 20,
'legend.frameon': False,
'xtick.labelsize': 20,
'ytick.labelsize': 20,
# RTD default textwidth: 800px
'figure.figsize': [12, 8]
}
mpl.rcParams.update(params)


def ADK_rate_simple(Z, E_i, F):
"""
ADK tunneling rate from [DeloneKrainov1998] that has been simplified
for s-states.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REQUIRED:
please add a comment on the parameters


Args:
Z : residual ion charge
E_i : ionization energy of the state
F : electric field strength
"""
n_eff = Z / ((2.*E_i)**(1./2.)) # effective principal quantum number
D = ((4.*np.exp(1.)*Z**3.) / (F*n_eff**4.))**n_eff # some factor

# laser is circularly polarized
# pol_fac = 1.
# laser is lin. polarized
pol_fac = ((3*n_eff**3*F) / (np.pi*Z**3))**(1.0/2)
I_rate = pol_fac * (F*D**2.) / (8.*np.pi*Z) * \
np.exp(-(2.*Z**3.) / (3.*n_eff**3.*F))
return I_rate

if __name__ == "__main__":
"""
On execution this file produces the image
`field_ionization_comparison_c_ii_ionization.svg`
for the PIConGPU documentation.
"""

# Atomic units
E_AU = 27.2 # eV
F_AU = 5.1422e11 # V/m
I_AU = 3.5095e16 # W/cm^2
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QUESTION:
If this is in A.U. why do you give a SI unit?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that is the unit ^^

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay - I was confused by the relation but know it makes sense

T_AU = 150.e-18 / (2. * np.pi)

# Hydrogen
Z_H = 1. # proton number
E_H = .5 # ionization energy (AU)

# Carbon
Z_C = 6.
E_C_SI = np.array([11.26, 24.36, 47.89, 64.49, 392.09, 490.00])
E_C = E_C_SI/E_AU

ymin = 1e6
ymax = 1e20

# electric field strengths in AU
fields = 10**np.linspace(-5, 3, 1000)

H = ADK_rate_simple(Z_H, E_H, fields)/T_AU

Csimple = ADK_rate_simple(2, E_C[1], fields) / T_AU
# with effective Z from shielding constants
Ceff = ADK_rate_simple(3.136, E_C[1], fields) / T_AU

plt.figure()

p_H = plt.plot(fields, H, label="ADK H")

p_Csimple = plt.plot(fields, Csimple,
label="ADK C $ \quad Z = 2\mathrm{+}$")
p_Ceff = plt.plot(fields, Ceff,
label="ADK C (eff) $ \quad Z = 3.136 = Z_\mathrm{eff}$")
plt.vlines(E_H**2./(4*1), ymin, ymax,
colors="{}".format(p_H[0].get_color()),
label="$F_\mathrm{BSI}$ H")

plt.vlines(E_C[1]**2. / (4*2), ymin, ymax,
colors="{}".format(p_Csimple[0].get_color()),
label="$F_\mathrm{BSI}$ C", linestyles="--")
plt.vlines(E_C[1]**2. / (4*3.136), ymin, ymax,
colors="{}".format(p_Ceff[0].get_color()),
label="$F_\mathrm{BSI}$ C (eff)", linestyles="--")

plt.ylim([ymin, ymax])
plt.xlim([1e-2, 1e1])
plt.yscale("log")
plt.xscale("log")
plt.ylabel("ionization rate $\Gamma$ [Hz]")
plt.xlabel("field strength $F$ [AU = 5.1422$\cdot 10^{11}$ V/m]")
plt.legend(loc="best")

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OPTIONAL:
you could add plt.tight_layout()

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

offline: @ax3l says no

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay

plt.savefig("field_ionization_comparison_c_ii_ionization.svg")
Loading