Changeset 2270 for LMDZ5/trunk/libf/dyn3d/qminimum.F
- Timestamp:
- May 7, 2015, 5:45:04 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/qminimum.F
r1907 r2270 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE qminimum( q,nq ,deltap )4 SUBROUTINE qminimum( q,nqtot,deltap ) 5 5 6 USE infotrac, ONLY: ok_isotopes,ntraciso,iqiso,ok_iso_verif 6 7 IMPLICIT none 7 8 c … … 13 14 #include "comvert.h" 14 15 c 15 INTEGER nq 16 REAL q(ip1jmp1,llm,nq ), deltap(ip1jmp1,llm)16 INTEGER nqtot 17 REAL q(ip1jmp1,llm,nqtot), deltap(ip1jmp1,llm) 17 18 c 18 19 INTEGER iq_vap, iq_liq … … 30 31 INTEGER i, k, iq 31 32 REAL zx_defau, zx_abc, zx_pump(ip1jmp1), pompe 33 34 real zx_defau_diag(ip1jmp1,llm,2) 35 real q_follow(ip1jmp1,llm,2) 32 36 c 33 37 REAL SSUM … … 36 40 SAVE imprim 37 41 DATA imprim /0/ 42 !INTEGER ijb,ije 43 !INTEGER Index_pump(ij_end-ij_begin+1) 44 !INTEGER nb_pump 45 INTEGER ixt 38 46 c 39 47 c Quand l'eau liquide est trop petite (ou negative), on prend … … 41 49 c (sans changer la temperature !) 42 50 c 51 52 if (ok_iso_verif) then 53 call check_isotopes_seq(q,ip1jmp1,'qminimum 52') 54 endif !if (ok_iso_verif) then 55 56 zx_defau_diag(:,:,:)=0.0 57 q_follow(:,:,:)=q(:,:,:) 43 58 DO 1000 k = 1, llm 44 59 DO 1040 i = 1, ip1jmp1 45 60 if (seuil_liq - q(i,k,iq_liq) .gt. 0.d0 ) then 61 62 if (ok_isotopes) then 63 zx_defau_diag(i,k,iq_liq)=AMAX1 64 : ( seuil_liq - q(i,k,iq_liq), 0.0 ) 65 endif !if (ok_isotopes) then 66 46 67 q(i,k,iq_vap) = q(i,k,iq_vap) + q(i,k,iq_liq) - seuil_liq 47 68 q(i,k,iq_liq) = seuil_liq … … 59 80 DO i = 1, ip1jmp1 60 81 if ( seuil_vap - q(i,k,iq) .gt. 0.d0 ) then 82 83 if (ok_isotopes) then 84 zx_defau_diag(i,k,iq)=AMAX1( seuil_vap - q(i,k,iq), 0.0 ) 85 endif !if (ok_isotopes) then 86 61 87 q(i,k-1,iq) = q(i,k-1,iq) - ( seuil_vap - q(i,k,iq) ) * 62 88 & deltap(i,k) / deltap(i,k-1) … … 83 109 ENDDO 84 110 ENDIF 111 112 write(*,*) 'qminimum 128' 113 if (ok_isotopes) then 114 ! CRisi: traiter de même les traceurs d'eau 115 ! Mais il faut les prendre à l'envers pour essayer de conserver la 116 ! masse. 117 ! 1) pompage dans le sol 118 ! On suppose que ce pompage se fait sans isotopes -> on ne modifie 119 ! rien ici et on croise les doigts pour que ça ne soit pas trop 120 ! génant 121 DO i = 1,ip1jmp1 122 if (zx_pump(i).gt.0.0) then 123 q_follow(i,1,iq_vap)=q_follow(i,1,iq_vap)+zx_pump(i) 124 endif !if (zx_pump(i).gt.0.0) then 125 enddo !DO i = 1,ip1jmp1 126 127 ! 2) transfert de vap vers les couches plus hautes 128 !write(*,*) 'qminimum 139' 129 do k=2,llm 130 DO i = 1,ip1jmp1 131 if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 132 ! on ajoute la vapeur en k 133 do ixt=1,ntraciso 134 q(i,k,iqiso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap)) 135 : +zx_defau_diag(i,k,iq_vap) 136 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 137 138 ! et on la retranche en k-1 139 q(i,k-1,iqiso(ixt,iq_vap))=q(i,k-1,iqiso(ixt,iq_vap)) 140 : -zx_defau_diag(i,k,iq_vap) 141 : *deltap(i,k)/deltap(i,k-1) 142 : *q(i,k-1,iqiso(ixt,iq_vap))/q_follow(i,k-1,iq_vap) 143 144 enddo !do ixt=1,niso 145 q_follow(i,k,iq_vap)= q_follow(i,k,iq_vap) 146 : +zx_defau_diag(i,k,iq_vap) 147 q_follow(i,k-1,iq_vap)= q_follow(i,k-1,iq_vap) 148 : -zx_defau_diag(i,k,iq_vap) 149 : *deltap(i,k)/deltap(i,k-1) 150 endif !if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 151 enddo !DO i = 1, ip1jmp1 152 enddo !do k=2,llm 153 154 if (ok_iso_verif) then 155 call check_isotopes_seq(q,ip1jmp1,'qminimum 168') 156 endif !if (ok_iso_verif) then 157 158 159 ! 3) transfert d'eau de la vapeur au liquide 160 !write(*,*) 'qminimum 164' 161 do k=1,llm 162 DO i = 1,ip1jmp1 163 if (zx_defau_diag(i,k,iq_liq).gt.0.0) then 164 165 ! on ajoute eau liquide en k en k 166 do ixt=1,ntraciso 167 q(i,k,iqiso(ixt,iq_liq))=q(i,k,iqiso(ixt,iq_liq)) 168 : +zx_defau_diag(i,k,iq_liq) 169 : *q(i,k,iqiso(ixt,iq_vap))/q_follow(i,k,iq_vap) 170 ! et on la retranche à la vapeur en k 171 q(i,k,iqiso(ixt,iq_vap))=q(i,k,iqiso(ixt,iq_vap)) 172 : -zx_defau_diag(i,k,iq_liq) 173 : *q(i,k,iqiso(ixt,iq_vap))/q_follow(i,k,iq_vap) 174 enddo !do ixt=1,niso 175 q_follow(i,k,iq_liq)= q_follow(i,k,iq_liq) 176 : +zx_defau_diag(i,k,iq_liq) 177 q_follow(i,k,iq_vap)= q_follow(i,k,iq_vap) 178 : -zx_defau_diag(i,k,iq_liq) 179 endif !if (zx_defau_diag(i,k,iq_vap).gt.0.0) then 180 enddo !DO i = 1, ip1jmp1 181 enddo !do k=2,llm 182 183 if (ok_iso_verif) then 184 call check_isotopes_seq(q,ip1jmp1,'qminimum 197') 185 endif !if (ok_iso_verif) then 186 187 endif !if (ok_isotopes) then 188 !write(*,*) 'qminimum 188' 189 85 190 c 86 191 RETURN
Note: See TracChangeset
for help on using the changeset viewer.