solver_stats_t Derived Type

type, public :: solver_stats_t

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).


Components

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

Source Code

   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