Surface Forcing¶
The surface section controls all atmospheric and surface boundary
conditions: heat and momentum fluxes, meteorological inputs, and sea-surface
nudging. It maps directly to the air-sea interaction layer implemented in
pygotm.airsea.
When any surface forcing field uses method: file, the data file must
follow the Timeseries (Scalar) File format. Multiple variables can share a
single file using different column: indices — this is the standard
pattern for combined meteorological files (meteo.dat).
See also
Input Data File Formats for complete specifications and examples of all supported input file formats.
surface:
fluxes:
method: fairall
heat: { method: file, file: heat_flux.dat }
tx: { method: file, file: momentum_flux.dat, column: 1 }
ty: { method: file, file: momentum_flux.dat, column: 2 }
u10: { method: file, file: meteo.dat, column: 1 }
v10: { method: file, file: meteo.dat, column: 2 }
ssuv_method: absolute
airp: { method: file, file: meteo.dat, column: 3 }
airt: { method: file, file: meteo.dat, column: 4 }
hum:
method: file
file: meteo.dat
column: 5
type: wet_bulb
cloud: { method: file, file: meteo.dat, column: 6 }
precip: { method: constant, constant_value: 0.0 }
swr: { method: file, file: swr.dat }
longwave: { method: file, file: lw.dat }
sst: { method: off }
sss: { method: off }
surface.fluxes¶
surface.fluxes.method¶
Type |
string |
Valid values |
|
Default |
|
Selects how heat and momentum fluxes at the sea surface are computed.
offPrescribed fluxes are read directly from
heat,tx, andtyinputs. No bulk formula is applied. Use this when you have observed flux values.kondoHeat and momentum fluxes are computed from meteorological variables (wind speed, air temperature, humidity) using the bulk formula of Kondo (1975). Implemented in
pygotm.airsea.kondo. Requiresu10,v10,airp,airt, andhumto be provided.fairallCOARE 3.0 bulk algorithm (Fairall et al. 1996/2003). More accurate than Kondo for open-ocean conditions with high wind speeds. Implemented in
pygotm.airsea.fairall. Requires the same meteorological inputs askondo.Note
The compiled Numba runtime currently supports
fairallfor the profile path. Thekondomethod is currently [unsupported in compiled runtime].
surface.fluxes.heat¶
Prescribed non-solar surface heat flux (sensible + latent + net longwave).
Follows the InputSetting pattern (method: constant | file).
When method: file: single-column timeseries file; see Timeseries (Scalar) File.
Units |
W m−2 |
Default |
|
Sign convention |
Atmospheric convention: positive = ocean loses heat (upward). |
Warning
GOTM uses the atmospheric sign convention for hflux: a positive value
means the ocean is losing heat to the atmosphere. This is the
opposite of the physical-oceanography convention. In
pygotm.meanflow.temperature.temperature(), the flux enters as
DiffTup = -hflux / (rho0 * cp), so a positive heat loss produces a
negative (cooling) Neumann boundary condition.
surface.fluxes.tx¶
Prescribed wind stress in the West–East direction.
Units |
Pa |
Default |
|
Used directly as the upper boundary condition for the U-momentum equation
when fluxes.method: off or to provide a fallback when bulk methods are
active.
When method: file: tx and ty can share a single two-column
timeseries file using column: 1 and column: 2 respectively.
See Timeseries (Scalar) File for format details.
surface.fluxes.ty¶
Prescribed wind stress in the South–North direction.
Units |
Pa |
Default |
|
Wind Speed¶
surface.u10¶
West–East wind speed at 10 m height.
Units |
m s−1 |
Default |
|
Required when fluxes.method: kondo or fairall.
surface.v10¶
South–North wind speed at 10 m height.
Units |
m s−1 |
Default |
|
surface.ssuv_method¶
Type |
string |
Valid values |
|
Default |
|
Treatment of the wind vector used in bulk formula.
absoluteWind components
u10andv10are interpreted as absolute wind speed (relative to the ground).relativeWind speed used in the bulk formula is the wind velocity relative to the surface ocean current: \((u_{10} - u_s,\; v_{10} - v_s)\). This is more physically correct but requires surface currents.
Meteorological Inputs¶
These inputs are required by the Kondo and Fairall bulk algorithms.
All follow the InputSetting pattern (method: constant | file).
When method: file, these inputs are read from a timeseries file
(see Timeseries (Scalar) File). The standard pattern is to store all
meteorological variables in a single multi-column file and select each
variable by its column: index. The conventional six-column layout
expected by most reference cases is:
Column |
Variable |
Units |
YAML key |
|---|---|---|---|
1 |
|
m s−1 |
|
2 |
|
m s−1 |
|
3 |
|
Pa (or hPa — see note below) |
|
4 |
|
°C |
|
5 |
|
type-dependent (see |
|
6 |
|
fraction (0–1) |
|
Note
The reference cases store air pressure in hPa (hectopascals). The
GOTM bulk formulae expect Pa. If your meteo.dat is in hPa, set
airp: { scale_factor: 100.0 } in gotm.yaml to convert
automatically.
surface.airp¶
Air pressure at the surface.
Units |
Pa |
Default |
|
Used in humidity calculations and to correct sea-level pressure.
surface.airt¶
Air temperature at 2 m height.
Units |
°C or K (detected automatically) |
Default |
|
surface.hum¶
Humidity at 2 m height. Follows the InputSetting pattern plus an
additional type key.
surface.hum.type¶
Type |
string |
Valid values |
|
Default |
|
Humidity measurement type. The conversion to specific humidity is
implemented in pygotm.airsea.humidity.
relativeRelative humidity (%).
wet_bulbWet-bulb temperature (°C).
dew_pointDew-point temperature (°C).
specificSpecific humidity (kg kg−1).
surface.cloud¶
Cloud cover fraction.
Units |
dimensionless (0–1) |
Range |
0.0 to 1.0 |
Default |
|
Used in longwave radiation bulk formulae.
surface.precip¶
Precipitation rate.
Units |
m s−1 |
Default |
|
Applied as a freshwater flux at the surface (affects salinity) and as a latent-heat equivalent in bulk schemes.
Radiation¶
surface.swr¶
Incident shortwave radiation at the sea surface.
Units |
W m−2 |
Default |
|
Used when fluxes.method: off. When a bulk algorithm (kondo,
fairall) is selected, shortwave radiation can still be prescribed here
and added to the computed heat budget. Penetration into the water column is
controlled by the light_extinction section.
When method: file: single-column timeseries file (see Timeseries (Scalar) File).
Example: 1976-04-06 06:00:00 13.6887.
surface.longwave¶
Incident or net longwave (infrared) radiation at the surface.
Units |
W m−2 |
Default |
|
Whether this represents downward or net flux depends on the longwave radiation
method configured in the surface block (longwave_method in the
underlying runtime, see pygotm.gotm.runtime_params.RuntimeParams.airsea_longwave_method).
Sea-Surface Nudging¶
surface.sst¶
Sea-surface temperature nudging target.
Follows the InputSetting pattern. When method: file, model SST
is nudged toward the observed values on a configurable time scale.
When method: file: single-column timeseries file (see Timeseries (Scalar) File).
Each record is one SST observation: YYYY-MM-DD HH:MM:SS temperature_celsius.
surface.sss¶
Sea-surface salinity nudging target.
Follows the InputSetting pattern. Used to represent evaporation/
precipitation corrections or constrain surface salinity in long simulations.
When method: file: single-column timeseries file; one SSS observation
per record: YYYY-MM-DD HH:MM:SS salinity_psu.
Wave Forcing (Stokes Drift)¶
These inputs are under the surface section but also interact with the
waves top-level block (see waves).
surface.tx_method / ty_method¶
Alternative wave-state-dependent momentum flux methods (Stokes drift
contribution). These are passed through to the Stokes drift module
pygotm.stokes_drift.
Note
Full Stokes drift integration (Craig–Banner wave-breaking BC) is [unsupported in compiled runtime] in the current release.