Changeset 5246 for LMDZ6/trunk/libf/dyn3d_common/advz.f90
- Timestamp:
- Oct 21, 2024, 2:58:45 PM (23 hours ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/dyn3d_common/advz.f90
r5245 r5246 2 2 ! $Header$ 3 3 ! 4 SUBROUTINE advz(limit,dtz,w,sm,s0,sx,sy,sz) 5 IMPLICIT NONE 6 7 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 8 C C 9 C first-order moments (FOM) advection of tracer in Z direction C 10 C C 11 C Source : Pascal Simon (Meteo,CNRM) C 12 C Adaptation : A.Armengaud (LGGE) juin 94 C 13 C C 14 C C 15 C sont des arguments d'entree pour le s-pg... C 16 C C 17 C dq est l'argument de sortie pour le s-pg C 18 C C 19 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 20 C 21 C parametres principaux du modele 22 C 23 include "dimensions.h" 24 include "paramet.h" 25 26 C INCLUDE "traceur.h" 27 28 C Arguments : 29 C ----------- 30 C dtz : frequence fictive d'appel du transport 31 C w : flux de masse en z en Pa.m2.s-1 32 33 INTEGER ntra 34 PARAMETER (ntra = 1) 35 36 REAL dtz 37 REAL w ( iip1,jjp1,llm ) 38 39 C moments: SM total mass in each grid box 40 C S0 mass of tracer in each grid box 41 C Si 1rst order moment in i direction 42 C 43 REAL SM(iip1,jjp1,llm) 44 + ,S0(iip1,jjp1,llm,ntra) 45 REAL sx(iip1,jjp1,llm,ntra) 46 + ,sy(iip1,jjp1,llm,ntra) 47 + ,sz(iip1,jjp1,llm,ntra) 48 49 50 C Local : 51 C ------- 52 53 C mass fluxes across the boundaries (UGRI,VGRI,WGRI) 54 C mass fluxes in kg 55 C declaration : 56 57 REAL WGRI(iip1,jjp1,0:llm) 58 59 C 60 C the moments F are used as temporary storage for 61 C portions of grid boxes in transit at the current latitude 62 C 63 REAL FM(iim,llm) 64 REAL F0(iim,llm,ntra),FX(iim,llm,ntra) 65 REAL FY(iim,llm,ntra),FZ(iim,llm,ntra) 66 C 67 C work arrays 68 C 69 REAL ALF(iim),ALF1(iim),ALFQ(iim),ALF1Q(iim) 70 REAL TEMPTM ! Just temporal variable 71 REAL sqi,sqf 72 C 73 LOGICAL LIMIT 74 INTEGER lon,lat,niv 75 INTEGER i,j,jv,k,l,lp 76 77 lon = iim 78 lat = jjp1 79 niv = llm 80 81 C *** Test de passage d'arguments ****** 82 83 c DO 399 l = 1, llm 84 c DO 399 j = 1, jjp1 85 c DO 399 i = 1, iip1 86 c IF (S0(i,j,l,ntra) .lt. 0. ) THEN 87 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 88 c print*, 'sx(',i,j,l,')=',sx(i,j,l,ntra) 89 c print*, 'sy(',i,j,l,')=',sy(i,j,l,ntra) 90 c print*, 'sz(',i,j,l,')=',sz(i,j,l,ntra) 91 c PRINT*, 'AIE !! debut ADVZ - pbl arg. passage dans ADVZ' 92 c STOP 93 c ENDIF 94 399 CONTINUE 95 96 C----------------------------------------------------------------- 97 C *** Test : diag de la qqtite totale de traceur 98 C dans l'atmosphere avant l'advection en z 99 sqi = 0. 100 sqf = 0. 101 102 DO l = 1,llm 103 DO j = 1,jjp1 104 DO i = 1,iim 105 cIM 240305 sqi = sqi + S0(i,j,l,9) 106 sqi = sqi + S0(i,j,l,ntra) 107 ENDDO 108 ENDDO 109 ENDDO 110 PRINT*,'-------- DIAG DANS ADVZ - ENTREE ---------' 111 PRINT*,'sqi=',sqi 112 113 C----------------------------------------------------------------- 114 C Interface : adaptation nouveau modele 115 C ------------------------------------- 116 C 117 C Conversion du flux de masse en kg.s-1 118 119 DO 500 l = 1,llm 120 DO 500 j = 1,jjp1 121 DO 500 i = 1,iip1 122 c wgri (i,j,llm+1-l) = w (i,j,l) / g 123 wgri (i,j,llm+1-l) = w (i,j,l) 124 c wgri (i,j,0) = 0. ! a detruire ult. 125 c wgri (i,j,l) = 0.1 ! w (i,j,l) 126 c wgri (i,j,llm) = 0. ! a detruire ult. 127 500 CONTINUE 128 DO j = 1,jjp1 129 DO i = 1,iip1 130 wgri(i,j,0)=0. 131 enddo 132 enddo 133 134 C----------------------------------------------------------------- 135 136 C start here 137 C boucle sur les latitudes 138 C 139 DO 1 K=1,LAT 140 C 141 C place limits on appropriate moments before transport 142 C (if flux-limiting is to be applied) 143 C 144 IF(.NOT.LIMIT) GO TO 101 145 C 146 DO 10 JV=1,NTRA 147 DO 10 L=1,NIV 148 DO 100 I=1,LON 149 sz(I,K,L,JV)=SIGN(AMIN1(AMAX1(S0(I,K,L,JV),0.), 150 + ABS(sz(I,K,L,JV))),sz(I,K,L,JV)) 151 100 CONTINUE 152 10 CONTINUE 153 C 154 101 CONTINUE 155 C 156 C boucle sur les niveaux intercouches de 1 a NIV-1 157 C (flux nul au sommet L=0 et a la base L=NIV) 158 C 159 C calculate flux and moments between adjacent boxes 160 C (flux from LP to L if WGRI(L).lt.0, from L to LP if WGRI(L).gt.0) 161 C 1- create temporary moments/masses for partial boxes in transit 162 C 2- reajusts moments remaining in the box 163 C 164 DO 11 L=1,NIV-1 165 LP=L+1 166 C 167 DO 110 I=1,LON 168 C 169 IF(WGRI(I,K,L).LT.0.) THEN 170 FM(I,L)=-WGRI(I,K,L)*DTZ 171 ALF(I)=FM(I,L)/SM(I,K,LP) 172 SM(I,K,LP)=SM(I,K,LP)-FM(I,L) 173 ELSE 174 FM(I,L)=WGRI(I,K,L)*DTZ 175 ALF(I)=FM(I,L)/SM(I,K,L) 176 SM(I,K,L)=SM(I,K,L)-FM(I,L) 177 ENDIF 178 C 179 ALFQ (I)=ALF(I)*ALF(I) 180 ALF1 (I)=1.-ALF(I) 181 ALF1Q(I)=ALF1(I)*ALF1(I) 182 C 183 110 CONTINUE 184 C 185 DO 111 JV=1,NTRA 186 DO 1110 I=1,LON 187 C 188 IF(WGRI(I,K,L).LT.0.) THEN 189 C 190 F0(I,L,JV)=ALF (I)*( S0(I,K,LP,JV)-ALF1(I)*sz(I,K,LP,JV) ) 191 FZ(I,L,JV)=ALFQ(I)*sz(I,K,LP,JV) 192 FX(I,L,JV)=ALF (I)*sx(I,K,LP,JV) 193 FY(I,L,JV)=ALF (I)*sy(I,K,LP,JV) 194 C 195 S0(I,K,LP,JV)=S0(I,K,LP,JV)-F0(I,L,JV) 196 sz(I,K,LP,JV)=ALF1Q(I)*sz(I,K,LP,JV) 197 sx(I,K,LP,JV)=sx(I,K,LP,JV)-FX(I,L,JV) 198 sy(I,K,LP,JV)=sy(I,K,LP,JV)-FY(I,L,JV) 199 C 200 ELSE 201 C 202 F0(I,L,JV)=ALF (I)*(S0(I,K,L,JV)+ALF1(I)*sz(I,K,L,JV) ) 203 FZ(I,L,JV)=ALFQ(I)*sz(I,K,L,JV) 204 FX(I,L,JV)=ALF (I)*sx(I,K,L,JV) 205 FY(I,L,JV)=ALF (I)*sy(I,K,L,JV) 206 C 207 S0(I,K,L,JV)=S0(I,K,L,JV)-F0(I,L,JV) 208 sz(I,K,L,JV)=ALF1Q(I)*sz(I,K,L,JV) 209 sx(I,K,L,JV)=sx(I,K,L,JV)-FX(I,L,JV) 210 sy(I,K,L,JV)=sy(I,K,L,JV)-FY(I,L,JV) 211 C 212 ENDIF 213 C 214 1110 CONTINUE 215 111 CONTINUE 216 C 217 11 CONTINUE 218 C 219 C puts the temporary moments Fi into appropriate neighboring boxes 220 C 221 DO 12 L=1,NIV-1 222 LP=L+1 223 C 224 DO 120 I=1,LON 225 C 226 IF(WGRI(I,K,L).LT.0.) THEN 227 SM(I,K,L)=SM(I,K,L)+FM(I,L) 228 ALF(I)=FM(I,L)/SM(I,K,L) 229 ELSE 230 SM(I,K,LP)=SM(I,K,LP)+FM(I,L) 231 ALF(I)=FM(I,L)/SM(I,K,LP) 232 ENDIF 233 C 234 ALF1(I)=1.-ALF(I) 235 ALFQ(I)=ALF(I)*ALF(I) 236 ALF1Q(I)=ALF1(I)*ALF1(I) 237 C 238 120 CONTINUE 239 C 240 DO 121 JV=1,NTRA 241 DO 1210 I=1,LON 242 C 243 IF(WGRI(I,K,L).LT.0.) THEN 244 C 245 TEMPTM=-ALF(I)*S0(I,K,L,JV)+ALF1(I)*F0(I,L,JV) 246 S0(I,K,L,JV)=S0(I,K,L,JV)+F0(I,L,JV) 247 sz(I,K,L,JV)=ALF(I)*FZ(I,L,JV)+ALF1(I)*sz(I,K,L,JV)+3.*TEMPTM 248 sx(I,K,L,JV)=sx(I,K,L,JV)+FX(I,L,JV) 249 sy(I,K,L,JV)=sy(I,K,L,JV)+FY(I,L,JV) 250 C 251 ELSE 252 C 253 TEMPTM=ALF(I)*S0(I,K,LP,JV)-ALF1(I)*F0(I,L,JV) 254 S0(I,K,LP,JV)=S0(I,K,LP,JV)+F0(I,L,JV) 255 sz(I,K,LP,JV)=ALF(I)*FZ(I,L,JV)+ALF1(I)*sz(I,K,LP,JV) 256 + +3.*TEMPTM 257 sx(I,K,LP,JV)=sx(I,K,LP,JV)+FX(I,L,JV) 258 sy(I,K,LP,JV)=sy(I,K,LP,JV)+FY(I,L,JV) 259 C 260 ENDIF 261 C 262 1210 CONTINUE 263 121 CONTINUE 264 C 265 12 CONTINUE 266 C 267 C fin de la boucle principale sur les latitudes 268 C 269 1 CONTINUE 270 C 271 C------------------------------------------------------------- 272 C 273 C ----------- AA Test en fin de ADVX ------ Controle des S* 274 275 c DO 9999 l = 1, llm 276 c DO 9999 j = 1, jjp1 277 c DO 9999 i = 1, iip1 278 c IF (S0(i,j,l,ntra).lt.0..and.LIMIT) THEN 279 c PRINT*, '-------------------' 280 c PRINT*, 'En fin de ADVZ' 281 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 282 c print*, 'sx(',i,j,l,')=',sx(i,j,l,ntra) 283 c print*, 'sy(',i,j,l,')=',sy(i,j,l,ntra) 284 c print*, 'sz(',i,j,l,')=',sz(i,j,l,ntra) 285 c WRITE (*,*) 'On arrete !! - pbl en fin de ADVZ1' 286 c STOP 287 c ENDIF 288 9999 CONTINUE 289 290 C *** ------------------- bouclage cyclique en X ------------ 291 292 c DO l = 1,llm 293 c DO j = 1,jjp1 294 c SM(iip1,j,l) = SM(1,j,l) 295 c S0(iip1,j,l,ntra) = S0(1,j,l,ntra) 296 C sx(iip1,j,l,ntra) = sx(1,j,l,ntra) 297 c sy(iip1,j,l,ntra) = sy(1,j,l,ntra) 298 c sz(iip1,j,l,ntra) = sz(1,j,l,ntra) 299 c ENDDO 300 c ENDDO 301 302 C------------------------------------------------------------- 303 C *** Test : diag de la qqtite totale de traceur 304 C dans l'atmosphere avant l'advection en z 305 DO l = 1,llm 306 DO j = 1,jjp1 307 DO i = 1,iim 308 cIM 240305 sqf = sqf + S0(i,j,l,9) 309 sqf = sqf + S0(i,j,l,ntra) 310 ENDDO 311 ENDDO 312 ENDDO 313 PRINT*,'-------- DIAG DANS ADVZ - SORTIE ---------' 314 PRINT*,'sqf=', sqf 315 316 C------------------------------------------------------------- 317 RETURN 318 END 319 C_______________________________________________________________ 320 C_______________________________________________________________ 4 SUBROUTINE advz(limit,dtz,w,sm,s0,sx,sy,sz) 5 IMPLICIT NONE 6 7 !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 8 ! C 9 ! first-order moments (FOM) advection of tracer in Z direction C 10 ! C 11 ! Source : Pascal Simon (Meteo,CNRM) C 12 ! Adaptation : A.Armengaud (LGGE) juin 94 C 13 ! C 14 ! C 15 ! sont des arguments d'entree pour le s-pg... C 16 ! C 17 ! dq est l'argument de sortie pour le s-pg C 18 ! C 19 !CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC 20 ! 21 ! parametres principaux du modele 22 ! 23 include "dimensions.h" 24 include "paramet.h" 25 26 ! INCLUDE "traceur.h" 27 28 ! Arguments : 29 ! ----------- 30 ! dtz : frequence fictive d'appel du transport 31 ! w : flux de masse en z en Pa.m2.s-1 32 33 INTEGER :: ntra 34 PARAMETER (ntra = 1) 35 36 REAL :: dtz 37 REAL :: w ( iip1,jjp1,llm ) 38 39 ! moments: SM total mass in each grid box 40 ! S0 mass of tracer in each grid box 41 ! Si 1rst order moment in i direction 42 ! 43 REAL :: SM(iip1,jjp1,llm) & 44 ,S0(iip1,jjp1,llm,ntra) 45 REAL :: sx(iip1,jjp1,llm,ntra) & 46 ,sy(iip1,jjp1,llm,ntra) & 47 ,sz(iip1,jjp1,llm,ntra) 48 49 50 ! Local : 51 ! ------- 52 53 ! mass fluxes across the boundaries (UGRI,VGRI,WGRI) 54 ! mass fluxes in kg 55 ! declaration : 56 57 REAL :: WGRI(iip1,jjp1,0:llm) 58 59 ! 60 ! the moments F are used as temporary storage for 61 ! portions of grid boxes in transit at the current latitude 62 ! 63 REAL :: FM(iim,llm) 64 REAL :: F0(iim,llm,ntra),FX(iim,llm,ntra) 65 REAL :: FY(iim,llm,ntra),FZ(iim,llm,ntra) 66 ! 67 ! work arrays 68 ! 69 REAL :: ALF(iim),ALF1(iim),ALFQ(iim),ALF1Q(iim) 70 REAL :: TEMPTM ! Just temporal variable 71 REAL :: sqi,sqf 72 ! 73 LOGICAL :: LIMIT 74 INTEGER :: lon,lat,niv 75 INTEGER :: i,j,jv,k,l,lp 76 77 lon = iim 78 lat = jjp1 79 niv = llm 80 81 ! *** Test de passage d'arguments ****** 82 83 ! DO 399 l = 1, llm 84 ! DO 399 j = 1, jjp1 85 ! DO 399 i = 1, iip1 86 ! IF (S0(i,j,l,ntra) .lt. 0. ) THEN 87 ! PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 88 ! print*, 'sx(',i,j,l,')=',sx(i,j,l,ntra) 89 ! print*, 'sy(',i,j,l,')=',sy(i,j,l,ntra) 90 ! print*, 'sz(',i,j,l,')=',sz(i,j,l,ntra) 91 ! PRINT*, 'AIE !! debut ADVZ - pbl arg. passage dans ADVZ' 92 ! STOP 93 ! ENDIF 94 399 CONTINUE 95 96 !----------------------------------------------------------------- 97 ! *** Test : diag de la qqtite totale de traceur 98 ! dans l'atmosphere avant l'advection en z 99 sqi = 0. 100 sqf = 0. 101 102 DO l = 1,llm 103 DO j = 1,jjp1 104 DO i = 1,iim 105 !IM 240305 sqi = sqi + S0(i,j,l,9) 106 sqi = sqi + S0(i,j,l,ntra) 107 ENDDO 108 ENDDO 109 ENDDO 110 PRINT*,'-------- DIAG DANS ADVZ - ENTREE ---------' 111 PRINT*,'sqi=',sqi 112 113 !----------------------------------------------------------------- 114 ! Interface : adaptation nouveau modele 115 ! ------------------------------------- 116 ! 117 ! Conversion du flux de masse en kg.s-1 118 119 DO l = 1,llm 120 DO j = 1,jjp1 121 DO i = 1,iip1 122 ! wgri (i,j,llm+1-l) = w (i,j,l) / g 123 wgri (i,j,llm+1-l) = w (i,j,l) 124 ! wgri (i,j,0) = 0. ! a detruire ult. 125 ! wgri (i,j,l) = 0.1 ! w (i,j,l) 126 ! wgri (i,j,llm) = 0. ! a detruire ult. 127 END DO 128 END DO 129 END DO 130 DO j = 1,jjp1 131 DO i = 1,iip1 132 wgri(i,j,0)=0. 133 enddo 134 enddo 135 136 !----------------------------------------------------------------- 137 138 ! start here 139 ! boucle sur les latitudes 140 ! 141 DO K=1,LAT 142 ! 143 ! place limits on appropriate moments before transport 144 ! (if flux-limiting is to be applied) 145 ! 146 IF(.NOT.LIMIT) GO TO 101 147 ! 148 DO JV=1,NTRA 149 DO L=1,NIV 150 DO I=1,LON 151 sz(I,K,L,JV)=SIGN(AMIN1(AMAX1(S0(I,K,L,JV),0.), & 152 ABS(sz(I,K,L,JV))),sz(I,K,L,JV)) 153 END DO 154 END DO 155 END DO 156 ! 157 101 CONTINUE 158 ! 159 ! boucle sur les niveaux intercouches de 1 a NIV-1 160 ! (flux nul au sommet L=0 et a la base L=NIV) 161 ! 162 ! calculate flux and moments between adjacent boxes 163 ! (flux from LP to L if WGRI(L).lt.0, from L to LP if WGRI(L).gt.0) 164 ! 1- create temporary moments/masses for partial boxes in transit 165 ! 2- reajusts moments remaining in the box 166 ! 167 DO L=1,NIV-1 168 LP=L+1 169 ! 170 DO I=1,LON 171 ! 172 IF(WGRI(I,K,L).LT.0.) THEN 173 FM(I,L)=-WGRI(I,K,L)*DTZ 174 ALF(I)=FM(I,L)/SM(I,K,LP) 175 SM(I,K,LP)=SM(I,K,LP)-FM(I,L) 176 ELSE 177 FM(I,L)=WGRI(I,K,L)*DTZ 178 ALF(I)=FM(I,L)/SM(I,K,L) 179 SM(I,K,L)=SM(I,K,L)-FM(I,L) 180 ENDIF 181 ! 182 ALFQ (I)=ALF(I)*ALF(I) 183 ALF1 (I)=1.-ALF(I) 184 ALF1Q(I)=ALF1(I)*ALF1(I) 185 ! 186 END DO 187 ! 188 DO JV=1,NTRA 189 DO I=1,LON 190 ! 191 IF(WGRI(I,K,L).LT.0.) THEN 192 ! 193 F0(I,L,JV)=ALF (I)*( S0(I,K,LP,JV)-ALF1(I)*sz(I,K,LP,JV) ) 194 FZ(I,L,JV)=ALFQ(I)*sz(I,K,LP,JV) 195 FX(I,L,JV)=ALF (I)*sx(I,K,LP,JV) 196 FY(I,L,JV)=ALF (I)*sy(I,K,LP,JV) 197 ! 198 S0(I,K,LP,JV)=S0(I,K,LP,JV)-F0(I,L,JV) 199 sz(I,K,LP,JV)=ALF1Q(I)*sz(I,K,LP,JV) 200 sx(I,K,LP,JV)=sx(I,K,LP,JV)-FX(I,L,JV) 201 sy(I,K,LP,JV)=sy(I,K,LP,JV)-FY(I,L,JV) 202 ! 203 ELSE 204 ! 205 F0(I,L,JV)=ALF (I)*(S0(I,K,L,JV)+ALF1(I)*sz(I,K,L,JV) ) 206 FZ(I,L,JV)=ALFQ(I)*sz(I,K,L,JV) 207 FX(I,L,JV)=ALF (I)*sx(I,K,L,JV) 208 FY(I,L,JV)=ALF (I)*sy(I,K,L,JV) 209 ! 210 S0(I,K,L,JV)=S0(I,K,L,JV)-F0(I,L,JV) 211 sz(I,K,L,JV)=ALF1Q(I)*sz(I,K,L,JV) 212 sx(I,K,L,JV)=sx(I,K,L,JV)-FX(I,L,JV) 213 sy(I,K,L,JV)=sy(I,K,L,JV)-FY(I,L,JV) 214 ! 215 ENDIF 216 ! 217 END DO 218 END DO 219 ! 220 END DO 221 ! 222 ! puts the temporary moments Fi into appropriate neighboring boxes 223 ! 224 DO L=1,NIV-1 225 LP=L+1 226 ! 227 DO I=1,LON 228 ! 229 IF(WGRI(I,K,L).LT.0.) THEN 230 SM(I,K,L)=SM(I,K,L)+FM(I,L) 231 ALF(I)=FM(I,L)/SM(I,K,L) 232 ELSE 233 SM(I,K,LP)=SM(I,K,LP)+FM(I,L) 234 ALF(I)=FM(I,L)/SM(I,K,LP) 235 ENDIF 236 ! 237 ALF1(I)=1.-ALF(I) 238 ALFQ(I)=ALF(I)*ALF(I) 239 ALF1Q(I)=ALF1(I)*ALF1(I) 240 ! 241 END DO 242 ! 243 DO JV=1,NTRA 244 DO I=1,LON 245 ! 246 IF(WGRI(I,K,L).LT.0.) THEN 247 ! 248 TEMPTM=-ALF(I)*S0(I,K,L,JV)+ALF1(I)*F0(I,L,JV) 249 S0(I,K,L,JV)=S0(I,K,L,JV)+F0(I,L,JV) 250 sz(I,K,L,JV)=ALF(I)*FZ(I,L,JV)+ALF1(I)*sz(I,K,L,JV)+3.*TEMPTM 251 sx(I,K,L,JV)=sx(I,K,L,JV)+FX(I,L,JV) 252 sy(I,K,L,JV)=sy(I,K,L,JV)+FY(I,L,JV) 253 ! 254 ELSE 255 ! 256 TEMPTM=ALF(I)*S0(I,K,LP,JV)-ALF1(I)*F0(I,L,JV) 257 S0(I,K,LP,JV)=S0(I,K,LP,JV)+F0(I,L,JV) 258 sz(I,K,LP,JV)=ALF(I)*FZ(I,L,JV)+ALF1(I)*sz(I,K,LP,JV) & 259 +3.*TEMPTM 260 sx(I,K,LP,JV)=sx(I,K,LP,JV)+FX(I,L,JV) 261 sy(I,K,LP,JV)=sy(I,K,LP,JV)+FY(I,L,JV) 262 ! 263 ENDIF 264 ! 265 END DO 266 END DO 267 ! 268 END DO 269 ! 270 ! fin de la boucle principale sur les latitudes 271 ! 272 END DO 273 ! 274 !------------------------------------------------------------- 275 ! 276 ! ----------- AA Test en fin de ADVX ------ Controle des S* 277 278 ! DO 9999 l = 1, llm 279 ! DO 9999 j = 1, jjp1 280 ! DO 9999 i = 1, iip1 281 ! IF (S0(i,j,l,ntra).lt.0..and.LIMIT) THEN 282 ! PRINT*, '-------------------' 283 ! PRINT*, 'En fin de ADVZ' 284 ! PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra) 285 ! print*, 'sx(',i,j,l,')=',sx(i,j,l,ntra) 286 ! print*, 'sy(',i,j,l,')=',sy(i,j,l,ntra) 287 ! print*, 'sz(',i,j,l,')=',sz(i,j,l,ntra) 288 ! WRITE (*,*) 'On arrete !! - pbl en fin de ADVZ1' 289 ! STOP 290 ! ENDIF 291 9999 CONTINUE 292 293 ! *** ------------------- bouclage cyclique en X ------------ 294 295 ! DO l = 1,llm 296 ! DO j = 1,jjp1 297 ! SM(iip1,j,l) = SM(1,j,l) 298 ! S0(iip1,j,l,ntra) = S0(1,j,l,ntra) 299 ! sx(iip1,j,l,ntra) = sx(1,j,l,ntra) 300 ! sy(iip1,j,l,ntra) = sy(1,j,l,ntra) 301 ! sz(iip1,j,l,ntra) = sz(1,j,l,ntra) 302 ! ENDDO 303 ! ENDDO 304 305 !------------------------------------------------------------- 306 ! *** Test : diag de la qqtite totale de traceur 307 ! dans l'atmosphere avant l'advection en z 308 DO l = 1,llm 309 DO j = 1,jjp1 310 DO i = 1,iim 311 !IM 240305 sqf = sqf + S0(i,j,l,9) 312 sqf = sqf + S0(i,j,l,ntra) 313 ENDDO 314 ENDDO 315 ENDDO 316 PRINT*,'-------- DIAG DANS ADVZ - SORTIE ---------' 317 PRINT*,'sqf=', sqf 318 319 !------------------------------------------------------------- 320 RETURN 321 END SUBROUTINE advz 322 !_______________________________________________________________ 323 !_______________________________________________________________
Note: See TracChangeset
for help on using the changeset viewer.