FMS Coupler
2022.03
|
Module for the calculation of fluxes on the exchange grids. More...
Data Types | |
interface | surface_flux |
For the calculation of fluxes on the exchange grids. More... | |
Functions/Subroutines | |
subroutine | surface_flux_1d (t_atm, q_atm_in, u_atm, v_atm, p_atm, z_atm, p_surf, t_surf, t_ca, q_surf, u_surf, v_surf, rough_mom, rough_heat, rough_moist, rough_scale, gust, flux_t, flux_q, flux_r, flux_u, flux_v, cd_m, cd_t, cd_q, w_atm, u_star, b_star, q_star, thv_atm, thv_surf, dhdt_surf, dedt_surf, dedq_surf, drdt_surf, dhdt_atm, dedq_atm, dtaudu_atm, dtaudv_atm, dt, land, seawater, avail) |
subroutine | surface_flux_0d (t_atm_0, q_atm_0, u_atm_0, v_atm_0, p_atm_0, z_atm_0, p_surf_0, t_surf_0, t_ca_0, q_surf_0, u_surf_0, v_surf_0, rough_mom_0, rough_heat_0, rough_moist_0, rough_scale_0, gust_0, flux_t_0, flux_q_0, flux_r_0, flux_u_0, flux_v_0, cd_m_0, cd_t_0, cd_q_0, w_atm_0, u_star_0, b_star_0, q_star_0, thv_atm_0, thv_surf_0, dhdt_surf_0, dedt_surf_0, dedq_surf_0, drdt_surf_0, dhdt_atm_0, dedq_atm_0, dtaudu_atm_0, dtaudv_atm_0, dt, land_0, seawater_0, avail_0) |
subroutine | surface_flux_2d (t_atm, q_atm_in, u_atm, v_atm, p_atm, z_atm, p_surf, t_surf, t_ca, q_surf, u_surf, v_surf, rough_mom, rough_heat, rough_moist, rough_scale, gust, flux_t, flux_q, flux_r, flux_u, flux_v, cd_m, cd_t, cd_q, w_atm, u_star, b_star, q_star, thv_atm, thv_surf, dhdt_surf, dedt_surf, dedq_surf, drdt_surf, dhdt_atm, dedq_atm, dtaudu_atm, dtaudv_atm, dt, land, seawater, avail) |
subroutine, public | surface_flux_init |
Initialization of the surface flux module–reads the nml. More... | |
subroutine | ncar_ocean_fluxes (u_del, t, ts, q, qs, z, avail, cd, ch, ce, ustar, bstar) |
Over-ocean fluxes following Large and Yeager (used in NCAR models) ! More... | |
subroutine | ncar_ocean_fluxes_multilevel (u_del, t, ts, q, qs, zu, zt, zq, avail, cd, ch, ce, ustar, bstar) |
Over-ocean fluxes following Large and Yeager (used in NCAR models) ! More... | |
subroutine | iter_monin_obukhov_ocean (z_atm, u_atm, v_atm, w_atm, thv_atm, q_atm, u_surf, v_surf, thv_surf, q_surf0, rough_mom, rough_heat, rough_moist, cd_m, cd_t, cd_q, u_star, b_star, avail, seawater) |
Update air-sea flux variables to be consistent with the concurrent atmospheric states. More... | |
Variables | |
character(len= *), parameter | version = '$Id$' |
character(len= *), parameter | tagname = '$Name$' |
logical | module_is_initialized = .false. |
real, parameter | d622 = rdgas/rvgas |
real, parameter | d378 = 1.-d622 |
real, parameter | hlars = hlv/rvgas |
real, parameter | gcp = grav/cp_air |
real, parameter | kappa = rdgas/cp_air |
real | d608 = d378/d622 |
character(len=32) | rough_scheme_ocean |
ocean roughness length scheme to be read from ocean_rough_nml More... | |
logical | no_neg_q = .false. |
If a_atm_in (specific humidity) is negative (because of numerical truncation), then override with 0.0. More... | |
logical | use_virtual_temp = .true. |
If .TRUE., use virtual potential temp to calculate the stability of the surface layer. If .FALSE., use potential temp. More... | |
logical | alt_gustiness = .false. |
An alternaive formulation for gustiness calculation. A minimum bound on the wind speed used influx calculations,with the bound equal to gust_const. More... | |
logical | old_dtaudv = .false. |
The derivative of surface wind stress with respect to the zonal wind and meridional wind are approximated by the same tendency. More... | |
logical | use_mixing_ratio = .false. |
An option to provide capability to run the Manabe Climate form of the surface flux (coded for legacy purposes). More... | |
real | gust_const = 1.0 |
Constant for alternative gustiness calculation. More... | |
real | gust_min = 0.0 |
Minimum gustiness used when alt_gustiness is .FALSE. More... | |
logical | ncar_ocean_flux = .false. |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, NCAR Technical Document, 2004. More... | |
logical | ncar_ocean_flux_orig = .false. |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, NCAR Technical Document, 2004, using the original GFDL implementation, which contains a bug in the specification of the exchange coefficient for the sensible heat. This option is available for legacy purposes, and is not recommended for new experiments. More... | |
logical | ncar_ocean_flux_multilevel = .false. |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, allows for different reference height for wind, temp and spec. hum. More... | |
logical | do_iter_monin_obukhov = .false. |
If .TRUE, call monin obukhov funtcions a couple of times to update rough_mom, rough_heat, rough_moist, cd, ch, b_star, u_star. More... | |
logical | use_u10_neutral = .false. |
If .TRUE., use 10m neutral wind rather than the standard 10m wind to obtain rough_mom, rough_heat, rough_moist. More... | |
real | bulk_zu = 10. |
Reference height for wind speed (meters) More... | |
real | bulk_zt = 10. |
Reference height for atm temperature (meters) More... | |
real | bulk_zq = 10. |
Reference height for atm humidity (meters) More... | |
logical | raoult_sat_vap = .false. |
Reduce saturation vapor pressure to account for seawater. More... | |
logical | do_simple = .false. |
integer | niter_monin_obukhov = 5 |
iteration times to call iter_monin_obukhov_ocean. Typically 3-5 times should converge More... | |
Module for the calculation of fluxes on the exchange grids.
|
private |
Update air-sea flux variables to be consistent with the concurrent atmospheric states.
[in] | q_surf0 | Surface air humidity |
[in,out] | b_star | Turbulent buoyant scale |
[in] | seawater | Indicates where liquid ocean water exists (.TRUE. if exchange cell is on liquid ocean water) |
z_atm | Height at the lowest atmospheric level |
u_atm | Zonal wind velocity at the lowest atmospheric level |
v_atm | Meridional wind velocity at the lowest atmospheric level |
w_atm | Absolute wind at the lowest atmospheric level |
thv_atm | Surface air theta_v |
q_atm | Mixing ratio at lowest atmospheric level (kg/kg) |
u_surf | Zonal wind velocity at the Earth's surface |
v_surf | Meridional wind velocity at the Earth's surface |
thv_surf | Surface theta_v |
rough_mom | Momentum roughness length |
rough_heat | Heat roughness length |
rough_moist | Moisture roughness length |
cd_m | Momentum exchange coefficient |
cd_t | Heat exchange coefficient |
cd_q | Moisture exchange coefficient |
u_star | Turbulent velocity scale |
avail | .TRUE. where the exchange cell is active |
|
private |
|
private |
Over-ocean fluxes following Large and Yeager (used in NCAR models) !
Original code: Multi-level capable LY2004, R. Dussin 2020 <br >
|
private |
[in] | avail_0 | .TRUE. where the exchange cell is active |
[in] | gust_0 | Gustiness factor |
[out] | cd_q_0 | Moisture exchange coefficient |
[in,out] | q_surf_0 | Mixing ratio at the Earth's surface (kg/kg) |
[in] | dt | Time step (it is not used presently) |
t_atm_0 | Air temp lowest atmospheric level. |
q_atm_0 | Mixing ratio at lowest atmospheric level (kg/kg). |
u_atm_0 | Zonal wind velocity at lowest atmospheric level. |
v_atm_0 | Meridional wind velocity at lowest atmospheric level. |
p_atm_0 | Pressure lowest atmospheric level. |
z_atm_0 | Height lowest atmospheric level. |
p_surf_0 | Pressure at the Earth's surface |
t_surf_0 | Temp at the Earth's surface |
t_ca_0 | Air temp at the canopy |
u_surf_0 | Zonal wind velocity at the Earth's surface |
v_surf_0 | Meridional wind velocity at the Earth's surface |
rough_mom_0 | Momentum roughness length |
rough_heat_0 | Heat roughness length |
rough_moist_0 | Moisture roughness length |
rough_scale_0 | Scale factor used to topographic roughness calculation |
flux_t_0 | Sensible heat flux |
flux_q_0 | Evaporative water flux |
flux_r_0 | Radiative energy flux |
flux_u_0 | Zonal momentum flux |
flux_v_0 | Meridional momentum flux |
cd_m_0 | Momentum exchange coefficient |
w_atm_0 | Absolute wind at the lowest atmospheric level |
u_star_0 | Turbulent velocity scale |
b_star_0 | Turbulent buoyant scale |
q_star_0 | Turbulent moisture scale |
dhdt_surf_0 | Sensible heat flux temperature sensitivity |
dedt_surf_0 | Moisture flux temperature sensitivity |
dedq_surf_0 | Moisture flux humidity sensitivity |
drdt_surf_0 | Radiative energy flux temperature sensitivity |
dhdt_atm_0 | Derivative of sensible heat flux over temp at the lowest atmos level |
dedq_atm_0 | Derivative of water vapor flux over temp at the lowest atmos level |
dtaudu_atm_0 | Derivative of zonal wind stress with respect to the lowest level zonal wind |
dtaudv_atm_0 | Derivative of meridional wind stress with respect to the lowest level |
land_0 | Indicates where land exists (.TRUE. if exchange cell is on land |
seawater_0 | Indicates where liquid ocean water exists |
|
private |
[in] | avail | .TRUE. where the exchange cell is active |
[in] | gust | Gustiness factor |
[out] | cd_q | Moisture exchange coefficient |
[in,out] | rough_moist | Moisture roughness length |
[in] | dt | Time step (it is not used presently) |
t_atm | Air temp lowest atmospheric level. |
q_atm_in | Mixing ratio at lowest atmospheric level (kg/kg). |
u_atm | Zonal wind velocity at lowest atmospheric level. |
v_atm | Meridional wind velocity at lowest atmospheric level. |
p_atm | Pressure lowest atmospheric level. |
z_atm | Height lowest atmospheric level. |
p_surf | Pressure at the Earth's surface |
t_surf | Temp at the Earth's surface |
t_ca | Air temp at the canopy |
q_surf | Mixing ratio at the Earth's surface (kg/kg) |
u_surf | Zonal wind velocity at the Earth's surface |
v_surf | Meridional wind velocity at the Earth's surface |
rough_mom | Momentum roughness length |
rough_heat | Heat roughness length |
rough_scale | Scale factor used to topographic roughness calculation |
flux_t | Sensible heat flux |
flux_q | Evaporative water flux |
flux_r | Radiative energy flux |
flux_u | Zonal momentum flux |
flux_v | Meridional momentum flux |
cd_m | Momentum exchange coefficient |
w_atm | Absolute wind at the lowest atmospheric level |
u_star | Turbulent velocity scale |
b_star | Turbulent buoyant scale |
q_star | Turbulent moisture scale |
dhdt_surf | Sensible heat flux temperature sensitivity |
dedt_surf | Moisture flux temperature sensitivity |
dedq_surf | Moisture flux humidity sensitivity |
drdt_surf | Radiative energy flux temperature sensitivity |
dhdt_atm | Derivative of sensible heat flux over temp at the lowest atmos level |
dedq_atm | Derivative of water vapor flux over temp at the lowest atmos level |
dtaudu_atm | Derivative of zonal wind stress with respect to the lowest level |
dtaudv_atm | Derivative of meridional wind stress with respect to the lowest |
land | Indicates where land exists (.TRUE. if exchange cell is on land |
seawater | Indicates where liquid ocean water exists |
|
private |
[in] | avail | .TRUE. where the exchange cell is active |
[in] | gust | Gustiness factor |
[out] | cd_q | Moisture exchange coefficient |
[in,out] | rough_moist | Moisture roughness length |
[in] | dt | Time step (it is not used presently) |
t_atm | Air temp lowest atmospheric level. |
q_atm_in | Mixing ratio at lowest atmospheric level (kg/kg). |
u_atm | Zonal wind velocity at lowest atmospheric level. |
v_atm | Meridional wind velocity at lowest atmospheric level. |
p_atm | Pressure lowest atmospheric level. |
z_atm | Height lowest atmospheric level. |
p_surf | Pressure at the Earth's surface |
t_surf | Temp at the Earth's surface |
t_ca | Air temp at the canopy |
q_surf | Mixing ratio at the Earth's surface (kg/kg) |
u_surf | Zonal wind velocity at the Earth's surface |
v_surf | Meridional wind velocity at the Earth's surface |
rough_mom | Momentum roughness length |
rough_heat | Heat roughness length |
rough_scale | Scale factor used to topographic roughness calculation |
flux_t | Sensible heat flux |
flux_q | Evaporative water flux |
flux_r | Radiative energy flux |
flux_u | Zonal momentum flux |
flux_v | Meridional momentum flux |
cd_m | Momentum exchange coefficient |
w_atm | Absolute wind at the lowest atmospheric level |
u_star | Turbulent velocity scale |
b_star | Turbulent buoyant scale |
q_star | Turbulent moisture scale |
dhdt_surf | Sensible heat flux temperature sensitivity |
dedt_surf | Moisture flux temperature sensitivity |
dedq_surf | Moisture flux humidity sensitivity |
drdt_surf | Radiative energy flux temperature sensitivity |
dhdt_atm | Derivative of sensible heat flux over temp at the lowest |
dedq_atm | Derivative of water vapor flux over temp at the lowest atmos level |
dtaudu_atm | Derivative of zonal wind stress with respect to the lowest level |
dtaudv_atm | Derivative of meridional wind stress with respect to the lowest |
land | Indicates where land exists (.TRUE. if exchange cell is on land |
seawater | Indicates where liquid ocean water exists |
subroutine, public surface_flux_mod::surface_flux_init |
Initialization of the surface flux module–reads the nml.
|
private |
An alternaive formulation for gustiness calculation. A minimum bound on the wind speed used influx calculations,with the bound equal to gust_const.
|
private |
Reference height for atm humidity (meters)
|
private |
Reference height for atm temperature (meters)
|
private |
Reference height for wind speed (meters)
|
private |
|
private |
|
private |
If .TRUE, call monin obukhov funtcions a couple of times to update rough_mom, rough_heat, rough_moist, cd, ch, b_star, u_star.
|
private |
|
private |
|
private |
Constant for alternative gustiness calculation.
|
private |
Minimum gustiness used when alt_gustiness is .FALSE.
|
private |
|
private |
|
private |
|
private |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, NCAR Technical Document, 2004.
|
private |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, allows for different reference height for wind, temp and spec. hum.
|
private |
Use NCAR climate model turbulent flux calculation described by Large and Yeager, NCAR Technical Document, 2004, using the original GFDL implementation, which contains a bug in the specification of the exchange coefficient for the sensible heat. This option is available for legacy purposes, and is not recommended for new experiments.
|
private |
iteration times to call iter_monin_obukhov_ocean. Typically 3-5 times should converge
|
private |
If a_atm_in (specific humidity) is negative (because of numerical truncation), then override with 0.0.
|
private |
The derivative of surface wind stress with respect to the zonal wind and meridional wind are approximated by the same tendency.
|
private |
Reduce saturation vapor pressure to account for seawater.
|
private |
ocean roughness length scheme to be read from ocean_rough_nml
|
private |
|
private |
An option to provide capability to run the Manabe Climate form of the surface flux (coded for legacy purposes).
|
private |
If .TRUE., use 10m neutral wind rather than the standard 10m wind to obtain rough_mom, rough_heat, rough_moist.
|
private |
If .TRUE., use virtual potential temp to calculate the stability of the surface layer. If .FALSE., use potential temp.
|
private |