ThunderBoltz Documentation
This documentation includes instruction on installation and compilation of ThunderBoltz source code and descriptions of the input and output simulation parameters involved.
Installation
The Python API can be installed via pip.
pip install thunderboltz
The code can also be downloaded from the repository. Use the following command to clone the code into a local repository.
git clone git@github.com:lanl/ThunderBoltz.git
You may need to set up SSH keys in order to access Github. See the Github SSH Guide to set up access to Github repositories.
The basic ThunderBoltz functionality is available either
as an executable in bin/thunderboltz.bin or can be compiled from the
source in src/thunderboltz/cpp.
Compilation
ThunderBoltz requires a g++ of clang compiler and should be compiled from source directories as
g++ -std=c++17 -o thunderboltz.bin DSMC0D.cpp
Then run with
./thunderboltz.bin inputfile.in
to use a manually constructed indeck file. The code is maintained with the standard -Wall and -Werror compiler options.
Here is an example of how to run a simple ThunderBoltz calculation.
# Make a directory for testing
mkdir example_sim
cd example_sim
# Copy the source over
cp ../src/thunderboltz/* .
# Copy example input files over
cp -r ../indecks/N2/* .
# Compile
g++ -std=c++17 -o thunderboltz.bin DSMC0D.cpp
# Run
./thunderboltz.bin N2vib.in
Simulation Parameters
Input Parameters
The ThunderBoltz simulation settings and their default values. |
Output Parameters
A listing of the main output parameters of the simulation, these keywords are the named columns of the time series and steady state data frames returned by |
|
A listing of species dependent properties that can be accessed by |
Electron Growth and Memory Management
Depending on the ionization model and field strength,
ThunderBoltz may generate a large number of electrons.
In these cases, the appropriate amount of memory must be
allocated. The correct amount will be allocated automatically
in scenarios where no ionization process is used,
or when the IonizationNoEgen model is used. This amount
will be allocated based on the sum of all NP elements
times 4.
However, in scenarios where there is significant electron generation,
i.e. at high \(E\) fields with the Ionization model on,
the default memory settings are not sufficient and the simulation
will exit with the error “Too many particles!”. To prevent this
specify the MEM flag in the indeck. MEM will accept any
float representing the number of gigabytes to be made available
to the particle arrays.
Warning
If the value of MEM is more than the actual number of
available GB, then the simulation will still run, but will
exit with a segmentation fault once too many particles are
created.
Warning
When using multiple cores on the same machine / node, ensure that each process has enough memory requested and that the sum of memory requests does not exceed the available pool of RAM.