Output management for VTK visualization and solver diagnostics.
This module handles the generation of simulation results in modern XML-based
VTK format (.vtu) and CSV-based global diagnostics. It manages the
creation of the output directory, writing mesh summaries, and
generating PVD collection files for time-series visualization in ParaView.
Most arrays are globally allocated, but VTU piece files write owned cells
only. Variable-density projection validation should use
divu_minus_S_projection diagnostics, not raw divergence.
Variables
| Type |
Visibility | Attributes |
|
Name |
| Initial | |
|
integer,
|
private, |
save
|
:: |
n_pvd_entries |
= |
0 |
|
|
integer,
|
private, |
allocatable, save
|
:: |
pvd_steps(:) |
|
|
|
|
real(kind=rk),
|
private, |
allocatable, save
|
:: |
pvd_times(:) |
|
|
|
Functions
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
name |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
Return Value
real(kind=rk)
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
name |
|
Return Value
real(kind=rk)
Subroutines
Checks if an existing flow.pvd file exists and reads its entries to populate our steps/times.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
integer,
|
intent(in), |
optional |
|
:: |
start_step |
|
Creates the output directory specified in the case parameters.
Arguments
Dynamically adds a new step and actual physical time entry to flow.pvd.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Write per-patch boundary mass-balance diagnostics.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Writes the CSV header for global simulation diagnostics.
Arguments
Appends a new row of diagnostic data to the CSV file.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
|
type(solver_stats_t),
|
intent(in) |
|
|
:: |
stats |
|
Write dedicated enthalpy/energy budget diagnostics.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Writes a human-readable summary of the mesh connectivity and patches.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
Writes a PVD collection file to allow ParaView to load time-series data (legacy wrapper).
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
integer,
|
intent(in) |
|
|
:: |
nsteps |
|
|
integer,
|
intent(in) |
|
|
:: |
output_interval |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
dt |
|
Write aggregate species and enthalpy conservation trend diagnostics.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(species_fields_t),
|
intent(in) |
|
|
:: |
species |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Performs sanity checks on hex connectivity before writing output.
Write variable-density low-Mach diagnostics to dedicated CSV files.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Main dispatcher that routes to either ASCII or high-performance Binary VTU formats.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(inout) |
|
|
:: |
flow |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(species_fields_t),
|
intent(in) |
|
|
:: |
species |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Compute recomputed divergence and mass-flux divergence for one cell.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
|
real(kind=rk),
|
intent(out) |
|
|
:: |
div_c |
|
|
real(kind=rk),
|
intent(out) |
|
|
:: |
mdot_div_c |
|
|
integer,
|
intent(out) |
|
|
:: |
boundary_face_count |
|
|
integer,
|
intent(out) |
|
|
:: |
physical_boundary_face_count |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
local_value |
|
|
real(kind=rk),
|
intent(out) |
|
|
:: |
global_value |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
text |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
integer,
|
intent(in) |
|
|
:: |
value |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
value |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
name |
|
Append local rho*h density-reconciliation fields to VTU CellData.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
name |
|
Append variable-density low-Mach debug fields to the VTU CellData block.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_id |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
Write one audited cell and all its faces.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
|
integer,
|
intent(in) |
|
|
:: |
c |
|
|
character(len=*),
|
intent(in) |
|
|
:: |
audit_label |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_cells |
|
|
integer,
|
intent(in) |
|
|
:: |
unit_faces |
|
Writes the master Parallel VTK file (.pvtu) that links the rank pieces.
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
Scan all owned boundary-adjacent cells for low-Mach projection residuals.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Write low-Mach compatibility and source-time-level diagnostics.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Write conservative continuity residual diagnostics for variable-density mode.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Targeted projection audit for variable-density low-Mach residuals.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Write variable-density transport/conservation diagnostics.
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_mpi_t),
|
intent(in) |
|
|
:: |
flow |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Writes the full flow field to an XML Unstructured Grid file (.vtu).
Read more…
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(inout) |
|
|
:: |
flow |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(species_fields_t),
|
intent(in) |
|
|
:: |
species |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|
Arguments
| Type |
Intent | Optional | Attributes |
|
Name |
|
|
type(case_params_t),
|
intent(in) |
|
|
:: |
params |
|
|
type(flow_mpi_t),
|
intent(inout) |
|
|
:: |
flow |
|
|
type(mesh_t),
|
intent(in) |
|
|
:: |
mesh |
|
|
type(flow_fields_t),
|
intent(in) |
|
|
:: |
fields |
|
|
type(species_fields_t),
|
intent(in) |
|
|
:: |
species |
|
|
type(energy_fields_t),
|
intent(in) |
|
|
:: |
energy |
|
|
type(transport_properties_t),
|
intent(in) |
|
|
:: |
transport |
|
|
integer,
|
intent(in) |
|
|
:: |
step |
|
|
real(kind=rk),
|
intent(in) |
|
|
:: |
time |
|