Changes between Version 4 and Version 5 of 2019WP/ASINTER-05_Brodeau_Advanced_Bulk
- Timestamp:
- 2019-09-06T13:16:33+02:00 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
2019WP/ASINTER-05_Brodeau_Advanced_Bulk
v4 v5 21 21 |- 22 22 ||=Dependencies || || 23 ||=Expected for || 23 ||=Expected for || December, 2019 || 24 24 ||=Ticket || #2159 || 25 25 ||=Branch || [source:/NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk] || … … 29 29 30 30 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 51 See Abstract (above) and Implementation (below). 31 52 32 53 33 34 == Preview == 54 == Implementation == 35 55 36 56 === Modified modules ''aka'' source files === … … 42 62 43 63 * `SBC/sbc_oce.F90` 44 * Added `tsk`, public 2D array to contain the sea-surface skin temperature from the cool-skin/warm-layer paramet erization [Celsius]64 * Added `tsk`, public 2D array to contain the sea-surface skin temperature from the cool-skin/warm-layer parametrization [Celsius] 45 65 * Added `rhoa`, public 2D array to contain the air density at z=zu [kg/m3] 46 66 … … 49 69 * Moved all the functions for air thermodynamics into a new module: `SBC/sbcblk_phy.F90` 50 70 * 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.` 55 78 * 0.98 now becomes `rdct_qsat_salt` (into `phycst.F90`) 56 79 * 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 … … 58 81 * Added XIOS `iom_put` for density of air (rho_air), and skin temperature 59 82 * 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` file83 * 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. 61 84 * 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. 62 85 63 86 * `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 paramet erization 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` 66 89 * 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`) 67 90 * Some variables renamed for clarity, ex: sst → T_s 68 91 * Function `visc_air` moved to `sbcblk_phy.F90`... 69 * Use of officialfunction `Ri_bulk()` defined into `SBC/sbcblk_skin.F90`92 * Use of function `Ri_bulk()` defined into `SBC/sbcblk_skin.F90` 70 93 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` 74 99 * 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`) 75 100 * Some variables renamed for clarity, ex: sst → T_s 76 101 * 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`. 78 109 79 110 * `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 81 129 82 130 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 == 94 132 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 149 Has the review been completed? I don't think so. 150 151 152 == MP ready == 153 154 Yes, very likely to be ready for MP 2019 in December. 97 155 98 156