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

Annotation of /trunk/dyn3d/advxp.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 76 - (hide annotations)
Fri Nov 15 18:45:49 2013 UTC (10 years, 7 months ago) by guez
File size: 17567 byte(s)
Moved everything out of libf.
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 guez 66 use disvert_m
10 guez 3 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