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

Annotation of /trunk/dyn3d/advxp.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (hide annotations)
Tue Apr 6 17:52:58 2010 UTC (14 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/advxp.f
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 guez 3 !
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 guez 31 REAL, intent(in):: pbaru ( iip1,jjp1,llm )
27 guez 3 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