Use
turb_ecmwf() of module
mod_blk_ecmwf (mod_blk_ecmwf.f90).
Example of a call:
PROGRAM TEST_COEFF
USE mod_const
USE mod_blk_ecmwf
...
jpi = Ni ! x-shape of the 2D domain
jpj = Nj ! y-shape of the 2D domain
...
CALL TURB_ECMWF( zt, zu, T_s, t_zt, q_s, q_zt, U_zu, &
& Cd, Ch, Ce, t_zu, q_zu, U_blk &
& [ , rad_sw=Rsw, rad_lw=Rlw, slp=P ] &
& [ , xz0=z0, xu_star=u_s, xL=L ] )
...
END PROGRAM TEST_COEFF
INPUT ARGUMENTS:
- zt: (Sc,real) height for air temperature and humidity [m]
- zu: (Sc,real) height for wind speed (generally 10m) [m]
- t_zt: (2D,real) potential air temperature at zt [K]
- q_zt: (2D,real) air spec. humidity of at zt [kg/kg]
- U_zu: (2D,real) scalar wind speed at zu [m/s]
INPUT and OUTPUT ARGUMENTS:
- T_s: (2D,real) surface temperature [K]
- input: bulk SST
- output: skin temperature or SST (unchanged)
- q_s: (2D,real) surface satur. spec. humidity at T_s [kg/kg]
- input: saturation at bulk SST (not needed if skin p. used)
- output: saturation at skin temp. or at SST (unchanged)
[ OPTIONAL INPUT ARGUMENTS: ]
- rad_sw: (2D,real) downw. shortw. rad. at surface (>0) [W/m^2]
- rad_lw: (2D,real) downw. longw. rad. at surface (>0) [W/m^2]
- slp: (2D,real) sea-level pressure [Pa]
(The presence of these 3 optional input parameters triggers the use of
the Cool-Skin Warm-Layer parameterization)
OUTPUT ARGUMENTS:
- Cd: (2D,real) drag coefficient
- Ch: (2D,real) sensible heat transfer coefficient
- Ce: (2D,real) moisture transfer (evaporation) coefficient
- t_zu: (2D,real) air pot. temperature adjusted at zu [K]
- q_zu: (2D,real) air spec. humidity adjusted at zu [kg/kg]
- Ublk: (2D,real) bulk wind speed at 10m [m/s]
[ OPTIONAL OUTPUT ARGUMENTS: ]
- z0: (2D,real) roughness length of the sea surface [m]
- u_s: (2D,real) friction velocity [m/s]
- L: (2D,real) Monin-Obukhov length [m]
Using ECMWF without the cool-skin warm-layer parameterization, with
air temperature and humidity provided at 2m and wind at 10m:
PROGRAM TEST_COEFF
USE mod_const
USE mod_blk_ecmwf
...
jpi = Ni ! x-shape of the 2D domain
jpj = Nj ! y-shape of the 2D domain
...
CALL TURB_ECMWF( 2., 10., Ts, t2, qs, q2, U10, &
& Cd, Ch, Ce, t10, q10, U_blk )
...
END PROGRAM TEST_COEFF
In this case, Ts and qs, the surface temperature and saturation specific humidity won't
be modified. The relevant value of qs must be provided as input.
Now the same but using the cool-skin warm-layer parameterization:
PROGRAM TEST_COEFF
USE mod_const
USE mod_blk_ecmwf
...
jpi = Ni ! x-shape of the 2D domain
jpj = Nj ! y-shape of the 2D domain
...
CALL TURB_ECMWF( 2., 10., Ts, t2, qs, q2, U10, &
& Cd, Ch, Ce, t10, q10, U_blk, &
& rad_sw=Rsw, rad_lw=Rlw, slp=MSL )
...
END PROGRAM TEST_COEFF
Here, Ts is the bulk SST as input and will become the skin temperature as
output! qs is irrelevant as input and is the saturation specific humidity at
temperature Ts as output!