MonteCarloInteractions
Blocks enable random processes in VSim, such as the modeling of random interactions between real particles or the random production of particles due to processes like tunneling ionization. These interactions can be modeled in a fully-kinetic fashion (i.e., with macroparticles colliding with other macroparticles) or in a partially- or non-kinetic fashion with fluids.
The MonteCarloInteractions pages describe the kinds of IncidentSelector and the kinds of Interaction blocks that have been implemented.
Note
With variable-weight particles, once it is determined that a reaction has occurred, the smaller of the two initial-state particles weight*number-or-particles-in-macro-particle is used to compute the number of collision events that occur. This number of “real” particles is subtracted from the initial state macroparticle (i.e. the weight is reduced) and another particle of the lighter weight is produced. If the computed weight goes below 0, then it is deleted.
For example, e + H2 -> H2+ + 2e-
For e (of weight w_e) and H2 (of weight w_H2), after the reaction one has two electrons, each of weight w_e, one H2+ of weight w_e, and one H2 of weight (w_H2 - w_e).
Note
Caution should be exercised when using binaryChargeExchange and binaryElastic reactions in the Monte Carlo framework with variable-weight particles; the results may be unreliable. Consider using the newer Reactions framework instead.
MonteCarloInteractions Parameters
There is only one kind of MonteCarloInteractions block, and therefore no kind attribute is needed.
The MonteCarloInteractions block must contain one (and only one) IncidentSelector block, which determines the algorithm for selecting which random incidents in a given time step are performed and in which order.
The MonteCarloInteractions block can contain any number of NullInteraction and Interaction blocks. The NullInteraction blocks pertain to non-kinetic interactions, where no macroparticles interact (though macroparticles may be produced). The Interaction blocks pertain to full- or partially-kinetic interactions, where macroparticles interact with other macroparticles or fluids.
Note
- BuiltIn
The built in cross sections that exist vary with the type of collision/interaction. Please see the chart below to learn which cross sections exist for each collision/interaction type.
- EEDL
Evaluated Electron Data Library (EEDL) data is available for Z=1 to 100 elements. These cross sections can be downloaded from the International Atomic Energy Agency Nuclear Data Services website (https://www-nds.iaea.org/epdl97/). You can download either the complete library or individual evaluations. Vorpal currently uses the eedl/endl format for the libraries, so please be sure to download the right one. Please see :ref:`vsimref-mci-interactions-eedl for more information.
- LXcat
LXcat is an open-access website for collecting, displaying, and downloading electron and ion data. You can download the data from the LXcat Website (http://fr.lxcat.net/home/). Please see LXCatFile OAFunc for more information.
- ADK
The modified ADK (Ammosov, Delone, and Krainov) formula for field ionization, first reported by Penetrante and Bardsley [Penetrante] and later corrected by Ilkov et al. [Ilkov], gives the ionization rate for any type of atom. Both time averaged (averagedADK) and time resolved (DCADK) formula are implemented. Please see fieldIonization or nullFieldIonization for more information.
- functionDefined
There are too many interaction types and cross sections for us to list sources for each one. Outside of the EEDL and LXcat databases, many reliable cross sections can be found through publications and other databases online. Using the functionDefined (or userDefinedFunc for ionization) you may import your own cross section or ionization rate. Please see OAFunc Cross-Section Interface for more information.
Types of collisions
Cross Sections
Type of collision |
Reaction |
Type |
crossSection |
||||
---|---|---|---|---|---|---|---|
builtIn |
eedl |
functionDefined |
|||||
interpolated |
expression |
LXcatFile |
|||||
impactElastic |
A + e → A + e (scatter) |
fluid or species |
Xe |
× |
× |
× |
× |
impactExcitation |
A + e → A + e (excited) |
fluid or species |
Xe |
× |
× |
× |
× |
impactIonCollisions |
A + A\({^+}\) → A + A\({^+}\) (momentum exchange) A + A\({^+}\) → A\({^+}\) + A (charge exchange) |
fluid |
Ar, Xe [MPL+02] All others [LS05] |
× |
× |
× |
|
impactIonization |
A + e → A\({^+}\) + 2e (electron impact ionization) A + B\({^+}\) → A\({^+}\) + B\({^+}\) + e (proton impact ionization) e + Xe\({^+}\) → Xe\({^{++}}\) + 2e (electon impact double ionization) |
fluid or species |
electron impact: H2, He, CO2, O2, N2, Ar, Ne, Xe, Xe\({^+}\) proton impact: H, H2, He, CO2, CO, O2, N2 |
× |
× |
× |
× |
negativeIonDetachment |
A + B\({^-}\) → A + B + e |
fluid |
H, H2 |
× |
× |
× |
× |
electronAttachment |
A + e → A\({^-}\) |
fluid or species |
All |
× |
× |
||
threeBodyRecombination |
e + A\({^+}\) + e → A + e (scatter) |
species |
All |
× |
× |
||
chargeExchange |
A\({^+}\) + A → A + A\({^+}\) |
species |
All |
× |
× |
× |
|
binaryChargeExchange |
A + A\({^+}\) → A\({^+}\) + A |
species |
All |
× |
× |
× |
|
binaryRecombination |
AB\({^+}\) + e → A + B |
species |
All |
× |
× |
× |
|
binaryIonization |
A + e → A\({^+}\) + 2e (electron impact ionization) |
species |
All |
× |
× |
× |
|
binaryExcitation |
A + e → A + e (excited) |
species |
Xe, Xe\({^+}\), Xe\({^{++}}\) |
× |
× |
× |
|
binaryElastic |
A + e → A + e (scatter) A + A → A + A (scatter) |
species |
Xe |
× |
× |
× |
|
binaryDissociation |
A + e → B + C + e (excited) |
species |
none |
× |
× |
× |
|
nullBgAbsorber |
fluid |
H, He, C, N, O, Na, Al, Si, P, Ar, Fe, Ni, Cu, Ge, Ag, Ba, Os, Pt, Au, Pb, U, Air, Water, Stainless |
× |
Ionization Rates
Type of collision |
Background Type |
ionizationKind |
||||
---|---|---|---|---|---|---|
builtIn |
averagedADK DCADK |
userDefinedFunc |
||||
interpolatedFromFile |
expression |
LXcatFile |
||||
fieldIonization |
species |
H, He, Li, Na, Rb, Cs |
× |
× |
× |
|
nullFieldIonization |
fluid |
H, He, Li, Na, Rb, Cs |
× |
× |
× |
Self Interactions
Type of interaction |
Interaction |
Background Type |
crossSection |
||||
---|---|---|---|---|---|---|---|
builtIn |
eedl |
functionDefined |
|||||
interpolatedFromFile |
expression |
LXcatFile |
|||||
oneBodyDecay / VADecay |
species |
N/A |
N/A |
N/A |
N/A |
N/A |
|
nullSelfCombination |
a + a → A |
species |
N/A |
N/A |
N/A |
N/A |
N/A |
nullSelfSplit |
A → a + a |
species |
N/A |
N/A |
N/A |
N/A |
N/A |
Example MonteCarloInteractions Block
<MonteCarloInteractions myInteractions>
<IncidentSelector mySelector>
kind=unbiasedSelector
</IncidentSelector>
<NullInteraction absorber>
kind = nullBgAbsorber
species = muons
fluid = hydrogen
# specify the stopping power with an OAFunc
stoppingPower = mysp
<OAFunc mysp>
kind = interpolatedFromFile
filename = h2StoppingPower.dat
# set bounds of the function from min and max x values in the file.
# option specific to kind = interpolatedFromFile
# setMinMaxFromFile = 1
# f has to be >0.
fmin = 0.
</OAFunc>
# charge of the particle for which the stopping power is given
refPtclCharge = ELEMCHARGE
# mass of the particle for which the stopping power is given
refPtclMass = PROTMASS
multipleScattering = none
straggling = none
</NullInteraction>
<Interaction Decay>
kind = oneBodyDecay
unstableSpecies = muons
productSpecies = electrons
lifetime = $2.*DT$
</Interaction>
</MonteCarloInteractions>