Input File Syntax

The PRISM project utilizes the yaml file format to store reaction networks. The yaml file format was selected for its minimal syntax and wide support accross programming languages. The input file is broken up into blocks, the following are supported by PRISM.

  • Bibliography

  • Data Path

  • Data Delimiter

  • Constant Species

  • Custom Species

  • Lumped Species

  • Overrides

  • Rate Based Reactions

  • Cross Section Based Reactions

Bibliography Block

In the PRISM format every reaction is required to have at least one cite key associated with it. This blocks allows you to specify a bibliography file in which these cite keys exist.

commentnote

The bibliograpy file must be in the BibTex format in order to better support documenting a reaction mechanism in .

This block only requires a single string which is the path from the location of the executable which is reading the input file to the bibliography file


  bibliography: path/to/bib.bib

Data Path Block

To reduce the amount of user input requried, the PRISM project also supports the definition of a data path. This should be used if all the data files required for your network are stored in the same location. When defined the data path will be prepended to the file parameter of every reaction in the file. It can be defined in the following manner.


  data-path: path/to/data/

If we have a reaction which takes the file parameter like this


  file: data.txt

The reaction object that is created will prvoide the path to the data file in the following manner.


  "path/to/data/data.txt"

Data Delimiter Block

PRISM currently only supports data from files where the files have two columns that are seperated by a delimiter. In order to specify this delimiter you can use the data-delimiter block. This will set the delimiter to be used on all of the data provided by a given mechanism file.


  data-delimiter: ","

If no delimiter is explicity provided then PRISM assumes data is provided in a CSV format.

Constant Species Block

There may be some situations where it makes sense to have a species in a reaction network where you assume the effects of the reactions are negligible on the concentration of the species. To accomodate this you can use the constant-species block. This block excludes the species from being included in the list of transient species that can be obtained via NetworkParser::transientSpecies(). Additionally, the species will have a higher id value as a result of being held constant and it's location in the species list, obtained via NetworkParser::species(), will also be changed accordinly.

This data be provided either as a single species


  constant-species: Ar

or as a list of species


  constant-species: [N2, Ar]

Custom Species Block

The PRISM project provides the mass of all elements in the periodic table, and electrons. PRISM can compute the mass for any species (neutral or ionized) which is composed for elements in the periodic table based on this data. This data has been collected from the following sources Baum et al. (2010) and NCBIPCCD (2009).

However, we understand that in some cases users may need and or want to define a custom species or override the default mass provided for an element. When defining a custom species simply define the name and the molar mass of the neutral species with the following syntax.


custom-species:
  - name: A
    mass: 1

You may also define an arbitrary number of custom species. This is true for all blocks. In the sense that you can and often will have repeated entries in each block.


custom-species:
  - name: [A, B, C]
    mass: [1, 2, 3]
commentnote

All custom species must have a name which begins with a capital letter.

Lumped Species Block

It a relatively common practice in plasma simulations to lump multiple excited states of a species into a single species. In this block you can define species present in reactions to be substituted with your lumped species. This allows users to retain all of the information in a reaction network while easily lumping excited states during calculations.


lumped-species:
  - lumped: N2*
    actual: [N2(rotation), N2(vibration)]

With the lumped species block above the states N2(rotational) and N2(vibrational) will be substituded with N2* when parsing the reactions which contain those excited states. You can also define an arbitrary number of lumped states.


lumped-species:
  - lumped: N2*
    actual: [N2(rotation), N2(vibration)]
  - lumped: O2*
    actual: [O2(rotation), O2(vibration)]

When this is performed PRISM will first validate that the original reaction that you have provided is valid, then substitute the lumped states into the reaction and then re-validate with the lumped states in the reaction.

Override Block

Since we automatically generate tables for the reaction networks in the input file we understand that you may not be satisfied with the default representation of the species. In this block we allow you to define a custom representation that will override the default representation.


latex-overrides:
  - species: N2(excited)
    latex: N$_{2}\Delta)$

You can also define an arbitrary number of these overrides.


latex-overrides:
  - species: [O^m, He^m, He2^m]
    latex: ["O$^\\text{m}$", "He$^\\text{m}$", "He$_2$$^\\text{m}$"]

Reaction Block

The bulk of the inputs for a simulation will be in the reaction block. This is really two blocks to allow for cross section based reactions and rate based reactions in the same network. When using both the following syntax will be used. Note that this exact syntax is invalid and full reaction inputs must be provided.


rate-based:
  - reaction: ...
  - reaction: ...

xsec-based:
  - reaction: ...
  - reaction: ...

Inputs can include both the rate-based block, and the xsec-based block. Either can also be used on its own. There is no need to define a rate-based block if you do not have any rate based reactions in the network.

Reaction Input Parameters

ParameterDescriptionData TypeRequired?Default Value
reactionThe symbolic expression of the reaction seestringalwaysN/A
delta-eps-eThe change in energy of electronsfloatno0.00
delta-eps-gThe change in energy of the background gasfloatno0.00
fileThe file where the tabulated data is storedstringyes, if params is not provided""
paramsThe parameters required for evaluation of the analytic expressionA float or a list of floatsyes, if file is not provided[]
referenceThe cite keys for recources where the reaction came fromA string or a list of stringsalwaysN/A
notesAny additional helpful notes you may want to addA string or a list of stringsnever[]

Reaction Rate/Cross Section Data

The PRISM project supports two main types of reactions. The first is reactions which have cross sections or reaction rates tabulated in files.


  - reaction: Ar + e -> Ar* + e
    delta-eps-e: 11.56
    file: ar_excitation.txt
    references: lymberopoulos1993fluid
    notes: This is a test

The second is reactions which have an Arrhenius expression for their cross section or reaction rates given by

ParameterIndexUnits
0m
1Unitless
2eV
3Unitless
4eV

Where in the parameter row is the number of reactants in a reaction.

When using the provided sampling functions it is expected that the electron temperature and the gas temperature are given in [eV]. This is expected to be given in the form


  - reaction: 2Ar* -> Ar+ + Ar + e
    params: [1, 2, 3, 4, 5]
    references: lymberopoulos1993fluid
commentnote

You do not have to expliticty provide all of the parameters for a reaction which has data in an Arrhenius form. Any parameters which are not provided are assumed to be zero.

Example input files

For more complete examples of input files please checkout the inputs that are used for testing PRISM.

References

  1. E.M. Baum, Knolls Atomic Power Laboratory, and Bechtel Marine Propulsion Corporation. Nuclides and Isotopes: Chart of the Nuclides. KAPL, 2010. ISBN 9780984365319. URL: https://books.google.com/books?id=3mdcewAACAAJ.[BibTeX]
  2. NCBIPCCD. 2009. URL: https://pubchem.ncbi.nlm.nih.gov/periodic-table/.[BibTeX]