Global container for all parsed simulation parameters.
This structure acts as the source of truth for the entire solver. It is populated once at startup and accessed as a read-only object by the various solver modules.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=rk), | public | :: | background_press | = | 101325.0_rk | ||
| real(kind=rk), | public | :: | background_temp | = | 300.0_rk | ||
| real(kind=rk), | public | :: | body_force(3) | = | zero | ||
| character(len=path_len), | public | :: | cantera_mech_file | = | "gri30.yaml" | ||
| character(len=name_len), | public | :: | convection_scheme | = | "upwind" | ||
| real(kind=rk), | public | :: | dt | = | zero | ||
| logical, | public | :: | enable_cantera_fluid | = | .false. |
name: Cantera Bridge Integration |
|
| logical, | public | :: | enable_cantera_species | = | .false. | ||
| logical, | public | :: | enable_cantera_thermo | = | .false. | ||
| logical, | public | :: | enable_energy | = | .false. |
name: Enthalpy Energy Equation Controls |
|
| logical, | public | :: | enable_profiling | = | .true. |
name: Profiling Controls |
|
| logical, | public | :: | enable_reactions | = | .false. | ||
| logical, | public | :: | enable_species | = | .false. |
name: Multi-Species Transport |
|
| logical, | public | :: | enable_variable_density | = | .false. | ||
| logical, | public | :: | enable_variable_nu | = | .false. | ||
| real(kind=rk), | public | :: | energy_cp | = | 1005.0_rk | ||
| real(kind=rk), | public | :: | energy_lambda | = | 2.6e-2_rk | ||
| real(kind=rk), | public | :: | energy_reference_T | = | 298.15_rk | ||
| real(kind=rk), | public | :: | energy_reference_h | = | zero | ||
| real(kind=rk), | public | :: | initial_T | = | 300.0_rk | ||
| real(kind=rk), | public | :: | initial_Y(max_species) | = | 0.0_rk | ||
| real(kind=rk), | public | :: | max_cfl | = | 0.5_rk | ||
| character(len=path_len), | public | :: | mesh_dir | = | "mesh_native" | ||
| integer, | public | :: | n_patches | = | 0 |
name: Boundary Condition Mapping |
|
| integer, | public | :: | namelist_nspecies | = | 0 |
name: Internal Registry (Reacting discovery) |
|
| character(len=name_len), | public | :: | namelist_species_name(max_species) | = | "" | ||
| logical, | public | :: | nested_profiling | = | .true. | ||
| integer, | public | :: | nspecies | = | 0 | ||
| integer, | public | :: | nsteps | = | 0 |
name: Time Stepping |
|
| real(kind=rk), | public | :: | nu | = | 1.0e-2_rk | ||
| character(len=path_len), | public | :: | output_dir | = | "output" |
name: Data Output |
|
| integer, | public | :: | output_interval | = | 1 | ||
| real(kind=rk), | public | :: | patch_T(max_patches) | = | 300.0_rk | ||
| real(kind=rk), | public | :: | patch_Y(max_species,max_patches) | = | zero | ||
| real(kind=rk), | public | :: | patch_dpdn(max_patches) | = | zero | ||
| character(len=name_len), | public | :: | patch_name(max_patches) | = | "" | ||
| real(kind=rk), | public | :: | patch_p(max_patches) | = | zero | ||
| character(len=name_len), | public | :: | patch_pressure_type(max_patches) | = | "" | ||
| character(len=name_len), | public | :: | patch_species_type(max_patches) | = | "" |
Species Boundary Conditions |
|
| character(len=name_len), | public | :: | patch_temperature_type(max_patches) | = | "" | ||
| character(len=name_len), | public | :: | patch_type(max_patches) | = | "" | ||
| real(kind=rk), | public | :: | patch_u(max_patches) | = | zero | ||
| real(kind=rk), | public | :: | patch_v(max_patches) | = | zero | ||
| character(len=name_len), | public | :: | patch_velocity_type(max_patches) | = | "" |
Field-specific BC Overrides |
|
| real(kind=rk), | public | :: | patch_w(max_patches) | = | zero | ||
| integer, | public | :: | pressure_max_iter | = | 300 |
name: Linear Solver & Numerics |
|
| real(kind=rk), | public | :: | pressure_tol | = | 1.0e-10_rk | ||
| real(kind=rk), | public | :: | rho | = | one |
name: Fluid Properties |
|
| real(kind=rk), | public | :: | species_diffusivity(max_species) | = | 0.0_rk | ||
| character(len=name_len), | public | :: | species_name(max_species) | = | "" | ||
| character(len=name_len), | public | :: | thermo_default_species | = | 'N2' | ||
| integer, | public | :: | thermo_update_interval | = | 1 | ||
| integer, | public | :: | transport_update_interval | = | 1 | ||
| logical, | public | :: | use_dynamic_dt | = | .false. | ||
| logical, | public | :: | write_diagnostics | = | .true. | ||
| logical, | public | :: | write_vtu | = | .true. |
type, public :: case_params_t !> @name Mesh Configuration character(len=path_len) :: mesh_dir = "mesh_native" !< Directory containing `points.dat`, `cells.dat`, etc. !> @name Time Stepping integer :: nsteps = 0 !< Total number of timesteps to execute. real(rk) :: dt = zero !< Fixed timestep size [s]. integer :: output_interval = 1 !< Frequency of VTK/PVD output (in steps). logical :: use_dynamic_dt = .false.!< If true, `dt` scales to maintain target `max_cfl`. real(rk) :: max_cfl = 0.5_rk !< Target maximum CFL number for stability. !> @name Fluid Properties real(rk) :: rho = one !< Constant flow/projection density [kg/m^3]. logical :: enable_variable_density = .false. !< Reserved: variable-density/low-Mach flow is not enabled yet. real(rk) :: nu = 1.0e-2_rk !< Constant kinematic viscosity [m^2/s]. logical :: enable_variable_nu = .false. !< Allow Cantera-updated flow viscosity/nu; default keeps validation Re fixed. integer :: transport_update_interval = 1 !< Cantera transport-property update interval for mu/D_k only [steps]. !> @name Linear Solver & Numerics integer :: pressure_max_iter = 300 !< Maximum Conjugate Gradient iterations for the Poisson solver. real(rk) :: pressure_tol = 1.0e-10_rk !< Relative residual tolerance for pressure convergence. real(rk) :: body_force(3) = zero !< Constant volumetric acceleration vector \((a_x, a_y, a_z)\) [m/s^2]. character(len=name_len) :: convection_scheme = "upwind" !< Scheme for advection: "upwind" (stable) or "central" (accurate). !> @name Boundary Condition Mapping integer :: n_patches = 0 !< Total number of patches defined in the namelist. character(len=name_len) :: patch_name(max_patches) = "" !< Names identifying mesh patches. character(len=name_len) :: patch_type(max_patches) = "" !< Legacy BC type string. !> Field-specific BC Overrides character(len=name_len) :: patch_velocity_type(max_patches) = "" !< Override BC type for velocity. character(len=name_len) :: patch_pressure_type(max_patches) = "" !< Override BC type for pressure. character(len=name_len) :: patch_temperature_type(max_patches) = "" !< Override BC type for temperature/enthalpy. real(rk) :: patch_u(max_patches) = zero !< Specified x-velocity on patch [m/s]. real(rk) :: patch_v(max_patches) = zero !< Specified y-velocity on patch [m/s]. real(rk) :: patch_w(max_patches) = zero !< Specified z-velocity on patch [m/s]. real(rk) :: patch_p(max_patches) = zero !< Specified static pressure on patch [Pa]. real(rk) :: patch_dpdn(max_patches) = zero !< Specified pressure gradient on patch [Pa/m]. real(rk) :: patch_T(max_patches) = 300.0_rk !< Specified temperature on patch [K]. !> Species Boundary Conditions character(len=name_len) :: patch_species_type(max_patches) = "" !< Override BC type for mass fractions. real(rk) :: patch_Y(max_species, max_patches) = zero !< Specified \(Y_k\) mass fractions on patch. !> @name Data Output character(len=path_len) :: output_dir = "output" !< Directory for result storage. logical :: write_vtu = .true. !< If true, generates Unstructured VTK files. logical :: write_diagnostics = .true. !< If true, writes global residuals to `diagnostics.csv`. !> @name Multi-Species Transport logical :: enable_species = .false. !< Enable advection-diffusion of mass fractions. logical :: enable_reactions = .false. !< Reserved for chemical source terms; reactions are not implemented yet. integer :: nspecies = 0 !< Total number of transport species. character(len=name_len) :: species_name(max_species) = "" !< List of species names. real(rk) :: species_diffusivity(max_species) = 0.0_rk !< Constant species diffusivity \(D_k\) [m^2/s]. real(rk) :: initial_Y(max_species) = 0.0_rk !< Global initial mass fractions in the domain. !> @name Internal Registry (Reacting discovery) integer :: namelist_nspecies = 0 !< Number of species specified in `case.nml`. character(len=name_len) :: namelist_species_name(max_species) = "" !< Names specified in `case.nml`. !> @name Cantera Bridge Integration logical :: enable_cantera_fluid = .false. !< Use Cantera for mixture-averaged viscosity; flow density remains `rho`. logical :: enable_cantera_species = .false. !< Use Cantera for mixture-averaged \(D_k\). character(len=path_len) :: cantera_mech_file = "gri30.yaml" !< Path to YAML/CTI mechanism file. real(rk) :: background_temp = 300.0_rk !< Fixed temperature for property evaluation [K]. real(rk) :: background_press = 101325.0_rk !< Fixed pressure for property evaluation [Pa]. !> @name Enthalpy Energy Equation Controls logical :: enable_energy = .false. !< Enable enthalpy/temperature field storage. logical :: enable_cantera_thermo = .false. !< Use Cantera for sensible h(T,Y,p0) and T(h,Y,p0). integer :: thermo_update_interval = 1 !< Reserved Cantera thermo interval [steps]; must remain 1. character(len=name_len) :: thermo_default_species = 'N2' !< Single-species Cantera thermo fallback when species transport is off. real(rk) :: initial_T = 300.0_rk !< Initial gas temperature [K]. real(rk) :: energy_reference_T = 298.15_rk !< Reference temperature for sensible enthalpy [K]. real(rk) :: energy_reference_h = zero !< Reference sensible enthalpy for constant-cp mode [J/kg]. real(rk) :: energy_cp = 1005.0_rk !< Constant heat capacity for non-Cantera thermo [J/kg/K]. real(rk) :: energy_lambda = 2.6e-2_rk !< Constant thermal conductivity for non-Cantera thermo [W/m/K]. !> @name Profiling Controls logical :: enable_profiling = .true. !< Enable wall-clock profiling. logical :: nested_profiling = .true. !< If true, print nested profiling tree. end type case_params_t