Input parameters¶
Entity reads almost all the information (except for the problem generator) about the simulation at runtime from an input file provided in the .toml format. The most up-to-date full version of the input file with all the possible input parameters with their descriptions can be found in the root directory of the main repository in the input.example.toml.
required |
These paremeters are required to be specified for any simulation |
inferred |
These parameters are not directly specified by the user, but are inferred from other input parameters |
| parameter | type | description | default |
|---|---|---|---|
simulation |
|||
name |
string |
Name of the simulationThe name is used for the output files. |
|
engine |
string"SRPIC", "GRPIC" |
Simulation engine to use | |
runtime |
float> 0 |
Max runtime in physical (code) units | |
domain |
|||
number |
int |
Number of domains | 1 [no MPI]; MPI_SIZE [MPI] |
decomposition |
array<int>size 1 :->: 3 |
Decomposition of the domain (for MPI) in each of the directions* -1 means the code will determine the decomposition in the specific direction automatically. * Automatic detection is either done by inference from # of MPI tasks, or by balancing the grid size on each domain. |
$[-1, -1, -1]$ |
grid |
|||
resolution |
array<uint>size 1 :->: 3 |
Spatial resolution of the gridDimensionality is inferred from the size of this array. |
|
extent |
array<tuple<float>>size 1 :->: 3 |
Physical extent of the grid* For spherical geometry, only specify [[rmin, rmax]], other values are set automatically. * For cartesian geometry, cell aspect ratio has to be 1: dx=dy=dz. |
|
dim |
short1, 2, 3 |
Dimensionality of the grid | |
metric |
|||
metric |
string"Minkowski", "Spherical", "QSpherical", "Kerr_Schild", "QKerr_Schild", "Kerr_Schild_0" |
Metric on the grid | |
qsph_r0 |
float-∞ -> rmin |
r0 paramter for the QSpherical metric x1 = log(r-r0)Negative values produce almost uniform grid in r. |
$0.0$ |
qsph_h |
float-1 :->: 1 |
h paramter for the QSpherical metric th = x2 + 2*h x2 (pi-2*x2)*(pi-x2)/pi^2 |
$0.0$ |
ks_a |
float0 :-> 1 |
Spin parameter for the Kerr Schild metric | $0.0$ |
coord |
string"cartesian", "spherical", "qspherical" |
Coordinate system on the grid | |
ks_rh |
float |
Size of the horizon for GR Kerr Schild | |
params |
map<string, float> |
A map of all metric-specific parameters together (for easy access) | |
boundaries |
|||
fields |
array<tuple<string>>"PERIODIC", "MATCH", "FIXED", "ATMOSPHERE", "CUSTOM", "HORIZON", "CONDUCTOR" |
Boundary conditions for fields* When periodic in any of the directions, you should only set one value: [..., ["PERIODIC"], ...]. * In spherical, bondaries in theta/phi are set automatically (only specify bc @ [rmin, rmax]): [["ATMOSPHERE", "MATCH"]]. * In GR, the horizon boundary is set automatically (only specify bc @ rmax): [["MATCH"]]. |
|
particles |
array<tuple<string>>"PERIODIC", "ABSORB", "ATMOSPHERE", "CUSTOM", "REFLECT", "HORIZON" |
Boundary conditions for fields* When periodic in any of the directions, you should only set one value [..., ["PERIODIC"], ...]. * In spherical, bondaries in theta/phi are set automatically (only specify bc @ [rmin, rmax]) [["ATMOSPHERE", "ABSORB"]]. * In GR, the horizon boundary is set automatically (only specify bc @ rmax): [["ABSORB"]]. |
|
match |
|||
ds |
floator array<tuple<float>> |
Size of the matching layer in each direction for fields in physical (code) unitsIn spherical, this is the size of the layer in rfrom the outer wall. |
1% of the domain size (in shortest dimension) |
absorb |
|||
ds |
float |
Size of the absorption layer for particles in physical (code) units* In spherical, this is the size of the layer in rfrom the outer wall. * In cartesian, this is the same for all dimensions where applicable. |
1% of the domain size (in shortest dimension) |
atmosphere |
|||
temperature |
float |
Temperature of the atmosphere in units of m0 c^2[required] if ATMOSPHEREis one of the boundaries. |
|
density |
float |
Peak number density of the atmosphere at base in units of n0 |
|
height |
float |
Pressure scale-height in physical units | |
species |
array<int>size 2 |
Species indices of particles that populate the atmosphere | |
ds |
float |
Distance from the edge to which the gravity is imposed in physical units0.0 means no limit. |
$0.0$ |
g |
float |
Acceleration due to imposed gravity | |
scales |
|||
larmor0 |
float> 0.0 |
Fiducial larmor radius | |
skindepth0 |
float> 0.0 |
Fiducial plasma skin depth | |
dx0 |
float |
fiducial minimum size of the cell | |
V0 |
float |
fiducial elementary volume | |
n0 |
float |
Fiducial number density | |
q0 |
float |
Fiducial elementary charge | |
sigma0 |
float |
Fiducial magnetization parameter | |
B0 |
float |
Fiducial magnetic field | |
omegaB0 |
float |
Fiducial cyclotron frequency | |
algorithms |
|||
current_filters |
ushort>= 0 |
Number of current smoothing passes | $0$ |
timestep |
|||
CFL |
float0.0 -> 1.0 |
Courant-Friedrichs-Lewy numberCFL number determines the timestep duration. |
$0.95$ |
correction |
float |
Correction factor for the speed of light used in field solver | $1.0$ |
dt |
float |
timestep duration | |
deposit |
|||
enable |
bool |
Enable the current deposition | true |
order |
int |
Order of the particle shape function | $1$ |
gr |
|||
pusher_eps |
float> 0.0 |
Stepsize for numerical differentiation in GR pusher | $10^{-6}$ |
pusher_niter |
ushort> 0 |
Number of iterations for the Newton-Raphson method in GR pusher | $10$ |
gca |
|||
e_ovr_b_max |
float0.0 -> 1.0 |
Maximum value for E/B allowed for GCA particles | $0.9$ |
larmor_max |
float |
Maximum Larmor radius allowed for GCA particles (in physical units)When larmor_max== 0, the limit is disabled. |
$0.0$ |
synchrotron |
|||
gamma_rad |
float> 0.0 |
Radiation reaction limit gamma-factor for synchrotron[required] if one of the species has cooling = "synchrotron". |
$1.0$ |
fieldsolver |
|||
delta_x |
float |
delta_x coefficient (for F_{i +/- 3/2, j, k})Standard Yee solver: delta_i = beta_ij = 0.0. |
$0.0$ |
delta_y |
float |
delta_y coefficient (for F_{i, j +/- 3/2, k})Used only for 2D and 3D. |
$0.0$ |
delta_z |
float |
delta_z coefficient (for F_{i, j, k +/- 3/2})Used only for 3D. |
$0.0$ |
beta_xy |
float |
beta_xy coefficient (for F_{i +/- 1/2, j +/- 1, k})Used only for 2D and 3D. |
$0.0$ |
beta_yx |
float |
beta_yx coefficient (for F_{i +/- 1, j +/- 1/2, k})Used only for 2D and 3D. |
$0.0$ |
beta_xz |
float |
beta_xz coefficient (for F_{i +/- 1/2, j, k +/- 1})Used only for 3D. |
$0.0$ |
beta_zx |
float |
beta_zx coefficient (for F_{i +/- 1, j, k +/- 1/2})Used only for 3D. |
$0.0$ |
beta_yz |
float |
beta_yz coefficient (for F_{i, j +/- 1/2, k +/- 1})Used only for 3D. |
$0.0$ |
beta_zy |
float |
beta_zy coefficient (for F_{i, j +/- 1, k +/- 1/2})Used only for 3D. |
$0.0$ |
particles |
|||
ppc0 |
float> 0.0 |
Fiducial number of particles per cell | |
use_weights |
bool |
Toggle for using particle weights | false |
clear_interval |
uint |
Timesteps between particle re-sorting (removing dead particles)Set to 0 to disable re-sorting. |
$100$ |
nspec |
uint |
Number of particle species | |
species |
|||
label |
string |
Label of the species <INDEX>is the index of the species in the list starting from 1. |
"s<INDEX>" |
mass |
float>= 0.0 |
Mass of the species (in units of fiducial mass) | |
charge |
float |
Charge of the species (in units of fiducial charge) | |
maxnpart |
uint> 0 |
Maximum number of particles per task | |
pusher |
string"Boris", "Vay", "Boris,GCA", "Vay,GCA", "Photon", "None" |
Pusher algorithm for the species | "Boris" [massive]; "Photon" [massless] |
n_payloads_real |
ushort |
Number of additional real-valued variables (payloads) for each particle of the given species | $0$ |
n_payloads_int |
ushort |
Number of additional integer-valued variables (payloads) for each particle of the given speciesIf tracking is enabled, one or two extra integer payloads are reserved (depending on whether MPI is enabled). |
$0$ |
tracking |
bool |
Enable tracking of particles using indices for the given species | false |
cooling |
string"None", "Synchrotron" |
Radiation reaction to use for the species | "None" |
setup |
Parameters for specific problem generators and setups | ||
output |
|||
format |
string"disabled", "hdf5", "BPFile" |
Output format | "hdf5" |
interval |
uint> 0 |
Number of timesteps between all outputsValue is overriden by output intervals for specific outputs. |
$1$ |
interval_time |
float |
Physical (code) time interval between all outputs* When interval_time< 0, the output is controlled by interval, otherwise by interval_time. * Value is overriden by output intervals for specific outputs. |
$-1.0$ |
separate_files |
bool |
Whether to output each timestep into separate files | true |
fields |
|||
enable |
bool |
Toggle for the field output | true |
quantities |
array<string>"E", "B", "J", "divE", "Rho", "Charge", "N", "Nppc", "T0i", "Tij", "Vi", "D", "H", "divD", "A" |
Field quantities to output* For T, you can use unspecified indices: Tij, T0i, or specific ones: Ttt, T00, T02, T23. * For T, in cartesian can also use "x" "y" "z" instead of "1" "2" "3". * By default, we accumulate moments from all massive species, one can specify only specific species: Ttt_1_2, Rho_1, Rho_3_4. |
[] |
custom |
array<string> |
Custom (user-defined) field quantities | [] |
mom_smooth |
ushort |
Smoothing window for the output of moments ("Rho", "Charge", "T", ...) | $0$ |
interval |
uint |
Number of timesteps between field outputs* When != 0, overrides output.interval. * When == 0, output.intervalis used. |
$0$ |
interval_time |
float |
Physical (code) time interval between field outputs* When < 0, the output is controlled by interval. * When specified, overrides output.interval_time. |
$-1.0$ |
downsampling |
uintor array<uint>>= 1 |
Downsample factor for the output of fields* The output is downsampled by the given factors in each direction. * If a scalar is given, it is applied to all directions. |
$[1, 1, 1]$ |
particles |
|||
enable |
bool |
Toggle for the particles output | true |
species |
array<int> |
Particle species indices to outputIf empty, all species are output. |
[] |
stride |
uint> 1 |
Stride for the output of particles | $100$ |
interval |
uint |
Number of timesteps between particle outputs* When != 0, overrides output.interval. * When == 0, output.intervalis used. |
$0$ |
interval_time |
float |
Physical (code) time interval between particle outputs* When < 0, the output is controlled by interval. * When specified, overrides output.interval_time. |
$-1.0$ |
spectra |
|||
enable |
bool |
Toggle for the spectra output | true |
e_min |
float |
Minimum energy for the spectra output | $10^{-3}$ |
e_max |
float |
Maximum energy for the spectra output | $10^{3}$ |
log_bins |
bool |
Whether to use logarithmic bins | true |
n_bins |
uint> 0 |
Number of bins for the spectra output | $200$ |
interval |
uint |
Number of timesteps between spectra outputs* When != 0, overrides output.interval. * When == 0, output.intervalis used. |
$0$ |
interval_time |
float |
Physical (code) time interval between spectra outputs* When < 0, the output is controlled by interval. * When specified, overrides output.interval_time. |
$-1.0$ |
debug |
|||
as_is |
bool |
Output fields "as is" without conversions | false |
ghosts |
bool |
Output fields with values in ghost cells | false |
stats |
|||
enable |
bool |
Toggle for the stats output | true |
interval |
uint> 0 |
Number of timesteps between stat outputsOverriden if output.stats.interval_time != -1. |
$100$ |
interval_time |
float |
Physical (code) time interval between stat outputsWhen < 0, the output is controlled by interval. |
$-1.0$ |
quantities |
array<string>"B^2", "E^2", "ExB", "N", "Npart", "Charge", "Rho", "T00", "T0i", "Tij" |
Field quantities to output* For particle moments, ... * ... same notation is used as for output.fields.quantities. |
["B^2", "E^2", "ExB", "Rho", "T00"] |
custom |
array<string> |
Custom (user-defined) stats | [] |
checkpoint |
|||
interval |
uint> 0 |
Number of timesteps between checkpoints | $1000$ |
interval_time |
float> 0 |
Physical (code) time interval between checkpointsWhen < 0, the output is controlled by interval. |
$-1.0$ |
keep |
int |
Number of checkpoints to keep* 0 = disable checkpointing. * -1 = keep all checkpoints. |
$2$ |
walltime |
string |
Write a checkpoint once after a fixed walltime* The format is "HH:MM:SS". * Empty string or "00:00:00" disables this functionality. * Writing checkpoint at walltime does not stop the simulation. |
"00:00:00" |
write_path |
string |
Parent directory to write checkpoints toThe directory is created if it does not exist. |
<simname>.ckpt |
read_path |
string |
Parent directory to use when resuming from a checkpoint | inherit write_path |
is_resuming |
bool |
Whether the simulation is resuming from a checkpoint | |
start_step |
uint |
Timestep of the checkpoint used to resume | |
start_time |
float |
Time of the checkpoint used to resume | |
diagnostics |
|||
interval |
int> 0 |
Number of timesteps between diagnostic logs | $1$ |
blocking_timers |
bool |
Blocking timers between successive algorithms | false |
colored_stdout |
bool |
Enable colored stdout | true |
log_level |
string"VERBOSE", "WARNING", "ERROR" |
Specify the log level"VERBOSE" prints all messages, "WARNING" prints only warnings and errors, "ERROR" prints only errors. |
"VERBOSE" |