Simulation Parameters

Input Parameters

thunderboltz.parameters.TBParameters()

The ThunderBoltz simulation settings and their default values.

thunderboltz.parameters.WrapParameters()

Additional Python interface settings and their defaults.

Output Parameters

thunderboltz.parameters.OutputParameters()

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 get_timeseries() and get_ss_params() respectively.

thunderboltz.parameters.ParticleParameters()

A listing of species dependent properties that can be accessed by get_particle_tables(), which returns a list of data tables (one for each species) where each column of data is labeled with one of the following keywords.

Cumulative Reaction Counts

If cumulative reaction counts are required, they can be accessed easily for each reaction with the get_counts() method. This will return a DataFrame where each column corresponds to a collision process and each row corresponds to a time step.

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 ThunderBoltz constructor:

import thunderboltz as tb

calc = tb.ThunderBoltz(
     # For example, using the Helium model.
     indeck=tb.input.He_TB,
     # This will turn on electron generation for the Helium model
     # i.e. this will ensure the "Ionization" collision model is
     # used in the generated indeck.
     egen=True,
     # Now we must set the MEM flag, since we will be generating
     # a lot of electrons.
     MEM = 10, # in GB
)

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.