PIC Extensions
fieldBackground.param
Load external background fields.
-
namespace picongpu
Note
this file uses the same naming convention for updated and incident field as Solver.kernel.
Note
In this file we use camelCase “updatedField” in both code and comments to denote field E or B that is being updated (i.e. corrected) in the kernel. The other of the two fields is called “incidentField”. And for the incidentField source we explicitly use “functor” to not confuse it with the field itself. Please refer to https://picongpu.readthedocs.io/en/latest/models/total_field_scattered_field.html for theoretical background of this procedure.
-
class FieldBackgroundE
Public Functions
-
PMACC_ALIGN(m_unitField, const float3_64)
-
inline HINLINE FieldBackgroundE(const float3_64 unitField)
-
HDINLINE FieldBackgroundE(const FieldBackgroundE&) = default
- inline HDINLINE float3_X operator() (const DataSpace< simDim > &cellIdx, const uint32_t currentStep) const
Specify your background field E(r,t) here.
- Parameters:
cellIdx – The total cell id counted from the start at t = 0
currentStep – The current time step
Public Static Attributes
-
static constexpr bool InfluenceParticlePusher = false
-
PMACC_ALIGN(m_unitField, const float3_64)
-
class FieldBackgroundB
Public Functions
-
PMACC_ALIGN(m_unitField, const float3_64)
-
inline HINLINE FieldBackgroundB(const float3_64 unitField)
-
HDINLINE FieldBackgroundB(const FieldBackgroundB&) = default
- inline HDINLINE float3_X operator() (const DataSpace< simDim > &cellIdx, const uint32_t currentStep) const
Specify your background field B(r,t) here.
- Parameters:
cellIdx – The total cell id counted from the start at t=0
currentStep – The current time step
Public Static Attributes
-
static constexpr bool InfluenceParticlePusher = false
-
PMACC_ALIGN(m_unitField, const float3_64)
-
class FieldBackgroundJ
Public Functions
-
PMACC_ALIGN(m_unitField, const float3_64)
-
inline HINLINE FieldBackgroundJ(const float3_64 unitField)
-
HDINLINE FieldBackgroundJ(const FieldBackgroundJ&) = default
- inline HDINLINE float3_X operator() (const DataSpace< simDim > &cellIdx, const uint32_t currentStep) const
Specify your background field J(r,t) here.
- Parameters:
cellIdx – The total cell id counted from the start at t=0
currentStep – The current time step
Public Static Attributes
-
static constexpr bool activated = false
-
PMACC_ALIGN(m_unitField, const float3_64)
-
class FieldBackgroundE
ionizer.param
This file contains the proton and neutron numbers of commonly used elements of the periodic table.
The elements here should have a matching list of ionization energies in
Furthermore there are parameters for specific ionization models to be found here. That includes lists of screened nuclear charges as seen by bound electrons for the aforementioned elements as well as fitting parameters of the Thomas-Fermi ionization model.
See also
ionizationEnergies.param. Moreover this file contains a description of how to configure an ionization model for a species.
-
namespace picongpu
Note
this file uses the same naming convention for updated and incident field as Solver.kernel.
Note
In this file we use camelCase “updatedField” in both code and comments to denote field E or B that is being updated (i.e. corrected) in the kernel. The other of the two fields is called “incidentField”. And for the incidentField source we explicitly use “functor” to not confuse it with the field itself. Please refer to https://picongpu.readthedocs.io/en/latest/models/total_field_scattered_field.html for theoretical background of this procedure.
-
namespace ionization
Ionization Model Configuration.
None : no particle is ionized
BSI : simple barrier suppression ionization
BSIEffectiveZ : BSI taking electron shielding into account via an effective atomic number Z_eff
ADKLinPol : Ammosov-Delone-Krainov tunneling ionization (H-like) -> linearly polarized lasers
ADKCircPol : Ammosov-Delone-Krainov tunneling ionization (H-like) -> circularly polarized lasers
Keldysh : Keldysh ionization model
ThomasFermi : statistical impact ionization based on Thomas-Fermi atomic model Attention: requires 2 FieldTmp
slots
Research and development:
See also
memory.param
BSIStarkShifted : BSI for hydrogen-like atoms and ions considering the Stark upshift of ionization potentials
Usage: Add flags to the list of particle flags that has the following structure
ionizers< MakeSeq_t< particles::ionization::IonizationModel< Species2BCreated > > >, atomicNumbers< ionization::atomicNumbers::Element_t >, effectiveNuclearCharge< ionization::effectiveNuclearCharge::Element_t >, ionizationEnergies< ionization::energies::AU::Element_t >
-
namespace atomicNumbers
Specify (chemical) element
Proton and neutron numbers define the chemical element that the ion species is based on. This value can be non-integer for physical models taking charge shielding effects into account.
It is wrapped into a struct because of C++ restricting floats from being template arguments.
Do not forget to set the correct mass and charge via
massRatio<>
andchargeRatio<>
!-
struct Hydrogen_t
H-1 99.98% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 1.0
-
static constexpr float_X numberOfNeutrons = 0.0
-
static constexpr float_X numberOfProtons = 1.0
-
struct Deuterium_t
H-2 0.02% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 1.0
-
static constexpr float_X numberOfNeutrons = 1.0
-
static constexpr float_X numberOfProtons = 1.0
-
struct Helium_t
He-4 ~100% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 2.0
-
static constexpr float_X numberOfNeutrons = 2.0
-
static constexpr float_X numberOfProtons = 2.0
-
struct Carbon_t
C-12 98.9% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 6.0
-
static constexpr float_X numberOfNeutrons = 6.0
-
static constexpr float_X numberOfProtons = 6.0
-
struct Nitrogen_t
N-14 99.6% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 7.0
-
static constexpr float_X numberOfNeutrons = 7.0
-
static constexpr float_X numberOfProtons = 7.0
-
struct Oxygen_t
O-16 99.76% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 8.0
-
static constexpr float_X numberOfNeutrons = 8.0
-
static constexpr float_X numberOfProtons = 8.0
-
struct Aluminium_t
Al-27 ~100% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 13.0
-
static constexpr float_X numberOfNeutrons = 14.0
-
static constexpr float_X numberOfProtons = 13.0
-
struct Silicon_t
Si-28 ~92.23% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 14.0
-
static constexpr float_X numberOfNeutrons = 14.0
-
static constexpr float_X numberOfProtons = 14.0
-
struct Argon_t
Ar-40 ~99,6% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 18.0
-
static constexpr float_X numberOfNeutrons = 22.0
-
static constexpr float_X numberOfProtons = 18.0
-
struct Copper_t
Cu-63 69.15% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 29.0
-
static constexpr float_X numberOfNeutrons = 34.0
-
static constexpr float_X numberOfProtons = 29.0
-
struct Gold_t
Au-197 ~100% NA.
Public Static Attributes
-
static constexpr float_X numberOfProtons = 79.0
-
static constexpr float_X numberOfNeutrons = 118.0
-
static constexpr float_X numberOfProtons = 79.0
-
struct Hydrogen_t
-
namespace effectiveNuclearCharge
Effective Nuclear Charge.
Due to the shielding effect of inner electron shells in an atom / ion which makes the core charge seem smaller to valence electrons new, effective, atomic core charge numbers can be defined to make the crude barrier suppression ionization (BSI) model less inaccurate.
References: Clementi, E.; Raimondi, D. L. (1963) “Atomic Screening Constants from SCF Functions” J. Chem. Phys. 38 (11): 2686-2689. doi:10.1063/1.1733573 Clementi, E.; Raimondi, D. L.; Reinhardt, W. P. (1967) “Atomic Screening Constants from SCF Functions. II. Atoms with 37 to 86 Electrons” Journal of Chemical Physics. 47: 1300-1307. doi:10.1063/1.1712084
See also
https://en.wikipedia.org/wiki/Effective_nuclear_charge or refer directly to the calculations by Slater or Clementi and Raimondi
IMPORTANT NOTE: You have to insert the values in REVERSE order since the lowest shell corresponds to the last ionization process!
Functions
- PMACC_CONST_VECTOR (float_X, 1, Hydrogen, 1.)
- PMACC_CONST_VECTOR (float_X, 1, Deuterium, 1.)
- PMACC_CONST_VECTOR (float_X, 2, Helium, 1.688, 1.688)
- PMACC_CONST_VECTOR (float_X, 6, Carbon, 3.136, 3.136, 3.217, 3.217, 5.673, 5.673)
- PMACC_CONST_VECTOR (float_X, 7, Nitrogen, 3.834, 3.834, 3.834, 3.874, 3.874, 6.665, 6.665)
- PMACC_CONST_VECTOR (float_X, 8, Oxygen, 4.453, 4.453, 4.453, 4.453, 4.492, 4.492, 7.658, 7.658)
- PMACC_CONST_VECTOR (float_X, 13, Aluminium, 4.066, 4.117, 4.117, 8.963, 8.963, 8.963, 8.963, 8.963, 8.963, 8.214, 8.214, 12.591, 12.591)
- PMACC_CONST_VECTOR (float_X, 14, Silicon, 4.285, 4.285, 4.903, 4.903, 9.945, 9.945, 9.945, 9.945, 9.945, 9.945, 9.020, 9.020, 13.575, 13.575)
- PMACC_CONST_VECTOR (float_X, 18, Argon, 6.764, 6.764, 6.764, 6.764, 6.764, 6.764, 7.757, 7.757, 14.008, 14.008, 14.008, 14.008, 14.008, 14.008, 12.230, 12.230, 17.508, 17.508)
- PMACC_CONST_VECTOR (float_X, 29, Copper, 13.201, 13.201, 13.201, 13.201, 13.201, 13.201, 13.201, 13.201, 13.201, 13.201, 5.842, 14.731, 14.731, 14.731, 14.731, 14.731, 14.731, 15.594, 15.594, 25.097, 25.097, 25.097, 25.097, 25.097, 25.097, 21.020, 21.020, 28.339, 28.339)
- PMACC_CONST_VECTOR (float_X, 79, Gold, 20.126, 20.126, 20.126, 20.126, 20.126, 20.126, 20.126, 20.126, 20.126, 20.126, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 40.650, 10.938, 25.170, 25.170, 25.170, 25.170, 25.170, 25.170, 41.528, 41.528, 41.528, 41.528, 41.528, 41.528, 41.528, 41.528, 41.528, 41.528, 27.327, 27.327, 43.547, 43.547, 43.547, 43.547, 43.547, 43.547, 65.508, 65.508, 65.508, 65.508, 65.508, 65.508, 65.508, 65.508, 65.508, 65.508, 44.413, 44.413, 56.703, 56.703, 56.703, 56.703, 56.703, 56.703, 55.763, 55.763, 74.513, 74.513, 74.513, 74.513, 74.513, 74.513, 58.370, 58.370, 77.476, 77.476)
-
namespace particles
-
namespace ionization
-
namespace thomasFermi
Variables
-
constexpr float_X TFAlpha = 14.3139
Fitting parameters to average ionization degree Z* = 4/3*pi*R_0^3 * n(R_0) as an extension towards arbitrary atoms and temperatures.
See table IV of \url http://www.sciencedirect.com/science/article/pii/S0065219908601451 doi:10.1016/S0065-2199(08)60145-1
-
constexpr float_X TFBeta = 0.6624
-
constexpr float_X TFA1 = 3.323e-3
-
constexpr float_X TFA2 = 9.718e-1
-
constexpr float_X TFA3 = 9.26148e-5
-
constexpr float_X TFA4 = 3.10165
-
constexpr float_X TFB0 = -1.7630
-
constexpr float_X TFB1 = 1.43175
-
constexpr float_X TFB2 = 0.31546
-
constexpr float_X TFC1 = -0.366667
-
constexpr float_X TFC2 = 0.983333
-
constexpr float_X CUTOFF_MAX_ENERGY_KEV = 50.0
cutoff energy for electron “temperature” calculation
In laser produced plasmas we can have different, well-separable groups of electrons. For the Thomas-Fermi ionization model we only want the thermalized “bulk” electrons. Including the high-energy “prompt” electrons is physically questionable since they do not have a large cross section for collisional ionization.
unit: keV
-
constexpr float_X CUTOFF_MAX_ENERGY = sim.si.conv().eV2Joule(CUTOFF_MAX_ENERGY_KEV * 1.0e3)
cutoff energy for electron “temperature” calculation in SI units
-
constexpr float_X CUTOFF_LOW_DENSITY = 1.7422e27
lower ion density cutoff
The Thomas-Fermi model yields unphysical artifacts for low ion densities. Low ion densities imply lower collision frequency and thus less collisional ionization. The Thomas-Fermi model yields an increasing charge state for decreasing densities and electron temperatures of 10eV and above. This cutoff will be used to set the lower application threshold for charge state calculation.
unit: 1 / m^3
example: 1.7422e27 as a hydrogen ion number density equal to the corresponding critical electron number density for an 800nm laser
The choice of the default is motivated by by the following: In laser-driven plasmas all dynamics in density regions below the critical electron density will be laser-dominated. Once ions of that density are ionized once the laser will not penetrate fully anymore and the as electrons are heated the dynamics will be collision-dominated.
Note
This cutoff value should be set in accordance to FLYCHK calculations, for instance! It is not a universal value and requires some preliminary approximations!
-
constexpr float_X CUTOFF_LOW_TEMPERATURE_EV = 1.0
lower electron temperature cutoff
The Thomas-Fermi model predicts initial ionization for many materials of solid density even when the electron temperature is 0.
-
constexpr float_X TFAlpha = 14.3139
-
namespace thomasFermi
-
namespace ionization
-
namespace ionization
ionizationEnergies.param
This file contains the ionization energies of commonly used elements of the periodic table.
Each atomic species in PIConGPU can represent exactly one element. The ionization energies of that element are stored in a vector which contains the name and proton number as well as a list of energy values. The number of ionization levels must be equal to the proton number of the element.
-
namespace picongpu
Note
this file uses the same naming convention for updated and incident field as Solver.kernel.
Note
In this file we use camelCase “updatedField” in both code and comments to denote field E or B that is being updated (i.e. corrected) in the kernel. The other of the two fields is called “incidentField”. And for the incidentField source we explicitly use “functor” to not confuse it with the field itself. Please refer to https://picongpu.readthedocs.io/en/latest/models/total_field_scattered_field.html for theoretical background of this procedure.
-
namespace ionization
Ionization Model Configuration.
None : no particle is ionized
BSI : simple barrier suppression ionization
BSIEffectiveZ : BSI taking electron shielding into account via an effective atomic number Z_eff
ADKLinPol : Ammosov-Delone-Krainov tunneling ionization (H-like) -> linearly polarized lasers
ADKCircPol : Ammosov-Delone-Krainov tunneling ionization (H-like) -> circularly polarized lasers
Keldysh : Keldysh ionization model
ThomasFermi : statistical impact ionization based on Thomas-Fermi atomic model Attention: requires 2 FieldTmp
slots
Research and development:
See also
memory.param
BSIStarkShifted : BSI for hydrogen-like atoms and ions considering the Stark upshift of ionization potentials
Usage: Add flags to the list of particle flags that has the following structure
ionizers< MakeSeq_t< particles::ionization::IonizationModel< Species2BCreated > > >, atomicNumbers< ionization::atomicNumbers::Element_t >, effectiveNuclearCharge< ionization::effectiveNuclearCharge::Element_t >, ionizationEnergies< ionization::energies::AU::Element_t >
-
namespace energies
Ionization potentials.
Please follow these rules for defining ionization energies of atomic species, unless your chosen ionization model requires a different unit system than
AU::
input of values in either atomic units or converting eV or Joule to them -> use either sim.si.conv().eV2auEnergy() or sim.si.conv().joule2auEnergy() for that purpose
use
float_X
as the preferred data type
example: ionization energy for ground state hydrogen: 13.6 eV 1 Joule = 1 kg * m^2 / s^2 1 eV = 1.602e-19 J
1 AU (energy) = 27.2 eV = 1 Hartree = 4.36e-18 J = 2 Rydberg = 2 x Hydrogen ground state binding energy
Atomic units are useful for ionization models because they simplify the formulae greatly and provide intuitively understandable relations to a well-known system, i.e. the Hydrogen atom.
for PMACC_CONST_VECTOR usage,
Reference: Kramida, A., Ralchenko, Yu., Reader, J., and NIST ASD Team (2014) NIST Atomic Spectra Database (ver. 5.2), [Online] Available:
http://physics.nist.gov/asd [2017, February 8] National Institute of Standards and Technology, Gaithersburg, MDSee also
include/pmacc/math/ConstVector.hpp for finding ionization energies, @url http://physics.nist.gov/PhysRefData/ASD/ionEnergy.html
-
namespace AU
Functions
- PMACC_CONST_VECTOR (float_X, 1, Hydrogen, sim.si.conv().eV2auEnergy(13.59843))
- PMACC_CONST_VECTOR (float_X, 1, Deuterium, sim.si.conv().eV2auEnergy(13.60213))
- PMACC_CONST_VECTOR (float_X, 2, Helium, sim.si.conv().eV2auEnergy(24.58739), sim.si.conv().eV2auEnergy(54.41776))
- PMACC_CONST_VECTOR (float_X, 6, Carbon, sim.si.conv().eV2auEnergy(11.2603), sim.si.conv().eV2auEnergy(24.3845), sim.si.conv().eV2auEnergy(47.88778), sim.si.conv().eV2auEnergy(64.49351), sim.si.conv().eV2auEnergy(392.0905), sim.si.conv().eV2auEnergy(489.993177))
- PMACC_CONST_VECTOR (float_X, 7, Nitrogen, sim.si.conv().eV2auEnergy(14.53413), sim.si.conv().eV2auEnergy(29.60125), sim.si.conv().eV2auEnergy(47.4453), sim.si.conv().eV2auEnergy(77.4735), sim.si.conv().eV2auEnergy(97.89013), sim.si.conv().eV2auEnergy(552.06731), sim.si.conv().eV2auEnergy(667.04609))
- PMACC_CONST_VECTOR (float_X, 8, Oxygen, sim.si.conv().eV2auEnergy(13.61805), sim.si.conv().eV2auEnergy(35.12112), sim.si.conv().eV2auEnergy(54.93554), sim.si.conv().eV2auEnergy(77.41350), sim.si.conv().eV2auEnergy(113.8989), sim.si.conv().eV2auEnergy(138.1189), sim.si.conv().eV2auEnergy(739.3268), sim.si.conv().eV2auEnergy(871.4098))
- PMACC_CONST_VECTOR (float_X, 13, Aluminium, sim.si.conv().eV2auEnergy(5.98577), sim.si.conv().eV2auEnergy(18.8285), sim.si.conv().eV2auEnergy(28.4476), sim.si.conv().eV2auEnergy(119.992), sim.si.conv().eV2auEnergy(153.825), sim.si.conv().eV2auEnergy(190.495), sim.si.conv().eV2auEnergy(241.769), sim.si.conv().eV2auEnergy(284.647), sim.si.conv().eV2auEnergy(330.214), sim.si.conv().eV2auEnergy(398.656), sim.si.conv().eV2auEnergy(442.006), sim.si.conv().eV2auEnergy(2085.97), sim.si.conv().eV2auEnergy(2304.14))
- PMACC_CONST_VECTOR (float_X, 14, Silicon, sim.si.conv().eV2auEnergy(8.151683), sim.si.conv().eV2auEnergy(16.345845), sim.si.conv().eV2auEnergy(33.493), sim.si.conv().eV2auEnergy(45.14179), sim.si.conv().eV2auEnergy(166.767), sim.si.conv().eV2auEnergy(205.267), sim.si.conv().eV2auEnergy(246.32), sim.si.conv().eV2auEnergy(303.66), sim.si.conv().eV2auEnergy(351.1), sim.si.conv().eV2auEnergy(401.38), sim.si.conv().eV2auEnergy(476.18), sim.si.conv().eV2auEnergy(523.415), sim.si.conv().eV2auEnergy(2437.65804), sim.si.conv().eV2auEnergy(2673.1774))
- PMACC_CONST_VECTOR (float_X, 18, Argon, sim.si.conv().eV2auEnergy(15.7596119), sim.si.conv().eV2auEnergy(27.62967), sim.si.conv().eV2auEnergy(40.735), sim.si.conv().eV2auEnergy(59.58), sim.si.conv().eV2auEnergy(74.84), sim.si.conv().eV2auEnergy(91.290), sim.si.conv().eV2auEnergy(124.41), sim.si.conv().eV2auEnergy(143.4567), sim.si.conv().eV2auEnergy(422.60), sim.si.conv().eV2auEnergy(479.76), sim.si.conv().eV2auEnergy(540.4), sim.si.conv().eV2auEnergy(619.0), sim.si.conv().eV2auEnergy(685.5), sim.si.conv().eV2auEnergy(755.13), sim.si.conv().eV2auEnergy(855.5), sim.si.conv().eV2auEnergy(918.375), sim.si.conv().eV2auEnergy(4120.6657), sim.si.conv().eV2auEnergy(4426.2229))
- PMACC_CONST_VECTOR (float_X, 29, Copper, sim.si.conv().eV2auEnergy(7.72638), sim.si.conv().eV2auEnergy(20.2924), sim.si.conv().eV2auEnergy(36.8411), sim.si.conv().eV2auEnergy(57.385), sim.si.conv().eV2auEnergy(79.87), sim.si.conv().eV2auEnergy(103.010), sim.si.conv().eV2auEnergy(139.012), sim.si.conv().eV2auEnergy(166.021), sim.si.conv().eV2auEnergy(198.022), sim.si.conv().eV2auEnergy(232.25), sim.si.conv().eV2auEnergy(265.332), sim.si.conv().eV2auEnergy(367.09), sim.si.conv().eV2auEnergy(401.03), sim.si.conv().eV2auEnergy(436.06), sim.si.conv().eV2auEnergy(483.19), sim.si.conv().eV2auEnergy(518.712), sim.si.conv().eV2auEnergy(552.821), sim.si.conv().eV2auEnergy(632.56), sim.si.conv().eV2auEnergy(670.608), sim.si.conv().eV2auEnergy(1690.59), sim.si.conv().eV2auEnergy(1800.3), sim.si.conv().eV2auEnergy(1918.4), sim.si.conv().eV2auEnergy(2044.6), sim.si.conv().eV2auEnergy(2179.4), sim.si.conv().eV2auEnergy(2307.32), sim.si.conv().eV2auEnergy(2479.12), sim.si.conv().eV2auEnergy(2586.95), sim.si.conv().eV2auEnergy(11062.4), sim.si.conv().eV2auEnergy(11567.6))
- PMACC_CONST_VECTOR (float_X, 79, Gold, sim.si.conv().eV2auEnergy(9.2256), sim.si.conv().eV2auEnergy(20.203), sim.si.conv().eV2auEnergy(30.016), sim.si.conv().eV2auEnergy(45.017), sim.si.conv().eV2auEnergy(60.019), sim.si.conv().eV2auEnergy(74.020), sim.si.conv().eV2auEnergy(94.020), sim.si.conv().eV2auEnergy(112.02), sim.si.conv().eV2auEnergy(130.12), sim.si.conv().eV2auEnergy(149.02), sim.si.conv().eV2auEnergy(168.21), sim.si.conv().eV2auEnergy(248.01), sim.si.conv().eV2auEnergy(275.14), sim.si.conv().eV2auEnergy(299.15), sim.si.conv().eV2auEnergy(324.16), sim.si.conv().eV2auEnergy(365.19), sim.si.conv().eV2auEnergy(392.20), sim.si.conv().eV2auEnergy(433.21), sim.si.conv().eV2auEnergy(487.25), sim.si.conv().eV2auEnergy(517.30), sim.si.conv().eV2auEnergy(546.30), sim.si.conv().eV2auEnergy(600.30), sim.si.conv().eV2auEnergy(650.40), sim.si.conv().eV2auEnergy(710.40), sim.si.conv().eV2auEnergy(760.40), sim.si.conv().eV2auEnergy(820.40), sim.si.conv().eV2auEnergy(870.40), sim.si.conv().eV2auEnergy(930.50), sim.si.conv().eV2auEnergy(990.50), sim.si.conv().eV2auEnergy(1040.5), sim.si.conv().eV2auEnergy(1100.5), sim.si.conv().eV2auEnergy(1150.6), sim.si.conv().eV2auEnergy(1210.6), sim.si.conv().eV2auEnergy(1475.5), sim.si.conv().eV2auEnergy(1527.5), sim.si.conv().eV2auEnergy(1584.5), sim.si.conv().eV2auEnergy(1644.5), sim.si.conv().eV2auEnergy(1702.4), sim.si.conv().eV2auEnergy(1758.4), sim.si.conv().eV2auEnergy(1845.4), sim.si.conv().eV2auEnergy(1904.4), sim.si.conv().eV2auEnergy(1967.4), sim.si.conv().eV2auEnergy(2026.4), sim.si.conv().eV2auEnergy(2261.4), sim.si.conv().eV2auEnergy(2320.4), sim.si.conv().eV2auEnergy(2383.4), sim.si.conv().eV2auEnergy(2443.4), sim.si.conv().eV2auEnergy(2640.4), sim.si.conv().eV2auEnergy(2708.4), sim.si.conv().eV2auEnergy(2870.4), sim.si.conv().eV2auEnergy(2941.0), sim.si.conv().eV2auEnergy(4888.4), sim.si.conv().eV2auEnergy(5013.4), sim.si.conv().eV2auEnergy(5156.5), sim.si.conv().eV2auEnergy(5307.5), sim.si.conv().eV2auEnergy(5452.5), sim.si.conv().eV2auEnergy(5594.5), sim.si.conv().eV2auEnergy(5846.6), sim.si.conv().eV2auEnergy(5994.6), sim.si.conv().eV2auEnergy(6156.7), sim.si.conv().eV2auEnergy(6305.1), sim.si.conv().eV2auEnergy(6724.1), sim.si.conv().eV2auEnergy(6854.1), sim.si.conv().eV2auEnergy(6997.2), sim.si.conv().eV2auEnergy(7130.2), sim.si.conv().eV2auEnergy(7756.3), sim.si.conv().eV2auEnergy(7910.4), sim.si.conv().eV2auEnergy(8210.4), sim.si.conv().eV2auEnergy(8360.5), sim.si.conv().eV2auEnergy(18040.), sim.si.conv().eV2auEnergy(18401.), sim.si.conv().eV2auEnergy(18791.), sim.si.conv().eV2auEnergy(19151.), sim.si.conv().eV2auEnergy(21471.), sim.si.conv().eV2auEnergy(21921.), sim.si.conv().eV2auEnergy(22500.), sim.si.conv().eV2auEnergy(22868.), sim.si.conv().eV2auEnergy(91516.), sim.si.conv().eV2auEnergy(93254.))
-
namespace ionization
collision.param
-
namespace picongpu
Note
this file uses the same naming convention for updated and incident field as Solver.kernel.
Note
In this file we use camelCase “updatedField” in both code and comments to denote field E or B that is being updated (i.e. corrected) in the kernel. The other of the two fields is called “incidentField”. And for the incidentField source we explicitly use “functor” to not confuse it with the field itself. Please refer to https://picongpu.readthedocs.io/en/latest/models/total_field_scattered_field.html for theoretical background of this procedure.
-
namespace particles
-
namespace collision
Typedefs
-
using CollisionScreeningSpecies = MakeSeq_t<>
List of (filtered) species contributing to the screening (Debye) length calculation.
Elements must be either a species types or a misc::SpeciesFilter specialization.
-
using CollisionPipeline = pmacc::mp_list<>
CollisionPipeline defines in which order species interact with each other.
the functors are called in order (from first to last functor)
Variables
-
constexpr bool debugScreeningLength = false
-
constexpr uint32_t cellListChunkSize = std::min(TYPICAL_PARTICLES_PER_CELL, 4u)
Chunk size used for cell list allocations.
To reduce the fragmentation of the heap memory on accelerators the collision algorithm is allocating a multiple of this value to store a cell list of particle IDs. The value must be non zero.
Our experience shows that 4 or 8 are working quite well. Higher numbers lead to more inefficient memory usage, so we cap this chunk size by default at the TYPICAL_PARTICLES_PER_CELL value.
-
namespace precision
Typedefs
-
using float_COLL = float_64
-
using float_COLL = float_64
-
using CollisionScreeningSpecies = MakeSeq_t<>
-
namespace collision
-
namespace particles