vmix_resolve_kd_min Function

public pure function vmix_resolve_kd_min(kd_min, kt_bg) result(kd_min_eff)

Resolve the bkgnd_kd_min “unset” sentinel to the reference default HENYEY_KD_MIN_FRAC * kt_bg (MOM6 KD_MIN, default 0.01*KD). A NEGATIVE kd_min means “not set by the user”; zero and positive values are taken literally, so kd_min = 0 is a legal way to ask for no floor at all.

Called from vmix_assemble on every entry rather than resolved once at configure, so a directly-constructed slot (every unit test that never goes through configure_ocean_vmix) gets exactly the same default as a production run. It is a two-flop scalar.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: kd_min

The raw bkgnd_kd_min knob; negative = unset sentinel.

real(kind=wp), intent(in) :: kt_bg

Scalar background tracer diffusivity the default is a fraction of.

Return Value real(kind=wp)


Called by

proc~~vmix_resolve_kd_min~~CalledByGraph proc~vmix_resolve_kd_min vmix_resolve_kd_min proc~configure_ocean_vmix configure_ocean_vmix proc~configure_ocean_vmix->proc~vmix_resolve_kd_min proc~vmix_assemble vmix_assemble proc~vmix_assemble->proc~vmix_resolve_kd_min proc~engine_setup engine_setup proc~engine_setup->proc~configure_ocean_vmix proc~vmix_apply_in_stage vmix_apply_in_stage proc~vmix_apply_in_stage->proc~vmix_assemble 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~run_stage run_stage proc~run_stage->proc~vmix_apply_in_stage proc~run_stage_split run_stage_split proc~run_stage_split->proc~vmix_apply_in_stage proc~driver_run driver_run proc~driver_run->proc~driver_run_ocean proc~ocean_dyn_step ocean_dyn_step proc~ocean_dyn_step->proc~run_stage proc~ocean_dyn_step_split ocean_dyn_step_split proc~ocean_dyn_step_split->proc~run_stage_split proc~rdb_ocean_create_finalize rdb_ocean_create_finalize proc~rdb_ocean_create_finalize->proc~complete_ocean_create proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create proc~engine_step engine_step proc~engine_step->proc~ocean_dyn_step proc~engine_step->proc~ocean_dyn_step_split

Source Code

   pure function vmix_resolve_kd_min(kd_min, kt_bg) result(kd_min_eff)
      !! Resolve the `bkgnd_kd_min` "unset" sentinel to the reference
      !! default `HENYEY_KD_MIN_FRAC * kt_bg` (MOM6 `KD_MIN`, default
      !! `0.01*KD`).  A NEGATIVE `kd_min` means "not set by the user";
      !! zero and positive values are taken literally, so `kd_min = 0`
      !! is a legal way to ask for no floor at all.
      !!
      !! Called from `vmix_assemble` on every entry rather than resolved
      !! once at configure, so a directly-constructed slot (every unit test
      !! that never goes through `configure_ocean_vmix`) gets exactly the
      !! same default as a production run.  It is a two-flop scalar.
      real(wp), intent(in) :: kd_min
         !! The raw `bkgnd_kd_min` knob; negative = unset sentinel.
      real(wp), intent(in) :: kt_bg
         !! Scalar background tracer diffusivity the default is a fraction of.
      real(wp) :: kd_min_eff

      kd_min_eff = merge(HENYEY_KD_MIN_FRAC*kt_bg, kd_min, kd_min < 0.0_wp)
   end function vmix_resolve_kd_min