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 (diff) – NEMO

Changes between Version 4 and Version 5 of 2019WP/ASINTER-05_Brodeau_Advanced_Bulk


Ignore:
Timestamp:
2019-09-06T13:16:33+02:00 (5 years ago)
Author:
laurent
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2019WP/ASINTER-05_Brodeau_Advanced_Bulk

    v4 v5  
    2121|- 
    2222||=Dependencies ||                                                                       || 
    23 ||=Expected for ||                                                                       || 
     23||=Expected for || December, 2019                                              || 
    2424||=Ticket       || #2159                                                                 || 
    2525||=Branch       || [source:/NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk]           || 
     
    2929 
    3030 
     31== Abstract == 
     32 
     33* 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: 
     34 * a/ NCAR (previously known as "CORE", Large and Yeager, 2004) 
     35 * b/ ECMWF (IFS@ECWMF) 
     36 * c/ COARE 3.0 (Fairall et al, 2003) 
     37 * d/ COARE 3.6 (Fairall et al, 2019) 
     38 
     39* 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). 
     40 * a/ NCAR → irrelevant 
     41 * b/ ECMWF → cool-skin & warm-layer 
     42 * c/ COARE → cool-skin only 
     43 * d/ COARE 3.6 → cool-skin & warm-layer 
     44 
     45* 3/ Improve the accuracy of various physical parameters used in the estimate of surface fluxes and previously assumed constant. 
     46 
     47* 4/ Implement more advanced bulk parametrization for turbulent "air-ice" fluxes of momentum, heat and freshwater over sea-ice 
     48 
     49== Description == 
     50 
     51See Abstract (above) and Implementation (below). 
    3152 
    3253 
    33  
    34 == Preview == 
     54== Implementation == 
    3555 
    3656=== Modified modules ''aka'' source files === 
     
    4262 
    4363* `SBC/sbc_oce.F90` 
    44  * Added `tsk`, public 2D array to contain the sea-surface skin temperature from the cool-skin/warm-layer parameterization [Celsius] 
     64 * Added `tsk`, public 2D array to contain the sea-surface skin temperature from the cool-skin/warm-layer parametrization [Celsius] 
    4565 * Added `rhoa`, public 2D array to contain the air density at z=zu [kg/m3] 
    4666 
     
    4969 * Moved all the functions for air thermodynamics into a new module: `SBC/sbcblk_phy.F90` 
    5070 * New namelist parameters to namelist's section `namsbc_blk`:  
    51   * `ln_skin` 
    52   * `ln_humi_dpt` 
    53  * Added function FUNCTION sbc_blk_cswl_alloc() to allocate array `tsk` (declared into `sbc_oce.F90`). 
    54  * Added part where `turb_ecmwf` (and soon turb_coare*) is called with Qlw, rad_sw, & slp (optional arguments) in case of ln_skin=.true. 
     71  * `ln_skin` (if true: use the cool-skin/warm-layer parametrization if supported by selected bulk algorithm) 
     72  * `ln_humi_sph` (if true: air humidity in the forcing files is specific humidity [kg/kg]) 
     73  * `ln_humi_dpt` (if true: air humidity in the forcing files is dew-point temperature [K]) 
     74  * `ln_humi_rlh` (if true: air humidity in the forcing files is relative humidity     [%]) 
     75  * `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"). 
     76 * Added function `sbc_blk_cswl_alloc()` to allocate array `tsk` (declared into `sbc_oce.F90`). 
     77 * Added part where `turb_ecmwf` (and soon turb_coare*) is called with Qlw, rad_sw, & slp (optional arguments) in case of `ln_skin==.true.` 
    5578 * 0.98 now becomes `rdct_qsat_salt` (into `phycst.F90`) 
    5679 * 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 
     
    5881 * Added XIOS `iom_put` for density of air (rho_air), and skin temperature 
    5982 * Added local arrays `zqair` to contain specific humidity of air at height `rn_zqt` 
    60  * 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 
     83 * 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. 
    6184 * 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. 
    6285 
    6386* `SBC/sbcblk_algo_ecmwf.F90` 
    64  * 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:'' 
    65  * The use of the cool-skin/warm-layer parameterization is triggered when optional arguments `Qsw, rad_lw, slp` are specified when calling `turb_ecmwf` 
     87 * Increased numerical stability to handle non-realistic values over land points, which caused systematic crash in old version (such as in 4.0) 
     88 * The use of the cool-skin/warm-layer parametrization is triggered when optional arguments `Qsw, rad_lw, slp` are specified when calling `turb_ecmwf` 
    6689  * 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`) 
    6790 * Some variables renamed for clarity, ex: sst → T_s 
    6891 * Function `visc_air` moved to `sbcblk_phy.F90`... 
    69  * Use of official function `Ri_bulk()` defined into `SBC/sbcblk_skin.F90` 
     92 * Use of function `Ri_bulk()` defined into `SBC/sbcblk_skin.F90` 
    7093 
    71 * `SBC/sbcblk_algo_coare.F90` 
    72  * 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:'' 
    73  * The use of the cool-skin/warm-layer parameterization is triggered when optional arguments `Qsw, rad_lw, slp` are specified when calling `turb_coare` 
     94* `SBC/sbcblk_algo_coare.F90` is gone, it is now `SBC/sbcblk_algo_coare_3p0.F90` for the sake of consistency 
     95 
     96* `SBC/sbcblk_algo_coare_3p0.F90` (ex `sbcblk_algo_coare.F90`) 
     97 * Increased numerical stability to handle non-realistic values over land points, which caused systematic crash in old version (such as in 4.0) 
     98 * The use of the cool-skin/warm-layer parametrization is triggered when optional arguments `Qsw, rad_lw, slp` are specified when calling `turb_coare` 
    7499 * 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`) 
    75100 * Some variables renamed for clarity, ex: sst → T_s 
    76101 * Function `visc_air` moved to `sbcblk_phy.F90`... 
    77  * Use of official functions `One_on_L()` and `Ri_bulk()` defined into `SBC/sbcblk_skin.F90` 
     102 * Use of functions `One_on_L()` and `Ri_bulk()` defined into `SBC/sbcblk_skin.F90` 
     103 
     104* `SBC/sbcblk_algo_coare_3p5.F90` is gone, it is now `SBC/sbcblk_algo_coare_3p6.F90` 
     105 
     106* `SBC/sbcblk_algo_coare_3p6.F90` (ex `sbcblk_algo_coare_3p5.F90`) 
     107 * 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 
     108 * applied all improvements mentioned for `SBC/sbcblk_algo_coare_3p0.F90`. 
    78109 
    79110* `SBC/sbcblk_algo_ncar.F90` 
    80  * Bla bla to come... 
     111 * use of `sbcblk_phy.F90` for functions `virt_temp()` and `One_on_L()` 
     112 
     113==== New modules ''aka'' source files ==== 
     114* `SBC/sbcblk_phy.F90` [ catalog of functions of some non constant physical parameters in the MBL (Marine Boundary Layer) ] → ''Gathers the following functions:'' 
     115 * `virt_temp` (computes absolute/potential VIRTUAL temperature out of absolute/potential temperature and specific humidity) 
     116 * `Rho_air` (computes density of air out of air temperature and spec. hum. and SLP) 
     117 * `Visc_air` (computes kinematic viscosity of air out of air temperature) 
     118 * `L_vap` (computes the latent heat of vaporization of water out of water temperature) 
     119 * `cp_air` (computes the specific heat, aka Cp, of moist air out of specific humidity) 
     120 * `gamma_moist` (computes the the adiabatic lapse-rate of moist air out of air temperature and spec. hum.) 
     121 * `One_on_L` (computes 1/[Monin-Obukhov length]) 
     122 * `Ri_bulk` (computes the bulk Richardson number) 
     123 * `e_sat_sclr` (computes "e_sat", the water vapor pressure of saturated air out of air temperature and SLP, scalar IO arguments) 
     124 * `q_sat` (computes the specific humidity at saturation out of temperature of air and SLP) 
     125 * `q_air_rh` (computes the specific humidity of air out of relative humidity and temperature of air and SLP) 
     126 
     127* `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:'' 
     128 * `CSWL_ECMWF 
    81129 
    82130 
    83 ==== New modules ''aka'' source files ==== 
    84 * `SBC/sbcblk_phy.F90` [ catalogue of functions for non constant physical parameters in the MBL (Marine Boundary Layer) ] ''Gathers the following functions:'' 
    85  * virt_temp 
    86  * Rho_air 
    87  * Visc_air 
    88  * L_vap 
    89  * cp_air 
    90  * gamma_moist 
    91  * One_on_L 
    92  * Ri_bulk 
    93  * q_sat 
     131== Reference manual update == 
    94132 
    95 * `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:'' 
    96  * CSWL_ECMWF 
     133??? 
     134 
     135 
     136== Progress == 
     137 
     138* 1/ 90% completed 
     139 
     140* 2/ 75% completed 
     141 
     142* 3/ 100% completed 
     143 
     144* 4/ 0% completed 
     145 
     146 
     147== Review == 
     148 
     149Has the review been completed? I don't think so. 
     150 
     151 
     152== MP ready == 
     153 
     154Yes, very likely to be ready for MP 2019 in December. 
    97155 
    98156