ocean_sigma_stiffness Function

public pure function ocean_sigma_stiffness(h_a, h_b) result(rx0)

One face’s terrain-following stiffness |h_a-h_b|/(h_a+h_b).

Both columns must be POSITIVE for the number to mean anything (a land column carries H_VANISHED, not a water column, and the caller masks it out); a non-positive sum returns 0 — “no constraint expressible”, the same stance ocean_viscous_cfl_number takes for a degenerate dx_min. Range [0, 1): 0 = two equal columns, -> 1 = one column vanishing against its neighbour.

Arguments

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

Column thickness on one side of the face (m).

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

Column thickness on the other side (m).

Return Value real(kind=wp)


Called by

proc~~ocean_sigma_stiffness~~CalledByGraph proc~ocean_sigma_stiffness ocean_sigma_stiffness proc~ocean_sigma_stiffness_worst ocean_sigma_stiffness_worst proc~ocean_sigma_stiffness_worst->proc~ocean_sigma_stiffness proc~ocean_stability_audit ocean_stability_audit proc~ocean_stability_audit->proc~ocean_sigma_stiffness_worst 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_sigma_stiffness(h_a, h_b) result(rx0)
      !! One face's terrain-following stiffness `|h_a-h_b|/(h_a+h_b)`.
      !!
      !! Both columns must be POSITIVE for the number to mean anything
      !! (a land column carries `H_VANISHED`, not a water column, and the
      !! caller masks it out); a non-positive sum returns `0` — "no
      !! constraint expressible", the same stance
      !! `ocean_viscous_cfl_number` takes for a degenerate `dx_min`.
      !! Range `[0, 1)`: `0` = two equal columns, `-> 1` = one column
      !! vanishing against its neighbour.
      real(wp), intent(in) :: h_a
         !! Column thickness on one side of the face (m).
      real(wp), intent(in) :: h_b
         !! Column thickness on the other side (m).
      real(wp) :: rx0
      if (h_a > 0.0_wp .and. h_b > 0.0_wp) then
         rx0 = abs(h_a - h_b)/(h_a + h_b)
      else
         rx0 = 0.0_wp
      end if
   end function ocean_sigma_stiffness