Changeset 4812
- Timestamp:
- Feb 9, 2024, 9:38:16 AM (11 months ago)
- Location:
- LMDZ6/trunk/libf/phylmd
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_ini.F90
r4740 r4812 58 58 59 59 60 tau_var = 700. ! temps de relaxation de la variabilit épour les thermiques60 tau_var = 700. ! temps de relaxation de la variabilit?? pour les thermiques 61 61 fac_tau = 2. 62 62 tau_cumul = 1000 63 a_ratqs_wake = 3. ! param ètre pilotant l'importance du terme dépendant des poches froides63 a_ratqs_wake = 3. ! param??tre pilotant l'importance du terme d??pendant des poches froides 64 64 a_ratqs_cv = 1. 65 65 CALL getin_p('tau_var', tau_var) … … 70 70 71 71 !-------------------------------------------------------- 72 ! Initialisation des variances pour la param étrisation72 ! Initialisation des variances pour la param??trisation 73 73 ! pronostique des variances de Louis. 74 74 ! Ne marche pour le moment qu'en 1D en forcant une 75 ! initialisation des variances àune valeur constante.75 ! initialisation des variances ?? une valeur constante. 76 76 ! A terme la variance doit devenir une variable d'etat 77 77 ! passee en argument … … 81 81 do k=1,klev 82 82 do i=1,klon 83 povariance(i,k) = 0.000000 184 var_conv(i,k) = 0. 83 povariance(i,k) = 0.00000000001 84 var_conv(i,k) = 0.00000000001 85 85 enddo 86 86 enddo -
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_main.F90
r4613 r4812 259 259 ! FH 22/09/2009 260 260 ! La ligne ci-dessous faisait osciller le modele et donnait une solution 261 ! assymptotique bidon et d épendant fortement du pas de temps.261 ! assymptotique bidon et d??pendant fortement du pas de temps. 262 262 ! ratqs(:,:)=sqrt(ratqs(:,:)**2+ratqss(:,:)**2) 263 263 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -
LMDZ6/trunk/libf/phylmd/lmdz_ratqs_multi.F90
r4664 r4812 38 38 39 39 !======================================================================== 40 ! L. d'Alen çon, 25/02/202140 ! L. d'Alen??on, 25/02/2021 41 41 ! Cette subroutine calcule une valeur de ratqsbas interactive 42 ! Elle est appel ée par la subroutine ratqs lorsque iflag_ratqs = 11.42 ! Elle est appel??e par la subroutine ratqs lorsque iflag_ratqs = 11. 43 43 !======================================================================== 44 44 … … 68 68 real, dimension(klon,klev) :: wake_dq 69 69 70 71 70 real, dimension(klon) :: max_sigd, max_dqconv,max_sigt 72 71 real, dimension(klon,klev) :: zoa,zocarrea,pdocarreadj,pocarre,po,pdoadj,varq_therm 73 72 real, dimension(klon,klev) :: var_moy, var_var, var_desc_th,var_det_conv,var_desc_prec,var_desc_conv,sigma_therm 74 73 75 74 lev_out=0. … … 85 84 enddo 86 85 !------------------------------------------------------------------------- 87 ! Caclul du terme de d étrainement de la variance pour les thermiques86 ! Caclul du terme de d??trainement de la variance pour les thermiques 88 87 !------------------------------------------------------------------------- 89 88 … … 103 102 detr0(:,:) = detr_therm(:,:) 104 103 105 ! calcul du carr é de l'humidité spécifique104 ! calcul du carr?? de l'humidit?? sp??cifique et circulation dans les thermiques 106 105 po(:,:) = q_seri(:,:) 107 106 call thermcell_dq(klon,klev,dqimpl,pdtphys,fm0,entr0,zmasse, & … … 115 114 & pocarre,pdocarreadj,zocarrea,lev_out) 116 115 117 116 117 ! variance de l'humidit?? sp??cifique totale dans les thermiques 118 118 do k=1,klev 119 119 do i=1,klon … … 122 122 enddo 123 123 124 ! calcul des termes sources de la variance avec thermiques et convection profonde (voir Klein 2005 par exemple) 125 do k=1,klev 126 do i=1,klon 127 var_moy(i,k) = detr0(i,k)*((zoa(i,k)-po(i,k))**2)/zmasse(i,k) 128 var_var(i,k) = detr0(i,k)*(varq_therm(i,k)-povariance(i,k))/zmasse(i,k) 129 var_det_conv(i,k) = a_ratqs_cv*(detrain_cv(i,k)/zmasse(i,k)) 130 if (sigd(i).ne.0) then 131 var_desc_prec(i,k) = sigd(i)*(1-sigd(i))*(fqd(i,k)*tau_cumul/sigd(i))**2/tau_cumul 132 else 133 var_desc_prec(i,k) = 0 134 endif 135 enddo 136 enddo 137 138 do k=1,klev-1 139 do i=1,klon 140 var_desc_th(i,k) = fm0(i,k+1)*povariance(i,k+1)/zmasse(i,k) - & 141 fm0(i,k)*povariance(i,k)/zmasse(i,k) 142 var_desc_conv(i,k) = ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k))) 143 enddo 144 enddo 145 var_desc_th(:,klev) = var_desc_th(:,klev-1) 146 var_desc_conv(:,klev) = var_desc_conv(:,klev-1) 124 147 125 148 if (klein) then … … 134 157 do k=1,klev-1 135 158 do i=1,klon 136 povariance(i,k)= (detr0(i,k)*((zoa(i,k)-po(i,k))**2 + (varq_therm(i,k)-povariance(i,k)))/zmasse(i,k) + fm0(i,k+1)*povariance(i,k+1)/zmasse(i,k) - & 137 fm0(i,k)*povariance(i,k)/zmasse(i,k) + & 138 a_ratqs_cv*(detrain_cv(i,k)/zmasse(i,k)) + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul & 139 + ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k))))*pdtphys + povariance(i,k) 159 povariance(i,k)= (var_moy(i,k) + var_var(i,k) + var_desc_th(i,k) + & 160 var_det_conv(i,k) + var_desc_prec(i,k) & 161 + var_desc_conv(i,k))*pdtphys + povariance(i,k) 140 162 povariance(i,k)= povariance(i,k)*exp(-pdtphys/tau_diss(i,k)) 141 163 enddo … … 148 170 do k=1,klev-1 149 171 do i=1,klon 150 if (sigd(i).ne.0) then 172 if (sigd(i).ne.0) then ! termes de variance par accumulation 151 173 qd0(i,k) = fqd(i,k)*tau_cumul/sigd(i) 152 174 endif … … 159 181 do i=1,klon 160 182 povariance(i,k)= (pdocarreadj(i,k)-2.*po(i,k)*pdoadj(i,k) + & 161 a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/tau_cumul + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul) + &162 ((povariance(i,k+1)-povariance(i,k))*(fm_cv(i,k)/zmasse(i,k))))*pdtphys + povariance(i,k)183 a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/tau_cumul + var_desc_prec(i,k) + & 184 var_desc_conv(i,k)))*pdtphys + povariance(i,k) 163 185 povariance(i,k)=povariance(i,k)*exp(-pdtphys/tau_diss(i,k)) 164 186 enddo … … 167 189 ! fqd(:,:)=sigt_cv(:,:)*(1-sigt_cv(:,:))*q0(:,:)**2/tau_cumul 168 190 endif 169 170 !-------------------------------------------------------------------------171 ! Caclul du terme de détrainement de la variance pour la convection (version fausse avec deux calculs de variance indépendants)172 !-------------------------------------------------------------------------173 174 ! if (klein_conv) then175 ! detrain_p(:,:) = 0.176 ! detraincv(:,:) = 0.177 ! dqp(:,:) = 0.178 179 ! do k=1,klev-1180 ! do i=1,klon181 ! dqp(i,k) = q_seri(i,k) - qp(i,k)182 ! detraincv(i,k) = abs(detrain_cv(i,k))183 184 ! if ((mp(i,k)-mp(i,k+1)).le.0) then185 ! detrain_p(i,k) = (mp(i,k+1)-mp(i,k))186 ! endif187 ! enddo188 ! enddo189 190 ! do k=1,klev-1191 ! do i=1,klon192 ! qd0(:,:) = 0.0193 ! if (sigd(i).ne.0) then194 ! qd0(i,k) = fqd(i,k)*tau_cumul/sigd(i)195 ! endif196 ! enddo197 ! enddo198 199 ! do k=1,klev-1200 ! do i=1,klon201 ! var_conv(i,k)= var_conv(i,k)*exp(-pdtphys/tau_conv) + &202 ! (a_ratqs_cv*(detraincv(i,k)/zmasse(i,k)) + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul &203 ! + ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k))))* &204 ! ((dqp(i,k)**2)*(detrain_p(i,k)/zmasse(i,k))))* & ! les termes de descentes précipitantes qui seront traités autrement205 ! (((mp(i,k)-mp(i,k+1))/zmasse(i,k))*dqp(i,k)**2) + (2*mp(i,k)*dqp(i,k)*(qp(i,k+1)-qp(i,k))/zmasse(i,k)))* &206 ! (1.-exp(-pdtphys/tau_conv))/(1/tau_conv)207 ! enddo208 ! enddo209 ! var_conv(:,klev) = var_conv(:,klev-1)210 ! fqd(:,:) = var_conv(:,:)211 ! else212 213 214 ! do k=1,klev-1215 ! do i=1,klon216 ! var_conv(i,k)= var_conv(i,k)*exp(-pdtphys/tau_conv) + &217 ! (a_ratqs_cv*(sigt_cv(i,k)*(1-sigt_cv(i,k))*q0(i,k)**2/pdtphys + sigd(i)*(1-sigd(i))*qd0(i,k)**2/tau_cumul) + & ! somme des contributions des descentes précipitantes et des flux mélangés218 ! + ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k))))* & ! flux compensatoires dans l'environnement219 ! (1.-exp(-pdtphys/tau_conv))/(1/tau_conv)220 ! ((var_conv(i,k+1)-var_conv(i,k))*(fm_cv(i,k)/zmasse(i,k)))221 ! enddo222 ! enddo223 ! var_conv(:,klev) = var_conv(:,klev-1)224 ! endif225 191 226 192 !------------------------------------------------------------------------- … … 231 197 do i=1,klon 232 198 if(q_seri(i,k).ge.1E-7) then 233 ratqs_inter_(i,k) = abs(povariance(i,k))**0.5/q_seri(i,k) 199 ratqs_inter_(i,k) = abs(povariance(i,k))**0.5/q_seri(i,k) 200 sigma_therm(i,k) = abs(varq_therm(i,k))**0.5 ! sigma dans les thermiques 234 201 else 235 202 ratqs_inter_(i,k) = 0. 203 sigma_therm(i,k) = 0. 236 204 endif 237 205 enddo … … 403 371 ! 404 372 ! Field, P.R., Hill, A., Furtado, K., Korolev, A., 2014b. Mixed-phase clouds in a turbulent environment. Part 405 ! 2: analytic treatment. Q. J. R. Meteorol. Soc. 21, 2651 –2663. https://doi.org/10.1002/qj.2175.373 ! 2: analytic treatment. Q. J. R. Meteorol. Soc. 21, 2651???2663. https://doi.org/10.1002/qj.2175. 406 374 ! 407 375 ! Furtado, K., Field, P.R., Boutle, I.A., Morcrette, C.R., Wilkinson, J., 2016. A physically-based, subgrid 408 376 ! parametrization for the production and maintenance of mixed-phase clouds in a general circulation 409 ! model. J. Atmos. Sci. 73, 279 –291. https://doi.org/10.1175/JAS-D-15-0021.377 ! model. J. Atmos. Sci. 73, 279???291. https://doi.org/10.1175/JAS-D-15-0021. 410 378 411 379 USE lmdz_ratqs_ini, ONLY : RG,RV,RD,RCPD,RLSTT,RLVTT,RTT
Note: See TracChangeset
for help on using the changeset viewer.