Go to the documentation of this file.
4 SUBROUTINE advx(limit,dtx,pbaru,sm,s0,
25 #include "dimensions.h"
42 REAL pbaru ( iip1,
jjp1,llm )
48 REAL sm(iip1,
jjp1,llm),s0(iip1,
jjp1,llm,ntra)
49 REAL sx(iip1,
jjp1,llm,ntra)
50 $ ,sy(iip1,
jjp1,llm,ntra)
51 REAL sz(iip1,
jjp1,llm,ntra)
60 REAL ugri(iip1,
jjp1,llm)
69 REAL ty(
iim,ntra),tz(
iim,ntra)
88 INTEGER num(
jjp1),lonk,numk
89 INTEGER lon,lati,latf,niv
90 INTEGER i,i2,i3,
j,jv,
l,
k,itrac
109 sqi = sqi + s0(
i,
j,
l,ntra)
113 print*,
'-------- DIAG DANS ADVX - ENTREE ---------'
129 ugri(
i,
j,llm+1-
l) = pbaru(
i,
j,
l)
149 smnew(
i)=sm(
i,
k,
l)+(ugri(
i-1,
k,
l)-ugri(
i,
k,
l))*dtx
151 smnew(1)=sm(1,
k,
l)+(ugri(
lon,
k,
l)-ugri(1,
k,
l))*dtx
176 tm(
i)=tm(
i)+sm(i3,
k,
l)
177 alf(
i)=sm(i3,
k,
l)/tm(
i)
184 temptm=-alf(
i)*
t0(
i,jv)+alf1(
i)
187 tx(
i,jv)=alf(
i) *sx(i3,
k,
l,jv)+
188 $ alf1(
i)*tx(
i,jv) +3.*temptm
189 ty(
i,jv)=ty(
i,jv)+sy(i3,
k,
l,jv)
190 tz(
i,jv)=tz(
i,jv)+sz(i3,
k,
l,jv)
204 tx(
i,jv)=sx(
i,
k,
l,jv)
205 ty(
i,jv)=sy(
i,
k,
l,jv)
206 tz(
i,jv)=sz(
i,
k,
l,jv)
213 uext(
i)=ugri(
i*numk,
k,
l)
219 IF(.NOT.limit) go to 13
223 tx(
i,jv)=sign(amin1(amax1(
t0(
i,jv),0.),abs(tx(
i,jv))),tx(
i,jv))
236 IF(uext(
i).LT.0.)
THEN
239 tm(
i+1)=tm(
i+1)-fm(
i)
244 IF(uext(
i).LT.0.)
THEN
253 IF(uext(
i).GE.0.)
THEN
261 alfq(
i)=alf(
i)*alf(
i)
263 alf1q(
i)=alf1(
i)*alf1(
i)
269 IF(uext(
i).LT.0.)
THEN
271 f0(
i,jv)=alf(
i)* (
t0(
i+1,jv)-alf1(
i)*tx(
i+1,jv) )
272 fx(
i,jv)=alfq(
i)*tx(
i+1,jv)
273 fy(
i,jv)=alf(
i)*ty(
i+1,jv)
274 fz(
i,jv)=alf(
i)*tz(
i+1,jv)
277 tx(
i+1,jv)=alf1q(
i)*tx(
i+1,jv)
278 ty(
i+1,jv)=ty(
i+1,jv)-
fy(
i,jv)
279 tz(
i+1,jv)=tz(
i+1,jv)-fz(
i,jv)
287 IF(uext(
i).LT.0.)
THEN
291 f0(
i,jv)=alf(
i)* (
t0(1,jv)-alf1(
i)*tx(1,jv) )
292 fx(
i,jv)=alfq(
i)*tx(1,jv)
293 fy(
i,jv)=alf(
i)*ty(1,jv)
294 fz(
i,jv)=alf(
i)*tz(1,jv)
296 t0(1,jv)=
t0(1,jv)-f0(
i,jv)
297 tx(1,jv)=alf1q(
i)*tx(1,jv)
298 ty(1,jv)=ty(1,jv)-
fy(
i,jv)
299 tz(1,jv)=tz(1,jv)-fz(
i,jv)
308 IF(uext(
i).GE.0.)
THEN
310 f0(
i,jv)=alf(
i)* (
t0(
i,jv)+alf1(
i)*tx(
i,jv) )
311 fx(
i,jv)=alfq(
i)*tx(
i,jv)
312 fy(
i,jv)=alf(
i)*ty(
i,jv)
313 fz(
i,jv)=alf(
i)*tz(
i,jv)
316 tx(
i,jv)=alf1q(
i)*tx(
i,jv)
317 ty(
i,jv)=ty(
i,jv)-
fy(
i,jv)
318 tz(
i,jv)=tz(
i,jv)-fz(
i,jv)
328 IF(uext(
i).LT.0.)
THEN
335 IF(uext(
i).GE.0.)
THEN
336 tm(
i+1)=tm(
i+1)+fm(
i)
342 IF(uext(
i).GE.0.)
THEN
354 IF(uext(
i).LT.0.)
THEN
356 temptm=-alf(
i)*
t0(
i,jv)+alf1(
i)*f0(
i,jv)
358 tx(
i,jv)=alf(
i)*
fx(
i,jv)+alf1(
i)*tx(
i,jv)+3.*temptm
359 ty(
i,jv)=ty(
i,jv)+
fy(
i,jv)
360 tz(
i,jv)=tz(
i,jv)+fz(
i,jv)
370 IF(uext(
i).GE.0.)
THEN
372 temptm=alf(
i)*
t0(
i+1,jv)-alf1(
i)*f0(
i,jv)
374 tx(
i+1,jv)=alf(
i)*
fx(
i,jv)+alf1(
i)*tx(
i+1,jv)+3.*temptm
375 ty(
i+1,jv)=ty(
i+1,jv)+
fy(
i,jv)
376 tz(
i+1,jv)=tz(
i+1,jv)+fz(
i,jv)
384 IF(uext(
i).GE.0.)
THEN
386 temptm=alf(
i)*
t0(1,jv)-alf1(
i)*f0(
i,jv)
387 t0(1,jv)=
t0(1,jv)+f0(
i,jv)
388 tx(1,jv)=alf(
i)*
fx(
i,jv)+alf1(
i)*tx(1,jv)+3.*temptm
389 ty(1,jv)=ty(1,jv)+
fy(
i,jv)
390 tz(1,jv)=tz(1,jv)+fz(
i,jv)
404 alf(
i)=smnew(i3)/tm(
i)
405 tm(
i)=tm(
i)-smnew(i3)
407 alfq(
i)=alf(
i)*alf(
i)
409 alf1q(
i)=alf1(
i)*alf1(
i)
418 $ * (
t0(
i,jv)-alf1(
i)*tx(
i,jv))
419 sx(i3,
k,
l,jv)=alfq(
i)*tx(
i,jv)
420 sy(i3,
k,
l,jv)=alf(
i)*ty(
i,jv)
421 sz(i3,
k,
l,jv)=alf(
i)*tz(
i,jv)
426 tx(
i,jv)=alf1q(
i)*tx(
i,jv)
427 ty(
i,jv)=ty(
i,jv)-sy(i3,
k,
l,jv)
428 tz(
i,jv)=tz(
i,jv)-sz(i3,
k,
l,jv)
441 sx(
i,
k,
l,jv)=tx(
i,jv)
442 sy(
i,
k,
l,jv)=ty(
i,jv)
443 sz(
i,
k,
l,jv)=tz(
i,jv)
473 sm(iip1,
j,
l) = sm(1,
j,
l)
474 s0(iip1,
j,
l,itrac) = s0(1,
j,
l,itrac)
475 sx(iip1,
j,
l,itrac) = sx(1,
j,
l,itrac)
476 sy(iip1,
j,
l,itrac) = sy(1,
j,
l,itrac)
477 sz(iip1,
j,
l,itrac) = sz(1,
j,
l,itrac)
487 sqf = sqf + s0(
i,
j,
l,ntra)
492 print*,
'------ DIAG DANS ADVX - SORTIE -----'