.true. when both background schemes are selected at once.
Bryan-Lewis and Henyey are MUTUALLY EXCLUSIVE, matching the
reference code, which calls its check_bkgnd_scheme guard once
from each scheme’s block and FATALs when a scheme was already
selected. Henyey scales the SCALAR background; composing it with
the Bryan-Lewis depth profile would also scale the deep asymptote,
which stands for abyssal / internal-tide mixing over rough
topography — not the open-ocean internal-wave continuum Henyey
describes, and not equatorially suppressed in nature.
A pure predicate rather than an inline .and. in
validate_config so the RULE is unit-testable: the guard sites
themselves are error stop / logger paths a unit test cannot
reach without a subprocess harness, which left the rule as a
mutation-survivable hole. Same shape as
pseudo_salt_conflicts_restore / lateral_closure_conflicts_smag_ah.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| logical, | intent(in) | :: | bkgnd_henyey |
|
||
| logical, | intent(in) | :: | bkgnd_profile |
|
pure function bkgnd_henyey_conflicts_profile(bkgnd_henyey, bkgnd_profile) result(conflict) !! `.true.` when both background schemes are selected at once. !! !! Bryan-Lewis and Henyey are MUTUALLY EXCLUSIVE, matching the !! reference code, which calls its `check_bkgnd_scheme` guard once !! from each scheme's block and FATALs when a scheme was already !! selected. Henyey scales the SCALAR background; composing it with !! the Bryan-Lewis depth profile would also scale the deep asymptote, !! which stands for abyssal / internal-tide mixing over rough !! topography — not the open-ocean internal-wave continuum Henyey !! describes, and not equatorially suppressed in nature. !! !! A `pure` predicate rather than an inline `.and.` in !! `validate_config` so the RULE is unit-testable: the guard sites !! themselves are `error stop` / logger paths a unit test cannot !! reach without a subprocess harness, which left the rule as a !! mutation-survivable hole. Same shape as !! `pseudo_salt_conflicts_restore` / `lateral_closure_conflicts_smag_ah`. logical, intent(in) :: bkgnd_henyey !! `&ocean_vmix_nml bkgnd_henyey`. logical, intent(in) :: bkgnd_profile !! `&ocean_vmix_nml bkgnd_profile` (Bryan-Lewis). logical :: conflict conflict = bkgnd_henyey .and. bkgnd_profile end function bkgnd_henyey_conflicts_profile