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.
| Type | Intent | Optional | 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). |
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