/[lmdze]/trunk/libf/dyn3d/advxp.f
ViewVC logotype

Contents of /trunk/libf/dyn3d/advxp.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show annotations)
Tue Apr 6 17:52:58 2010 UTC (14 years, 1 month ago) by guez
File size: 17565 byte(s)
Split "stringop.f90" into single-procedure files. Gathered files in directory
"IOIPSL/Stringop".

Split "flincom.f90" into "flincom.f90" and "flinget.f90". Removed
unused procedures from module "flincom". Removed unused argument
"filename" of procedure "flinopen_nozoom".

Removed unused files.

Split "grid_change.f90" into "grid_change.f90" and
"gr_phy_write_3d.f90".

Removed unused procedures from modules "calendar", "ioipslmpp",
"grid_atob", "gath_cpl" and "getincom". Removed unused procedures in
files "ppm3d.f" and "thermcell.f".

Split "mathelp.f90" into "mathelp.f90" and "mathop.f90".

Removed unused variable "dpres" of module "comvert".

Use argument "itau" instead of local variables "iadvtr" and "first" to
control algorithm in procedure "fluxstokenc".

Removed unused arguments of procedure "integrd".

Removed useless computations at the end of procedure "leapfrog".

Merged common block "matrfil" into module "parafilt".

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

  ViewVC Help
Powered by ViewVC 1.1.21