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