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:`montecarlointeractions-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 vvvv 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>