Skip to content

Experimental wind-speed-dependent betamax for ST4 - new codebase#20

Draft
pieterbartsmit wants to merge 4 commits into
f/sync_with_upstreamfrom
f/beta_max_variable_new_codebase
Draft

Experimental wind-speed-dependent betamax for ST4 - new codebase#20
pieterbartsmit wants to merge 4 commits into
f/sync_with_upstreamfrom
f/beta_max_variable_new_codebase

Conversation

@pieterbartsmit

Copy link
Copy Markdown

Implements a linear wind-speed-dependent betamax relation for the ST4 wind input source term:

betamax_eff = BETAMAX_INTERCEPT + BETAMAX_SLOPE * min(U10, 25.0)

This is motivated by a known condition-dependent bias: the current single-value betamax is biased slightly high at moderate winds and low at high winds. The 25 m/s cap reflects the limits of reliable air-sea physics and Spotter wind estimates. See notion page for further details

Implementation
The change is currently hardcoded in w3src4md.F90 for testing purposes. The namelist BETAMAX parameter is bypassed. We will have to update these values during testing.

The HF tail stress lookup table is built at initialisation with a fixed betamax. Since the table entries scale linearly with betamax, the table results are rescaled on lookup by BBETA_EFF / BBETA before use — this keeps the tail stress consistent with the resolved-spectrum computation at no meaningful cost.

Not changed

Namelist parameters (BETAMAX still read and stored as before)
Model definition file format
Restart file format

Follow-up work
If it works, we can consider promoting to proper namelist parameters (BETAMAX_INTERCEPT, BETAMAX_SLOPE) with corresponding updates to w3gdatmd.F90, w3gridmd.F90, w3iogrmd.F90, and ww3_ounf.F90.

…cifically we implement a relation of the form:

    betamax_eff = BETAMAX_INTERCEPT + min(U10, 25) * BETAMAX_SLOPE

where BETAMAX_INTERCEPT and BETAMAX_SLOPE are currently hardcoded parameters for testing purposes (both positive and negative slopes are meaningful).

The 25 m/s cap is intentional: air-sea physics become uncertain beyond that wind speed.

Note: the HF tail stress is precomputed in a lookup table using a fixed betamax (from the namelist). When betamax_eff differs from that value, the table result must be rescaled — this is done at line 968.
…included a cap to ensure the value remains between 1.26 and 1.46.
Updated the upperbound on bbeta_eff to 1.5, lower bound to 1.25

Fixed an issue with how the bounds were inforced (I had swapped the min/max conditions which would have forced the bbeta_eff to be outside the [1.25, 1.5] interval instead of bounded by it).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant