option_registry Module

Centralises the valid scheme, limiter, boundary-condition, and config-enum names that are accepted throughout the solver. Modules that dispatch on a string token should import the corresponding named constants from here instead of duplicating string literals locally.


Variables

Type Visibility Attributes Name Initial
character(len=*), public, parameter :: flux_lax_friedrichs = 'lax_friedrichs'
character(len=*), public, parameter :: flux_steger_warming = 'steger_warming'
character(len=*), public, parameter :: flux_van_leer = 'van_leer'
character(len=*), public, parameter :: flux_ausm_plus = 'ausm_plus'
character(len=*), public, parameter :: flux_hll = 'hll'
character(len=*), public, parameter :: flux_hllc = 'hllc'
character(len=*), public, parameter :: flux_roe = 'roe'
character(len=*), public, parameter :: recon_weno5 = 'weno5'
character(len=*), public, parameter :: recon_weno5z = 'weno5z'
character(len=*), public, parameter :: recon_weno_cu6 = 'weno_cu6'
character(len=*), public, parameter :: recon_weno7 = 'weno7'
character(len=*), public, parameter :: recon_weno9 = 'weno9'
character(len=*), public, parameter :: recon_weno11 = 'weno11'
character(len=*), public, parameter :: recon_eno3 = 'eno3'
character(len=*), public, parameter :: recon_muscl = 'muscl'
character(len=*), public, parameter :: recon_mp5 = 'mp5'
character(len=*), public, parameter :: recon_teno5 = 'teno5'
character(len=*), public, parameter :: recon_upwind1 = 'upwind1'
character(len=*), public, parameter :: recon_upwind2 = 'upwind2'
character(len=*), public, parameter :: recon_central2 = 'central2'
character(len=*), public, parameter :: time_euler = 'euler'
character(len=*), public, parameter :: time_ssprk22 = 'ssprk22'
character(len=*), public, parameter :: time_rk3 = 'rk3'
character(len=*), public, parameter :: time_rk4 = 'rk4'
character(len=*), public, parameter :: time_ssprk54 = 'ssprk54'
character(len=*), public, parameter :: time_beuler = 'beuler'
character(len=*), public, parameter :: time_bdf2 = 'bdf2'
character(len=*), public, parameter :: limiter_minmod = 'minmod'
character(len=*), public, parameter :: limiter_superbee = 'superbee'
character(len=*), public, parameter :: limiter_mc = 'mc'
character(len=*), public, parameter :: limiter_van_leer = 'van_leer'
character(len=*), public, parameter :: limiter_koren = 'koren'
character(len=*), public, parameter :: problem_sod = 'sod'
character(len=*), public, parameter :: problem_shu_osher = 'shu_osher'
character(len=*), public, parameter :: problem_smooth_wave = 'smooth_wave'
character(len=*), public, parameter :: problem_linear_advection = 'linear_advection'
character(len=*), public, parameter :: problem_woodward_colella = 'woodward_colella'
character(len=*), public, parameter :: problem_lax = 'lax'
character(len=*), public, parameter :: problem_from_file = 'from_file'
character(len=*), public, parameter :: problem_udf = 'udf'
character(len=*), public, parameter :: problem_acoustic_pulse = 'acoustic_pulse'
character(len=*), public, parameter :: bc_dirichlet = 'dirichlet'
character(len=*), public, parameter :: bc_inflow = 'inflow'
character(len=*), public, parameter :: bc_outflow = 'outflow'
character(len=*), public, parameter :: bc_reflecting = 'reflecting'
character(len=*), public, parameter :: bc_periodic = 'periodic'
character(len=*), public, parameter :: bc_nonreflecting = 'nonreflecting'
character(len=*), public, parameter :: bc_supersonic_inlet = 'supersonic_inlet'
character(len=*), public, parameter :: bc_subsonic_inlet = 'subsonic_inlet'
character(len=*), public, parameter :: bc_supersonic_outlet = 'supersonic_outlet'
character(len=*), public, parameter :: bc_subsonic_outlet = 'subsonic_outlet'
character(len=*), public, parameter :: bc_neumann = 'neumann'
character(len=*), public, parameter :: bc_neumann_gradient = 'neumann_gradient'
character(len=*), public, parameter :: bc_farfield = 'farfield'
character(len=*), public, parameter :: char_proj_auto = 'auto'
character(len=*), public, parameter :: char_proj_yes = 'yes'
character(len=*), public, parameter :: char_proj_no = 'no'
character(len=*), public, parameter :: nrbc_mode_pressure = 'pressure'
character(len=*), public, parameter :: nrbc_mode_characteristic = 'characteristic'
character(len=*), public, parameter :: hybrid_sensor_jameson = 'jameson'
character(len=*), public, parameter :: hybrid_sensor_density_gradient = 'density_gradient'
character(len=*), public, parameter :: hybrid_sensor_weno_beta = 'weno_beta'
character(len=32), public, parameter :: flux_scheme_names(7) = [character(len=32)::flux_lax_friedrichs, flux_steger_warming, flux_van_leer, flux_ausm_plus, flux_hll, flux_hllc, flux_roe]
character(len=32), public, parameter :: recon_scheme_names(13) = [character(len=32)::recon_weno5, recon_weno5z, recon_weno_cu6, recon_weno7, recon_weno9, recon_weno11, recon_eno3, recon_muscl, recon_mp5, recon_teno5, recon_upwind1, recon_upwind2, recon_central2]
character(len=16), public, parameter :: time_scheme_names(7) = [character(len=16)::time_euler, time_ssprk22, time_rk3, time_rk4, time_ssprk54, time_beuler, time_bdf2]
character(len=16), public, parameter :: limiter_names(5) = [character(len=16)::limiter_minmod, limiter_superbee, limiter_mc, limiter_van_leer, limiter_koren]
character(len=32), public, parameter :: problem_type_names(9) = [character(len=32)::problem_sod, problem_shu_osher, problem_smooth_wave, problem_linear_advection, problem_woodward_colella, problem_lax, problem_from_file, problem_udf, problem_acoustic_pulse]
character(len=32), public, parameter :: boundary_condition_names(12) = [character(len=32)::bc_dirichlet, bc_inflow, bc_outflow, bc_reflecting, bc_periodic, bc_nonreflecting, bc_supersonic_inlet, bc_subsonic_inlet, bc_supersonic_outlet, bc_subsonic_outlet, bc_neumann, bc_neumann_gradient]
character(len=8), public, parameter :: char_proj_mode_names(3) = [character(len=8)::char_proj_auto, char_proj_yes, char_proj_no]
character(len=16), public, parameter :: nrbc_mode_names(2) = [character(len=16)::nrbc_mode_pressure, nrbc_mode_characteristic]
character(len=32), public, parameter :: hybrid_sensor_names(3) = [character(len=32)::hybrid_sensor_jameson, hybrid_sensor_density_gradient, hybrid_sensor_weno_beta]
character(len=*), public, parameter :: method_fdm = 'fdm'
character(len=*), public, parameter :: method_fvm = 'fvm'
character(len=8), public, parameter :: method_names(2) = [character(len=8)::method_fdm, method_fvm]
character(len=*), public, parameter :: flux_rusanov = 'rusanov'

