Code usage
Configuration files
Simulation parameters are controlled by JSON configuration files.
Basic usage
The files have an \(.ini\) suffix and a simple structure of \(parameter: value\). When fed into the drivers, Runko will automatically parse the file and construct a \(Configuration\) object, typically called \(conf\). Any parameter in the configuration file gets turned into \(conf.parameter\) with a value of \(value\); this makes it easy to add any new user-defined parameters to the driver scripts.
During the construction of \(conf\) the configuratoin file is also typically passed through a problem-spesific \(init_problem.py\) file that introduces a specialiced \(Configuration_Problem\) derived from the base class. It can do additional manipulation on the configuration file parameters before resulting in a \(conf\) object.
Typical parameters
Typical default parameters found in configuration files include:
- [io]: basics
\(outdir\): simulation output directory name (e.g., \(run_1\))
\(laprestart\): Simulation lap to restart from (\(-1\) = no restart, \(0\) = automatic, \(X\) lap to restart; \(0\) is default)
\(restart\): No. of steps between restart files written; these restart files are cycled and overwritten during the simulation to save disk space.
- [io]: analysis
\(interval\): No. of steps between analysis output files written
\(stride\): thinning factor for analysis grids; results in saving only every \(st\):th grid point in each dimension (typically either \(1\) for complete data snapshots or tile length for maximum compression)
\(stride\): thinning factor for analysis grids; results in saving only every \(st\):th grid point in each dimension (typically either \(1\) for complete data snapshots or tile length for maximum compression)
- [io]: deep io
\(full_interval\): No. of steps between writing of full output files (these act as full restart files but are not overwritten; typically \(-1\) to save disk space)
- [io]: shock io (optional and relevant only for shock simulations)
\(box_nx\): length of a special grid that tracks the shock front during a simulation
\(box_stride\): similar thinning factor as \(stride\) but for the special shock grid
\(box_shift\): displacement of the box from the (automatically-located) shock front (use a value of \(-box_nx/2\) to center the grid on the shock front; \(0\) to track upstream).
- [simulation]: MPI control parameters (optional)
- \(mpi_track\): instead of partitioning the domain equally between processors we can optionally make a “caterpillar`-like track (along x-dimension) where tiles owned by different MPI ranks repeat themselves cyclically. This parameter controls the length of the track in units of tiles. A value of \(128\) would partition the tiles inside a sub-domain of \(128 x Ny x Nz\) equally between all the processors. The pattern is repeated for the length of the domain in x-direction.
make sure there are reasonable number of tiles in one cycle per processor. Each rank has \(mpi_track x Ny x Nz/Nprocs\) continuous tiles in the subdomain, multiplied by the number of cycles, \(Nx/mpi_track\). - The parameter can be tuned to roughly equal the active zone in a shock simulation. This way the simulation is always distributed among approximiately the same number of ranks. Physical length of the track is \(mpi_track * NxMesh/c_omp\).