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.
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
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 | × |
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 | × | × | × |
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 |
<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>