4 SUBROUTINE advyp(LIMIT,DTY,PBARV,SM,S0,SSX,SY,SZ
5 . ,ssxx,ssxy,ssxz,syy,syz,szz,ntra )
30 #include "dimensions.h"
47 REAL pbarv ( iip1,jjm, llm )
53 REAL sm(iip1,
jjp1,llm)
54 + ,s0(iip1,
jjp1,llm,ntra)
55 REAL ssx(iip1,
jjp1,llm,ntra)
56 + ,sy(iip1,
jjp1,llm,ntra)
57 + ,sz(iip1,
jjp1,llm,ntra)
58 + ,ssxx(iip1,
jjp1,llm,ntra)
59 + ,ssxy(iip1,
jjp1,llm,ntra)
60 + ,ssxz(iip1,
jjp1,llm,ntra)
61 + ,syy(iip1,
jjp1,llm,ntra)
62 + ,syz(iip1,
jjp1,llm,ntra)
63 + ,szz(iip1,
jjp1,llm,ntra)
72 REAL vgri(iip1,0:
jjp1,llm)
91 REAL fxz(
iim,jjm,ntra),fyy(
iim,jjm,ntra)
92 REAL fyz(
iim,jjm,ntra),fzz(
iim,jjm,ntra)
103 REAL slpmax,s1max,s1new,s2new
107 REAL sbms,sfms,sfzs,sbmn,sfmn,sfzn
108 REAL sns0(ntra),snsz(ntra),snsm
109 REAL qy1(
iim,llm,ntra),qylat(
iim,llm,ntra)
110 REAL cx1(llm,ntra), cxlat(llm,ntra)
111 REAL cy1(llm,ntra), cylat(llm,ntra)
143 sqi = sqi + s0(
i,
j,
l,ntra)
147 print*,
'---------- DIAG DANS ADVY - ENTREE --------'
160 vgri(
i,
j,llm+1-
l)=-1.*pbarv(
i,
j,
l)
180 IF(.NOT.limit) go to 11
185 IF(s0(
i,
k,
l,jv).GT.0.)
THEN
186 slpmax=amax1(s0(
i,
k,
l,jv),0.)
188 s1new=amin1(s1max,amax1(-s1max,sy(
i,
k,
l,jv)))
189 s2new=amin1( 2.*slpmax-abs(s1new)/3. ,
190 + amax1(abs(s1new)-slpmax,syy(
i,
k,
l,jv)) )
193 ssxy(
i,
k,
l,jv)=amin1(slpmax,amax1(-slpmax,ssxy(
i,
k,
l,jv)))
194 syz(
i,
k,
l,jv)=amin1(slpmax,amax1(-slpmax,syz(
i,
k,
l,jv)))
215 IF(vgri(
i,0,
l).LE.0.)
THEN
216 fm(
i,0)=-vgri(
i,0,
l)*dty
217 alf(
i,0)=fm(
i,0)/sm(
i,1,
l)
218 sm(
i,1,
l)=sm(
i,1,
l)-fm(
i,0)
222 alfq(
i,0)=alf(
i,0)*alf(
i,0)
223 alf1(
i,0)=1.-alf(
i,0)
224 alf1q(
i,0)=alf1(
i,0)*alf1(
i,0)
225 alf2(
i,0)=alf1(
i,0)-alf(
i,0)
226 alf3(
i,0)=alf(
i,0)*alfq(
i,0)
227 alf4(
i,0)=alf1(
i,0)*alf1q(
i,0)
235 IF(vgri(
i,0,
l).LE.0.)
THEN
237 f0(
i,0,jv)=alf(
i,0)* ( s0(
i,1,
l,jv)-alf1(
i,0)*
238 + ( sy(
i,1,
l,jv)-alf2(
i,0)*syy(
i,1,
l,jv) ) )
240 s00(jv)=s00(jv)+f0(
i,0,jv)
241 s0(
i,1,
l,jv)=s0(
i,1,
l,jv)-f0(
i,0,jv)
242 sy(
i,1,
l,jv)=alf1q(
i,0)*
243 + (sy(
i,1,
l,jv)+3.*alf(
i,0)*syy(
i,1,
l,jv))
244 syy(
i,1,
l,jv)=alf4(
i,0)*syy(
i,1,
l,jv)
245 ssx(
i,1,
l,jv)=alf1(
i,0)*
246 + (ssx(
i,1,
l,jv)+alf(
i,0)*ssxy(
i,1,
l,jv) )
247 sz(
i,1,
l,jv)=alf1(
i,0)*
248 + (sz(
i,1,
l,jv)+alf(
i,0)*ssxz(
i,1,
l,jv) )
249 ssxx(
i,1,
l,jv)=alf1(
i,0)*ssxx(
i,1,
l,jv)
250 ssxz(
i,1,
l,jv)=alf1(
i,0)*ssxz(
i,1,
l,jv)
251 szz(
i,1,
l,jv)=alf1(
i,0)*szz(
i,1,
l,jv)
252 ssxy(
i,1,
l,jv)=alf1q(
i,0)*ssxy(
i,1,
l,jv)
253 syz(
i,1,
l,jv)=alf1q(
i,0)*syz(
i,1,
l,jv)
261 IF(vgri(
i,0,
l).GT.0.)
THEN
262 fm(
i,0)=vgri(
i,0,
l)*dty
269 IF(vgri(
i,0,
l).GT.0.)
THEN
270 f0(
i,0,jv)=alf(
i,0)*s00(jv)
280 IF(vgri(
i,0,
l).GT.0.)
THEN
281 sm(
i,1,
l)=sm(
i,1,
l)+fm(
i,0)
282 alf(
i,0)=fm(
i,0)/sm(
i,1,
l)
285 alfq(
i,0)=alf(
i,0)*alf(
i,0)
286 alf1(
i,0)=1.-alf(
i,0)
287 alf1q(
i,0)=alf1(
i,0)*alf1(
i,0)
288 alf2(
i,0)=alf1(
i,0)-alf(
i,0)
289 alf3(
i,0)=alf1(
i,0)*alf(
i,0)
297 IF(vgri(
i,0,
l).GT.0.)
THEN
299 temptm=alf(
i,0)*s0(
i,1,
l,jv)-alf1(
i,0)*f0(
i,0,jv)
300 s0(
i,1,
l,jv)=s0(
i,1,
l,jv)+f0(
i,0,jv)
301 syy(
i,1,
l,jv)=alf1q(
i,0)*syy(
i,1,
l,jv)
302 + +5.*( alf3(
i,0)*sy(
i,1,
l,jv)-alf2(
i,0)*temptm )
303 sy(
i,1,
l,jv)=alf1(
i,0)*sy(
i,1,
l,jv)+3.*temptm
304 ssxy(
i,1,
l,jv)=alf1(
i,0)*ssxy(
i,1,
l,jv)+3.*alf(
i,0)*ssx(
i,1,
l,jv)
305 syz(
i,1,
l,jv)=alf1(
i,0)*syz(
i,1,
l,jv)+3.*alf(
i,0)*sz(
i,1,
l,jv)
323 IF(vgri(
i,
k,
l).LT.0.)
THEN
324 fm(
i,
k)=-vgri(
i,
k,
l)*dty
325 alf(
i,
k)=fm(
i,
k)/sm(
i,kp,
l)
326 sm(
i,kp,
l)=sm(
i,kp,
l)-fm(
i,
k)
328 fm(
i,
k)=vgri(
i,
k,
l)*dty
333 alfq(
i,
k)=alf(
i,
k)*alf(
i,
k)
334 alf1(
i,
k)=1.-alf(
i,
k)
335 alf1q(
i,
k)=alf1(
i,
k)*alf1(
i,
k)
336 alf2(
i,
k)=alf1(
i,
k)-alf(
i,
k)
337 alf3(
i,
k)=alf(
i,
k)*alfq(
i,
k)
338 alf4(
i,
k)=alf1(
i,
k)*alf1q(
i,
k)
349 IF(vgri(
i,
k,
l).LT.0.)
THEN
351 f0(
i,
k,jv)=alf(
i,
k)* ( s0(
i,kp,
l,jv)-alf1(
i,
k)*
352 + ( sy(
i,kp,
l,jv)-alf2(
i,
k)*syy(
i,kp,
l,jv) ) )
354 + (sy(
i,kp,
l,jv)-3.*alf1(
i,
k)*syy(
i,kp,
l,jv))
355 fyy(
i,
k,jv)=alf3(
i,
k)*syy(
i,kp,
l,jv)
357 + (ssx(
i,kp,
l,jv)-alf1(
i,
k)*ssxy(
i,kp,
l,jv))
359 + (sz(
i,kp,
l,jv)-alf1(
i,
k)*syz(
i,kp,
l,jv))
361 fyz(
i,
k,jv)=alfq(
i,
k)*syz(
i,kp,
l,jv)
362 fxx(
i,
k,jv)=alf(
i,
k)*ssxx(
i,kp,
l,jv)
363 fxz(
i,
k,jv)=alf(
i,
k)*ssxz(
i,kp,
l,jv)
364 fzz(
i,
k,jv)=alf(
i,
k)*szz(
i,kp,
l,jv)
366 s0(
i,kp,
l,jv)=s0(
i,kp,
l,jv)-f0(
i,
k,jv)
367 sy(
i,kp,
l,jv)=alf1q(
i,
k)*
368 + (sy(
i,kp,
l,jv)+3.*alf(
i,
k)*syy(
i,kp,
l,jv))
369 syy(
i,kp,
l,jv)=alf4(
i,
k)*syy(
i,kp,
l,jv)
370 ssx(
i,kp,
l,jv)=ssx(
i,kp,
l,jv)-
fx(
i,
k,jv)
371 sz(
i,kp,
l,jv)=sz(
i,kp,
l,jv)-fz(
i,
k,jv)
372 ssxx(
i,kp,
l,jv)=ssxx(
i,kp,
l,jv)-fxx(
i,
k,jv)
373 ssxz(
i,kp,
l,jv)=ssxz(
i,kp,
l,jv)-fxz(
i,
k,jv)
374 szz(
i,kp,
l,jv)=szz(
i,kp,
l,jv)-fzz(
i,
k,jv)
375 ssxy(
i,kp,
l,jv)=alf1q(
i,
k)*ssxy(
i,kp,
l,jv)
376 syz(
i,kp,
l,jv)=alf1q(
i,
k)*syz(
i,kp,
l,jv)
380 f0(
i,
k,jv)=alf(
i,
k)* ( s0(
i,
k,
l,jv)+alf1(
i,
k)*
381 + ( sy(
i,
k,
l,jv)+alf2(
i,
k)*syy(
i,
k,
l,jv) ) )
383 + (sy(
i,
k,
l,jv)+3.*alf1(
i,
k)*syy(
i,
k,
l,jv))
384 fyy(
i,
k,jv)=alf3(
i,
k)*syy(
i,
k,
l,jv)
385 fx(
i,
k,jv)=alf(
i,
k)*(ssx(
i,
k,
l,jv)+alf1(
i,
k)*ssxy(
i,
k,
l,jv))
386 fz(
i,
k,jv)=alf(
i,
k)*(sz(
i,
k,
l,jv)+alf1(
i,
k)*syz(
i,
k,
l,jv))
388 fyz(
i,
k,jv)=alfq(
i,
k)*syz(
i,
k,
l,jv)
389 fxx(
i,
k,jv)=alf(
i,
k)*ssxx(
i,
k,
l,jv)
390 fxz(
i,
k,jv)=alf(
i,
k)*ssxz(
i,
k,
l,jv)
391 fzz(
i,
k,jv)=alf(
i,
k)*szz(
i,
k,
l,jv)
393 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)-f0(
i,
k,jv)
394 sy(
i,
k,
l,jv)=alf1q(
i,
k)*
395 + (sy(
i,
k,
l,jv)-3.*alf(
i,
k)*syy(
i,
k,
l,jv))
396 syy(
i,
k,
l,jv)=alf4(
i,
k)*syy(
i,
k,
l,jv)
398 sz(
i,
k,
l,jv)=sz(
i,
k,
l,jv)-fz(
i,
k,jv)
399 ssxx(
i,
k,
l,jv)=ssxx(
i,
k,
l,jv)-fxx(
i,
k,jv)
400 ssxz(
i,
k,
l,jv)=ssxz(
i,
k,
l,jv)-fxz(
i,
k,jv)
401 szz(
i,
k,
l,jv)=szz(
i,
k,
l,jv)-fzz(
i,
k,jv)
402 ssxy(
i,
k,
l,jv)=alf1q(
i,
k)*ssxy(
i,
k,
l,jv)
403 syz(
i,
k,
l,jv)=alf1q(
i,
k)*syz(
i,
k,
l,jv)
417 IF(vgri(
i,
k,
l).LT.0.)
THEN
421 sm(
i,kp,
l)=sm(
i,kp,
l)+fm(
i,
k)
422 alf(
i,
k)=fm(
i,
k)/sm(
i,kp,
l)
425 alfq(
i,
k)=alf(
i,
k)*alf(
i,
k)
426 alf1(
i,
k)=1.-alf(
i,
k)
427 alf1q(
i,
k)=alf1(
i,
k)*alf1(
i,
k)
428 alf2(
i,
k)=alf1(
i,
k)-alf(
i,
k)
429 alf3(
i,
k)=alf1(
i,
k)*alf(
i,
k)
440 IF(vgri(
i,
k,
l).LT.0.)
THEN
442 temptm=-alf(
i,
k)*s0(
i,
k,
l,jv)+alf1(
i,
k)*f0(
i,
k,jv)
443 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)+f0(
i,
k,jv)
444 syy(
i,
k,
l,jv)=alfq(
i,
k)*fyy(
i,
k,jv)+alf1q(
i,
k)*syy(
i,
k,
l,jv)
445 + +5.*( alf3(
i,
k)*(
fy(
i,
k,jv)-sy(
i,
k,
l,jv))+alf2(
i,
k)*temptm )
446 sy(
i,
k,
l,jv)=alf(
i,
k)*
fy(
i,
k,jv)+alf1(
i,
k)*sy(
i,
k,
l,jv)
448 ssxy(
i,
k,
l,jv)=alf(
i,
k)*
fxy(
i,
k,jv)+alf1(
i,
k)*ssxy(
i,
k,
l,jv)
449 + +3.*(alf1(
i,
k)*
fx(
i,
k,jv)-alf(
i,
k)*ssx(
i,
k,
l,jv))
450 syz(
i,
k,
l,jv)=alf(
i,
k)*fyz(
i,
k,jv)+alf1(
i,
k)*syz(
i,
k,
l,jv)
451 + +3.*(alf1(
i,
k)*fz(
i,
k,jv)-alf(
i,
k)*sz(
i,
k,
l,jv))
453 sz(
i,
k,
l,jv)=sz(
i,
k,
l,jv)+fz(
i,
k,jv)
454 ssxx(
i,
k,
l,jv)=ssxx(
i,
k,
l,jv)+fxx(
i,
k,jv)
455 ssxz(
i,
k,
l,jv)=ssxz(
i,
k,
l,jv)+fxz(
i,
k,jv)
456 szz(
i,
k,
l,jv)=szz(
i,
k,
l,jv)+fzz(
i,
k,jv)
460 temptm=alf(
i,
k)*s0(
i,kp,
l,jv)-alf1(
i,
k)*f0(
i,
k,jv)
461 s0(
i,kp,
l,jv)=s0(
i,kp,
l,jv)+f0(
i,
k,jv)
462 syy(
i,kp,
l,jv)=alfq(
i,
k)*fyy(
i,
k,jv)+alf1q(
i,
k)*syy(
i,kp,
l,jv)
463 + +5.*( alf3(
i,
k)*(sy(
i,kp,
l,jv)-
fy(
i,
k,jv))-alf2(
i,
k)*temptm )
464 sy(
i,kp,
l,jv)=alf(
i,
k)*
fy(
i,
k,jv)+alf1(
i,
k)*sy(
i,kp,
l,jv)
466 ssxy(
i,kp,
l,jv)=alf(
i,
k)*
fxy(
i,
k,jv)+alf1(
i,
k)*ssxy(
i,kp,
l,jv)
467 + +3.*(alf(
i,
k)*ssx(
i,kp,
l,jv)-alf1(
i,
k)*
fx(
i,
k,jv))
468 syz(
i,kp,
l,jv)=alf(
i,
k)*fyz(
i,
k,jv)+alf1(
i,
k)*syz(
i,kp,
l,jv)
469 + +3.*(alf(
i,
k)*sz(
i,kp,
l,jv)-alf1(
i,
k)*fz(
i,
k,jv))
470 ssx(
i,kp,
l,jv)=ssx(
i,kp,
l,jv)+
fx(
i,
k,jv)
471 sz(
i,kp,
l,jv)=sz(
i,kp,
l,jv)+fz(
i,
k,jv)
472 ssxx(
i,kp,
l,jv)=ssxx(
i,kp,
l,jv)+fxx(
i,
k,jv)
473 ssxz(
i,kp,
l,jv)=ssxz(
i,kp,
l,jv)+fxz(
i,
k,jv)
474 szz(
i,kp,
l,jv)=szz(
i,kp,
l,jv)+fzz(
i,
k,jv)
493 IF(vgri(
i,
k,
l).GE.0.)
THEN
494 fm(
i,
k)=vgri(
i,
k,
l)*dty
500 alfq(
i,
k)=alf(
i,
k)*alf(
i,
k)
501 alf1(
i,
k)=1.-alf(
i,
k)
502 alf1q(
i,
k)=alf1(
i,
k)*alf1(
i,
k)
503 alf2(
i,
k)=alf1(
i,
k)-alf(
i,
k)
504 alf3(
i,
k)=alf(
i,
k)*alfq(
i,
k)
505 alf4(
i,
k)=alf1(
i,
k)*alf1q(
i,
k)
513 IF(vgri(
i,
k,
l).GE.0.)
THEN
514 f0(
i,
k,jv)=alf(
i,
k)* ( s0(
i,
k,
l,jv)+alf1(
i,
k)*
515 + ( sy(
i,
k,
l,jv)+alf2(
i,
k)*syy(
i,
k,
l,jv) ) )
516 s00(jv)=s00(jv)+f0(
i,
k,jv)
518 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)-f0(
i,
k,jv)
519 sy(
i,
k,
l,jv)=alf1q(
i,
k)*
520 + (sy(
i,
k,
l,jv)-3.*alf(
i,
k)*syy(
i,
k,
l,jv))
521 syy(
i,
k,
l,jv)=alf4(
i,
k)*syy(
i,
k,
l,jv)
522 ssx(
i,
k,
l,jv)=alf1(
i,
k)*(ssx(
i,
k,
l,jv)-alf(
i,
k)*ssxy(
i,
k,
l,jv))
523 sz(
i,
k,
l,jv)=alf1(
i,
k)*(sz(
i,
k,
l,jv)-alf(
i,
k)*syz(
i,
k,
l,jv))
524 ssxx(
i,
k,
l,jv)=alf1(
i,
k)*ssxx(
i,
k,
l,jv)
525 ssxz(
i,
k,
l,jv)=alf1(
i,
k)*ssxz(
i,
k,
l,jv)
526 szz(
i,
k,
l,jv)=alf1(
i,
k)*szz(
i,
k,
l,jv)
527 ssxy(
i,
k,
l,jv)=alf1q(
i,
k)*ssxy(
i,
k,
l,jv)
528 syz(
i,
k,
l,jv)=alf1q(
i,
k)*syz(
i,
k,
l,jv)
536 IF(vgri(
i,
k,
l).LT.0.)
THEN
537 fm(
i,
k)=-vgri(
i,
k,
l)*dty
545 IF(vgri(
i,
k,
l).LT.0.)
THEN
546 f0(
i,
k,jv)=alf(
i,
k)*s00(jv)
555 IF(vgri(
i,
k,
l).LT.0.)
THEN
560 alfq(
i,
k)=alf(
i,
k)*alf(
i,
k)
561 alf1(
i,
k)=1.-alf(
i,
k)
562 alf1q(
i,
k)=alf1(
i,
k)*alf1(
i,
k)
563 alf2(
i,
k)=alf1(
i,
k)-alf(
i,
k)
564 alf3(
i,
k)=alf1(
i,
k)*alf(
i,
k)
572 IF(vgri(
i,
k,
l).LT.0.)
THEN
574 temptm=-alf(
i,
k)*s0(
i,
k,
l,jv)+alf1(
i,
k)*f0(
i,
k,jv)
575 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)+f0(
i,
k,jv)
576 syy(
i,
k,
l,jv)=alf1q(
i,
k)*syy(
i,
k,
l,jv)
577 + +5.*(-alf3(
i,
k)*sy(
i,
k,
l,jv)+alf2(
i,
k)*temptm )
578 sy(
i,
k,
l,jv)=alf1(
i,
k)*sy(
i,
k,
l,jv)+3.*temptm
579 ssxy(
i,
k,
l,jv)=alf1(
i,
k)*ssxy(
i,
k,
l,jv)-3.*alf(
i,
k)*ssx(
i,
k,
l,jv)
580 syz(
i,
k,
l,jv)=alf1(
i,
k)*syz(
i,
k,
l,jv)-3.*alf(
i,
k)*sz(
i,
k,
l,jv)
596 sm(iip1,
j,
l) = sm(1,
j,
l)
597 s0(iip1,
j,
l,jv) = s0(1,
j,
l,jv)
598 ssx(iip1,
j,
l,jv) = ssx(1,
j,
l,jv)
599 sy(iip1,
j,
l,jv) = sy(1,
j,
l,jv)
600 sz(iip1,
j,
l,jv) = sz(1,
j,
l,jv)
630 sqf = sqf + s0(
i,
j,
l,ntra)
634 print*,
'---------- DIAG DANS ADVY - SORTIE --------'