Version 4 (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 | |
Ticket | #2159 |
Branch | NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk |
Previewer(s) | |
Reviewer(s) | |
Link | ExtractUrl(.)? |
Preview
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 parameterization [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
- ln_humi_dpt
- Added function 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_dpt=.true., zqair is deduced from the dew-point temperature (read into sn_humi file) and the SLP. When ln_humi_dpt=.false., zqair is simply what is read into sn_humi file
- 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) What’s really new:
- The use of the cool-skin/warm-layer parameterization 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 official function Ri_bulk() defined into SBC/sbcblk_skin.F90
- SBC/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) What’s really new:
- The use of the cool-skin/warm-layer parameterization 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 official functions One_on_L() and Ri_bulk() defined into SBC/sbcblk_skin.F90
- SBC/sbcblk_algo_ncar.F90
- Bla bla to come...
New modules aka source files
- SBC/sbcblk_phy.F90 [ catalogue of functions for non constant physical parameters in the MBL (Marine Boundary Layer) ] Gathers the following functions:
- virt_temp
- Rho_air
- Visc_air
- L_vap
- cp_air
- gamma_moist
- One_on_L
- Ri_bulk
- q_sat
- SBC/sbcblk_skin.F90 [ cool-skin / warm-layer parameterization of ECMWF, countains 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