mom_forcing_type module reference¶
This module implements boundary forcing for MOM6.
Data Types¶
Structure that contains pointers to the boundary forcing used to drive the liquid ocean simulated by MOM. |
|
Structure that contains pointers to the mechanical forcing at the surface used to drive the liquid ocean simulated by MOM. |
|
Structure that defines the id handles for the forcing type. |
Functions/Subroutines¶
This subroutine extracts fluxes from the surface fluxes type. |
|
2d wrapper for 1d extract fluxes from surface fluxes type. This subroutine extracts fluxes from the surface fluxes type. It multiplies the fluxes by dt, so that the result is an accumulation of the fluxes over a time step. |
|
This routine calculates surface buoyancy flux by adding up the heat, FW & salt fluxes. |
|
Calculates surface buoyancy flux by adding up the heat, FW and salt fluxes, for 2d arrays. |
|
Write out chksums for thermodynamic fluxes. |
|
Write out chksums for the driving mechanical forces. |
|
Write out values of the mechanical forcing arrays at the i,j location. |
|
Write out values of the fluxes arrays at the i,j location. |
|
Register members of the forcing type for diagnostics. |
|
Accumulate the forcing over time steps, taking input from a mechanical forcing type and a temporary forcing-flux type. |
|
Accumulate the thermodynamic fluxes over time steps. |
|
This subroutine copies the computational domains of common forcing fields from a |
|
This subroutine calculates certain derived forcing fields based on information from a |
|
This subroutine determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a |
|
This subroutine calculates determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a provided array. |
|
This subroutine copies the computational domains of common forcing fields from a |
|
Offer mechanical forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags. |
|
Offer buoyancy forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags. |
|
Conditionally allocate fields within the forcing type. |
|
Conditionally allocate fields within the mechanical forcing type using control flags. |
|
Conditionally allocate fields within the mechanical forcing type based on a reference forcing. |
|
Return flags indicating which groups of forcings are allocated. |
|
Return flags indicating which groups of mechanical forcings are allocated. |
|
Allocates and zeroes-out array. |
|
Deallocate the forcing type. |
|
Deallocate the mechanical forcing type. |
|
Detailed Description¶
Boundary fluxes¶
The ocean is a forced-dissipative system. Forcing occurs at the boundaries, and this module mediates the various forcing terms from momentum, heat, salt, and mass. Boundary fluxes from other tracers are treated by coupling to biogeochemical models. We here present elements of how MOM6 assumes boundary fluxes are passed into the ocean.
Note that all fluxes are positive into the ocean. For surface boundary fluxes, that means fluxes are positive downward. For example, a positive shortwave flux warms the ocean.
Surface boundary momentum fluxes¶
The ocean surface exchanges momentum with the overlying atmosphere, sea ice, and land ice. The momentum is exchanged as a horizontal stress (Newtons per squared meter: N/m2) imposed on the upper ocean grid cell.
Surface boundary mass fluxes¶
The ocean gains or loses mass through evaporation, precipitation, sea ice melt/form, and river runoff. Positive mass fluxes add mass to the liquid ocean. The boundary mass flux units are (kilogram per square meter per sec: kg/(m2/sec)).
Evaporation field can in fact represent a mass loss (evaporation) or mass gain (condensation in foggy areas).
sea ice formation leads to mass moving from the liquid ocean to the ice model, and melt adds liquid to the ocean.
Precipitation can be liquid or frozen (snow). Furthermore, in some versions of the GFDL coupler, precipitation can be negative. The reason is that the ice model combines precipitation with ice melt and ice formation. This limitation of the ice model diagnostics should be overcome future versions.
River runoff can be liquid or frozen. Frozen runoff is often associated with calving land-ice and/or ice bergs.
Surface boundary salt fluxes¶
Over most of the ocean, there is no exchange of salt with the atmosphere. However, the liquid ocean exchanges salt with sea ice. When ice forms, it extracts salt from ice pockets and discharges the salt into the liquid ocean. The salt concentration of sea ice is therefore much lower (around 5ppt) than liquid seawater (around 30-35ppt in high latitudes).
For ocean-ice models run with a prescribed atmosphere, such as in the CORE/OMMIP simulations, it is necessary to employ a surface restoring term to the k=1 salinity equation, thus imposing a salt flux onto the ocean even outside of sea ice regimes. This salt flux is non-physical, and represents a limitation of the ocean-ice models run without an interactive atmosphere. Sometimes this salt flux is converted to an implied fresh water flux. However, doing so generally leads to changes in the sea level, unless a global normalization is provided to zero-out the net water flux. As a complement, for models with a restoring salt flux, one may choose to zero-out the net salt entering the ocean. There are pros/cons of each approach.
Surface boundary heat fluxes¶
There are many terms that contribute to boundary-related heating of the k=1 surface model grid cell. We here outline details of this heat, with each term having units W/m2.
The net flux of heat crossing ocean surface is stored in the diagnostic array “hfds”. This array is computed as
shortwave (SW) = shortwave radiation (always warms ocean)
longwave (LW) = longwave radiation (generally cools ocean)
latent (LAT) = turbulent latent heat loss due to evaporation (liquid to vapor) or melt (snow to liquid); generally cools the ocean
sensible (SENS) = turbulent heat transfer due to differences in air-sea or ice-sea temperature
mass transfer (MASS) = heat transfer due to heat content of mass (e.g., E-P+R) transferred across ocean surface; computed relative to 0 Celsius
frazil (FRAZ) = heat transferred to form frazil sea ice (positive heating of liquid ocean)
restore (RES) = heat from surface damping sometimes imposed in non-coupled model simulations .
restore (flux adjustments) = heat from surface flux adjustment.
Treatment of shortwave¶
The shortwave field itself is split into two pieces:
shortwave = penetrative SW + non-penetrative SW
non-penetrative = non-downwelling shortwave; portion of SW totally absorbed in the k=1 cell. The non-penetrative SW is combined with LW+LAT+SENS+seaice_melt_heat in net_heat inside routine extractFluxes1d. Notably, for many cases, non-penetrative SW = 0.
penetrative = that portion of shortwave penetrating below a tiny surface layer. This is the downwelling shortwave. Penetrative SW participates in the penetrative SW heating of k=1,nz cells, with the amount of penetration dependent on optical properties.
Convergence of heat into the k=1 cell¶
The convergence of boundary-related heat into surface grid cell is given by the difference in the net heat entering the top of the k=1 cell and the penetrative SW leaving the bottom of the cell.
The convergence of the penetrative shortwave flux is given by \(\mbox{pen}\_\mbox{SW (enter k)}-\mbox{pen}\_\mbox{SW (leave k)}\). This term appears for all cells k=1,nz. It is diagnosed as “rsdoabsorb” inside module MOM6/src/parameterizations/vertical/MOM_diabatic_aux.F90
Type Documentation¶
-
type
mom_forcing_type/
forcing
¶ Structure that contains pointers to the boundary forcing used to drive the liquid ocean simulated by MOM.
- Type fields:
%
ustar
[real(:,:),pointer] :: surface friction velocity scale [Z T-1 ~> m s-1].%
tau_mag
[real(:,:),pointer] :: Magnitude of the wind stress averaged over tracer cells,.%
ustar_gustless
[real(:,:),pointer] :: surface friction velocity scale without any%
buoy
[real(:,:),pointer] :: buoyancy flux [L2 T-3 ~> m2 s-3]%
sw
[real(:,:),pointer] :: shortwave [Q R Z T-1 ~> W m-2]%
sw_vis_dir
[real(:,:),pointer] :: visible, direct shortwave [Q R Z T-1 ~> W m-2]%
sw_vis_dif
[real(:,:),pointer] :: visible, diffuse shortwave [Q R Z T-1 ~> W m-2]%
sw_nir_dir
[real(:,:),pointer] :: near-IR, direct shortwave [Q R Z T-1 ~> W m-2]%
sw_nir_dif
[real(:,:),pointer] :: near-IR, diffuse shortwave [Q R Z T-1 ~> W m-2]%
lw
[real(:,:),pointer] :: longwave [Q R Z T-1 ~> W m-2] (typically negative)%
latent
[real(:,:),pointer] :: latent [Q R Z T-1 ~> W m-2] (typically < 0)%
sens
[real(:,:),pointer] :: sensible [Q R Z T-1 ~> W m-2] (typically negative)%
seaice_melt_heat
[real(:,:),pointer] :: sea ice and snow melt or formation [Q R Z T-1 ~> W m-2] (typically negative)%
heat_added
[real(:,:),pointer] :: additional heat flux from SST restoring or flux adjustments [Q R Z T-1 ~> W m-2]%
latent_evap_diag
[real(:,:),pointer] :: latent [Q R Z T-1 ~> W m-2] from evaporating liquid water (typically < 0)%
latent_fprec_diag
[real(:,:),pointer] :: latent [Q R Z T-1 ~> W m-2] from melting fprec (typically < 0)%
latent_frunoff_diag
[real(:,:),pointer] :: latent [Q R Z T-1 ~> W m-2] from melting frunoff (calving) (typically < 0)%
evap
[real(:,:),pointer] :: (-1)*fresh water flux evaporated out of the ocean [R Z T-1 ~> kg m-2 s-1]%
lprec
[real(:,:),pointer] :: precipitating liquid water into the ocean [R Z T-1 ~> kg m-2 s-1]%
fprec
[real(:,:),pointer] :: precipitating frozen water into the ocean [R Z T-1 ~> kg m-2 s-1]%
vprec
[real(:,:),pointer] :: virtual liquid precip associated w/ SSS restoring [R Z T-1 ~> kg m-2 s-1]%
lrunoff
[real(:,:),pointer] :: liquid river runoff entering ocean [R Z T-1 ~> kg m-2 s-1]%
frunoff
[real(:,:),pointer] :: frozen river runoff (calving) entering ocean [R Z T-1 ~> kg m-2 s-1]%
seaice_melt
[real(:,:),pointer] :: snow/seaice melt (positive) or formation (negative) [R Z T-1 ~> kg m-2 s-1]%
netmassin
[real(:,:),pointer] :: Sum of water mass fluxes into the ocean integrated over a.%
netmassout
[real(:,:),pointer] :: Net water mass flux out of the ocean integrated over a forcing timestep,.%
kpp_salt_flux
[real(:,:),pointer] :: KPP effective salt flux [ppt m s-1].%
heat_content_cond
[real(:,:),pointer] :: heat content associated with condensating water [Q R Z T-1 ~> W m-2]%
heat_content_evap
[real(:,:),pointer] :: heat content associated with evaporating water [Q R Z T-1 ~> W m-2]%
heat_content_lprec
[real(:,:),pointer] :: heat content associated with liquid >0 precip [Q R Z T-1 ~> W m-2]%
heat_content_fprec
[real(:,:),pointer] :: heat content associated with frozen precip [Q R Z T-1 ~> W m-2]%
heat_content_vprec
[real(:,:),pointer] :: heat content associated with virtual >0 precip [Q R Z T-1 ~> W m-2]%
heat_content_lrunoff
[real(:,:),pointer] :: heat content associated with liquid runoff [Q R Z T-1 ~> W m-2]%
heat_content_frunoff
[real(:,:),pointer] :: heat content associated with frozen runoff [Q R Z T-1 ~> W m-2]%
heat_content_massout
[real(:,:),pointer] :: heat content associated with mass leaving ocean [Q R Z T-1 ~> W m-2]%
heat_content_massin
[real(:,:),pointer] :: heat content associated with mass entering ocean [Q R Z T-1 ~> W m-2]%
salt_flux
[real(:,:),pointer] :: net salt flux into the ocean [R Z T-1 ~> kgSalt m-2 s-1]%
salt_flux_in
[real(:,:),pointer] :: salt flux provided to the ocean from coupler [R Z T-1 ~> kgSalt m-2 s-1]%
salt_flux_added
[real(:,:),pointer] :: additional salt flux from restoring or flux adjustment before adjustment%
p_surf_full
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa]. if there is sea-ice, then p_surf_flux is at ice-ocean interface.%
p_surf
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa] as used to drive the ocean model. If p_surf is limited, p_surf may be smaller than p_surf_full, otherwise they are the same.%
p_surf_ssh
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa] that is used in corrections to the sea surface height field that is passed back to the calling routines. p_surf_SSH may point to p_surf or to p_surf_full.%
accumulate_p_surf
[logical] :: If true, the surface pressure due to the atmosphere and various types of ice needs to be accumulated, and the surface pressure explicitly reset to zero at the driver level when appropriate.%
tke_tidal
[real(:,:),pointer] :: tidal energy source driving mixing in bottom boundary layer [R Z3 T-3 ~> W m-2]%
ustar_tidal
[real(:,:),pointer] :: tidal contribution to bottom ustar [Z T-1 ~> m s-1]%
ustar_berg
[real(:,:),pointer] :: iceberg contribution to top ustar [Z T-1 ~> m s-1].%
area_berg
[real(:,:),pointer] :: fractional area of ocean surface covered by icebergs [nondim]%
mass_berg
[real(:,:),pointer] :: mass of icebergs [R Z ~> kg m-2]%
ustar_shelf
[real(:,:),pointer] :: Friction velocity under ice-shelves [Z T-1 ~> m s-1]. as computed by the ocean at the previous time step.%
frac_shelf_h
[real(:,:),pointer] :: Fractional ice shelf coverage of h-cells, from 0 to 1 [nondim]. This is only associated if ice shelves are enabled, and are exactly 0 away from shelves or on land.%
iceshelf_melt
[real(:,:),pointer] :: Ice shelf melt rate (positive) or freezing (negative) [R Z T-1 ~> kg m-2 s-1].%
shelf_sfc_mass_flux
[real(:,:),pointer] :: Ice shelf surface mass flux deposition from the atmosphere. [R Z T-1 ~> kg m-2 s-1].%
vprecglobaladj
[real] :: adjustment to restoring vprec to zero out global net [kg m-2 s-1]%
saltfluxglobaladj
[real] :: adjustment to restoring salt flux to zero out global net [kgSalt m-2 s-1]%
netfwglobaladj
[real] :: adjustment to net fresh water to zero out global net [kg m-2 s-1]%
vprecglobalscl
[real] :: scaling of restoring vprec to zero out global net ( -1..1 ) [nondim]%
saltfluxglobalscl
[real] :: scaling of restoring salt flux to zero out global net ( -1..1 ) [nondim]%
netfwglobalscl
[real] :: scaling of net fresh water to zero out global net ( -1..1 ) [nondim]%
fluxes_used
[logical] :: If true, all of the heat, salt, and mass fluxes have been applied to the ocean.%
dt_buoy_accum
[real] :: The amount of time over which the buoyancy fluxes should be applied [T ~> s]. If negative, this forcing type variable has not yet been initialized.%
gustless_accum_bug
[logical] :: If true, use an incorrect expression in the time average of the gustless wind stress.%
c_p
[real] :: heat capacity of seawater [Q C-1 ~> J kg-1 degC-1]. C_p is is the same value as in thermovar_ptrs_type.%
ice_fraction
[real(:,:),pointer] :: fraction of sea ice coverage at h-cells, from 0 to 1 [nondim].%
u10_sqr
[real(:,:),pointer] :: wind magnitude at 10 m squared [L2 T-2 ~> m2 s-2]%
lamult
[real(:,:),pointer] :: Langmuir enhancement factor [nondim].%
tr_fluxes
[type(coupler_2d_bc_type)] :: This structure contains arrays of of named fields used for passive tracer fluxes. All arrays in tr_fluxes use the coupler indexing, which has no halos. This is not a convenient convention, but imposed on MOM6 by the coupler.%
num_msg
[integer] :: Number of messages issued about excessive SW penetration.%
max_msg
[integer] :: Maximum number of messages to issue about excessive SW penetration.
-
type
mom_forcing_type/
mech_forcing
¶ Structure that contains pointers to the mechanical forcing at the surface used to drive the liquid ocean simulated by MOM. Data in this type is allocated in the module
MOM_surface_forcing.F90
, of which there are three versions: solo, coupled, and ice-shelf.- Type fields:
%
taux
[real(:,:),pointer] :: zonal wind stress [R L Z T-2 ~> Pa]%
tauy
[real(:,:),pointer] :: meridional wind stress [R L Z T-2 ~> Pa]%
tau_mag
[real(:,:),pointer] :: Magnitude of the wind stress averaged over tracer cells, including any.%
ustar
[real(:,:),pointer] :: surface friction velocity scale [Z T-1 ~> m s-1].%
net_mass_src
[real(:,:),pointer] :: The net mass source to the ocean [R Z T-1 ~> kg m-2 s-1].%
p_surf_full
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa]. if there is sea-ice, then p_surf_flux is at ice-ocean interface.%
p_surf
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa] as used to drive the ocean model. If p_surf is limited, p_surf may be smaller than p_surf_full, otherwise they are the same.%
p_surf_ssh
[real(:,:),pointer] :: Pressure at the top ocean interface [R L2 T-2 ~> Pa] that is used in corrections to the sea surface height field that is passed back to the calling routines. p_surf_SSH may point to p_surf or to p_surf_full.%
area_berg
[real(:,:),pointer] :: fractional area of ocean surface covered by icebergs [nondim]%
mass_berg
[real(:,:),pointer] :: mass of icebergs per unit ocean area [R Z ~> kg m-2]%
frac_shelf_u
[real(:,:),pointer] :: Fractional ice shelf coverage of u-cells, nondimensional from 0 to 1 [nondim]. This is only associated if ice shelves are enabled, and is exactly 0 away from shelves or on land.%
frac_shelf_v
[real(:,:),pointer] :: Fractional ice shelf coverage of v-cells, nondimensional from 0 to 1 [nondim]. This is only associated if ice shelves are enabled, and is exactly 0 away from shelves or on land.%
rigidity_ice_u
[real(:,:),pointer] :: Depth-integrated lateral viscosity of ice shelves or sea ice at.%
rigidity_ice_v
[real(:,:),pointer] :: Depth-integrated lateral viscosity of ice shelves or sea ice at.%
dt_force_accum
[real] :: The amount of time over which the mechanical forcing fluxes have been averaged [T ~> s].%
net_mass_src_set
[logical] :: If true, an estimate of net_mass_src has been provided.%
accumulate_p_surf
[logical] :: If true, the surface pressure due to the atmosphere and various types of ice needs to be accumulated, and the surface pressure explicitly reset to zero at the driver level when appropriate.%
accumulate_rigidity
[logical] :: If true, the rigidity due to various types of ice needs to be accumulated, and the rigidity explicitly reset to zero at the driver level when appropriate.%
stk_wavenumbers
[real(:),pointer] :: The central wave number of Stokes bands [rad Z-1 ~> rad m-1].%
ustkb
[real(:,:,:),pointer] :: Stokes Drift spectrum, zonal [L T-1 ~> m s-1].%
vstkb
[real(:,:,:),pointer] :: Stokes Drift spectrum, meridional [L T-1 ~> m s-1].%
initialized
[logical] :: This indicates whether the appropriate arrays have been initialized.
-
type
mom_forcing_type/
forcing_diags
¶ Structure that defines the id handles for the forcing type.
- Type fields:
%
id_prcme
[integer] :: Forcing diagnostic handles.%
id_evap
[integer] :: Forcing diagnostic handles.%
id_precip
[integer] :: Forcing diagnostic handles.%
id_vprec
[integer] :: Forcing diagnostic handles.%
id_lprec
[integer] :: Forcing diagnostic handles.%
id_fprec
[integer] :: Forcing diagnostic handles.%
id_lrunoff
[integer] :: Forcing diagnostic handles.%
id_frunoff
[integer] :: Forcing diagnostic handles.%
id_net_massout
[integer] :: Forcing diagnostic handles.%
id_net_massin
[integer] :: Forcing diagnostic handles.%
id_massout_flux
[integer] :: Forcing diagnostic handles.%
id_massin_flux
[integer] :: Forcing diagnostic handles.%
id_seaice_melt
[integer] :: Forcing diagnostic handles.%
id_total_prcme
[integer] :: Forcing diagnostic handles.%
id_total_evap
[integer] :: Forcing diagnostic handles.%
id_total_precip
[integer] :: Forcing diagnostic handles.%
id_total_vprec
[integer] :: Forcing diagnostic handles.%
id_total_lprec
[integer] :: Forcing diagnostic handles.%
id_total_fprec
[integer] :: Forcing diagnostic handles.%
id_total_lrunoff
[integer] :: Forcing diagnostic handles.%
id_total_frunoff
[integer] :: Forcing diagnostic handles.%
id_total_net_massout
[integer] :: Forcing diagnostic handles.%
id_total_net_massin
[integer] :: Forcing diagnostic handles.%
id_total_seaice_melt
[integer] :: Forcing diagnostic handles.%
id_prcme_ga
[integer] :: Forcing diagnostic handles.%
id_evap_ga
[integer] :: Forcing diagnostic handles.%
id_lprec_ga
[integer] :: Forcing diagnostic handles.%
id_fprec_ga
[integer] :: Forcing diagnostic handles.%
id_precip_ga
[integer] :: Forcing diagnostic handles.%
id_vprec_ga
[integer] :: Forcing diagnostic handles.%
id_net_heat_coupler
[integer] :: Forcing diagnostic handles.%
id_net_heat_surface
[integer] :: Forcing diagnostic handles.%
id_sens
[integer] :: Forcing diagnostic handles.%
id_lwlatsens
[integer] :: Forcing diagnostic handles.%
id_sw
[integer] :: Forcing diagnostic handles.%
id_lw
[integer] :: Forcing diagnostic handles.%
id_sw_vis
[integer] :: Forcing diagnostic handles.%
id_sw_nir
[integer] :: Forcing diagnostic handles.%
id_lat_evap
[integer] :: Forcing diagnostic handles.%
id_lat_frunoff
[integer] :: Forcing diagnostic handles.%
id_lat
[integer] :: Forcing diagnostic handles.%
id_lat_fprec
[integer] :: Forcing diagnostic handles.%
id_heat_content_lrunoff
[integer] :: Forcing diagnostic handles.%
id_heat_content_frunoff
[integer] :: Forcing diagnostic handles.%
id_heat_content_lprec
[integer] :: Forcing diagnostic handles.%
id_heat_content_fprec
[integer] :: Forcing diagnostic handles.%
id_heat_content_cond
[integer] :: Forcing diagnostic handles.%
id_heat_content_surfwater
[integer] :: Forcing diagnostic handles.%
id_heat_content_evap
[integer] :: Forcing diagnostic handles.%
id_heat_content_vprec
[integer] :: Forcing diagnostic handles.%
id_heat_content_massout
[integer] :: Forcing diagnostic handles.%
id_heat_added
[integer] :: Forcing diagnostic handles.%
id_heat_content_massin
[integer] :: Forcing diagnostic handles.%
id_hfrainds
[integer] :: Forcing diagnostic handles.%
id_hfrunoffds
[integer] :: Forcing diagnostic handles.%
id_seaice_melt_heat
[integer] :: Forcing diagnostic handles.%
id_total_net_heat_coupler
[integer] :: Forcing diagnostic handles.%
id_total_net_heat_surface
[integer] :: Forcing diagnostic handles.%
id_total_sens
[integer] :: Forcing diagnostic handles.%
id_total_lwlatsens
[integer] :: Forcing diagnostic handles.%
id_total_sw
[integer] :: Forcing diagnostic handles.%
id_total_lw
[integer] :: Forcing diagnostic handles.%
id_total_lat_evap
[integer] :: Forcing diagnostic handles.%
id_total_lat_frunoff
[integer] :: Forcing diagnostic handles.%
id_total_lat
[integer] :: Forcing diagnostic handles.%
id_total_lat_fprec
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_lrunoff
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_frunoff
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_lprec
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_fprec
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_cond
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_surfwater
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_evap
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_vprec
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_massout
[integer] :: Forcing diagnostic handles.%
id_total_heat_added
[integer] :: Forcing diagnostic handles.%
id_total_heat_content_massin
[integer] :: Forcing diagnostic handles.%
id_total_seaice_melt_heat
[integer] :: Forcing diagnostic handles.%
id_net_heat_coupler_ga
[integer] :: Forcing diagnostic handles.%
id_net_heat_surface_ga
[integer] :: Forcing diagnostic handles.%
id_sens_ga
[integer] :: Forcing diagnostic handles.%
id_lwlatsens_ga
[integer] :: Forcing diagnostic handles.%
id_sw_ga
[integer] :: Forcing diagnostic handles.%
id_lw_ga
[integer] :: Forcing diagnostic handles.%
id_lat_ga
[integer] :: Forcing diagnostic handles.%
id_saltflux
[integer] :: Forcing diagnostic handles.%
id_saltfluxin
[integer] :: Forcing diagnostic handles.%
id_saltfluxadded
[integer] :: Forcing diagnostic handles.%
id_total_saltflux
[integer] :: Forcing diagnostic handles.%
id_total_saltfluxin
[integer] :: Forcing diagnostic handles.%
id_total_saltfluxadded
[integer] :: Forcing diagnostic handles.%
id_vprecglobaladj
[integer] :: Forcing diagnostic handles.%
id_vprecglobalscl
[integer] :: Forcing diagnostic handles.%
id_saltfluxglobaladj
[integer] :: Forcing diagnostic handles.%
id_saltfluxglobalscl
[integer] :: Forcing diagnostic handles.%
id_netfwglobaladj
[integer] :: Forcing diagnostic handles.%
id_netfwglobalscl
[integer] :: Forcing diagnostic handles.%
id_taux
[integer] :: Forcing diagnostic handles.%
id_tauy
[integer] :: Forcing diagnostic handles.%
id_ustar
[integer] :: Forcing diagnostic handles.%
id_tau_mag
[integer] :: Forcing diagnostic handles.%
id_psurf
[integer] :: Forcing diagnostic handles.%
id_tke_tidal
[integer] :: Forcing diagnostic handles.%
id_buoy
[integer] :: Forcing diagnostic handles.%
id_ice_fraction
[integer] :: Forcing diagnostic handles.%
id_u10_sqr
[integer] :: Forcing diagnostic handles.%
id_ustar_berg
[integer] :: Forcing diagnostic handles.%
id_area_berg
[integer] :: Forcing diagnostic handles.%
id_mass_berg
[integer] :: Forcing diagnostic handles.%
id_ustar_ice_cover
[integer] :: Forcing diagnostic handles.%
id_frac_ice_cover
[integer] :: Forcing diagnostic handles.%
id_lamult
[integer] :: Forcing diagnostic handles.%
id_clock_forcing
[integer] :: CPU clock id.
Function/Subroutine Documentation¶
-
subroutine
mom_forcing_type/
extractfluxes1d
(G, GV, US, fluxes, optics, nsw, j, dt, FluxRescaleDepth, useRiverHeatContent, useCalvingHeatContent, h, T, netMassInOut, netMassOut, net_heat, net_salt, pen_SW_bnd, tv, aggregate_FW, nonpenSW, netmassInOut_rate, net_Heat_Rate, net_salt_rate, pen_sw_bnd_Rate)¶ This subroutine extracts fluxes from the surface fluxes type. It works on a j-row for optimization purposes. The 2d (i,j) wrapper is the next subroutine below. This routine multiplies fluxes by dt, so that the result is an accumulation of fluxes over a time step.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
fluxes :: [inout] structure containing pointers to possible forcing fields. NULL unused fields.
optics :: pointer to optics
nsw :: [in] number of bands of penetrating SW
j :: [in] j-index to work on
dt :: [in] The time step for these fluxes [T ~> s]
fluxrescaledepth :: [in] min ocean depth before fluxes are scaled away [H ~> m or kg m-2]
useriverheatcontent :: [in] logical for river heat content
usecalvingheatcontent :: [in] logical for calving heat content
h :: [in] layer thickness [H ~> m or kg m-2]
t :: [in] layer temperatures [C ~> degC]
netmassinout :: [out] net mass flux (non-Bouss) or volume flux (if Bouss) of water in/out of ocean over a time step [H ~> m or kg m-2]
netmassout :: [out] net mass flux (non-Bouss) or volume flux (if Bouss) of water leaving ocean surface over a time step [H ~> m or kg m-2]. netMassOut < 0 means mass leaves ocean.
net_heat :: [out] net heat at the surface accumulated over a time step for coupler + restoring. Exclude two terms from net_heat: (1) downwelling (penetrative) SW, (2) evaporation heat content, (since do not yet know evap temperature). [C H ~> degC m or degC kg m-2].
net_salt :: [out] surface salt flux into the ocean accumulated over a time step [S H ~> ppt m or ppt kg m-2].
pen_sw_bnd :: [out] penetrating SW flux, split into bands. [C H ~> degC m or degC kg m-2] and array size nsw x G isd: G ied, where nsw=number of SW bands in pen_SW_bnd. This heat flux is not part of net_heat.
tv :: [inout] structure containing pointers to available thermodynamic fields. Used to keep track of the heat flux associated with net mass fluxes into the ocean.
aggregate_fw :: [in] For determining how to aggregate forcing.
nonpensw :: [out] Non-penetrating SW used in net_heat
net_heat_rate :: [out] Rate of net surface heating
net_salt_rate :: [out] Surface salt flux into the ocean
netmassinout_rate :: [out] Rate of net mass flux into the ocean
pen_sw_bnd_rate :: [out] Rate of penetrative shortwave heating
- Call to:
mom_opacity::extract_optics_slice
mom_error_handler::mom_error
mom_opacity::optics_nbands
- Called from:
mom_diabatic_aux::applyboundaryfluxesinout
mom_bulk_mixed_layer::bulkmixedlayer
calculatebuoyancyflux1d
extractfluxes2d
-
subroutine
mom_forcing_type/
extractfluxes2d
(G, GV, US, fluxes, optics, nsw, dt, FluxRescaleDepth, useRiverHeatContent, useCalvingHeatContent, h, T, netMassInOut, netMassOut, net_heat, Net_salt, Pen_SW_bnd, tv, aggregate_FW)¶ 2d wrapper for 1d extract fluxes from surface fluxes type. This subroutine extracts fluxes from the surface fluxes type. It multiplies the fluxes by dt, so that the result is an accumulation of the fluxes over a time step.
- Parameters:
g :: [in] ocean grid structure
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
fluxes :: [inout] structure containing pointers to forcing.
optics :: pointer to optics
nsw :: [in] number of bands of penetrating SW
dt :: [in] The time step for these fluxes [T ~> s]
fluxrescaledepth :: [in] min ocean depth before fluxes are scaled away [H ~> m or kg m-2]
useriverheatcontent :: [in] logical for river heat content
usecalvingheatcontent :: [in] logical for calving heat content
h :: [in] layer thickness [H ~> m or kg m-2]
t :: [in] layer temperatures [C ~> degC]
netmassinout :: [out] net mass flux (non-Bouss) or volume flux (if Bouss) of water in/out of ocean over a time step [H ~> m or kg m-2]
netmassout :: [out] net mass flux (non-Bouss) or volume flux (if Bouss) of water leaving ocean surface over a time step [H ~> m or kg m-2].
net_heat :: [out] net heat at the surface accumulated over a time step associated with coupler + restore. Exclude two terms from net_heat: (1) downwelling (penetrative) SW, (2) evaporation heat content, (since do not yet know temperature of evap). [C H ~> degC m or degC kg m-2]
net_salt :: [out] surface salt flux into the ocean accumulated over a time step [S H ~> ppt m or ppt kg m-2]
pen_sw_bnd :: [out] penetrating SW flux, by frequency band [C H ~> degC m or degC kg m-2] with array size nsw x G isd: G ied, where nsw=number of SW bands in pen_SW_bnd. This heat flux is not in net_heat.
tv :: [inout] structure containing pointers to available thermodynamic fields. Here it is used to keep track of the heat flux associated with net mass fluxes into the ocean.
aggregate_fw :: [in] For determining how to aggregate the forcing.
- Call to:
-
subroutine
mom_forcing_type/
calculatebuoyancyflux1d
(G, GV, US, fluxes, optics, nsw, h, Temp, Salt, tv, j, buoyancyFlux, netHeatMinusSW, netSalt)¶ This routine calculates surface buoyancy flux by adding up the heat, FW & salt fluxes. These are actual fluxes, with units of stuff per time. Setting dt=1 in the call to extractFluxes routine allows us to get “stuf per time” rather than the time integrated fluxes needed in other routines that call extractFluxes.
- Parameters:
g :: [in] ocean grid
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
fluxes :: [inout] surface fluxes
optics :: penetrating SW optics
nsw :: [in] The number of frequency bands of penetrating shortwave radiation
h :: [in] layer thickness [H ~> m or kg m-2]
temp :: [in] prognostic temp [C ~> degC]
salt :: [in] salinity [S ~> ppt]
tv :: [inout] thermodynamics type
j :: [in] j-row to work on
buoyancyflux :: [out] buoyancy fluxes [L2 T-3 ~> m2 s-3]
netheatminussw :: [out] Surface heat flux excluding shortwave [C H T-1 ~> degC m s-1 or degC kg m-2 s-1]
netsalt :: [out] surface salt flux [S H T-1 ~> ppt m s-1 or ppt kg m-2 s-1]
- Call to:
mom_eos::eos_domain
extractfluxes1d
mom_opacity::optics_nbands
mom_opacity::sumswoverbands
- Called from:
-
subroutine
mom_forcing_type/
calculatebuoyancyflux2d
(G, GV, US, fluxes, optics, h, Temp, Salt, tv, buoyancyFlux, netHeatMinusSW, netSalt)¶ Calculates surface buoyancy flux by adding up the heat, FW and salt fluxes, for 2d arrays. This is a wrapper for calculateBuoyancyFlux1d.
- Parameters:
g :: [in] ocean grid
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
fluxes :: [inout] surface fluxes
optics :: SW ocean optics
h :: [in] layer thickness [H ~> m or kg m-2]
temp :: [in] temperature [C ~> degC]
salt :: [in] salinity [S ~> ppt]
tv :: [inout] thermodynamics type
buoyancyflux :: [inout] buoyancy fluxes [L2 T-3 ~> m2 s-3]
netheatminussw :: [inout] surface heat flux excluding shortwave [C H T-1 ~> degC m s-1 or degC kg m-2 s-1]
netsalt :: [inout] Net surface salt flux [S H T-1 ~> ppt m s-1 or ppt kg m-2 s-1]
- Call to:
- Called from:
mom_diabatic_driver::diabatic_ale
mom_diabatic_driver::diabatic_ale_legacy
mom_diabatic_driver::layered_diabatic
-
subroutine
mom_forcing_type/
mom_forcing_chksum
(mesg, fluxes, G, US, haloshift)¶ Write out chksums for thermodynamic fluxes.
- Parameters:
mesg :: [in] message
fluxes :: [in] A structure containing thermodynamic forcing fields
g :: [in] grid type
us :: [in] A dimensional unit scaling type
haloshift :: [in] shift in halo
- Called from:
mom6
-
subroutine
mom_forcing_type/
mom_mech_forcing_chksum
(mesg, forces, G, US, haloshift)¶ Write out chksums for the driving mechanical forces.
- Parameters:
mesg :: [in] message
forces :: [in] A structure with the driving mechanical forces
g :: [in] grid type
us :: [in] A dimensional unit scaling type
haloshift :: [in] shift in halo
- Called from:
mom6
-
subroutine
mom_forcing_type/
mech_forcing_singlepointprint
(forces, G, i, j, mesg)¶ Write out values of the mechanical forcing arrays at the i,j location. This is a debugging tool.
- Parameters:
forces :: [in] A structure with the driving mechanical forces
g :: [in] Grid type
mesg :: [in] Message
i :: [in] i-index
j :: [in] j-index
- Call to:
locmsg
-
subroutine
mom_forcing_type/
forcing_singlepointprint
(fluxes, G, i, j, mesg)¶ Write out values of the fluxes arrays at the i,j location. This is a debugging tool.
- Parameters:
fluxes :: [in] A structure containing thermodynamic forcing fields
g :: [in] Grid type
mesg :: [in] Message
i :: [in] i-index
j :: [in] j-index
- Call to:
locmsg
- Called from:
-
subroutine
mom_forcing_type/
register_forcing_type_diags
(Time, diag, US, use_temperature, handles, use_berg_fluxes, use_waves, use_cfcs)¶ Register members of the forcing type for diagnostics.
- Parameters:
time :: [in] time type
diag :: [inout] diagnostic control type
us :: [in] A dimensional unit scaling type
use_temperature :: [in] True if T/S are in use
handles :: [inout] handles for diagnostics
use_berg_fluxes :: [in] If true, allow iceberg flux diagnostics
use_waves :: [in] If true, allow wave forcing diagnostics
use_cfcs :: [in] If true, allow cfc related diagnostics
-
subroutine
mom_forcing_type/
forcing_accumulate
(flux_tmp, forces, fluxes, G, wt2)¶ Accumulate the forcing over time steps, taking input from a mechanical forcing type and a temporary forcing-flux type.
- Parameters:
flux_tmp :: [in] A temporary structure with current thermodynamic forcing fields
forces :: [in] A structure with the driving mechanical forces
fluxes :: [inout] A structure containing time-averaged thermodynamic forcing fields
g :: [inout] The ocean’s grid structure
wt2 :: [out] The relative weight of the new fluxes
- Call to:
-
subroutine
mom_forcing_type/
fluxes_accumulate
(flux_tmp, fluxes, G, wt2, forces)¶ Accumulate the thermodynamic fluxes over time steps.
- Parameters:
flux_tmp :: [in] A temporary structure with current thermodynamic forcing fields
fluxes :: [inout] A structure containing time-averaged thermodynamic forcing fields
g :: [inout] The ocean’s grid structure
wt2 :: [out] The relative weight of the new fluxes
forces :: [in] A structure with the driving mechanical forces
- Call to:
- Called from:
-
subroutine
mom_forcing_type/
copy_common_forcing_fields
(forces, fluxes, G, skip_pres)¶ This subroutine copies the computational domains of common forcing fields from a
mech_forcing()
type to a (thermodynamic) forcing type. type to a (thermodynamic) forcing type.- Parameters:
forces :: [in] A structure with the driving mechanical forces
fluxes :: [inout] A structure containing thermodynamic forcing fields
g :: [in] grid type
skip_pres :: [in] If present and true, do not copy pressure fields.
-
subroutine
mom_forcing_type/
set_derived_forcing_fields
(forces, fluxes, G, US, Rho0)¶ This subroutine calculates certain derived forcing fields based on information from a
mech_forcing()
type and stores them in a (thermodynamic) forcing type. type and stores them in a (thermodynamic) forcing type.- Parameters:
forces :: [in] A structure with the driving mechanical forces
fluxes :: [inout] A structure containing thermodynamic forcing fields
g :: [in] grid type
us :: [in] A dimensional unit scaling type
rho0 :: [in] A reference density of seawater [R ~> kg m-3], as used to calculate ustar.
-
subroutine
mom_forcing_type/
set_net_mass_forcing
(fluxes, forces, G, US)¶ This subroutine determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a
mech_forcing()
type. type.- Parameters:
fluxes :: [in] A structure containing thermodynamic forcing fields
forces :: [inout] A structure with the driving mechanical forces
us :: [in] A dimensional unit scaling type
g :: [in] The ocean grid type
- Call to:
-
subroutine
mom_forcing_type/
get_net_mass_forcing
(fluxes, G, US, net_mass_src)¶ This subroutine calculates determines the net mass source to the ocean from a (thermodynamic) forcing type and stores it in a provided array.
- Parameters:
fluxes :: [in] A structure containing thermodynamic forcing fields
g :: [in] The ocean grid type
us :: [in] A dimensional unit scaling type
net_mass_src :: [out] The net mass flux of water into the ocean [R Z T-1 ~> kg m-2 s-1].
- Called from:
-
subroutine
mom_forcing_type/
copy_back_forcing_fields
(fluxes, forces, G)¶ This subroutine copies the computational domains of common forcing fields from a
mech_forcing()
type to a (thermodynamic) forcing type. type to a (thermodynamic) forcing type.- Parameters:
fluxes :: [in] A structure containing thermodynamic forcing fields
forces :: [inout] A structure with the driving mechanical forces
g :: [in] grid type
-
subroutine
mom_forcing_type/
mech_forcing_diags
(forces_in, dt, G, time_end, diag, handles)¶ Offer mechanical forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags.
- Parameters:
forces_in :: [in] mechanical forcing input fields
dt :: [in] time step for the forcing [T ~> s]
g :: [in] grid type
time_end :: [in] The end time of the diagnostic interval.
diag :: [inout] diagnostic type
handles :: [inout] diagnostic id for diag_manager
- Call to:
deallocate_mech_forcing
mom_diag_mediator::disable_averaging
mom_diag_mediator::enable_averages
rotate_mech_forcing
- Called from:
-
subroutine
mom_forcing_type/
forcing_diagnostics
(fluxes_in, sfc_state, G_in, US, time_end, diag, handles, enthalpy)¶ Offer buoyancy forcing fields for diagnostics for those fields registered as part of register_forcing_type_diags.
- Parameters:
fluxes_in :: [in] A structure containing thermodynamic forcing fields
sfc_state :: [in] A structure containing fields that describe the surface state of the ocean.
g_in :: [in] Input grid type
us :: [in] A dimensional unit scaling type
time_end :: [in] The end time of the diagnostic interval.
diag :: [inout] diagnostic regulator
handles :: [inout] diagnostic ids
enthalpy :: [in] If present and true, the heat content associated with mass entering/leaving the ocean is provided by the coupler. Diagnostics net_heat_surface and heat_content_surfwater are computed using heat_content_evap instead of heat_content_massout.
- Call to:
deallocate_forcing_type
mom_diag_mediator::disable_averaging
mom_diag_mediator::enable_averages
rotate_forcing
- Called from:
-
subroutine
mom_forcing_type/
allocate_forcing_by_group
(G, fluxes, water, heat, ustar, press, shelf, iceberg, salt, fix_accum_bug, cfc, waves, shelf_sfc_accumulation, lamult, hevap)¶ Conditionally allocate fields within the forcing type.
- Parameters:
g :: [in] Ocean grid structure
fluxes :: [inout] A structure containing thermodynamic forcing fields
water :: [in] If present and true, allocate water fluxes
heat :: [in] If present and true, allocate heat fluxes
ustar :: [in] If present and true, allocate ustar and related fields
press :: [in] If present and true, allocate p_surf and related fields
shelf :: [in] If present and true, allocate fluxes for ice-shelf
iceberg :: [in] If present and true, allocate fluxes for icebergs
salt :: [in] If present and true, allocate salt fluxes
fix_accum_bug :: [in] If present and true, avoid using a bug in accumulation of ustar_gustless
cfc :: [in] If present and true, allocate fields needed for cfc surface fluxes
waves :: [in] If present and true, allocate wave fields
shelf_sfc_accumulation :: [in] If present and true, and shelf is true, then allocate surface flux deposition from the atmosphere over ice shelves and ice sheets.
lamult :: [in] If present and true, allocate langmuir enhancement factor
hevap :: [in] If present and true, allocate heat content evap. This field must be allocated when enthalpy is provided via coupler.
-
subroutine
mom_forcing_type/
allocate_forcing_by_ref
(fluxes_ref, G, fluxes)¶ - Parameters:
fluxes_ref :: [in] Reference fluxes
g :: [in] Grid metric of target fluxes
fluxes :: [out] Target fluxes
-
subroutine
mom_forcing_type/
allocate_mech_forcing_by_group
(G, forces, stress, ustar, shelf, press, iceberg, waves, num_stk_bands)¶ Conditionally allocate fields within the mechanical forcing type using control flags.
- Parameters:
g :: [in] Ocean grid structure
forces :: [inout] Forcing fields structure
stress :: [in] If present and true, allocate taux, tauy
ustar :: [in] If present and true, allocate ustar and related fields
shelf :: [in] If present and true, allocate forces for ice-shelf
press :: [in] If present and true, allocate p_surf and related fields
iceberg :: [in] If present and true, allocate forces for icebergs
waves :: [in] If present and true, allocate wave fields
num_stk_bands :: [in] Number of Stokes bands to allocate
-
subroutine
mom_forcing_type/
allocate_mech_forcing_from_ref
(forces_ref, G, forces)¶ Conditionally allocate fields within the mechanical forcing type based on a reference forcing.
- Parameters:
forces_ref :: [in] Reference forcing fields
g :: [in] Grid metric of target forcing
forces :: [out] Mechanical forcing fields
-
subroutine
mom_forcing_type/
get_forcing_groups
(fluxes, water, heat, ustar, press, shelf, iceberg, salt, heat_added, buoy)¶ Return flags indicating which groups of forcings are allocated.
- Parameters:
fluxes :: [in] Reference flux fields
water :: [out] True if fluxes contains water-based fluxes
heat :: [out] True if fluxes contains heat-based fluxes
ustar :: [out] True if fluxes contains ustar fluxes
press :: [out] True if fluxes contains surface pressure
shelf :: [out] True if fluxes contains ice shelf fields
iceberg :: [out] True if fluxes contains iceberg fluxes
salt :: [out] True if fluxes contains salt flux
heat_added :: [out] True if fluxes contains explicit heat
buoy :: [out] True if fluxes contains buoyancy fluxes
- Called from:
mom_forcing_type::allocate_forcing_type::allocate_forcing_by_ref
homogenize_forcing
rotate_forcing
-
subroutine
mom_forcing_type/
get_mech_forcing_groups
(forces, stress, ustar, shelf, press, iceberg)¶ Return flags indicating which groups of mechanical forcings are allocated.
- Parameters:
forces :: [in] Reference forcing fields
stress :: [out] True if forces contains wind stress fields
ustar :: [out] True if forces contains ustar field
shelf :: [out] True if forces contains ice shelf fields
press :: [out] True if forces contains pressure fields
iceberg :: [out] True if forces contains iceberg fields
- Called from:
mom_forcing_type::allocate_mech_forcing::allocate_mech_forcing_from_ref
homogenize_mech_forcing
rotate_mech_forcing
-
subroutine
mom_forcing_type/
myalloc
(array, is, ie, js, je, flag)¶ Allocates and zeroes-out array.
- Parameters:
array :: Array to be allocated
is :: [in] Start i-index
ie :: [in] End i-index
js :: [in] Start j-index
je :: [in] End j-index
flag :: [in] Flag to indicate to allocate
- Called from:
mom_forcing_type::allocate_forcing_type::allocate_forcing_by_group
mom_forcing_type::allocate_forcing_type::allocate_forcing_by_ref
mom_forcing_type::allocate_mech_forcing::allocate_mech_forcing_by_group
-
subroutine
mom_forcing_type/
deallocate_forcing_type
(fluxes)¶ Deallocate the forcing type.
- Parameters:
fluxes :: [inout] Forcing fields structure
- Called from:
-
subroutine
mom_forcing_type/
deallocate_mech_forcing
(forces)¶ Deallocate the mechanical forcing type.
- Parameters:
forces :: [inout] Forcing fields structure
- Called from:
-
subroutine
mom_forcing_type/
rotate_forcing
(fluxes_in, fluxes, turns)¶ - Parameters:
fluxes_in :: [in] Input forcing structure
fluxes :: [inout] Rotated forcing structure
turns :: [in] Number of quarter turns
- Call to:
- Called from:
forcing_diagnostics
mom_ice_shelf::initialize_ice_shelf_fluxes
mom_ice_shelf::shelf_calc_flux
-
subroutine
mom_forcing_type/
rotate_mech_forcing
(forces_in, turns, forces)¶ - Parameters:
forces_in :: [in] Forcing on the input domain
turns :: [in] Number of quarter-turns
forces :: [inout] Forcing on the rotated domain
- Call to:
- Called from:
mom_ice_shelf::initialize_ice_shelf_forces
mech_forcing_diags
-
subroutine
mom_forcing_type/
homogenize_mech_forcing
(forces, G, US, Rho0, UpdateUstar)¶ - Parameters:
forces :: [inout] Forcing on the input domain
g :: [in] Grid metric of target forcing
us :: [in] A dimensional unit scaling type
rho0 :: [in] A reference density of seawater [R ~> kg m-3], as used to calculate ustar.
updateustar :: [in] A logical to determine if Ustar should be directly averaged or updated from mean tau.
- Call to:
get_mech_forcing_groups
mom_spatial_means::global_area_mean_u
mom_spatial_means::global_area_mean_v
homogenize_field_t
homogenize_field_u
homogenize_field_v
- Called from:
-
subroutine
mom_forcing_type/
homogenize_forcing
(fluxes, G, GV, US)¶ - Parameters:
fluxes :: [inout] Input forcing struct
g :: [in] Grid metric of target forcing
gv :: [in] ocean vertical grid structure
us :: [in] A dimensional unit scaling type
- Call to:
- Called from:
-
subroutine
mom_forcing_type/
homogenize_field_t
(var, G, tmp_scale)¶ - Parameters:
g :: [in] The ocean’s grid structure
var :: [inout] The variable to homogenize
tmp_scale :: [in] A temporary rescaling factor for the variable that is reversed in the return value
- Called from:
-
subroutine
mom_forcing_type/
homogenize_field_v
(var, G, tmp_scale)¶ - Parameters:
g :: [in] The ocean’s grid structure
var :: [inout] The variable to homogenize
tmp_scale :: [in] A temporary rescaling factor for the variable that is reversed in the return value
- Call to:
- Called from:
-
subroutine
mom_forcing_type/
homogenize_field_u
(var, G, tmp_scale)¶ - Parameters:
g :: [in] The ocean’s grid structure
var :: [inout] The variable to homogenize
tmp_scale :: [in] A temporary rescaling factor for the variable that is reversed in the return value
- Call to:
- Called from: