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