generalReaction

General Reaction

Works with a VSimPD license. An interaction of the form

\[R1 + R2 + R3 + ... \rightarrow P1 + P2 + P3 + ...\]

This reaction models an arbitrary number of reactants and products. It is up to the user to ensure mass and charge are conserved. Furthermore, velocities of the products assumes energy is conserved but not momentum.

The final speeds of each particle are determined by calculating the final total energy in the center of mass frame (i.e. total final energy = total initial energy - thresholdEnergy). The directions of the final particles is sampled randomly and are isotropic. This reaction allows a user to specify the distribution of final energies. The default is to divide the final energy equal among all the products. A good distribution would be to make the final energy of a product proportional to the inverse mass.

Any RxnProcess Block block which points to a productGenerator of kind = generalReaction should have the Reactants and Products in any order:

reactants = [R1 R2 R3 ...]
products = [P1 P2 P3 ...]

generalReaction Attributes

thresholdEnergy (float, required)

The energy required (in eV) to make the reaction occur. The final energy = total initial energy - thresholdEnergy. thresholdEnergy could be negative to model an exothermic reaction.

energyDistribution (float vector,optional)

A vector which contains the same number of elements as the number of products. Element i of the vector specfies the fractional final energy that is given to the ith product. The default is to equally divide the energy. A good rule of thumb is to specify the fractional energy proportional to the inverse mass. The sum over all the elements must equal 1.

randomSeed (int, optional, default: random int)

Manually set a random seed used to determine the final velocities of the product particles.

The default is to choose a random seed at run time. To produce identical simulations, advanced users may want to manually set a seed. It is recommended not to include this parameter so that a different random number will be generated for each run.

Example binaryElastic Block

<RxnProductGenerator productGenerator>
  kind = generalReaction
  thresholdEnergy = 12.0 # minimum energy needed initiate the reaction (in eV)
  energyDistribution = [0.49 0.49 0.02] # Assumes 3 products.
  #randomSeed = 423
</RxnProductGenerator>