parse_vcoord_type Function

public pure function parse_vcoord_type(str, default_code) result(coord_type)

Convert a namelist string to a VCOORD_* constant (shared by coastal and ocean backends). Unrecognised ⇒ default_code if given, else VCOORD_SIGMA. Ocean callers pass default_code = VCOORD_EULERIAN_Z.

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: str
integer, intent(in), optional :: default_code

Return Value integer


Called by

proc~~parse_vcoord_type~~CalledByGraph proc~parse_vcoord_type parse_vcoord_type proc~ocean_stability_audit ocean_stability_audit proc~ocean_stability_audit->proc~parse_vcoord_type proc~parse_ocean_vcoord_type parse_ocean_vcoord_type proc~parse_ocean_vcoord_type->proc~parse_vcoord_type proc~validate_config validate_config proc~validate_config->proc~parse_vcoord_type proc~zfixed_cavity_nu_h_below_envelope zfixed_cavity_nu_h_below_envelope proc~validate_config->proc~zfixed_cavity_nu_h_below_envelope proc~zfixed_cavity_nu_h_below_envelope->proc~parse_vcoord_type proc~build_pending_handle build_pending_handle proc~build_pending_handle->proc~validate_config proc~configure_ocean_drag configure_ocean_drag proc~configure_ocean_drag->proc~parse_ocean_vcoord_type proc~configure_ocean_forcing configure_ocean_forcing proc~configure_ocean_forcing->proc~parse_ocean_vcoord_type proc~configure_ocean_lateral configure_ocean_lateral proc~configure_ocean_lateral->proc~parse_ocean_vcoord_type proc~configure_ocean_pgf configure_ocean_pgf proc~configure_ocean_pgf->proc~parse_ocean_vcoord_type proc~pgf_nonoverlap_gate_on pgf_nonoverlap_gate_on proc~configure_ocean_pgf->proc~pgf_nonoverlap_gate_on proc~engine_setup engine_setup proc~engine_setup->proc~ocean_stability_audit proc~engine_setup->proc~parse_ocean_vcoord_type proc~engine_setup->proc~configure_ocean_drag proc~engine_setup->proc~configure_ocean_forcing proc~engine_setup->proc~configure_ocean_lateral proc~engine_setup->proc~configure_ocean_pgf proc~ocean_state_seed_from_cfg ocean_state_seed_from_cfg proc~engine_setup->proc~ocean_state_seed_from_cfg proc~ocean_state_init_from_config ocean_state_t%ocean_state_init_from_config proc~engine_setup->proc~ocean_state_init_from_config proc~ocean_state_seed_from_cfg->proc~parse_ocean_vcoord_type proc~pgf_nonoverlap_gate_on->proc~parse_ocean_vcoord_type proc~complete_ocean_create complete_ocean_create proc~complete_ocean_create->proc~engine_setup proc~driver_run_ocean driver_run_ocean proc~driver_run_ocean->proc~engine_setup proc~driver_validate driver_validate proc~driver_validate->proc~engine_setup proc~ocean_state_init_from_config->proc~pgf_nonoverlap_gate_on proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~build_pending_handle proc~rdb_ocean_create_from_string->proc~complete_ocean_create proc~rdb_ocean_create_pending rdb_ocean_create_pending proc~rdb_ocean_create_pending->proc~build_pending_handle proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create

Variables

Type Visibility Attributes Name Initial
integer, private :: fallback

Source Code

   pure integer function parse_vcoord_type(str, default_code) result(coord_type)
      !! Convert a namelist string to a `VCOORD_*` constant (shared by coastal
      !! and ocean backends). Unrecognised ⇒ `default_code` if given, else
      !! `VCOORD_SIGMA`. Ocean callers pass `default_code = VCOORD_EULERIAN_Z`.
      character(len=*), intent(in) :: str
      integer, intent(in), optional :: default_code
      integer :: fallback
      fallback = VCOORD_SIGMA
      if (present(default_code)) fallback = default_code
      select case (trim(adjustl(str)))
      case ("lagrangian", "LAGRANGIAN", "isopycnal", "ISOPYCNAL")
         coord_type = VCOORD_LAGRANGIAN
      case ("eulerian_z", "EULERIAN_Z", "z", "Z")
         coord_type = VCOORD_EULERIAN_Z
      case ("sigma", "SIGMA")
         coord_type = VCOORD_SIGMA
      case ("zsigma", "ZSIGMA", "z-sigma", "z_sigma")
         coord_type = VCOORD_ZSIGMA
      case ("zstar", "ZSTAR", "z-star", "z_star", "zstar_lite", "ZSTAR_LITE")
         coord_type = VCOORD_ZSTAR
      case ("zstar_full", "ZSTAR_FULL", "z-star-full", "z_star_full", "zstarfull")
         coord_type = VCOORD_ZSTAR_FULL
      case ("zstar_sigma", "ZSTAR_SIGMA", "z-star-sigma", "z_star_sigma", "zstarsigma")
         coord_type = VCOORD_ZSTAR_SIGMA
      case ("z_fixed", "Z_FIXED", "z_levels", "Z_LEVELS", "gprime", "GPRIME")
         coord_type = VCOORD_Z_FIXED
      case ("rho", "RHO", "isopycnic", "ISOPYCNIC", "rho_target", "RHO_TARGET")
         coord_type = VCOORD_RHO
      case ("hycom", "HYCOM", "hybrid", "HYBRID")
         coord_type = VCOORD_HYCOM
      case default
         coord_type = fallback
      end select
   end function parse_vcoord_type