Changeset 4803 for LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.F90
- Timestamp:
- Feb 5, 2024, 10:16:07 PM (4 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.F90
r4666 r4803 9 9 !$OMP THREADPRIVATE(RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG) 10 10 11 REAL, SAVE :: seuil_neb=0.001! cloud fraction threshold: a cloud really exists when exceeded11 REAL, SAVE, PROTECTED :: seuil_neb=0.001 ! cloud fraction threshold: a cloud really exists when exceeded 12 12 !$OMP THREADPRIVATE(seuil_neb) 13 13 … … 15 15 !$OMP THREADPRIVATE(lunout,prt_level) 16 16 17 INTEGER, SAVE :: niter_lscp=5! number of iterations to calculate autoconversion to precipitation17 INTEGER, SAVE, PROTECTED :: niter_lscp=5 ! number of iterations to calculate autoconversion to precipitation 18 18 !$OMP THREADPRIVATE(niter_lscp) 19 19 20 INTEGER, SAVE :: iflag_evap_prec=1! precipitation evaporation flag. 0: nothing, 1: "old way",20 INTEGER, SAVE, PROTECTED :: iflag_evap_prec=1 ! precipitation evaporation flag. 0: nothing, 1: "old way", 21 21 ! 2: Max cloud fraction above to calculate the max of reevaporation 22 22 ! >=4: LTP'method i.e. evaporation in the clear-sky fraction of the mesh only … … 25 25 !$OMP THREADPRIVATE(iflag_evap_prec) 26 26 27 REAL t_coup ! temperature threshold which determines the phase 28 PARAMETER (t_coup=234.0) ! for which the saturation vapor pressure is calculated 29 30 REAL DDT0 ! iteration parameter 31 PARAMETER (DDT0=.01) 32 33 REAL ztfondue ! parameter to calculate melting fraction of precipitation 34 PARAMETER (ztfondue=278.15) 35 36 REAL temp_nowater ! temperature below which liquid water no longer exists 37 PARAMETER (temp_nowater=233.15) 38 39 REAL, SAVE :: rain_int_min=0.001 ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction 40 !$OMP THREADPRIVATE(rain_int_min) 41 42 REAL, SAVE :: a_tr_sca(4) ! Variables for tracers temporary: alpha parameter for scavenging, 4 possible scavenging processes 27 REAL, SAVE, PROTECTED :: t_coup=234.0 ! temperature threshold which determines the phase 28 ! for which the saturation vapor pressure is calculated 29 !$OMP THREADPRIVATE(t_coup) 30 REAL, SAVE, PROTECTED :: DDT0=0.01 ! iteration parameter 31 !$OMP THREADPRIVATE(DDT0) 32 33 REAL, SAVE, PROTECTED :: ztfondue=278.15 ! parameter to calculate melting fraction of precipitation 34 !$OMP THREADPRIVATE(ztfondue) 35 36 REAL, SAVE, PROTECTED :: temp_nowater=233.15 ! temperature below which liquid water no longer exists 37 !$OMP THREADPRIVATE(temp_nowater) 38 39 REAL, SAVE, PROTECTED :: a_tr_sca(4) ! Variables for tracers temporary: alpha parameter for scavenging, 4 possible scavenging processes 43 40 !$OMP THREADPRIVATE(a_tr_sca) 44 41 45 INTEGER, SAVE :: iflag_mpc_bl=0! flag to activate boundary layer mixed phase cloud param42 INTEGER, SAVE, PROTECTED :: iflag_mpc_bl=0 ! flag to activate boundary layer mixed phase cloud param 46 43 !$OMP THREADPRIVATE(iflag_mpc_bl) 47 44 48 LOGICAL, SAVE :: ok_radocond_snow=.false.! take into account the mass of ice precip in the cloud ice content seen by radiation45 LOGICAL, SAVE, PROTECTED :: ok_radocond_snow=.false. ! take into account the mass of ice precip in the cloud ice content seen by radiation 49 46 !$OMP THREADPRIVATE(ok_radocond_snow) 50 47 51 REAL, SAVE :: t_glace_min=258.0! lower-bound temperature parameter for cloud phase determination48 REAL, SAVE, PROTECTED :: t_glace_min=258.0 ! lower-bound temperature parameter for cloud phase determination 52 49 !$OMP THREADPRIVATE(t_glace_min) 53 50 54 REAL, SAVE :: t_glace_max=273.15! upper-bound temperature parameter for cloud phase determination51 REAL, SAVE, PROTECTED :: t_glace_max=273.15 ! upper-bound temperature parameter for cloud phase determination 55 52 !$OMP THREADPRIVATE(t_glace_max) 56 53 57 REAL, SAVE :: exposant_glace=1.0! parameter for cloud phase determination54 REAL, SAVE, PROTECTED :: exposant_glace=1.0 ! parameter for cloud phase determination 58 55 !$OMP THREADPRIVATE(exposant_glace) 59 56 60 INTEGER, SAVE :: iflag_vice=0! which expression for ice crystall fall velocity57 INTEGER, SAVE, PROTECTED :: iflag_vice=0 ! which expression for ice crystall fall velocity 61 58 !$OMP THREADPRIVATE(iflag_vice) 62 59 63 INTEGER, SAVE :: iflag_t_glace=0! which expression for cloud phase partitioning60 INTEGER, SAVE, PROTECTED :: iflag_t_glace=0 ! which expression for cloud phase partitioning 64 61 !$OMP THREADPRIVATE(iflag_t_glace) 65 62 66 INTEGER, SAVE :: iflag_cloudth_vert=0! option for determining cloud fraction and content in convective boundary layers63 INTEGER, SAVE, PROTECTED :: iflag_cloudth_vert=0 ! option for determining cloud fraction and content in convective boundary layers 67 64 !$OMP THREADPRIVATE(iflag_cloudth_vert) 68 65 69 INTEGER, SAVE :: iflag_gammasat=0! which threshold for homogeneous nucleation below -40oC66 INTEGER, SAVE, PROTECTED :: iflag_gammasat=0 ! which threshold for homogeneous nucleation below -40oC 70 67 !$OMP THREADPRIVATE(iflag_gammasat) 71 68 72 INTEGER, SAVE :: iflag_rain_incloud_vol=0! use of volume cloud fraction for rain autoconversion69 INTEGER, SAVE, PROTECTED :: iflag_rain_incloud_vol=0 ! use of volume cloud fraction for rain autoconversion 73 70 !$OMP THREADPRIVATE(iflag_rain_incloud_vol) 74 71 75 INTEGER, SAVE :: iflag_bergeron=0! bergeron effect for liquid precipitation treatment72 INTEGER, SAVE, PROTECTED :: iflag_bergeron=0 ! bergeron effect for liquid precipitation treatment 76 73 !$OMP THREADPRIVATE(iflag_bergeron) 77 74 78 INTEGER, SAVE :: iflag_fisrtilp_qsat=0! qsat adjustment (iterative) during autoconversion75 INTEGER, SAVE, PROTECTED :: iflag_fisrtilp_qsat=0 ! qsat adjustment (iterative) during autoconversion 79 76 !$OMP THREADPRIVATE(iflag_fisrtilp_qsat) 80 77 81 INTEGER, SAVE :: iflag_pdf=0! type of subgrid scale qtot pdf78 INTEGER, SAVE, PROTECTED :: iflag_pdf=0 ! type of subgrid scale qtot pdf 82 79 !$OMP THREADPRIVATE(iflag_pdf) 83 80 84 INTEGER, SAVE :: iflag_autoconversion=0! autoconversion option81 INTEGER, SAVE, PROTECTED :: iflag_autoconversion=0 ! autoconversion option 85 82 !$OMP THREADPRIVATE(iflag_autoconversion) 86 83 87 LOGICAL, SAVE :: reevap_ice=.false.! no liquid precip for T< threshold84 LOGICAL, SAVE, PROTECTED :: reevap_ice=.false. ! no liquid precip for T< threshold 88 85 !$OMP THREADPRIVATE(reevap_ice) 89 86 90 REAL, SAVE :: cld_lc_lsc=2.6e-4! liquid autoconversion coefficient, stratiform rain87 REAL, SAVE, PROTECTED :: cld_lc_lsc=2.6e-4 ! liquid autoconversion coefficient, stratiform rain 91 88 !$OMP THREADPRIVATE(cld_lc_lsc) 92 89 93 REAL, SAVE :: cld_lc_con=2.6e-4 ! liquid autoconversion coefficient, convective rain90 REAL, SAVE, PROTECTED :: cld_lc_con=2.6e-4 ! liquid autoconversion coefficient, convective rain 94 91 !$OMP THREADPRIVATE(cld_lc_con) 95 92 96 REAL, SAVE :: cld_tau_lsc=3600. ! liquid autoconversion timescale, stratiform rain93 REAL, SAVE, PROTECTED :: cld_tau_lsc=3600. ! liquid autoconversion timescale, stratiform rain 97 94 !$OMP THREADPRIVATE(cld_tau_lsc) 98 95 99 REAL, SAVE :: cld_tau_con=3600. ! liquid autoconversion timescale, convective rain96 REAL, SAVE, PROTECTED :: cld_tau_con=3600. ! liquid autoconversion timescale, convective rain 100 97 !$OMP THREADPRIVATE(cld_tau_con) 101 98 102 REAL, SAVE :: cld_expo_lsc=2. ! liquid autoconversion threshold exponent, stratiform rain99 REAL, SAVE, PROTECTED :: cld_expo_lsc=2. ! liquid autoconversion threshold exponent, stratiform rain 103 100 !$OMP THREADPRIVATE(cld_expo_lsc) 104 101 105 REAL, SAVE :: cld_expo_con=2. ! liquid autoconversion threshold exponent, convective rain102 REAL, SAVE, PROTECTED :: cld_expo_con=2. ! liquid autoconversion threshold exponent, convective rain 106 103 !$OMP THREADPRIVATE(cld_expo_con) 107 104 108 REAL, SAVE :: ffallv_lsc=1. ! tuning coefficient crystal fall velocity, stratiform105 REAL, SAVE, PROTECTED :: ffallv_lsc=1. ! tuning coefficient crystal fall velocity, stratiform 109 106 !$OMP THREADPRIVATE(ffallv_lsc) 110 107 111 REAL, SAVE :: ffallv_con=1. ! tuning coefficient crystal fall velocity, convective108 REAL, SAVE, PROTECTED :: ffallv_con=1. ! tuning coefficient crystal fall velocity, convective 112 109 !$OMP THREADPRIVATE(ffallv_con) 113 110 114 REAL, SAVE :: coef_eva=2e-5 ! tuning coefficient liquid precip evaporation111 REAL, SAVE, PROTECTED :: coef_eva=2e-5 ! tuning coefficient liquid precip evaporation 115 112 !$OMP THREADPRIVATE(coef_eva) 116 113 117 REAL, SAVE :: coef_eva_i ! tuning coefficient ice precip sublimation114 REAL, SAVE, PROTECTED :: coef_eva_i ! tuning coefficient ice precip sublimation 118 115 !$OMP THREADPRIVATE(coef_eva_i) 119 116 120 REAL cice_velo ! factor in the ice fall velocity formulation 121 PARAMETER (cice_velo=1.645) 122 123 REAL dice_velo ! exponent in the ice fall velocity formulation 124 PARAMETER (dice_velo=0.16) 125 126 REAL, SAVE :: dist_liq=300. ! typical deph of cloud-top liquid layer in mpcs 117 REAL, SAVE, PROTECTED :: expo_eva=0.5 ! tuning coefficient liquid precip evaporation 118 !$OMP THREADPRIVATE(expo_eva) 119 120 REAL, SAVE, PROTECTED :: expo_eva_i ! tuning coefficient ice precip sublimation 121 !$OMP THREADPRIVATE(expo_eva_i) 122 123 REAL, SAVE, PROTECTED :: cice_velo=1.645 ! factor in the ice fall velocity formulation 124 !$OMP THREADPRIVATE(cice_velo) 125 126 REAL, SAVE, PROTECTED :: dice_velo=0.16 ! exponent in the ice fall velocity formulation 127 !$OMP THREADPRIVATE(dice_velo) 128 129 REAL, SAVE, PROTECTED :: dist_liq=300. ! typical deph of cloud-top liquid layer in mpcs 127 130 !$OMP THREADPRIVATE(dist_liq) 128 131 129 REAL, SAVE :: tresh_cl=0.0 ! cloud fraction threshold for cloud top search132 REAL, SAVE, PROTECTED :: tresh_cl=0.0 ! cloud fraction threshold for cloud top search 130 133 !$OMP THREADPRIVATE(tresh_cl) 131 134 135 !--Parameters for poprecip 136 LOGICAL, SAVE, PROTECTED :: ok_poprecip=.FALSE. ! use the processes-oriented formulation of precipitations 137 !$OMP THREADPRIVATE(ok_poprecip) 138 139 REAL, SAVE, PROTECTED :: rain_int_min=0.001 ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction 140 !$OMP THREADPRIVATE(rain_int_min) 141 142 REAL, SAVE, PROTECTED :: thresh_precip_frac=1.E-6 ! precipitation fraction threshold TODO [-] 143 !$OMP THREADPRIVATE(thresh_precip_frac) 144 145 REAL, SAVE, PROTECTED :: gamma_col=1. ! A COMMENTER TODO [-] 146 !$OMP THREADPRIVATE(gamma_col) 147 148 REAL, SAVE, PROTECTED :: gamma_agg=1. ! A COMMENTER TODO [-] 149 !$OMP THREADPRIVATE(gamma_agg) 150 151 REAL, SAVE, PROTECTED :: gamma_rim=1. ! A COMMENTER TODO [-] 152 !$OMP THREADPRIVATE(gamma_rim) 153 154 REAL, SAVE, PROTECTED :: rho_rain=1000. ! A COMMENTER TODO [kg/m3] 155 !$OMP THREADPRIVATE(rho_rain) 156 157 REAL, SAVE, PROTECTED :: rho_snow=500. ! A COMMENTER TODO [kg/m3] 158 !$OMP THREADPRIVATE(rho_snow) 159 160 REAL, SAVE, PROTECTED :: r_rain=100.E-6 ! A COMMENTER TODO [m] 161 !$OMP THREADPRIVATE(r_rain) 162 163 REAL, SAVE, PROTECTED :: r_snow=100.E-6 ! A COMMENTER TODO [m] 164 !$OMP THREADPRIVATE(r_snow) 165 166 REAL, SAVE, PROTECTED :: Eff_rain_liq=1.0 ! A COMMENTER TODO [-] 167 !$OMP THREADPRIVATE(Eff_rain_liq) 168 169 REAL, SAVE, PROTECTED :: Eff_snow_ice=0.5 ! A COMMENTER TODO [-] 170 !$OMP THREADPRIVATE(Eff_snow_ice) 171 172 REAL, SAVE, PROTECTED :: Eff_snow_liq=1.0 ! A COMMENTER TODO [-] 173 !$OMP THREADPRIVATE(Eff_snow_liq) 174 175 REAL, SAVE, PROTECTED :: tau_auto_snow_min=1800. ! A COMMENTER TODO [s] 176 !$OMP THREADPRIVATE(tau_auto_snow_min) 177 178 REAL, SAVE, PROTECTED :: tau_auto_snow_max=7200. ! A COMMENTER TODO [s] 179 !$OMP THREADPRIVATE(tau_auto_snow_max) 180 181 REAL, SAVE, PROTECTED :: eps=1.E-10 ! A COMMENTER TODO [-] 182 !$OMP THREADPRIVATE(eps) 183 !--End of the parameters for poprecip 184 132 185 ! Two parameters used for lmdz_lscp_old only 133 INTEGER, SAVE :: iflag_oldbug_fisrtilp=0, fl_cor_ebil186 INTEGER, SAVE, PROTECTED :: iflag_oldbug_fisrtilp=0, fl_cor_ebil 134 187 !$OMP THREADPRIVATE(iflag_oldbug_fisrtilp,fl_cor_ebil) 135 188 … … 173 226 CALL getin_p('iflag_evap_prec',iflag_evap_prec) 174 227 CALL getin_p('seuil_neb',seuil_neb) 175 CALL getin_p('rain_int_min',rain_int_min)176 228 CALL getin_p('iflag_mpc_bl',iflag_mpc_bl) 177 229 CALL getin_p('ok_radocond_snow',ok_radocond_snow) … … 199 251 coef_eva_i=coef_eva 200 252 CALL getin_p('coef_eva_i',coef_eva_i) 253 CALL getin_p('expo_eva',expo_eva) 254 expo_eva_i=expo_eva 255 CALL getin_p('expo_eva_i',expo_eva_i) 201 256 CALL getin_p('iflag_autoconversion',iflag_autoconversion) 202 257 CALL getin_p('dist_liq',dist_liq) 203 258 CALL getin_p('tresh_cl',tresh_cl) 204 259 CALL getin_p('iflag_oldbug_fisrtilp',iflag_oldbug_fisrtilp) 205 260 CALL getin_p('ok_poprecip',ok_poprecip) 261 CALL getin_p('rain_int_min',rain_int_min) 262 CALL getin_p('gamma_agg',gamma_agg) 263 CALL getin_p('gamma_col',gamma_col) 206 264 207 265 … … 210 268 WRITE(lunout,*) 'lscp_ini, iflag_evap_prec:', iflag_evap_prec 211 269 WRITE(lunout,*) 'lscp_ini, seuil_neb:', seuil_neb 212 WRITE(lunout,*) 'lscp_ini, rain_int_min:', rain_int_min213 270 WRITE(lunout,*) 'lscp_ini, iflag_mpc_bl:', iflag_mpc_bl 214 271 WRITE(lunout,*) 'lscp_ini, ok_radocond_snow:', ok_radocond_snow … … 235 292 WRITE(lunout,*) 'lscp_ini, coef_eva', coef_eva 236 293 WRITE(lunout,*) 'lscp_ini, coef_eva_i', coef_eva_i 294 WRITE(lunout,*) 'lscp_ini, expo_eva', expo_eva 295 WRITE(lunout,*) 'lscp_ini, expo_eva_i', expo_eva_i 237 296 WRITE(lunout,*) 'lscp_ini, iflag_autoconversion', iflag_autoconversion 238 297 WRITE(lunout,*) 'lscp_ini, dist_liq', dist_liq … … 240 299 WRITE(lunout,*) 'lscp_ini, iflag_oldbug_fisrtilp', iflag_oldbug_fisrtilp 241 300 WRITE(lunout,*) 'lscp_ini, fl_cor_ebil', fl_cor_ebil 301 WRITE(lunout,*) 'lscp_ini, ok_poprecip', ok_poprecip 302 WRITE(lunout,*) 'lscp_ini, rain_int_min:', rain_int_min 303 WRITE(lunout,*) 'lscp_ini, gamma_agg:', gamma_agg 304 WRITE(lunout,*) 'lscp_ini, gamma_col:', gamma_col 242 305 243 306 … … 262 325 263 326 327 ! check consistency between the use of the processes-oriented precipitation formulations 328 ! and other options 329 330 IF (ok_poprecip) THEN 331 IF ((iflag_evap_prec .LT. 4) .OR. (niter_lscp .GT. 1)) THEN 332 abort_message = 'in lscp, ok_poprecip=y requires iflag_evap_prec >= 4 and niter_lscp=1' 333 CALL abort_physic (modname,abort_message,1) 334 ENDIF 335 ENDIF 336 337 264 338 !AA Temporary initialisation 265 339 a_tr_sca(1) = -0.5
Note: See TracChangeset
for help on using the changeset viewer.