FMS Coupler
2022.03
|
The flux_exchange module provides interfaces to couple the following component models: atmosphere, ocean, land, and ice. All interpolation between physically distinct model grids is handled by the exchange grid (xgrid_mod) with the interpolated quantities being conserved. More...
Modules | |
module | flux_exchange_mod |
Functions/Subroutines | |
subroutine, public | flux_exchange_mod::gas_exchange_init (gas_fields_atm, gas_fields_ice, gas_fluxes) |
Gas and tracer exchange initialization routine. More... | |
subroutine, public | flux_exchange_mod::flux_exchange_init (Time, Atm, Land, Ice, Ocean, Ocean_state, atmos_ice_boundary, land_ice_atmos_boundary, land_ice_boundary, ice_ocean_boundary, ocean_ice_boundary, do_ocean, slow_ice_ocean_pelist, dt_atmos, dt_cpld) |
Initialization routine. More... | |
subroutine, public | flux_exchange_mod::flux_check_stocks (Time, Atm, Lnd, Ice, Ocn_state) |
Check stock values. More... | |
subroutine, public | flux_exchange_mod::flux_init_stocks (Time, Atm, Lnd, Ice, Ocn_state) |
Initialize stock values. More... | |
subroutine | flux_exchange_mod::check_atm_grid (Atm, grid_file) |
Variables | |
character(len=128) | flux_exchange_mod::version = '$Id$' |
character(len=128) | flux_exchange_mod::tag = '$Name$' |
logical | flux_exchange_mod::do_init = .true. |
real, parameter | flux_exchange_mod::bound_tol = 1e-7 |
real, parameter | flux_exchange_mod::d622 = rdgas/rvgas |
real, parameter | flux_exchange_mod::d378 = 1.0-d622 |
real | flux_exchange_mod::z_ref_heat = 2. |
Reference height (meters) for temperature and relative humidity diagnostics (t_ref, rh_ref, del_h, del_q) More... | |
real | flux_exchange_mod::z_ref_mom = 10. |
Reference height (meters) for mementum diagnostics (u_ref, v_ref, del_m) More... | |
logical | flux_exchange_mod::do_area_weighted_flux = .FALSE. |
logical | flux_exchange_mod::debug_stocks = .FALSE. |
logical | flux_exchange_mod::divert_stocks_report = .FALSE. |
logical | flux_exchange_mod::do_runoff = .TRUE. |
Turns on/off the land runoff interpolation to the ocean. More... | |
logical | flux_exchange_mod::do_forecast = .false. |
integer | flux_exchange_mod::nblocks = 1 |
logical | flux_exchange_mod::partition_fprec_from_lprec = .FALSE. |
option for ATM override experiments where liquid+frozen precip are combined. This option will convert liquid precip to snow when t_ref is less than tfreeze parameter More... | |
real, parameter | flux_exchange_mod::tfreeze = 273.15 |
logical | flux_exchange_mod::scale_precip_2d = .false. |
logical | flux_exchange_mod::gas_fluxes_initialized = .false. |
type(fmscoupler1dbc_type), target | flux_exchange_mod::ex_gas_fields_atm |
Structure containing atmospheric surfacevariables that are used in the calculation of the atmosphere-ocean gas fluxes, as well as parameters regulating these fluxes. More... | |
type(fmscoupler1dbc_type), target | flux_exchange_mod::ex_gas_fields_ice |
Structure containing ice-top and ocean surface variables that are used in the calculation of the atmosphere-ocean gas fluxes, as well as parameters regulating these fluxes. More... | |
type(fmscoupler1dbc_type), target | flux_exchange_mod::ex_gas_fluxes |
A structure for exchanging gas or tracer fluxes between the atmosphere and ocean, defined by the field table, as well as a place holder of intermediate calculations, such as piston velocities, and parameters that impact the fluxes. More... | |
integer | flux_exchange_mod::ni_atm |
integer | flux_exchange_mod::nj_atm |
to do atmos diagnostic from flux_ocean_to_ice More... | |
real, dimension(3) | flux_exchange_mod::ccc |
for conservation checks More... | |
integer | flux_exchange_mod::cplclock |
real | flux_exchange_mod::dt_atm |
real | flux_exchange_mod::dt_cpl |
real | flux_exchange_mod::atm_precip_new |
The flux_exchange module provides interfaces to couple the following component models: atmosphere, ocean, land, and ice. All interpolation between physically distinct model grids is handled by the exchange grid (xgrid_mod) with the interpolated quantities being conserved.
This version of flux_exchange_mod allows the definition of physically independent grids for atmosphere, land and sea ice. Ice and ocean must share the same physical grid (though the domain decomposition on parallel systems may be different). Grid information is input through the grid_spec file (URL). The masked region of the land grid and ice/ocean grid must "tile" each other. The masked region of the ice grid and ocean grid must be identical.
ATMOSPHERE |----|----|----|----|----|----|----|----| LAND |---|---|---|---|xxx|xxx|xxx|xxx|xxx|xxx| ICE |xxx|xxx|xxx|xxx|---|---|---|---|---|---| OCEAN |xxx|xxx|xxx|xxx|---|---|---|---|---|---|
where |xxx|
represents a masked grid point
The atmosphere, land, and ice grids exchange information using the exchange grid xmap_sfc.
The land and ice grids exchange runoff data using the exchange grid xmap_runoff.
Transfer of data between the ice bottom and ocean does not require an exchange grid as the grids are physically identical. The flux routines will automatically detect and redistribute data if their domain decompositions are different.
To get information from the atmosphere to the ocean it must pass through the ice model, first by interpolating from the atmospheric grid to the ice grid, and then transferring from the ice grid to the ocean grid.
Any field passed from one component to another may be "faked" to a constant value, or to data acquired from a file, using the data_override feature of FMS. The fields to override are runtime configurable, using the text file data_table
for input. See the data_override_mod documentation for more details.
We DO NOT RECOMMEND exercising the data override capabilities of the FMS coupler until the user has acquired considerable sophistication in running FMS.
Here is a listing of the override capabilities of the flux_exchange module:
FROM the atmosphere boundary TO the exchange grid (in sfc_boundary_layer):
t_bot, q_bot, z_bot, p_bot, u_bot, v_bot, p_surf, slp, gust
FROM the ice boundary TO the exchange grid (in sfc_boundary_layer):
t_surf, rough_mom, rough_heat, rough_moist, albedo, u_surf, v_surf
FROM the land boundary TO the exchange grid (in sfc_boundary_layer):
t_surf, t_ca, q_ca, rough_mom, rough_heat, albedo
FROM the exchange grid TO land_ice_atmos_boundary (in sfc_boundary_layer):
t, albedo, land_frac, dt_t, dt_q, u_flux, v_flux, dtaudu, dtaudv, u_star, b_star, rough_mom
FROM the atmosphere boundary TO the exchange grid (in flux_down_from_atmos):
flux_sw, flux_lw, lprec, fprec, coszen, dtmass, delta_t, delta_q, dflux_t, dflux_q
FROM the exchange grid TO the land boundary (in flux_down_from_atmos):
t_flux, q_flux, lw_flux, sw_flux, lprec, fprec, dhdt, dedt, dedq, drdt, drag_q, p_surf
FROM the exchange grid TO the ice boundary (in flux_down_from_atmos):
u_flux, v_flux, t_flux, q_flux, lw_flux, lw_flux_dn, sw_flux, sw_flux_dn, lprec, fprec, dhdt, dedt, drdt, coszen, p
FROM the land boundary TO the ice boundary (in flux_land_to_ice):
runoff, calving
FROM the ice boundary TO the ocean boundary (in flux_ice_to_ocean):
u_flux, v_flux, t_flux, q_flux, salt_flux, lw_flux, sw_flux, lprec, fprec, runoff, calving, p, ustar_berg, area_berg, mass_berg
FROM the ocean boundary TO the ice boundary (in flux_ocean_to_ice):
u, v, t, s, frazil, sea_level
FROM the ice boundary TO the atmosphere boundary (in flux_up_to_atmos):
t_surf
FROM the land boundary TO the atmosphere boundary (in flux_up_to_atmos):
t_ca, t_surf, q_ca
See NOTES below for an explanation of the field names.
The table below contains the available diagnostic fields is the flux
diagnostic module.
Field Name | Units | Description |
---|---|---|
land_mask | none | Fractional amount of land |
wind | m/s | Wind speed for flux calculations |
drag_moist | none | Drag coeff for moisture |
drag_heat | none | Drag coeff for heat |
drag_mom | none | Drag coeff for momentum |
rough_moist | m | Surface roughness for moisture |
rough_heat | m | Surface roughness for heat |
rough_mom | m | Surface roughness for momentum |
u_star | m/s | Friction velocity |
b_star | m/s | Buoyancy scale |
q_star | kg water/kg air | moisture scale |
t_atm | deg_k | temperature at btm level |
u_atm | m/s | u wind component at btm level |
v_atm | m/s | v wind component at btm level |
q_atm | kg/kg | specific humidity at btm level |
p_atm | pa | pressure at btm level |
z_atm | m | height of btm level |
gust | m/s | gust scale |
rh_ref | percent | relative humidity at ref height |
t_ref | deg_k | temperature at ref height |
u_ref | m/s | zonal wind component at ref height |
v_ref | m/s | meridional wind component at ref height |
del_h | none | ref height interp factor for heat |
del_m | none | ref height interp factor for momentum |
del_q | none | ref height interp factor for moisture |
tau_x | pa | zonal wind stress |
tau_y | pa | meridional wind stress |
ice_mask | none | fractional amount of sea ice |
t_surf | deg_k | surface temperature |
t_ca | deg_k | canopy air temperature |
q_surf | kg/kg | surface specific humidity |
shflx | w/m2 | sensible heat flux |
evap | kg/m2/s | evaporation rate |
lwflx | w/m2 | net (down-up) longwave flux |
Below is some pseudo-code to illustrate the logic of the main loop.
The following five fields are gathered into a data type for convenience in passing this information through the different levels of the atmospheric model – these fields are rlated to the simultaneous implicit time steps in the atmosphere and surface models – they are described more fully in flux_exchange.tech.ps and in the documntation for vert_diff_mod
The following fields are located on the ice top grid
The following fields are located on the ice bottom grid