Changeset 4143 for LMDZ6/trunk/libf/dyn3dmem/qminimum_loc.F
- Timestamp:
- May 9, 2022, 12:35:40 PM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3dmem/qminimum_loc.F
r4124 r4143 4 4 SUBROUTINE qminimum_loc( q,nqtot,deltap ) 5 5 USE parallel_lmdz 6 USE infotrac, ONLY: niso,ntraciso,iqiso,ok_iso_verif, & 7 & ratiomin,qperemin ! CRisi 23nov2020 6 USE infotrac, ONLY: niso, ntiso, iqIsoPha, tracers, 7 & isoCheck, min_qParent 8 USE strings_mod, ONLY: strIdx 9 USE readTracFiles_mod, ONLY: addPhase 8 10 IMPLICIT none 9 11 c … … 18 20 REAL q(ijb_u:ije_u,llm,nqtot), deltap(ijb_u:ije_u,llm) 19 21 c 20 INTEGER iq_vap, iq_liq 21 PARAMETER ( iq_vap = 1 ) ! indice pour l'eau vapeur 22 PARAMETER ( iq_liq = 2 ) ! indice pour l'eau liquide 23 REAL seuil_vap, seuil_liq 24 PARAMETER ( seuil_vap = 1.0e-10 ) ! seuil pour l'eau vapeur 25 PARAMETER ( seuil_liq = 1.0e-11 ) ! seuil pour l'eau liquide 22 LOGICAL, SAVE :: first=.TRUE. 23 INTEGER, SAVE :: iq_vap, iq_liq ! indices pour l'eau vapeur/liquide 24 c$OMP THREADPRIVATE(iq_vap, iq_liq, first) 25 REAL, PARAMETER :: seuil_vap = 1.0e-10 ! seuil pour l'eau vapeur 26 REAL, PARAMETER :: seuil_liq = 1.0e-11 ! seuil pour l'eau liquide 26 27 c 27 28 c NB. ....( Il est souhaitable mais non obligatoire que les valeurs des … … 54 55 c 55 56 56 !write(lunout,*) 'qminimum 52: entree' 57 if (ok_iso_verif) then 58 call check_isotopes(q,ij_begin,ij_end,'qminimum 52') 59 endif !if (ok_iso_verif) then 57 !write(lunout,*) 'qminimum 52: entree' 58 IF(first) THEN 59 iq_vap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 60 iq_liq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 61 first = .FALSE. 62 END IF 63 call check_isotopes(q,ij_begin,ij_end,'qminimum 52') 60 64 61 65 ijb=ij_begin … … 169 173 ! write(lunout,*) 'i,k,q_follow(i,k-1,iq_vap)=', 170 174 ! : i,k,q_follow(i,k-1,iq_vap) 171 if (q_follow(i,k-1,iq_vap).lt. qperemin) then175 if (q_follow(i,k-1,iq_vap).lt.min_qParent) then 172 176 write(lunout,*) 'tmp qmin: on stoppe' 173 177 write(lunout,*) 'zx_pump(i)=',zx_pump(i) … … 177 181 call abort_gcm("qminimum","not enough vapor",1) 178 182 endif 179 do ixt=1,nt raciso183 do ixt=1,ntiso 180 184 ! write(lunout,*) 'qmin 168: ixt=',ixt 181 ! write(lunout,*) 'q(i,k,iq iso(ixt,iq_vap)=',182 ! : q(i,k,iq iso(ixt,iq_vap))185 ! write(lunout,*) 'q(i,k,iqIsoPha(ixt,iq_vap)=', 186 ! : q(i,k,iqIsoPha(ixt,iq_vap)) 183 187 ! write(lunout,*) 'zx_defau_diag(i,k,iq_vap)=', 184 188 ! : zx_defau_diag(i,k,iq_vap) 185 ! write(lunout,*) 'q(i,k-1,iq iso(ixt,iq_vap)=',186 ! : q(i,k-1,iq iso(ixt,iq_vap))187 188 q(i,k,iq iso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))189 : 190 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap)189 ! write(lunout,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap)=', 190 ! : q(i,k-1,iqIsoPha(ixt,iq_vap)) 191 192 q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap)) 193 : +zx_defau_diag(i,k,iq_vap) 194 : *q(i,k-1,iqIsoPha(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 191 195 192 if ( ok_iso_verif) then193 if (iso_verif_noNaN_nostop(q(i,k,iqiso(ixt,iq_vap)),196 if (isoCheck) then 197 if(iso_verif_noNaN_nostop(q(i,k,iqIsoPha(ixt,iq_vap)), 194 198 : 'qminimum 155').eq.1) then 195 199 write(*,*) 'i,k,ixt=',i,k,ixt 196 200 write(*,*) 'q_follow(i,k-1,iq_vap)=', 197 201 : q_follow(i,k-1,iq_vap) 198 write(*,*) 'q(i,k,iq iso(ixt,iq_vap))=',199 : q(i,k,iq iso(ixt,iq_vap))202 write(*,*) 'q(i,k,iqIsoPha(ixt,iq_vap))=', 203 : q(i,k,iqIsoPha(ixt,iq_vap)) 200 204 write(*,*) 'zx_defau_diag(i,k,iq_vap)=', 201 205 : zx_defau_diag(i,k,iq_vap) 202 write(*,*) 'q(i,k-1,iq iso(ixt,iq_vap))=',203 : q(i,k-1,iq iso(ixt,iq_vap))206 write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=', 207 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 204 208 stop 205 209 endif … … 207 211 208 212 ! et on la retranche en k-1 209 q(i,k-1,iqiso(ixt,iq_vap))=q(i,k-1,iqiso(ixt,iq_vap)) 213 q(i,k-1,iqIsoPha(ixt,iq_vap)) = 214 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 210 215 : -zx_defau_diag(i,k,iq_vap) 211 216 : *deltap(i,k)/deltap(i,k-1) 212 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 213 214 if (ok_iso_verif) then 215 if (iso_verif_noNaN_nostop(q(i,k-1,iqiso(ixt,iq_vap)), 217 : *q(i,k-1,iqIsoPha(ixt,iq_vap)) 218 : /q_follow(i,k-1,iq_vap) 219 220 if (isoCheck) then 221 if (iso_verif_noNaN_nostop( 222 : q(i,k-1,iqIsoPha(ixt,iq_vap)), 216 223 : 'qminimum 175').eq.1) then 217 224 write(*,*) 'k,i,ixt=',k,i,ixt 218 225 write(*,*) 'q_follow(i,k-1,iq_vap)=', 219 226 : q_follow(i,k-1,iq_vap) 220 write(*,*) 'q(i,k,iq iso(ixt,iq_vap))=',221 : q(i,k,iq iso(ixt,iq_vap))227 write(*,*) 'q(i,k,iqIsoPha(ixt,iq_vap))=', 228 : q(i,k,iqIsoPha(ixt,iq_vap)) 222 229 write(*,*) 'zx_defau_diag(i,k,iq_vap)=', 223 230 : zx_defau_diag(i,k,iq_vap) 224 write(*,*) 'q(i,k-1,iq iso(ixt,iq_vap))=',225 : q(i,k-1,iq iso(ixt,iq_vap))231 write(*,*) 'q(i,k-1,iqIsoPha(ixt,iq_vap))=', 232 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 226 233 stop 227 234 endif … … 239 246 enddo !do k=2,llm 240 247 241 if (ok_iso_verif) then 242 call check_isotopes(q,ijb,ije,'qminimum 168') 243 endif !if (ok_iso_verif) then 248 call check_isotopes(q,ijb,ije,'qminimum 168') 244 249 245 250 … … 252 257 253 258 ! on ajoute eau liquide en k en k 254 do ixt=1,nt raciso255 q(i,k,iq iso(ixt,iq_liq))=q(i,k,iqiso(ixt,iq_liq))259 do ixt=1,ntiso 260 q(i,k,iqIsoPha(ixt,iq_liq))=q(i,k,iqIsoPha(ixt,iq_liq)) 256 261 : +zx_defau_diag(i,k,iq_liq) 257 : *q(i,k,iq iso(ixt,iq_vap))/q_follow(i,k,iq_vap)262 : *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap) 258 263 ! et on la retranche à la vapeur en k 259 q(i,k,iq iso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))264 q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap)) 260 265 : -zx_defau_diag(i,k,iq_liq) 261 : *q(i,k,iq iso(ixt,iq_vap))/q_follow(i,k,iq_vap)266 : *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap) 262 267 enddo !do ixt=1,niso 263 268 q_follow(i,k,iq_liq)= q_follow(i,k,iq_liq) … … 270 275 enddo !do k=2,llm 271 276 272 if (ok_iso_verif) then 273 call check_isotopes(q,ijb,ije,'qminimum 197') 274 endif !if (ok_iso_verif) then 277 call check_isotopes(q,ijb,ije,'qminimum 197') 275 278 276 279 endif !if (niso > 0) then
Note: See TracChangeset
for help on using the changeset viewer.