Specifying output information¶
Additionally, a simulation can also output the evolution of the system
properties. Which properties are needed is given in the outputs
array:
Example
[[simulations]]
nsteps = 1_000_000
outputs = [
{type = "Trajectory", file = "filename.xyz", frequency = 100},
{type = "Energy", file = "energy.dat", frequency = 200},
{type = "Custom", file = "custom.dat", template = "{vx[3] / mass[3]}"},
]
[simulations.propagator]
...
This array is an array of tables, containing three keys:
- the
type
of output - the
file
to write the output to - the
frequency
of the output.
The file
is the path where the output will be written to. The frequency is
a number and the output will be written every frequency
steps to the file.
Except for the Trajectory
output, all files are formatted with header lines
starting with a #
, and containing information about the quantities and the
units used for the output followed by multiple lines containing the step and
associated quantities. The available outputs are the following:
- The
Energy
output will write the potential, kinetic and total energy; - The
Cell
output will write the unit cell parameters, lengths and angles; - The
Properties
output will write the volume, the instant pressure (computed from the virial equation) and the instant temperature of the system; - The
Stress
output will write all the components of the stress tensor (computed from the virial equation); - The
Trajectory
output should be used to write a trajectory. The format of the trajectory will be guessed from thefile
extension. Supported formats are documented in chemfiles documentation. - The
Custom
output is the most powerful one, taking an user-provided template string and using it to output data. The template should be given as a string with thetemplate
key in the TOML input file.
Here are some examples of custom output templates:
- A constant string is reproduced as it is:
some data
; - Anything in braces is replaced by the corresponding values:
{pressure} {volume}
will write the pressure and volume; - Mathematical operators are allowed in braces:
{pressure / volume}
will print an entry containing the quotient of pressure and volume. You can use+
,-
,/
,*
,^
for exponentiation and parentheses; - Some properties are arrays of atomic properties:
{x[0] + y[20]}
will print the sum of the x position of the 0’th atom and the y position of the 20’th position; - Finally, all the properties are given in the internal units but one can
specify a different unit:
x[0] / nm
.
Here is a list of all properties available to custom outputs:
- Atomic properties: x, y and z for cartesian coordinates, vx, vy and vz for cartesian components of the velocity, mass for the atomic mass, charge for the atomic charge.
- Physical properties: pressure, volume, temperature, natoms, stress tensor components: stress.xx, stress.yy, stress.zz, stress.xy, stress.xz, stress.yz, simulation step.
- Unit Cell properties: cell.a, cell.b, cell.c are the unit cell vector lengths; cell.alpha, cell.beta and cell.gamma are the unit cell angles.