Solver diagnostics and global physics statistics.
Populated at the end of every timestep to monitor convergence and physical integrity (e.g., mass balance, energy decay).
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=rk), | public | :: | cfl | = | zero | ||
| real(kind=rk), | public | :: | kinetic_energy | = | zero | ||
| real(kind=rk), | public | :: | max_divergence | = | zero | ||
| real(kind=rk), | public | :: | max_velocity | = | zero | ||
| real(kind=rk), | public | :: | min_species_y | = | zero | ||
| real(kind=rk), | public | :: | net_boundary_flux | = | zero | ||
| integer, | public | :: | pressure_iterations | = | 0 | ||
| real(kind=rk), | public | :: | pressure_iterations_avg | = | zero | ||
| integer, | public | :: | pressure_iterations_max | = | 0 | ||
| integer, | public | :: | pressure_iterations_total | = | 0 | ||
| real(kind=rk), | public | :: | pressure_residual | = | zero | ||
| integer, | public | :: | pressure_solve_count | = | 0 | ||
| real(kind=rk), | public | :: | rms_divergence | = | zero | ||
| real(kind=rk), | public | :: | total_mass | = | zero | ||
| real(kind=rk), | public | :: | wall_time | = | zero |
type, public :: solver_stats_t integer :: pressure_iterations = 0 !< Number of iterations taken by the most recent PCG solve. integer :: pressure_iterations_total = 0 !< Cumulative PCG iterations over all pressure solves. integer :: pressure_iterations_max = 0 !< Maximum PCG iterations used by any pressure solve. integer :: pressure_solve_count = 0 !< Number of pressure solves completed. real(rk) :: pressure_iterations_avg = zero !< Average PCG iterations per pressure solve. real(rk) :: pressure_residual = zero !< Final \(L_2\) residual norm of the Poisson system. real(rk) :: max_divergence = zero !< Maximum local velocity divergence \(\nabla \cdot \mathbf{u}\) [1/s]. real(rk) :: rms_divergence = zero !< Root-mean-square divergence across the domain. real(rk) :: net_boundary_flux = zero !< Global mass flux imbalance across all boundaries [kg/s]. real(rk) :: kinetic_energy = zero !< Total domain kinetic energy \(\int \frac{1}{2} \rho |\mathbf{u}|^2 dV\) [J]. real(rk) :: cfl = zero !< Current Courant-Friedrichs-Lewy number. real(rk) :: wall_time = zero !< Cumulative solver wall-clock time [s]. real(rk) :: max_velocity = zero !< Maximum velocity magnitude \(|\mathbf{u}|_{max}\) [m/s]. real(rk) :: total_mass = zero !< Total integrated mass in the domain [kg]. real(rk) :: min_species_y = zero !< Global minimum species mass fraction (diagnostic for boundedness). end type solver_stats_t