GCC Code Coverage Report


Directory: ./
File: dyn3d_common/advxp.f
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 352 0.0%
Branches: 0 134 0.0%

Line Branch Exec Source
1 !
2 ! $Header$
3 !
4 SUBROUTINE ADVXP(LIMIT,DTX,PBARU,SM,S0,SSX,SY,SZ
5 . ,SSXX,SSXY,SSXZ,SYY,SYZ,SZZ,ntra)
6 IMPLICIT NONE
7 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
8 C C
9 C second-order moments (SOM) advection of tracer in X direction C
10 C C
11 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
12 C
13 C parametres principaux du modele
14 C
15 include "dimensions.h"
16 include "paramet.h"
17
18 INTEGER ntra
19 c PARAMETER (ntra = 1)
20 C
21 C definition de la grille du modele
22 C
23 REAL dtx
24 REAL pbaru ( iip1,jjp1,llm )
25 C
26 C moments: SM total mass in each grid box
27 C S0 mass of tracer in each grid box
28 C Si 1rst order moment in i direction
29 C Sij 2nd order moment in i and j directions
30 C
31 REAL SM(iip1,jjp1,llm)
32 + ,S0(iip1,jjp1,llm,ntra)
33 REAL SSX(iip1,jjp1,llm,ntra)
34 + ,SY(iip1,jjp1,llm,ntra)
35 + ,SZ(iip1,jjp1,llm,ntra)
36 REAL SSXX(iip1,jjp1,llm,ntra)
37 + ,SSXY(iip1,jjp1,llm,ntra)
38 + ,SSXZ(iip1,jjp1,llm,ntra)
39 + ,SYY(iip1,jjp1,llm,ntra)
40 + ,SYZ(iip1,jjp1,llm,ntra)
41 + ,SZZ(iip1,jjp1,llm,ntra)
42
43 C Local :
44 C -------
45
46 C mass fluxes across the boundaries (UGRI,VGRI,WGRI)
47 C mass fluxes in kg
48 C declaration :
49
50 REAL UGRI(iip1,jjp1,llm)
51
52 C Rem : VGRI et WGRI ne sont pas utilises dans
53 C cette subroutine ( advection en x uniquement )
54 C
55 C
56 C Tij are the moments for the current latitude and level
57 C
58 REAL TM (iim)
59 REAL T0 (iim,NTRA),TX (iim,NTRA)
60 REAL TY (iim,NTRA),TZ (iim,NTRA)
61 REAL TXX(iim,NTRA),TXY(iim,NTRA)
62 REAL TXZ(iim,NTRA),TYY(iim,NTRA)
63 REAL TYZ(iim,NTRA),TZZ(iim,NTRA)
64 C
65 C the moments F are similarly defined and used as temporary
66 C storage for portions of the grid boxes in transit
67 C
68 REAL FM (iim)
69 REAL F0 (iim,NTRA),FX (iim,NTRA)
70 REAL FY (iim,NTRA),FZ (iim,NTRA)
71 REAL FXX(iim,NTRA),FXY(iim,NTRA)
72 REAL FXZ(iim,NTRA),FYY(iim,NTRA)
73 REAL FYZ(iim,NTRA),FZZ(iim,NTRA)
74 C
75 C work arrays
76 C
77 REAL ALF (iim),ALF1(iim),ALFQ(iim),ALF1Q(iim)
78 REAL ALF2(iim),ALF3(iim),ALF4(iim)
79 C
80 REAL SMNEW(iim),UEXT(iim)
81 REAL sqi,sqf
82 REAL TEMPTM
83 REAL SLPMAX
84 REAL S1MAX,S1NEW,S2NEW
85
86 LOGICAL LIMIT
87 INTEGER NUM(jjp1),LONK,NUMK
88 INTEGER lon,lati,latf,niv
89 INTEGER i,i2,i3,j,jv,l,k,iter
90
91 lon = iim
92 lati=2
93 latf = jjm
94 niv = llm
95
96 C *** Test de passage d'arguments ******
97
98 c DO 399 l = 1, llm
99 c DO 399 j = 1, jjp1
100 c DO 399 i = 1, iip1
101 c IF (S0(i,j,l,ntra) .lt. 0. ) THEN
102 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra)
103 c print*, 'SSX(',i,j,l,')=',SSX(i,j,l,ntra)
104 c print*, 'SY(',i,j,l,')=',SY(i,j,l,ntra)
105 c print*, 'SZ(',i,j,l,')=',SZ(i,j,l,ntra)
106 c PRINT*, 'AIE !! debut ADVXP - pbl arg. passage dans ADVXP'
107 cc STOP
108 c ENDIF
109 c 399 CONTINUE
110
111 C *** Test : diagnostique de la qtite totale de traceur
112 C dans l'atmosphere avant l'advection
113 c
114 sqi =0.
115 sqf =0.
116 c
117 DO l = 1, llm
118 DO j = 1, jjp1
119 DO i = 1, iim
120 sqi = sqi + S0(i,j,l,ntra)
121 END DO
122 END DO
123 END DO
124 PRINT*,'------ DIAG DANS ADVX2 - ENTREE -----'
125 PRINT*,'sqi=',sqi
126 c test
127 c -------------------------------------
128 DO 300 j =1,jjp1
129 NUM(j) =1
130 300 CONTINUE
131 c DO l=1,llm
132 c NUM(2,l)=6
133 c NUM(3,l)=6
134 c NUM(jjm-1,l)=6
135 c NUM(jjm,l)=6
136 c ENDDO
137 c DO j=2,6
138 c NUM(j)=12
139 c ENDDO
140 c DO j=jjm-5,jjm-1
141 c NUM(j)=12
142 c ENDDO
143
144 C Interface : adaptation nouveau modele
145 C -------------------------------------
146 C
147 C ---------------------------------------------------------
148 C Conversion des flux de masses en kg/s
149 C pbaru est en N/s d'ou :
150 C ugri est en kg/s
151
152 DO 500 l = 1,llm
153 DO 500 j = 1,jjp1
154 DO 500 i = 1,iip1
155 ugri (i,j,llm+1-l) =pbaru (i,j,l)
156 500 CONTINUE
157
158 C ---------------------------------------------------------
159 C start here
160 C
161 C boucle principale sur les niveaux et les latitudes
162 C
163 DO 1 L=1,NIV
164 DO 1 K=lati,latf
165
166 C
167 C initialisation
168 C
169 C program assumes periodic boundaries in X
170 C
171 DO 10 I=2,LON
172 SMNEW(I)=SM(I,K,L)+(UGRI(I-1,K,L)-UGRI(I,K,L))*DTX
173 10 CONTINUE
174 SMNEW(1)=SM(1,K,L)+(UGRI(LON,K,L)-UGRI(1,K,L))*DTX
175 C
176 C modifications for extended polar zones
177 C
178 NUMK=NUM(K)
179 LONK=LON/NUMK
180 C
181 IF(NUMK.GT.1) THEN
182 C
183 DO 111 I=1,LON
184 TM(I)=0.
185 111 CONTINUE
186 DO 112 JV=1,NTRA
187 DO 1120 I=1,LON
188 T0 (I,JV)=0.
189 TX (I,JV)=0.
190 TY (I,JV)=0.
191 TZ (I,JV)=0.
192 TXX(I,JV)=0.
193 TXY(I,JV)=0.
194 TXZ(I,JV)=0.
195 TYY(I,JV)=0.
196 TYZ(I,JV)=0.
197 TZZ(I,JV)=0.
198 1120 CONTINUE
199 112 CONTINUE
200 C
201 DO 11 I2=1,NUMK
202 C
203 DO 113 I=1,LONK
204 I3=(I-1)*NUMK+I2
205 TM(I)=TM(I)+SM(I3,K,L)
206 ALF(I)=SM(I3,K,L)/TM(I)
207 ALF1(I)=1.-ALF(I)
208 ALFQ(I)=ALF(I)*ALF(I)
209 ALF1Q(I)=ALF1(I)*ALF1(I)
210 ALF2(I)=ALF1(I)-ALF(I)
211 ALF3(I)=ALF(I)*ALF1(I)
212 113 CONTINUE
213 C
214 DO 114 JV=1,NTRA
215 DO 1140 I=1,LONK
216 I3=(I-1)*NUMK+I2
217 TEMPTM=-ALF(I)*T0(I,JV)+ALF1(I)*S0(I3,K,L,JV)
218 T0 (I,JV)=T0(I,JV)+S0(I3,K,L,JV)
219 TXX(I,JV)=ALFQ(I)*SSXX(I3,K,L,JV)+ALF1Q(I)*TXX(I,JV)
220 + +5.*( ALF3(I)*(SSX(I3,K,L,JV)-TX(I,JV))+ALF2(I)*TEMPTM )
221 TX (I,JV)=ALF(I)*SSX(I3,K,L,JV)+ALF1(I)*TX(I,JV)+3.*TEMPTM
222 TXY(I,JV)=ALF (I)*SSXY(I3,K,L,JV)+ALF1(I)*TXY(I,JV)
223 + +3.*(ALF1(I)*SY (I3,K,L,JV)-ALF (I)*TY (I,JV))
224 TXZ(I,JV)=ALF (I)*SSXZ(I3,K,L,JV)+ALF1(I)*TXZ(I,JV)
225 + +3.*(ALF1(I)*SZ (I3,K,L,JV)-ALF (I)*TZ (I,JV))
226 TY (I,JV)=TY (I,JV)+SY (I3,K,L,JV)
227 TZ (I,JV)=TZ (I,JV)+SZ (I3,K,L,JV)
228 TYY(I,JV)=TYY(I,JV)+SYY(I3,K,L,JV)
229 TYZ(I,JV)=TYZ(I,JV)+SYZ(I3,K,L,JV)
230 TZZ(I,JV)=TZZ(I,JV)+SZZ(I3,K,L,JV)
231 1140 CONTINUE
232 114 CONTINUE
233 C
234 11 CONTINUE
235 C
236 ELSE
237 C
238 DO 115 I=1,LON
239 TM(I)=SM(I,K,L)
240 115 CONTINUE
241 DO 116 JV=1,NTRA
242 DO 1160 I=1,LON
243 T0 (I,JV)=S0 (I,K,L,JV)
244 TX (I,JV)=SSX (I,K,L,JV)
245 TY (I,JV)=SY (I,K,L,JV)
246 TZ (I,JV)=SZ (I,K,L,JV)
247 TXX(I,JV)=SSXX(I,K,L,JV)
248 TXY(I,JV)=SSXY(I,K,L,JV)
249 TXZ(I,JV)=SSXZ(I,K,L,JV)
250 TYY(I,JV)=SYY(I,K,L,JV)
251 TYZ(I,JV)=SYZ(I,K,L,JV)
252 TZZ(I,JV)=SZZ(I,K,L,JV)
253 1160 CONTINUE
254 116 CONTINUE
255 C
256 ENDIF
257 C
258 DO 117 I=1,LONK
259 UEXT(I)=UGRI(I*NUMK,K,L)
260 117 CONTINUE
261 C
262 C place limits on appropriate moments before transport
263 C (if flux-limiting is to be applied)
264 C
265 IF(.NOT.LIMIT) GO TO 13
266 C
267 DO 12 JV=1,NTRA
268 DO 120 I=1,LONK
269 IF(T0(I,JV).GT.0.) THEN
270 SLPMAX=T0(I,JV)
271 S1MAX=1.5*SLPMAX
272 S1NEW=AMIN1(S1MAX,AMAX1(-S1MAX,TX(I,JV)))
273 S2NEW=AMIN1( 2.*SLPMAX-ABS(S1NEW)/3. ,
274 + AMAX1(ABS(S1NEW)-SLPMAX,TXX(I,JV)) )
275 TX (I,JV)=S1NEW
276 TXX(I,JV)=S2NEW
277 TXY(I,JV)=AMIN1(SLPMAX,AMAX1(-SLPMAX,TXY(I,JV)))
278 TXZ(I,JV)=AMIN1(SLPMAX,AMAX1(-SLPMAX,TXZ(I,JV)))
279 ELSE
280 TX (I,JV)=0.
281 TXX(I,JV)=0.
282 TXY(I,JV)=0.
283 TXZ(I,JV)=0.
284 ENDIF
285 120 CONTINUE
286 12 CONTINUE
287 C
288 13 CONTINUE
289 C
290 C calculate flux and moments between adjacent boxes
291 C 1- create temporary moments/masses for partial boxes in transit
292 C 2- reajusts moments remaining in the box
293 C
294 C flux from IP to I if U(I).lt.0
295 C
296 DO 140 I=1,LONK-1
297 IF(UEXT(I).LT.0.) THEN
298 FM(I)=-UEXT(I)*DTX
299 ALF(I)=FM(I)/TM(I+1)
300 TM(I+1)=TM(I+1)-FM(I)
301 ENDIF
302 140 CONTINUE
303 C
304 I=LONK
305 IF(UEXT(I).LT.0.) THEN
306 FM(I)=-UEXT(I)*DTX
307 ALF(I)=FM(I)/TM(1)
308 TM(1)=TM(1)-FM(I)
309 ENDIF
310 C
311 C flux from I to IP if U(I).gt.0
312 C
313 DO 141 I=1,LONK
314 IF(UEXT(I).GE.0.) THEN
315 FM(I)=UEXT(I)*DTX
316 ALF(I)=FM(I)/TM(I)
317 TM(I)=TM(I)-FM(I)
318 ENDIF
319 141 CONTINUE
320 C
321 DO 142 I=1,LONK
322 ALFQ(I)=ALF(I)*ALF(I)
323 ALF1(I)=1.-ALF(I)
324 ALF1Q(I)=ALF1(I)*ALF1(I)
325 ALF2(I)=ALF1(I)-ALF(I)
326 ALF3(I)=ALF(I)*ALFQ(I)
327 ALF4(I)=ALF1(I)*ALF1Q(I)
328 142 CONTINUE
329 C
330 DO 150 JV=1,NTRA
331 DO 1500 I=1,LONK-1
332 C
333 IF(UEXT(I).LT.0.) THEN
334 C
335 F0 (I,JV)=ALF (I)* ( T0(I+1,JV)-ALF1(I)*
336 + ( TX(I+1,JV)-ALF2(I)*TXX(I+1,JV) ) )
337 FX (I,JV)=ALFQ(I)*(TX(I+1,JV)-3.*ALF1(I)*TXX(I+1,JV))
338 FXX(I,JV)=ALF3(I)*TXX(I+1,JV)
339 FY (I,JV)=ALF (I)*(TY(I+1,JV)-ALF1(I)*TXY(I+1,JV))
340 FZ (I,JV)=ALF (I)*(TZ(I+1,JV)-ALF1(I)*TXZ(I+1,JV))
341 FXY(I,JV)=ALFQ(I)*TXY(I+1,JV)
342 FXZ(I,JV)=ALFQ(I)*TXZ(I+1,JV)
343 FYY(I,JV)=ALF (I)*TYY(I+1,JV)
344 FYZ(I,JV)=ALF (I)*TYZ(I+1,JV)
345 FZZ(I,JV)=ALF (I)*TZZ(I+1,JV)
346 C
347 T0 (I+1,JV)=T0(I+1,JV)-F0(I,JV)
348 TX (I+1,JV)=ALF1Q(I)*(TX(I+1,JV)+3.*ALF(I)*TXX(I+1,JV))
349 TXX(I+1,JV)=ALF4(I)*TXX(I+1,JV)
350 TY (I+1,JV)=TY (I+1,JV)-FY (I,JV)
351 TZ (I+1,JV)=TZ (I+1,JV)-FZ (I,JV)
352 TYY(I+1,JV)=TYY(I+1,JV)-FYY(I,JV)
353 TYZ(I+1,JV)=TYZ(I+1,JV)-FYZ(I,JV)
354 TZZ(I+1,JV)=TZZ(I+1,JV)-FZZ(I,JV)
355 TXY(I+1,JV)=ALF1Q(I)*TXY(I+1,JV)
356 TXZ(I+1,JV)=ALF1Q(I)*TXZ(I+1,JV)
357 C
358 ENDIF
359 C
360 1500 CONTINUE
361 150 CONTINUE
362 C
363 I=LONK
364 IF(UEXT(I).LT.0.) THEN
365 C
366 DO 151 JV=1,NTRA
367 C
368 F0 (I,JV)=ALF (I)* ( T0(1,JV)-ALF1(I)*
369 + ( TX(1,JV)-ALF2(I)*TXX(1,JV) ) )
370 FX (I,JV)=ALFQ(I)*(TX(1,JV)-3.*ALF1(I)*TXX(1,JV))
371 FXX(I,JV)=ALF3(I)*TXX(1,JV)
372 FY (I,JV)=ALF (I)*(TY(1,JV)-ALF1(I)*TXY(1,JV))
373 FZ (I,JV)=ALF (I)*(TZ(1,JV)-ALF1(I)*TXZ(1,JV))
374 FXY(I,JV)=ALFQ(I)*TXY(1,JV)
375 FXZ(I,JV)=ALFQ(I)*TXZ(1,JV)
376 FYY(I,JV)=ALF (I)*TYY(1,JV)
377 FYZ(I,JV)=ALF (I)*TYZ(1,JV)
378 FZZ(I,JV)=ALF (I)*TZZ(1,JV)
379 C
380 T0 (1,JV)=T0(1,JV)-F0(I,JV)
381 TX (1,JV)=ALF1Q(I)*(TX(1,JV)+3.*ALF(I)*TXX(1,JV))
382 TXX(1,JV)=ALF4(I)*TXX(1,JV)
383 TY (1,JV)=TY (1,JV)-FY (I,JV)
384 TZ (1,JV)=TZ (1,JV)-FZ (I,JV)
385 TYY(1,JV)=TYY(1,JV)-FYY(I,JV)
386 TYZ(1,JV)=TYZ(1,JV)-FYZ(I,JV)
387 TZZ(1,JV)=TZZ(1,JV)-FZZ(I,JV)
388 TXY(1,JV)=ALF1Q(I)*TXY(1,JV)
389 TXZ(1,JV)=ALF1Q(I)*TXZ(1,JV)
390 C
391 151 CONTINUE
392 C
393 ENDIF
394 C
395 DO 152 JV=1,NTRA
396 DO 1520 I=1,LONK
397 C
398 IF(UEXT(I).GE.0.) THEN
399 C
400 F0 (I,JV)=ALF (I)* ( T0(I,JV)+ALF1(I)*
401 + ( TX(I,JV)+ALF2(I)*TXX(I,JV) ) )
402 FX (I,JV)=ALFQ(I)*(TX(I,JV)+3.*ALF1(I)*TXX(I,JV))
403 FXX(I,JV)=ALF3(I)*TXX(I,JV)
404 FY (I,JV)=ALF (I)*(TY(I,JV)+ALF1(I)*TXY(I,JV))
405 FZ (I,JV)=ALF (I)*(TZ(I,JV)+ALF1(I)*TXZ(I,JV))
406 FXY(I,JV)=ALFQ(I)*TXY(I,JV)
407 FXZ(I,JV)=ALFQ(I)*TXZ(I,JV)
408 FYY(I,JV)=ALF (I)*TYY(I,JV)
409 FYZ(I,JV)=ALF (I)*TYZ(I,JV)
410 FZZ(I,JV)=ALF (I)*TZZ(I,JV)
411 C
412 T0 (I,JV)=T0(I,JV)-F0(I,JV)
413 TX (I,JV)=ALF1Q(I)*(TX(I,JV)-3.*ALF(I)*TXX(I,JV))
414 TXX(I,JV)=ALF4(I)*TXX(I,JV)
415 TY (I,JV)=TY (I,JV)-FY (I,JV)
416 TZ (I,JV)=TZ (I,JV)-FZ (I,JV)
417 TYY(I,JV)=TYY(I,JV)-FYY(I,JV)
418 TYZ(I,JV)=TYZ(I,JV)-FYZ(I,JV)
419 TZZ(I,JV)=TZZ(I,JV)-FZZ(I,JV)
420 TXY(I,JV)=ALF1Q(I)*TXY(I,JV)
421 TXZ(I,JV)=ALF1Q(I)*TXZ(I,JV)
422 C
423 ENDIF
424 C
425 1520 CONTINUE
426 152 CONTINUE
427 C
428 C puts the temporary moments Fi into appropriate neighboring boxes
429 C
430 DO 160 I=1,LONK
431 IF(UEXT(I).LT.0.) THEN
432 TM(I)=TM(I)+FM(I)
433 ALF(I)=FM(I)/TM(I)
434 ENDIF
435 160 CONTINUE
436 C
437 DO 161 I=1,LONK-1
438 IF(UEXT(I).GE.0.) THEN
439 TM(I+1)=TM(I+1)+FM(I)
440 ALF(I)=FM(I)/TM(I+1)
441 ENDIF
442 161 CONTINUE
443 C
444 I=LONK
445 IF(UEXT(I).GE.0.) THEN
446 TM(1)=TM(1)+FM(I)
447 ALF(I)=FM(I)/TM(1)
448 ENDIF
449 C
450 DO 162 I=1,LONK
451 ALF1(I)=1.-ALF(I)
452 ALFQ(I)=ALF(I)*ALF(I)
453 ALF1Q(I)=ALF1(I)*ALF1(I)
454 ALF2(I)=ALF1(I)-ALF(I)
455 ALF3(I)=ALF(I)*ALF1(I)
456 162 CONTINUE
457 C
458 DO 170 JV=1,NTRA
459 DO 1700 I=1,LONK
460 C
461 IF(UEXT(I).LT.0.) THEN
462 C
463 TEMPTM=-ALF(I)*T0(I,JV)+ALF1(I)*F0(I,JV)
464 T0 (I,JV)=T0(I,JV)+F0(I,JV)
465 TXX(I,JV)=ALFQ(I)*FXX(I,JV)+ALF1Q(I)*TXX(I,JV)
466 + +5.*( ALF3(I)*(FX(I,JV)-TX(I,JV))+ALF2(I)*TEMPTM )
467 TX (I,JV)=ALF (I)*FX (I,JV)+ALF1(I)*TX (I,JV)+3.*TEMPTM
468 TXY(I,JV)=ALF (I)*FXY(I,JV)+ALF1(I)*TXY(I,JV)
469 + +3.*(ALF1(I)*FY (I,JV)-ALF (I)*TY (I,JV))
470 TXZ(I,JV)=ALF (I)*FXZ(I,JV)+ALF1(I)*TXZ(I,JV)
471 + +3.*(ALF1(I)*FZ (I,JV)-ALF (I)*TZ (I,JV))
472 TY (I,JV)=TY (I,JV)+FY (I,JV)
473 TZ (I,JV)=TZ (I,JV)+FZ (I,JV)
474 TYY(I,JV)=TYY(I,JV)+FYY(I,JV)
475 TYZ(I,JV)=TYZ(I,JV)+FYZ(I,JV)
476 TZZ(I,JV)=TZZ(I,JV)+FZZ(I,JV)
477 C
478 ENDIF
479 C
480 1700 CONTINUE
481 170 CONTINUE
482 C
483 DO 171 JV=1,NTRA
484 DO 1710 I=1,LONK-1
485 C
486 IF(UEXT(I).GE.0.) THEN
487 C
488 TEMPTM=ALF(I)*T0(I+1,JV)-ALF1(I)*F0(I,JV)
489 T0 (I+1,JV)=T0(I+1,JV)+F0(I,JV)
490 TXX(I+1,JV)=ALFQ(I)*FXX(I,JV)+ALF1Q(I)*TXX(I+1,JV)
491 + +5.*( ALF3(I)*(TX(I+1,JV)-FX(I,JV))-ALF2(I)*TEMPTM )
492 TX (I+1,JV)=ALF(I)*FX (I ,JV)+ALF1(I)*TX (I+1,JV)+3.*TEMPTM
493 TXY(I+1,JV)=ALF(I)*FXY(I ,JV)+ALF1(I)*TXY(I+1,JV)
494 + +3.*(ALF(I)*TY (I+1,JV)-ALF1(I)*FY (I ,JV))
495 TXZ(I+1,JV)=ALF(I)*FXZ(I ,JV)+ALF1(I)*TXZ(I+1,JV)
496 + +3.*(ALF(I)*TZ (I+1,JV)-ALF1(I)*FZ (I ,JV))
497 TY (I+1,JV)=TY (I+1,JV)+FY (I,JV)
498 TZ (I+1,JV)=TZ (I+1,JV)+FZ (I,JV)
499 TYY(I+1,JV)=TYY(I+1,JV)+FYY(I,JV)
500 TYZ(I+1,JV)=TYZ(I+1,JV)+FYZ(I,JV)
501 TZZ(I+1,JV)=TZZ(I+1,JV)+FZZ(I,JV)
502 C
503 ENDIF
504 C
505 1710 CONTINUE
506 171 CONTINUE
507 C
508 I=LONK
509 IF(UEXT(I).GE.0.) THEN
510 DO 172 JV=1,NTRA
511 TEMPTM=ALF(I)*T0(1,JV)-ALF1(I)*F0(I,JV)
512 T0 (1,JV)=T0(1,JV)+F0(I,JV)
513 TXX(1,JV)=ALFQ(I)*FXX(I,JV)+ALF1Q(I)*TXX(1,JV)
514 + +5.*( ALF3(I)*(TX(1,JV)-FX(I,JV))-ALF2(I)*TEMPTM )
515 TX (1,JV)=ALF(I)*FX(I,JV)+ALF1(I)*TX(1,JV)+3.*TEMPTM
516 TXY(1,JV)=ALF(I)*FXY(I,JV)+ALF1(I)*TXY(1,JV)
517 + +3.*(ALF(I)*TY (1,JV)-ALF1(I)*FY (I,JV))
518 TXZ(1,JV)=ALF(I)*FXZ(I,JV)+ALF1(I)*TXZ(1,JV)
519 + +3.*(ALF(I)*TZ (1,JV)-ALF1(I)*FZ (I,JV))
520 TY (1,JV)=TY (1,JV)+FY (I,JV)
521 TZ (1,JV)=TZ (1,JV)+FZ (I,JV)
522 TYY(1,JV)=TYY(1,JV)+FYY(I,JV)
523 TYZ(1,JV)=TYZ(1,JV)+FYZ(I,JV)
524 TZZ(1,JV)=TZZ(1,JV)+FZZ(I,JV)
525 172 CONTINUE
526 ENDIF
527 C
528 C retour aux mailles d'origine (passage des Tij aux Sij)
529 C
530 IF(NUMK.GT.1) THEN
531 C
532 DO 18 I2=1,NUMK
533 C
534 DO 180 I=1,LONK
535 C
536 I3=I2+(I-1)*NUMK
537 SM(I3,K,L)=SMNEW(I3)
538 ALF(I)=SMNEW(I3)/TM(I)
539 TM(I)=TM(I)-SMNEW(I3)
540 C
541 ALFQ(I)=ALF(I)*ALF(I)
542 ALF1(I)=1.-ALF(I)
543 ALF1Q(I)=ALF1(I)*ALF1(I)
544 ALF2(I)=ALF1(I)-ALF(I)
545 ALF3(I)=ALF(I)*ALFQ(I)
546 ALF4(I)=ALF1(I)*ALF1Q(I)
547 C
548 180 CONTINUE
549 C
550 DO 181 JV=1,NTRA
551 DO 181 I=1,LONK
552 C
553 I3=I2+(I-1)*NUMK
554 S0 (I3,K,L,JV)=ALF (I)* ( T0(I,JV)-ALF1(I)*
555 + ( TX(I,JV)-ALF2(I)*TXX(I,JV) ) )
556 SSX (I3,K,L,JV)=ALFQ(I)*(TX(I,JV)-3.*ALF1(I)*TXX(I,JV))
557 SSXX(I3,K,L,JV)=ALF3(I)*TXX(I,JV)
558 SY (I3,K,L,JV)=ALF (I)*(TY(I,JV)-ALF1(I)*TXY(I,JV))
559 SZ (I3,K,L,JV)=ALF (I)*(TZ(I,JV)-ALF1(I)*TXZ(I,JV))
560 SSXY(I3,K,L,JV)=ALFQ(I)*TXY(I,JV)
561 SSXZ(I3,K,L,JV)=ALFQ(I)*TXZ(I,JV)
562 SYY(I3,K,L,JV)=ALF (I)*TYY(I,JV)
563 SYZ(I3,K,L,JV)=ALF (I)*TYZ(I,JV)
564 SZZ(I3,K,L,JV)=ALF (I)*TZZ(I,JV)
565 C
566 C reajusts moments remaining in the box
567 C
568 T0 (I,JV)=T0(I,JV)-S0(I3,K,L,JV)
569 TX (I,JV)=ALF1Q(I)*(TX(I,JV)+3.*ALF(I)*TXX(I,JV))
570 TXX(I,JV)=ALF4 (I)*TXX(I,JV)
571 TY (I,JV)=TY (I,JV)-SY (I3,K,L,JV)
572 TZ (I,JV)=TZ (I,JV)-SZ (I3,K,L,JV)
573 TYY(I,JV)=TYY(I,JV)-SYY(I3,K,L,JV)
574 TYZ(I,JV)=TYZ(I,JV)-SYZ(I3,K,L,JV)
575 TZZ(I,JV)=TZZ(I,JV)-SZZ(I3,K,L,JV)
576 TXY(I,JV)=ALF1Q(I)*TXY(I,JV)
577 TXZ(I,JV)=ALF1Q(I)*TXZ(I,JV)
578 C
579 181 CONTINUE
580 C
581 18 CONTINUE
582 C
583 ELSE
584 C
585 DO 190 I=1,LON
586 SM(I,K,L)=TM(I)
587 190 CONTINUE
588 DO 191 JV=1,NTRA
589 DO 1910 I=1,LON
590 S0 (I,K,L,JV)=T0 (I,JV)
591 SSX (I,K,L,JV)=TX (I,JV)
592 SY (I,K,L,JV)=TY (I,JV)
593 SZ (I,K,L,JV)=TZ (I,JV)
594 SSXX(I,K,L,JV)=TXX(I,JV)
595 SSXY(I,K,L,JV)=TXY(I,JV)
596 SSXZ(I,K,L,JV)=TXZ(I,JV)
597 SYY(I,K,L,JV)=TYY(I,JV)
598 SYZ(I,K,L,JV)=TYZ(I,JV)
599 SZZ(I,K,L,JV)=TZZ(I,JV)
600 1910 CONTINUE
601 191 CONTINUE
602 C
603 ENDIF
604 C
605 1 CONTINUE
606 C
607 C ----------- AA Test en fin de ADVX ------ Controle des S*
608
609 c DO 9999 l = 1, llm
610 c DO 9999 j = 1, jjp1
611 c DO 9999 i = 1, iip1
612 c IF (S0(i,j,l,ntra).lt.0..and.LIMIT) THEN
613 c PRINT*, '-------------------'
614 c PRINT*, 'En fin de ADVXP'
615 c PRINT*,'S0(',i,j,l,')=',S0(i,j,l,ntra)
616 c print*, 'SSX(',i,j,l,')=',SSX(i,j,l,ntra)
617 c print*, 'SY(',i,j,l,')=',SY(i,j,l,ntra)
618 c print*, 'SZ(',i,j,l,')=',SZ(i,j,l,ntra)
619 c WRITE (*,*) 'On arrete !! - pbl en fin de ADVXP'
620 c STOP
621 c ENDIF
622 c 9999 CONTINUE
623 c ---------- bouclage cyclique
624
625 DO l = 1,llm
626 DO j = 1,jjp1
627 SM(iip1,j,l) = SM(1,j,l)
628 S0(iip1,j,l,ntra) = S0(1,j,l,ntra)
629 SSX(iip1,j,l,ntra) = SSX(1,j,l,ntra)
630 SY(iip1,j,l,ntra) = SY(1,j,l,ntra)
631 SZ(iip1,j,l,ntra) = SZ(1,j,l,ntra)
632 END DO
633 END DO
634
635 C ----------- qqtite totale de traceur dans tte l'atmosphere
636 DO l = 1, llm
637 DO j = 1, jjp1
638 DO i = 1, iim
639 sqf = sqf + S0(i,j,l,ntra)
640 END DO
641 END DO
642 END DO
643
644 PRINT*,'------ DIAG DANS ADVX2 - SORTIE -----'
645 PRINT*,'sqf=',sqf
646 c-------------------------------------------------------------
647 RETURN
648 END
649