2D-only Rusanov flux selector (euler_riemann_2d.f90 face_flux_2d).

character(len=*), public, parameter :: problem_2d_uniform = 'uniform'

2D-only initial-condition / problem-type selectors (disjoint from problem_*).

character(len=*), public, parameter :: problem_2d_isentropic_vortex = 'isentropic_vortex'
character(len=*), public, parameter :: problem_2d_sedov = 'sedov'
character(len=*), public, parameter :: problem_2d_toro_explosion = 'toro_explosion'
character(len=*), public, parameter :: problem_2d_riemann2d_config3 = 'riemann2d_config3'
character(len=*), public, parameter :: problem_2d_freestream = 'freestream'
character(len=32), public, parameter :: flux_scheme_2d_names(5) = [character(len=32)::flux_hllc, flux_rusanov, flux_lax_friedrichs, flux_steger_warming, flux_van_leer]

Valid 2D numerical-flux selectors. Mirrors face_flux_2d (euler_riemann_2d.f90): explicit rusanov, plus hllc (the case default target and documented default). rusanov is 2D-only (no 1D named token). FVS schemes (lax_friedrichs, steger_warming, van_leer) are FDM-only.

character(len=32), public, parameter :: recon_scheme_2d_names(8) = [character(len=32)::recon_weno5, recon_weno7, recon_weno9, recon_mp5, recon_teno5, recon_muscl, recon_upwind1, recon_upwind2]

Valid 2D reconstruction selectors. Mirrors the live select case in init_recon_scheme_2d (schemes_2d.f90); weno5 is also the case default target and the config default. A strict subset of recon_scheme_names.

character(len=16), public, parameter :: time_scheme_2d_names(5) = [character(len=16)::time_rk3, time_euler, time_ssprk22, time_rk4, time_ssprk54]

Valid 2D time-integration selectors. Mirrors resolve_time_scheme_2d (time_integration_2d.f90): explicit euler, ssprk22, rk4, and ssprk54 (R2: shared stepper_kernels adapters), plus rk3 — the user-facing name for the case default target and the config default.

character(len=32), public, parameter :: problem_type_2d_names(6) = [character(len=32)::problem_2d_uniform, problem_2d_isentropic_vortex, problem_2d_sedov, problem_2d_toro_explosion, problem_2d_riemann2d_config3, problem_2d_freestream]

Valid 2D initial-condition / problem-type selectors (extended as ICs are added). These are 2D-only and disjoint from the 1D problem_type_names.

character(len=32), public, parameter :: bc_2d_names(5) = [character(len=32)::bc_periodic, bc_reflecting, bc_outflow, bc_supersonic_inlet, bc_farfield]

Valid 2D per-edge boundary-condition selectors. Mirrors the live 2D BC dispatch (boundary_2d.f90). A strict subset of boundary_condition_names.


Functions

public pure function is_valid_flux_scheme(scheme)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: scheme

Return Value logical

public pure function is_valid_recon_scheme(scheme)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: scheme

Return Value logical

public pure function is_valid_time_scheme(scheme)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: scheme

Return Value logical

public pure function is_valid_limiter(limiter)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: limiter

Return Value logical

public pure function is_valid_problem_type(problem_type)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: problem_type

Return Value logical

public pure function is_valid_boundary_condition(bc_type)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: bc_type

Return Value logical

public pure function is_valid_char_proj_mode(mode)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: mode

Return Value logical

public pure function is_valid_nrbc_mode(mode)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: mode

Return Value logical

public pure function is_valid_hybrid_sensor(sensor_name)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: sensor_name

Return Value logical

public pure function is_valid_method(method)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: method

Return Value logical

public pure function recon_uses_char_proj_by_default(scheme)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: scheme

Return Value logical

public pure function is_fds_flux_scheme(scheme)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: scheme

Return Value logical

public function join_token_list(valid_values) result(joined)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: valid_values(:)

Return Value character(len=512)

public pure function token_in_list(token, valid_values)

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: token
character(len=*), intent(in) :: valid_values(:)

Return Value logical