Assembly chain in the load-bearing order: background + Visbeck
addend, THEN Res_fn scale, THEN clamp. kh_max <= 0 ⇒ no upper cap.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | kh_bg | |||
| real(kind=wp), | intent(in) | :: | cff | |||
| real(kind=wp), | intent(in) | :: | l2 | |||
| real(kind=wp), | intent(in) | :: | sn | |||
| real(kind=wp), | intent(in) | :: | res_fn | |||
| logical, | intent(in) | :: | resoln | |||
| real(kind=wp), | intent(in) | :: | kh_min | |||
| real(kind=wp), | intent(in) | :: | kh_max | |||
| logical, | intent(in) | :: | do_visbeck |
pure function varmix_assemble(kh_bg, cff, l2, sn, res_fn, resoln, & kh_min, kh_max, do_visbeck) result(kh) !$acc routine seq !! Assembly chain in the load-bearing order: background + Visbeck !! addend, THEN Res_fn scale, THEN clamp. `kh_max <= 0` ⇒ no upper cap. real(wp), intent(in) :: kh_bg, cff, l2, sn, res_fn, kh_min, kh_max logical, intent(in) :: resoln, do_visbeck real(wp) :: kh kh = kh_bg if (do_visbeck) kh = kh + cff*l2*sn if (resoln) kh = kh*res_fn if (kh_max > 0.0_wp) then kh = max(kh_min, min(kh, kh_max)) else kh = max(kh_min, kh) end if end function varmix_assemble