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 :: 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]

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

private 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