Changeset 4171 for LMDZ6/branches/LMDZ-ECRAD/libf/dyn3d/qminimum.F
- Timestamp:
- Jun 17, 2022, 4:24:49 PM (2 years ago)
- Location:
- LMDZ6/branches/LMDZ-ECRAD
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ-ECRAD
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ-ECRAD/libf/dyn3d/qminimum.F
r2600 r4171 4 4 SUBROUTINE qminimum( q,nqtot,deltap ) 5 5 6 USE infotrac, ONLY: ok_isotopes,ntraciso,iqiso,ok_iso_verif 6 USE infotrac, ONLY: niso, ntiso,iqIsoPha, tracers 7 USE strings_mod, ONLY: strIdx 8 USE readTracFiles_mod, ONLY: addPhase 7 9 IMPLICIT none 8 10 c … … 16 18 REAL q(ip1jmp1,llm,nqtot), deltap(ip1jmp1,llm) 17 19 c 18 INTEGER iq_vap, iq_liq 19 PARAMETER ( iq_vap = 1 ) ! indice pour l'eau vapeur 20 PARAMETER ( iq_liq = 2 ) ! indice pour l'eau liquide 21 REAL seuil_vap, seuil_liq 22 PARAMETER ( seuil_vap = 1.0e-10 ) ! seuil pour l'eau vapeur 23 PARAMETER ( seuil_liq = 1.0e-11 ) ! seuil pour l'eau liquide 20 LOGICAL, SAVE :: first=.TRUE. 21 INTEGER, SAVE :: iq_vap, iq_liq ! indices pour l'eau vapeur/liquide 22 REAL, PARAMETER :: seuil_vap = 1.0e-10 ! seuil pour l'eau vapeur 23 REAL, PARAMETER :: seuil_liq = 1.0e-11 ! seuil pour l'eau liquide 24 24 c 25 25 c NB. ....( Il est souhaitable mais non obligatoire que les valeurs des … … 43 43 !INTEGER nb_pump 44 44 INTEGER ixt 45 46 IF(first) THEN 47 iq_vap = strIdx(tracers(:)%name, addPhase('H2O', 'g')) 48 iq_liq = strIdx(tracers(:)%name, addPhase('H2O', 'l')) 49 first = .FALSE. 50 END IF 45 51 c 46 52 c Quand l'eau liquide est trop petite (ou negative), on prend … … 49 55 c 50 56 51 if (ok_iso_verif) then 52 call check_isotopes_seq(q,ip1jmp1,'qminimum 52') 53 endif !if (ok_iso_verif) then 57 call check_isotopes_seq(q,ip1jmp1,'qminimum 52') 54 58 55 59 zx_defau_diag(:,:,:)=0.0 … … 59 63 if (seuil_liq - q(i,k,iq_liq) .gt. 0.d0 ) then 60 64 61 if (ok_isotopes) then 62 zx_defau_diag(i,k,iq_liq)=AMAX1 65 if (niso > 0) zx_defau_diag(i,k,iq_liq)=AMAX1 63 66 : ( seuil_liq - q(i,k,iq_liq), 0.0 ) 64 endif !if (ok_isotopes) then65 67 66 68 q(i,k,iq_vap) = q(i,k,iq_vap) + q(i,k,iq_liq) - seuil_liq … … 80 82 if ( seuil_vap - q(i,k,iq) .gt. 0.d0 ) then 81 83 82 if (ok_isotopes) then 83 zx_defau_diag(i,k,iq)=AMAX1( seuil_vap - q(i,k,iq), 0.0 ) 84 endif !if (ok_isotopes) then 84 if (niso > 0) 85 & zx_defau_diag(i,k,iq)=AMAX1( seuil_vap - q(i,k,iq), 0.0 ) 85 86 86 87 q(i,k-1,iq) = q(i,k-1,iq) - ( seuil_vap - q(i,k,iq) ) * … … 110 111 111 112 !write(*,*) 'qminimum 128' 112 if ( ok_isotopes) then113 if (niso > 0) then 113 114 ! CRisi: traiter de même les traceurs d'eau 114 115 ! Mais il faut les prendre à l'envers pour essayer de conserver la … … 130 131 if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 131 132 ! on ajoute la vapeur en k 132 do ixt=1,nt raciso133 q(i,k,iq iso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))134 : 135 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap)133 do ixt=1,ntiso 134 q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap)) 135 : +zx_defau_diag(i,k,iq_vap) 136 : *q(i,k-1,iqIsoPha(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 136 137 137 138 ! et on la retranche en k-1 138 q(i,k-1,iqiso(ixt,iq_vap))=q(i,k-1,iqiso(ixt,iq_vap)) 139 q(i,k-1,iqIsoPha(ixt,iq_vap))= 140 : q(i,k-1,iqIsoPha(ixt,iq_vap)) 139 141 : -zx_defau_diag(i,k,iq_vap) 140 142 : *deltap(i,k)/deltap(i,k-1) 141 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 143 : *q(i,k-1,iqIsoPha(ixt,iq_vap)) 144 : /q_follow(i,k-1,iq_vap) 142 145 143 146 enddo !do ixt=1,niso … … 151 154 enddo !do k=2,llm 152 155 153 if (ok_iso_verif) then 154 call check_isotopes_seq(q,ip1jmp1,'qminimum 168') 155 endif !if (ok_iso_verif) then 156 call check_isotopes_seq(q,ip1jmp1,'qminimum 168') 156 157 157 158 … … 163 164 164 165 ! on ajoute eau liquide en k en k 165 do ixt=1,nt raciso166 q(i,k,iq iso(ixt,iq_liq))=q(i,k,iqiso(ixt,iq_liq))166 do ixt=1,ntiso 167 q(i,k,iqIsoPha(ixt,iq_liq))=q(i,k,iqIsoPha(ixt,iq_liq)) 167 168 : +zx_defau_diag(i,k,iq_liq) 168 : *q(i,k,iq iso(ixt,iq_vap))/q_follow(i,k,iq_vap)169 : *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap) 169 170 ! et on la retranche à la vapeur en k 170 q(i,k,iq iso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap))171 q(i,k,iqIsoPha(ixt,iq_vap))=q(i,k,iqIsoPha(ixt,iq_vap)) 171 172 : -zx_defau_diag(i,k,iq_liq) 172 : *q(i,k,iq iso(ixt,iq_vap))/q_follow(i,k,iq_vap)173 : *q(i,k,iqIsoPha(ixt,iq_vap))/q_follow(i,k,iq_vap) 173 174 enddo !do ixt=1,niso 174 175 q_follow(i,k,iq_liq)= q_follow(i,k,iq_liq) … … 180 181 enddo !do k=2,llm 181 182 182 if (ok_iso_verif) then 183 call check_isotopes_seq(q,ip1jmp1,'qminimum 197') 184 endif !if (ok_iso_verif) then 183 call check_isotopes_seq(q,ip1jmp1,'qminimum 197') 185 184 186 endif !if ( ok_isotopes) then185 endif !if (niso > 0) then 187 186 !write(*,*) 'qminimum 188' 188 187
Note: See TracChangeset
for help on using the changeset viewer.