1 SUBROUTINE vlxqs_loc(q,pente_max,masse,u_m,qsat,ijb_x,ije_x)
13 #include "dimensions.h"
22 REAL masse(ijb_u:ije_u,llm),pente_max
23 REAL u_m( ijb_u:ije_u,llm )
24 REAL q(ijb_u:ije_u,llm)
25 REAL qsat(ijb_u:ije_u,llm)
30 INTEGER ij,
l,
j,
i,iju,ijq,indu(ijnb_u),niju
31 INTEGER n0,iadvplus(ijb_u:ije_u,llm),
nl(llm)
33 REAL new_m,zu_m,zdum(ijb_u:ije_u,llm)
34 REAL dxq(ijb_u:ije_u,llm),dxqu(ijb_u:ije_u)
36 REAL adxqu(ijb_u:ije_u),dxqmax(ijb_u:ije_u,llm)
37 REAL u_mq(ijb_u:ije_u,llm)
42 INTEGER ijb,ije,ijb_x,ije_x
53 if (pole_nord.and.ijb==1) ijb=ijb+iip1
54 if (pole_sud.and.ije==
ip1jmp1) ije=ije-iip1
56 IF (pente_max.gt.-1.e-5)
THEN
71 DO ij=ijb+iip1-1,ije,iip1
77 adxqu(
ij)=abs(dxqu(
ij))
83 dxqmax(
ij,
l)=pente_max*
84 , min(adxqu(
ij-1),adxqu(
ij))
91 DO ij=ijb+iip1-1,ije,iip1
98 , cvmgp(dxqu(
ij-1)+dxqu(
ij),0.,dxqu(
ij-1)*dxqu(
ij))
100 IF(dxqu(
ij-1)*dxqu(
ij).gt.0)
THEN
109 , sign(min(abs(dxq(
ij,
l)),dxqmax(
ij,
l)),dxq(
ij,
l))
124 DO ij=ijb+iip1-1,ije,iip1
129 zz(
ij)=dxqu(
ij-1)*dxqu(
ij)
147 DO ij=ijb+iip1-1,ije,iip1
181 zdum(
ij,
l)=cvmgp(1.-u_m(
ij,
l)/masse(
ij,
l),
182 , 1.+u_m(
ij,
l)/masse(
ij+1,
l),
201 IF (u_m(
ij,
l).gt.0.)
THEN
221 IF(zdum(
ij,
l).lt.0)
THEN
231 DO ij=ijb+iip1-1,ije,iip1
269 IF(iadvplus(
ij,
l).eq.1.and.mod(
ij,iip1).ne.0)
THEN
287 do while(zu_m.gt.masse(ijq,
l))
288 u_mq(
ij,
l)=u_mq(
ij,
l)+
q(ijq,
l)*masse(ijq,
l)
289 zu_m=zu_m-masse(ijq,
l)
294 u_mq(
ij,
l)=u_mq(
ij,
l)+zu_m*
295 & (
q(ijq,
l)+0.5*(1.-zu_m/masse(ijq,
l))*dxq(ijq,
l))
300 do while(-zu_m.gt.masse(ijq,
l))
301 u_mq(
ij,
l)=u_mq(
ij,
l)-
q(ijq,
l)*masse(ijq,
l)
302 zu_m=zu_m+masse(ijq,
l)
307 u_mq(
ij,
l)=u_mq(
ij,
l)+zu_m*(
q(ijq,
l)-
308 & 0.5*(1.+zu_m/masse(ijq,
l))*dxq(ijq,
l))
321 DO ij=ijb+iip1-1,ije,iip1
333 & u_mq(
ij-1,
l)-u_mq(
ij,
l))
338 DO ij=ijb+iip1-1,ije,iip1
350 SUBROUTINE vlyqs_loc(q,pente_max,masse,masse_adv_v,qsat)
365 #include "dimensions.h"
369 #include "comconst.h"
375 REAL masse(ijb_u:ije_u,llm),pente_max
376 REAL masse_adv_v( ijb_v:ije_v,llm)
377 REAL q(ijb_u:ije_u,llm)
378 REAL qsat(ijb_u:ije_u,llm)
385 REAL airej2,airejjm,airescb(
iim),airesch(
iim)
386 REAL dyq(ijb_u:ije_u,llm),dyqv(ijb_v:ije_v)
387 REAL adyqv(ijb_v:ije_v),dyqmax(ijb_u:ije_u)
388 REAL qbyv(ijb_v:ije_v,llm)
390 REAL qpns,qpsn,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
395 REAL convpn,convps,convmpn,convmps
396 REAL sinlon(iip1),sinlondlon(iip1)
397 REAL coslon(iip1),coslondlon(iip1)
398 SAVE sinlon,coslon,sinlondlon,coslondlon
410 print*,
'Shema Amont nouveau appele dans Vanleer '
418 coslon(1)=coslon(iip1)
419 coslondlon(1)=coslondlon(iip1)
420 sinlon(1)=sinlon(iip1)
421 sinlondlon(1)=sinlondlon(iip1)
441 airescb(
i) =
aire(
i+ iip1) *
q(
i+ iip1,
l)
443 qpns =
ssum(
iim, airescb ,1 ) / airej2
450 qpsn =
ssum(
iim, airesch ,1 ) / airejjm
458 if (pole_nord) ijb=ij_begin
459 if (pole_sud) ije=ij_end-iip1
463 adyqv(
ij)=abs(dyqv(
ij))
471 if (pole_nord) ijb=ij_begin+iip1
472 if (pole_sud) ije=ij_end-iip1
475 dyq(
ij,
l)=.5*(dyqv(
ij-iip1)+dyqv(
ij))
476 dyqmax(
ij)=min(adyqv(
ij-iip1),adyqv(
ij))
477 dyqmax(
ij)=pente_max*dyqmax(
ij)
491 dyn1=dyn1+sinlondlon(
ij)*dyq(
ij,
l)
492 dyn2=dyn2+coslondlon(
ij)*dyq(
ij,
l)
495 dyq(
ij,
l)=dyn1*sinlon(
ij)+dyn2*coslon(
ij)
501 IF(pente_max*adyqv(
ij).lt.abs(dyq(
ij,
l)))
THEN
502 fn=min(pente_max*adyqv(
ij)/abs(dyq(
ij,
l)),fn)
615 if (pole_nord) ijb=ij_begin+iip1
616 if (pole_sud) ije=ij_end-iip1
619 IF(dyqv(
ij)*dyqv(
ij-iip1).gt.0.)
THEN
620 dyq(
ij,
l)=sign(min(abs(dyq(
ij,
l)),dyqmax(
ij)),dyq(
ij,
l))
631 if (pole_nord) ijb=ij_begin
632 if (pole_sud) ije=ij_end-iip1
637 IF( masse_adv_v(
ij,
l).GT.0. )
THEN
638 qbyv(
ij,
l)= min( qsat(
ij+iip1,
l),
q(
ij+iip1,
l ) +
639 , dyq(
ij+iip1,
l)*0.5*(1.-masse_adv_v(
ij,
l)/masse(
ij+iip1,
l)))
642 , 0.5*(1.+masse_adv_v(
ij,
l)/masse(
ij,
l)) )
644 qbyv(
ij,
l) = masse_adv_v(
ij,
l)*qbyv(
ij,
l)
651 if (pole_nord) ijb=ij_begin+iip1
652 if (pole_sud) ije=ij_end-iip1
658 & +masse_adv_v(
ij,
l)-masse_adv_v(
ij-iip1,
l)