9. Appendix
9.1. Tested compiler combinations
The following list summarizes all tested combinations of the required libraries (HDF5, OpenMPI, CMake etc.)
Dev |
PICLas Version |
System |
Compiler |
HDF5 |
MPI |
CMake |
---|---|---|---|---|---|---|
SC |
2.3.0 (Nov 2021) |
PC |
gcc11.2.0 |
1.12.1 |
openmpi-4.1.1 |
3.21.3 |
SC |
2.2.0 (Nov 2021) |
PC |
gcc10.1.0 |
1.10.5 |
openmpi-4.0.2 |
3.17.0 |
AM |
2.1.0 (Nov 2021) |
PC |
gcc9.3.0 |
1.10.6 |
openmpi-3.1.6 |
3.17.0 |
SC |
2.0.0 (Nov 2021) |
boltzhawk |
gcc9.3.0 |
1.10.5 |
openmpi-3.1.6 |
3.17.0 |
SC |
2.0.0 (Nov 2021) |
boltzreggie |
gcc9.2.0 |
1.10.5 |
openmpi-4.0.2 |
3.15.0 |
SC |
2.0.0 (Nov 2021) |
boltzplatz |
gcc9.2.0 |
1.10.5 |
openmpi-3.1.6 |
3.17.0 |
SC |
2.0.0 (Nov 2021) |
hawk |
gcc9.2.0 |
1.10.5 |
mpt2.23 |
3.16.4 |
SC |
2.0.0 (Nov 2021) |
fh1 |
intel18.1 |
1.10 |
impi2018 |
3.17 |
SC |
2.0.0 (Nov 2021) |
fh2 |
intel19.1 |
1.10 |
impi2019 |
3.17 |
PN |
1.4.0 (Nov 19) |
boltzplatz |
gnu7.4.0 |
1.10.5 |
openmpi-3.1.3 |
3.15.3-d |
SC |
1.4.0 (Nov 19) |
boltzreggie |
gnu9.2.0 |
1.10.5 |
openmpi-4.0.2 |
3.15.3-d |
Combinations that can cause problems are listed in the following table
Dev |
PICLas Version |
System |
Compiler |
HDF5 |
MPI |
CMake |
Notes |
---|---|---|---|---|---|---|---|
SC |
1.4.0 (Nov 19) |
boltzreggie |
gnu9.2.0 |
1.10.5 |
openmpi-4.0.1 |
3.15.3-d |
Does not work for more than 3 processors probably due to a problem with the OpenMPI version |
9.2. Unified Species Database (USD)
This section documents the initial creation process for the database, but since it is updated all the time it is recommended that modifications and maintenance are performed using the scripts in the tools folder: piclas/tools/species_database/
. These scripts are meant to provide a controlled and uniform approach to database management.
All files to create the original database were moved to piclas/tools/archive/
.
A tool to create a database containing cross-section, electronic states, Arrhenius rates, and species data can be found in the tools folder: piclas/tools/species_database/
.
The Python script (python3.7) create_species_database.py
creates a new database or expands an existing one combining all necessary parameters (formerly read-in through ini files). The script uses the numpy
, h5py
, argparse
,datetime
, cmath
, and matplotlib.rcsetup
packages. To create the species database run the command:
python3.7 create_species_database.py
If electronic states or cross-section data should be added to the species database, an electronic states Electronic-State-Database.h5
and a cross-section database XSec-Database.h5
need to be built before.
If nothing additionally is specified, the following filenames are called: DSMC.ini
for the parameter, gas-phase reaction input and Species_Database.h5
for the final output. For custom file names and for the inclusion of electronic and cross-section data, the following options can be added:
python3 create_species_database.py --parameter parameter-filename --electronic electronic_statefile --crosssection crosssection_statefile --output output_filename --reference reference-name
or
python3 create_species_database.py -p parameter-filename -e electronic_statefile -c crosssection_statefile -o output_filename -r reference-name
The data is grouped in the output file, as shown in the following example:
Cross-Sections (group)
H2-H2Ion1 (dataset)
Reaction (group)
CH3_CH2+H (dataset)
Chemistry model (attributes)
Arrhenius parameters (attributes)
O2+M_O+O+M (dataset)
Chemistry model (attributes)
Arrhenius parameters (attributes)
Fe_FeIon1+electron (dataset)
Chemistry model (attributes)
Arrhenius parameters (attributes)
Species (group)
H2 (group)
Electronic levels (dataset)
Species parameters (attributes)
H2Ion1 (group)
Electronic levels (dataset)
Species parameters (attributes)
electron (group)
Electronic levels (dataset)
Species parameters (attributes)
For cross-sections, reactions and species data, the former DSMC.ini
files are used to create the database. However, every species must be defined to create the database and to run simulations.
Part-Species1-SpeciesName=CO2
The name of the reaction is optional, if none is given, the reaction name is created automatically from the reactants and products, following the naming convention defined below:
Reac1+Reac2_Prod1+Prod2+Prod3
Reac1+Reac2_Prod1+Prod2+Prod3#2
Non-reacting partners can be given as A (atoms or similar) or M (molecules or similar) in the reaction name. If a name is defined in the input file, the programm automatically renames it according to the set convention. If multiple sets of parameters or multiple models exist for the same reaction, a counter variable f.e. ‘#5’ is added at the end of the reaction name.
For reactions a chemistry model is defined in all cases. The name of the given parameter-file is automatically taken as the model name. To have a clear distinction, the following naming convention should be used for the parameter-filename and thus the chemistry model for the reactions:
PlanetAtmosphere_XSpec_XReac_Source (Titan_18Spec_30Reac_Gokcen2007)
TestCase_XSpec_XReac_Source (CO2_6Spec_10Reac_Johnston2014)
In addition to creating a new database, the same script can be used to extend an existing version. For this, only the name of the existing database needs to be defined in the call to create_species_database.py. The function automatically tests if the provided data is already included and adds them if not.
After creating the database the script extend_reactions.py
in piclas/tools/archive/
is used to allow one reaction to be part of more than one chemistry model. In this script there are some hard coded changes to ensure a consistent documentation, so no changes by hand had to be made, e.g. changing the reaction model to ‘QK’ for these reactions ‘O2+electron_O2Ion1+electron+electron#1’,’O+electron_OIon1+electron+electron#1’ and ‘CO+electron_COIon1+electron+electron#1’.
9.2.1. Electronic database
This function was also moved to the tools folder: piclas/tools/species_database/
. If a new atom species is added the electronic excitation states are added to the database with the data from the NIST database (https://physics.nist.gov/cgi-bin/ASD/energy1.pl).
The folder piclas/tools/electronic_database/
was removed to enable a uniform handling of electronic excitation states, but the section is kept for clarity.
A tool to create a database containing electronic excitation states can be found in the tools folder: piclas/tools/electronic_database/
.
The Python script (python3.7) create_electronic_database_atoms.py
can be used to populate a PICLas-compatible cross-section database, using
the pandas
, h5py
, io
, re
, datetime
and requests
packages. It can be excuted with
python3.7 `create_electronic_database_atoms.py`
The script gets the data from the NIST database (https://physics.nist.gov/cgi-bin/ASD/energy1.pl) and stores it in an h5-database. Additional species can be added by adapting the species-list
parameter.
9.2.2. Reactions
This function was also moved to the tools folder: piclas/tools/species_database/
. If a new reaction is added the necessary data is read in from user inputs or from the name of the reaction.
Reactions can be defined in a separate group as shown above, named by the product species, and added manually using h5py or
HDF View (Make sure to re-open the file as Read/Write
to be able to modify and create the dataset.). The ionization process from the LXCat database is not added as a reaction,
however, the cross-section can be used. An additional source for cross-sectional data for reactions is the NIFS database.