I/O
Configure where simulation results are written and which post‑processing outputs to generate during the run.
Directory layout
All outputs live under
output_directorywith the structure:<output_directory>/<output_type>/<output_name>/<files>Example:
sim/slice/sym_plane/sym_plane_000000000.pvts.
Top‑level keys
IO
{
output_directory = sim
Outputs { ... }
}
-
output_directory(string, required): Root folder where all output subdirectories are created (e.g.,sim). -
Outputs(section, required): A collection of named output blocks. Each block defines one output stream (slice, surface, volume, profile, probes, force). Names must be unique.
Time control (for every output)
Each output accepts a time control set. These govern when an output updates and when it writes to disk.
start_interval = 0
start_specifier = "timestep"
update_interval = 25
update_specifier = "timestep"
output_interval = 1000
output_specifier = "timestep"
stop_interval = 1000000000 // optional
stop_specifier = "timestep" // optional
time_average = false
Specifiers (case‑sensitive):
"timestep"– absolute step countnt."time"– absolute timetin solver units."tchar"– absolute characteristic timet / time_scale."relative_timestep","relative_time","relative_tchar"– same as above, but measured since the simulation started.
Semantics:
start_*: first moment this output is allowed to run (default start is at the beginning).update_*: how often internal data are refreshed (can be more frequent than writing).output_*: how often a file is written.stop_*(optional): last moment the output is considered.time_average: iftrue, the writer accumulates time averages between writes (when supported by the output type).
Tip: For most runs, set
update_*modestly (e.g., every 25 timesteps) and choose a largeroutput_*cadence to keep I/O light.
Common fields (per output block)
Every output block has the following common keys:
specifier = "<slice|surface|volume|profile|probes|force>"
domain = "main" // optional, defaults to "main"
global_frame = false // required; global-frame outputs are not yet supported
file_type = "pvtk" // when applicable; default varies by type
domain– which domain/subdomain to sample. Defaults to"main".global_frame– must befalse(global-frame outputs are under construction).file_type– supported when the output writes files:pvtk,cgns,szplt(availability varies by output type; see below).
Output types
1) slice
Extracts a Cartesian slice of the flow field.
sym_plane
{
specifier = "slice"
position = 0.001 // plane location along 'direction' (solver units)
direction = 2 // 0 = X, 1 = Y, 2 = Z
collapse = false // if true: spatially average along 'direction'
domain = "main"
global_frame = false
file_type = "pvtk" // pvtk | cgns | szplt
// time control ...
}
Notes:
positionmust lie within the domain extents.collapse = trueperforms a spatial average alongdirection. Requires a uniform grid along that direction; otherwise the run will abort.- Files appear under:
sim/slice/<name>/.
2) volume
Writes the full 3D volume for the selected domain.
vol_out
{
specifier = "volume"
domain = "main"
global_frame = false
file_type = "pvtk" // pvtk | cgns | szplt
// time control ...
}
Notes:
- No subset selection: the entire domain volume is dumped each time.
- Use sparingly: volume outputs are large and expensive.
3) surface
Exports solution data sampled on an immersed surface from the selected domain.
surf_out
{
specifier = "surface"
geometry = "fuselage" // required
domain = "main"
global_frame = false
file_type = "pvtk" // pvtk | szplt (CGNS not supported for surface)
// time control ...
}
Notes:
geometrymust be visible in the target domain.file_type = cgnsis not supported forsurfaceoutputs.
4) profile (spatial sampling)
Generates a spatial profile over a set of points (one file per write).
press_out
{
specifier = "profile"
domain = "main"
Points
{
specifier = "surface_slice" // line | surface_normal | surface_slice | file | equation
geometry = "fuselage" // required for surface_* modes
components = ["any"] // for surface_slice: component/group names
point = [0.0, 0.0, 0.001] // reference point
normal = [0, 0, 1] // plane normal for surface_slice
}
Exports
{
pressure = "P"
cp = "(P - Qinf::pinf)/(0.5*Qinf::rhoinf*umag*umag)"
velocity = "U"
temperature = "T"
}
header_style = "default" // none | default (CSV) | tecplot
global_frame = false // writer frame (must be false)
time_average = false
// time control ...
}
Point set specifiers (inside Points):
line: straight line fromx0tox1withnum_pointssamples.surface_normal: from a point to the nearest surface point along the surface normal;num_pointssamples. Requiresgeometry.surface_slice: intersect a plane with a surface (point,normal), subset bycomponents(e.g.,["any"]or specific groups).file: read a list of points fromfilename(three columns).equation: parametric curve withequations = ["x(s)","y(s)","z(s)"], parameter nameparameter, boundsinitial,final, andnum_points.
For Points, coordinates default to global frame (internally transformed).
Exports: right-hand sides accept dictionary values and the symbols
P, U, V, W, T, x, y, z, t, tau, qw, nt, tchar, dist (plus vector forms where applicable).
5) probes (time histories at points)
Identical configuration to profile, but records time series at discrete points instead of a spatial profile per write.
probe_bank
{
specifier = "probes"
domain = "main"
Points
{
specifier = "file"
filename = "probe_points.xyz"
}
Exports
{
p = "P"
u = "U"
}
header_style = "default" // none | default | tecplot
// time control ...
}
6) force
Outputs integrated forces and moments on selected surface patches. Optional rotation can be applied to the reported vectors.
aero_forces
{
specifier = "force"
domain = "main"
global_frame = false
// Optional: select patches explicitly; otherwise all visible patches are used
Patches
{
fuselage = ["nose", "any"] // geometry_name = [component/group names]
}
// Normalization (scalars; expressions resolved via dictionary)
force_normalization = "0.5*rhoinf*umag*umag*chord*domwid"
moment_normalization = "1.0"
// Center of moments (default: [1,1,1])
moment_center = ["0.0","0.0","0.0"]
// Rotational transform (optional quaternion; see transforms docs)
Transforms { ... }
header_style = "default" // none | default | tecplot
// time control ...
}
Notes:
- Reports forces and moments (inviscid, viscous, total).
- If
Patchesis not given, all visible geometry patches are included. moment_centerdefines the reference point for moment integration.- Files appear in:
sim/force/<name>/.
Best practices
- Keep volume outputs infrequent: they are the largest files.
- Surface and slice outputs are cheaper, useful for frequent monitoring.
- Profile/probes: good for lightweight monitoring and comparisons.
- Restart writing (see
Restartsection) can be decoupled from visualization outputs; balance both according to storage and restart needs.