Neko
0.9.0
A portable framework for high-order spectral element flow simulations
|
Simulation components, or simcomps fo short, incapsulate additional functionality that may be useful for certain cases but not necessary to run the solver. This can include computation and output of additional fields, in-situ post-processing operations, data sampling, etc.
By design, simulation components can tap into every aspect of the simulation, so they can be quite powerful. As the code grows, we expect to add more and more simcomps to the code.
Each simcomp is defined as a single JSON object at are added to an array of objects called simulation_components
, which resides directly under the case
object.
The following is a list of simulation components that are currently available in Neko. The list will be updated as new simcomps are added.
.fld
file field_writerEach simulation component is, by default, executed once per time step to perform associated computations and output. However, this can be modified by using the compute_control
and compute_value
parameters for the computation and the output_control
and output_value
for the output to disk. The parameters for the _control
values are the same as for the fluid and checkpointing. Additionally, one can set output_control
to global
and never
. The former will sync the output_
parameter to that of the fluid. Choosing never
will suppress output all together. If no parameters for the output_
parameters are provided, they are set to be the same as for compute_
. In order to simplify the configuration, the compute_control
can be set to fluid_output
to sync the computation to the fluid output.
For simcomps that compute 3D fields, the output can be either added to the main .fld
file, containing velocity and pressure, or saved to a separate file. For the latter, the output_filename
keyword should be provided. One can additionally provide the precision
keyword, which can be set to either single
or double
to control the precision of the written data.
For example, in the tgv
example case the vorticity
component is executed once per 50 time steps. The output_
parameters are synced to that, and the vorticity fields will be added to the main .fld
file.
Computes the vorticity field an stores in the field registry as omega_x
, omega_y
and omega_z
. By default, appends the 3 vorticity fields to the field files as scalars. To output in a different fld
series, use the "output_filename"
parameter.
Computes \( \lambda_2 \) for the velocity field and stores it in the normal output files as the first unused field. This means that \( \lambda_2 \) can be found in the temperature field in then fld files if running without a scalar and s1 if neko is run with one scalar. To output in a different fld
series, use the "output_filename"
parameter.
Probes selected solution fields at a list of points. This list of points can be generated in a variety of ways, but the most common is to use the csv
type.
file
: Reads a list of points from a CSV file. The name of the file is provided with the file_name
keyword. The CSV file should have the following format: points
: Reads a list of points from a JSON file. The points are specified based in the coordinates
keyword and should be a list of x,y,z values. The file should have the following format:
The points are assumed to be in the same units as the simulation.
line
: Generates a list of points along a line. The line is defined by two points, start
and end
, and the number of points to generate, amount
. The points are generated by linearly interpolating between start
and end
. The line is defined as: circle
: Generates a list of points along a circle. The circle is defined by a center, center
, a radius, radius
and the normal, normal
, the number of points to generate is controlled by amount
. The points are generated by rotating a point around the center starting from the specified axis projected onto the circle. The circle is defined: This probes the fields 'w', and 's' in the points described by points.csv and outputs into output.csv every 1 time units.
The probed information will be saved in the output file in the following format:
Outputs registered 3D fields to an .fld
file. Requires a list of field names in the fields
keyword. Primarily to be used for outputting new fields defined in the user file. The fields are added to then neko_field_registry
object and are expected to be updated in the user file, or, perhaps, by other simcomps. Since this simcomp does not compute anything compute_
configuration is irrelevant.
Computes the derivative of field along a chosen direction (x, y, or z). The field to derivate is controlled by the field
keyword and the direction by the direction
keyword. The simcomp will register the computed derivatives in the registry as d[field]_d[direction]
, where the values in the brackets correspond to the choice of the user keywords. Supports writing the computed fields to disk via the usual common keywords. The resulting field will be appended as a scalar to the field files. To output in a different fld
series, use the "output_filename"
parameter.
Computes the force on a specified zone and the corresponding torque around a center point. The compute control specifies how often they are computed and printed into the log. Scale specifies a scale for the computed force/torque. Conventient if one wants to scale with the area or similar. long_print is default false and can be set to true to print all digits in the calculation. Subroutines used in the simcomp can be found in src/qoi/drag_torque.f90
Computes the weak gradient of a field. The weak gradient is value of the gradient multiplied by the local value of the mass matrix. This is how a gradient term appears in the weak formulation of the governing equations. The field to derivate is controlled by the field
keyword. The simcomp will register the computed components of the gradients in the registry as weak_grad_[field]_x
, weak_grad_[field]_y
, weak_grad_[field]_z
where the value in the brackets corresponds to the choice of the user keyword. Supports writing the computed fields to disk via the usual common keywords.
Computes the spectral error indicator as developed by Mavriplis (1989) (https://doi.org/10.1007/978-3-663-13975-1_34). This is an a posteriori error measure, based on the local properties of the spectral solution. This method formally only gives an indication of the error.
The spectral error indicator is computed for the 3 velocity fields, resulting in 3 additional fields appended to the field files.