Building Blocks¶
This part of the documentation is dedicated to the exaStamp simulation graph and default configuration of its constitutive elements. The entire simulation workflow is defined by a combination of operators that can be interconnected, each of which can expect some data as input and generate data as output.
The default simulation graph of an exaStamp simulation is defined in data/config/main-config.msp where data/config contains a various set of configuration files that can be included in any simulation's input file. Below we define the building blocks of any exaStamp simulation, namely:
simulationblockincludesblockconfigurationblock
Simulation block¶
The most important block of an exaStampsimulation is the simulation block which entirely defines how a full simulation works, i.e. from the logo printed to the screen up to the hardware finalization after the simulation has run. The simulation block is a YAML batch operator that contains a name and a body.
The above scenario represents the default simulation graph of an exaStamp simulation. A lot of the operators present in the body list are of course not to be defined by the user as they concern the hardware initialization, screen logging, satistics and other operations needed to initialize and configure the simulation. These operators are generally filled by including some configuration files.
However, some operators in that graph are required and need to be defined by the user. Among them are the interatomic potential, the particles species, the numerical scheme and so on. We consider that the mandatory blocks to be defined by the user to build a minimal input deck for exaStamp are the following ones:
- global # Global control of simulation parameters
- species # Definition of the particles' species
- compute_force # Choice of the interatomic potential
- domain # Definition of the simulation's domain
- input_data # Population of the domain with particles
Includes block¶
The includes block allows you to include other YAML files to your input file. By default, the includes block is defined as follows:
config_* files contain predefined operators and parameters required by an exaStamp simulation. These default configuration files are explained in ddetail in the next section.
Adding the includes block to your input file will not erase that definition but append the included files to the list above. Thus, if you want for example to consider an additional file named my_additional_file.yaml in which you have defined a specific operator, you can do as follows:
The advantage of this includesblock is that you can avoid having a very long input file and allow for multiple variations of a simulation parametrization.
Configuration block¶
The first elementary block for an exaStamp simulation is the configuration block. This block serves as a placeholder for configuring both physical units to be used, logging properties, profiling and debugging features as well as specific instructions of MPI x OMP and GPU execution. Below is the full configuration block with its default values.
Usually, you do not need to redeclare this entire block in your simulation input file. For example, if you just want to print a summary of the simulation execution graph at the end of your run, you can add to your input file the following:
This will only redefine the summary key's value of the profiling dictionary. Additionally, we do not recommend you to redefine units as for now they are design to better control the internal units. In addition, we do not guarantee yet that the appropriate conversions are correctly done for outputs. Thus, modifying units should be done at your own risk.