New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2019WP/ASINTER-05_Brodeau_Advanced_Bulk – NEMO
wiki:2019WP/ASINTER-05_Brodeau_Advanced_Bulk

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.

  1. Summary
  2. Preview
  3. Tests
  4. Review

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
Error: Failed to load processor box
No macro or processor named 'box' found

Tests

Error: Failed to load processor box
No macro or processor named 'box' found

Review

Error: Failed to load processor box
No macro or processor named 'box' found