Version 6 (modified by laurent, 5 years ago) (diff) |
---|
ASINTER-05_Brodeau_Advanced_Bulk
Last edition: Wikinfo(changed_ts)? by Wikinfo(changed_by)?
The PI is responsible to closely follow the progress of the action, and especially to contact NEMO project manager if the delay on preview (or review) are longer than the 2 weeks expected.
Summary
See ticket #2159 https://forge.ipsl.jussieu.fr/nemo/ticket/2159
Action | ASINTER-05_Brodeau_Advanced_Bulk |
---|---|
PI(S) | Laurent Brodeau @ Ocean Next |
Digest | More accurate air-sea flux estimates through the implementation of a cool-skin/warm-layer parameterization in NEMO, also more advanced bulk formulae over sea-ice. |
Dependencies | |
Expected for | December, 2019 |
Ticket | #2159 |
Branch | NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk |
Previewer(s) | |
Reviewer(s) | |
Link | ExtractUrl(.)? |
Abstract
- 1/ Implement different state-of-the-art bulk formula parametrizations used to compute transfer coefficients (CD, CE, and CH) for estimates of turbulent air-sea fluxes:
- a/ NCAR (previously known as "CORE", Large and Yeager, 2004)
- b/ ECMWF (IFS@ECWMF)
- c/ COARE 3.0 (Fairall et al, 2003)
- d/ COARE 3.6 (Fairall et al, 2019)
- 2/ Implement, when relevant, their respective cool-skin and warm-layer parametrization for better estimate of the water temperature at the air-sea interface (which is the relevant temperature to estimate heat flux to the atmosphere).
- a/ NCAR → irrelevant
- b/ ECMWF → cool-skin & warm-layer
- c/ COARE → cool-skin only
- d/ COARE 3.6 → cool-skin & warm-layer
- 3/ Improve the accuracy of various physical parameters used in the estimate of surface fluxes and previously assumed constant.
- 4/ Implement more advanced bulk parametrization for turbulent "air-ice" fluxes of momentum, heat and freshwater over sea-ice
Description
See Abstract (above) and Implementation (below).
Implementation
Modified modules aka source files
(Forked from NEMOGCM trunk at rev 11085)
- DOM/phycst.F90
- Moved/merged all physical parameters previously declared into sbcblk.F90 into phycst.F90 (keeping the name they had in phycst.F90 when previously declared in both modules with a different name)
- SBC/sbc_oce.F90
- Added tsk, public 2D array to contain the sea-surface skin temperature from the cool-skin/warm-layer parametrization [Celsius]
- Added rhoa, public 2D array to contain the air density at z=zu [kg/m3]
- SBC/sbcblk.F90
- Moved/merged all physical parameters previously declared into sbcblk.F90 into phycst.F90 (keeping the name they had in phycst.F90 when previously declared in both modules with a different name)
- Moved all the functions for air thermodynamics into a new module: SBC/sbcblk_phy.F90
- New namelist parameters to namelist's section namsbc_blk:
- ln_skin (if true: use the cool-skin/warm-layer parametrization if supported by selected bulk algorithm)
- ln_humi_sph (if true: air humidity in the forcing files is specific humidity [kg/kg])
- ln_humi_dpt (if true: air humidity in the forcing files is dew-point temperature [K])
- ln_humi_rlh (if true: air humidity in the forcing files is relative humidity [%])
- ln_COARE_3p6 replaces the old ln_COARE_3p5, because we upgraded from COARE 3.5 to COARE 3.6 (3.5 was intermediate and not "official").
- Added function sbc_blk_cswl_alloc() to allocate array tsk (declared into sbc_oce.F90).
- Added part where turb_ecmwf (and soon turb_coare*) is called with Qlw, rad_sw, & slp (optional arguments) in case of ln_skin==.true.
- 0.98 now becomes rdct_qsat_salt (into phycst.F90)
- Longwave radiative flux component zqlw now computed after turbulent fluxes are, because needs the updated skin temperature which comes out the turb_ecmwf (and soon turb_coare*) function
- Corrected mistake: no rdct_qsat_salt factor for q_sat over ice! (zqi_sat)
- Added XIOS iom_put for density of air (rho_air), and skin temperature
- Added local arrays zqair to contain specific humidity of air at height rn_zqt
- When ln_humi_sph=.true., zqair is simply what is read into sn_humi file (spec. hum.). When ln_humi_dpt=.true., zqair is deduced from the dew-point temperature (read into sn_humi file) and the SLP. When ln_humi_rlh=.true., zqair is deduced from the relative humidity (read into sn_humi file), air temperature, and SLP.
- rhoa (air density at height rn_zu, declared into sbc_oce.F90) is updated once for all in blk_oce() instead of being computed their and their in different locations.
- SBC/sbcblk_algo_ecmwf.F90
- Increased numerical stability to handle non-realistic values over land points, which caused systematic crash in old version (such as in 4.0)
- The use of the cool-skin/warm-layer parametrization is triggered when optional arguments Qsw, rad_lw, slp are specified when calling turb_ecmwf
- In each iteration step, estimation of solar and non-solar components of net surface heat flux is done prior to call to subroutine CSWL_ECMWF (defined into SBC/sbcblk_skin.F90)
- Some variables renamed for clarity, ex: sst → T_s
- Function visc_air moved to sbcblk_phy.F90...
- Use of function Ri_bulk() defined into SBC/sbcblk_skin.F90
- SBC/sbcblk_algo_coare.F90 is gone, it is now SBC/sbcblk_algo_coare_3p0.F90 for the sake of consistency
- SBC/sbcblk_algo_coare_3p0.F90 (ex sbcblk_algo_coare.F90)
- Increased numerical stability to handle non-realistic values over land points, which caused systematic crash in old version (such as in 4.0)
- The use of the cool-skin/warm-layer parametrization is triggered when optional arguments Qsw, rad_lw, slp are specified when calling turb_coare
- In each iteration step, estimation of solar and non-solar components of net surface heat flux is done prior to call to subroutine CSWL_ECMWF (defined into SBC/sbcblk_skin.F90)
- Some variables renamed for clarity, ex: sst → T_s
- Function visc_air moved to sbcblk_phy.F90...
- Use of functions One_on_L() and Ri_bulk() defined into SBC/sbcblk_skin.F90
- SBC/sbcblk_algo_coare_3p5.F90 is gone, it is now SBC/sbcblk_algo_coare_3p6.F90
- SBC/sbcblk_algo_coare_3p6.F90 (ex sbcblk_algo_coare_3p5.F90)
- upgraded from COARE 3.5 to COARE 3.6 (3.5 was intermediate and not "official") following Fairall et al. 2019 (in prep.) and Edson et al. 2013
- applied all improvements mentioned for SBC/sbcblk_algo_coare_3p0.F90.
- SBC/sbcblk_algo_ncar.F90
- use of sbcblk_phy.F90 for functions virt_temp() and One_on_L()
New modules aka source files
- SBC/sbcblk_phy.F90 [ catalog of functions of some non constant physical parameters in the MBL (Marine Boundary Layer) ] → Gathers the following functions:
- virt_temp (computes absolute/potential VIRTUAL temperature out of absolute/potential temperature and specific humidity)
- Rho_air (computes density of air out of air temperature and spec. hum. and SLP)
- Visc_air (computes kinematic viscosity of air out of air temperature)
- L_vap (computes the latent heat of vaporization of water out of water temperature)
- cp_air (computes the specific heat, aka Cp, of moist air out of specific humidity)
- gamma_moist (computes the the adiabatic lapse-rate of moist air out of air temperature and spec. hum.)
- One_on_L (computes 1/[Monin-Obukhov length])
- Ri_bulk (computes the bulk Richardson number)
- e_sat_sclr (computes "e_sat", the water vapor pressure of saturated air out of air temperature and SLP, scalar IO arguments)
- q_sat (computes the specific humidity at saturation out of temperature of air and SLP)
- q_air_rh (computes the specific humidity of air out of relative humidity and temperature of air and SLP)
- SBC/sbcblk_skin.F90 [ cool-skin / warm-layer parametrization of ECMWF, contains function CSWL_ECMWF, which updates the value of the skin temperature out of previous guess of skin temperature, solar and non-solar components of surface heat flux and friction velocity u*] → Gathers the following subroutine:
- `CSWL_ECMWF
Reference manual update
???
Progress
- 1/ 90% completed
- 2/ 75% completed
- 3/ 100% completed
- 4/ 0% completed
Review
Has the review been completed? I don't think so.
MP ready
Yes, very likely to be ready for MP 2019 in December.