ocean_viscous_cfl_number Function

public pure function ocean_viscous_cfl_number(nu_h, dt, dx_min) result(cfl)

nu_h*dt/dx_min^2 — the single-axis viscous-diffusion stability number checked against VISCOUS_CFL_LIMIT. dx_min MUST be the smallest actual cell edge in the domain (e.g. metrics_dx_min/ocean_stability_min_cell), never a nominal &grid_nml dx/dy (degrees on non-Cartesian grids). dx_min<=0 (degenerate/unset grid) returns 0 (no constraint expressible).

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: nu_h
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: dx_min

Return Value real(kind=wp)


Called by

proc~~ocean_viscous_cfl_number~~CalledByGraph proc~ocean_viscous_cfl_number ocean_viscous_cfl_number proc~ocean_stability_audit ocean_stability_audit proc~ocean_stability_audit->proc~ocean_viscous_cfl_number proc~engine_setup engine_setup proc~engine_setup->proc~ocean_stability_audit 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~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 proc~rdb_ocean_create_from_string rdb_ocean_create_from_string proc~rdb_ocean_create_from_string->proc~complete_ocean_create

Source Code

   pure function ocean_viscous_cfl_number(nu_h, dt, dx_min) result(cfl)
      !! `nu_h*dt/dx_min^2` — the single-axis viscous-diffusion stability
      !! number checked against `VISCOUS_CFL_LIMIT`. `dx_min` MUST be the
      !! smallest actual cell edge in the domain (e.g.
      !! `metrics_dx_min`/`ocean_stability_min_cell`), never a nominal
      !! `&grid_nml dx`/`dy` (degrees on non-Cartesian grids). `dx_min<=0`
      !! (degenerate/unset grid) returns 0 (no constraint expressible).
      real(wp), intent(in) :: nu_h, dt, dx_min
      real(wp) :: cfl
      if (dx_min > 0.0_wp) then
         cfl = nu_h*dt/dx_min**2
      else
         cfl = 0.0_wp
      end if
   end function ocean_viscous_cfl_number