4 SUBROUTINE vlspltqs ( q,pente_max,masse,w,pbaru,pbarv,pdt,
26 #include "dimensions.h"
35 REAL masse(
ip1jmp1,llm),pente_max
52 REAL temps1,temps2,temps3
56 SAVE temps1,temps2,temps3
59 DATA qmin,qmax/0.,1.e33/
61 DATA temps1,temps2,temps3/0.,0.,0./
65 REAL rtt,retv,r2es,r3les,r3ies,r4les,r4ies,
play
66 REAL ptarg,pdelarg,foeew,zdelta
71 foeew( ptarg,pdelarg ) = exp(
72 * (r3les*(1.-pdelarg)+r3ies*pdelarg) * (ptarg-rtt)
73 * / (ptarg-(r4les*(1.-pdelarg)+r4ies*pdelarg)) )
91 zdelta = max( 0., sign(1., rtt - tempe(
ij)) )
93 qsat(
ij,
l) = min(0.5, r2es* foeew(tempe(
ij),zdelta) /
play )
94 qsat(
ij,
l) = qsat(
ij,
l) / ( 1. - retv * qsat(
ij,
l) )
107 mv(
ij,
l)=pbarv(
ij,
l) * zzpbar
118 CALL
scopy(ijp1llm,
q,1,zq,1)
119 CALL
scopy(ijp1llm,masse,1,zm,1)
122 call
vlxqs(zq,pente_max,zm,
mu,qsat)
127 call
vlyqs(zq,pente_max,zm,mv,qsat)
132 call
vlz(zq,pente_max,zm,mw)
138 call
vlyqs(zq,pente_max,zm,mv,qsat)
144 call
vlxqs(zq,pente_max,zm,
mu,qsat)
161 SUBROUTINE vlxqs(q,pente_max,masse,u_m,qsat)
172 #include "dimensions.h"
176 #include "comconst.h"
181 REAL masse(
ip1jmp1,llm),pente_max
192 REAL new_m,zu_m,zdum(
ip1jmp1,llm)
198 Logical first,testcpu
202 REAL temps0,temps1,temps2,temps3,temps4,temps5
203 SAVE temps0,temps1,temps2,temps3,temps4,temps5
206 DATA first,testcpu/.true.,.
false./
220 IF (pente_max.gt.-1.e-5)
THEN
239 adxqu(
ij)=abs(dxqu(
ij))
245 dxqmax(
ij,
l)=pente_max*
246 , min(adxqu(
ij-1),adxqu(
ij))
260 , cvmgp(dxqu(
ij-1)+dxqu(
ij),0.,dxqu(
ij-1)*dxqu(
ij))
262 IF(dxqu(
ij-1)*dxqu(
ij).gt.0)
THEN
271 , sign(min(abs(dxq(
ij,
l)),dxqmax(
ij,
l)),dxq(
ij,
l))
290 zz(
ij)=dxqu(
ij-1)*dxqu(
ij)
325 zdum(
ij,
l)=cvmgp(1.-u_m(
ij,
l)/masse(
ij,
l),
326 , 1.+u_m(
ij,
l)/masse(
ij+1,
l),
342 IF (u_m(
ij,
l).gt.0.)
THEN
360 IF(zdum(
ij,
l).lt.0)
THEN
400 IF(iadvplus(
ij,
l).eq.1.and.mod(
ij,iip1).ne.0)
THEN
418 do while(zu_m.gt.masse(ijq,
l))
419 u_mq(
ij,
l)=u_mq(
ij,
l)+
q(ijq,
l)*masse(ijq,
l)
420 zu_m=zu_m-masse(ijq,
l)
425 u_mq(
ij,
l)=u_mq(
ij,
l)+zu_m*
426 & (
q(ijq,
l)+0.5*(1.-zu_m/masse(ijq,
l))*dxq(ijq,
l))
431 do while(-zu_m.gt.masse(ijq,
l))
432 u_mq(
ij,
l)=u_mq(
ij,
l)-
q(ijq,
l)*masse(ijq,
l)
433 zu_m=zu_m+masse(ijq,
l)
438 u_mq(
ij,
l)=u_mq(
ij,
l)+zu_m*(
q(ijq,
l)-
439 & 0.5*(1.+zu_m/masse(ijq,
l))*dxq(ijq,
l))
463 & u_mq(
ij-1,
l)-u_mq(
ij,
l))
480 SUBROUTINE vlyqs(q,pente_max,masse,masse_adv_v,qsat)
494 #include "dimensions.h"
498 #include "comconst.h"
504 REAL masse(
ip1jmp1,llm),pente_max
505 REAL masse_adv_v(
ip1jm,llm)
514 REAL airej2,airejjm,airescb(
iim),airesch(
iim)
519 REAL qpns,qpsn,dyn1,dys1,dyn2,dys2,newmasse,fn,fs
521 Logical first,testcpu
522 REAL temps0,temps1,temps2,temps3,temps4,temps5
523 SAVE temps0,temps1,temps2,temps3,temps4,temps5
526 REAL convpn,convps,convmpn,convmps
527 REAL sinlon(iip1),sinlondlon(iip1)
528 REAL coslon(iip1),coslondlon(iip1)
529 SAVE sinlon,coslon,sinlondlon,coslondlon
535 DATA first,testcpu/.true.,.
false./
536 DATA temps0,temps1,temps2,temps3,temps4,temps5/0.,0.,0.,0.,0.,0./
539 print*,
'Shema Amont nouveau appele dans Vanleer '
547 coslon(1)=coslon(iip1)
548 coslondlon(1)=coslondlon(iip1)
549 sinlon(1)=sinlon(iip1)
550 sinlondlon(1)=sinlondlon(iip1)
569 airescb(
i) =
aire(
i+ iip1) *
q(
i+ iip1,
l)
572 qpns =
ssum(
iim, airescb ,1 ) / airej2
573 qpsn =
ssum(
iim, airesch ,1 ) / airejjm
579 adyqv(
ij)=abs(dyqv(
ij))
585 dyq(
ij,
l)=.5*(dyqv(
ij-iip1)+dyqv(
ij))
586 dyqmax(
ij)=min(adyqv(
ij-iip1),adyqv(
ij))
587 dyqmax(
ij)=pente_max*dyqmax(
ij)
603 dyn1=dyn1+sinlondlon(
ij)*dyq(
ij,
l)
605 dyn2=dyn2+coslondlon(
ij)*dyq(
ij,
l)
609 dyq(
ij,
l)=dyn1*sinlon(
ij)+dyn2*coslon(
ij)
618 IF(pente_max*adyqv(
ij).lt.abs(dyq(
ij,
l)))
THEN
619 fn=min(pente_max*adyqv(
ij)/abs(dyq(
ij,
l)),fn)
700 IF(dyqv(
ij)*dyqv(
ij-iip1).gt.0.)
THEN
701 dyq(
ij,
l)=sign(min(abs(dyq(
ij,
l)),dyqmax(
ij)),dyq(
ij,
l))
711 IF( masse_adv_v(
ij,
l).GT.0. )
THEN
712 qbyv(
ij,
l)= min( qsat(
ij+iip1,
l),
q(
ij+iip1,
l ) +
713 , dyq(
ij+iip1,
l)*0.5*(1.-masse_adv_v(
ij,
l)/masse(
ij+iip1,
l)))
716 , 0.5*(1.+masse_adv_v(
ij,
l)/masse(
ij,
l)) )
718 qbyv(
ij,
l) = masse_adv_v(
ij,
l)*qbyv(
ij,
l)
726 & +masse_adv_v(
ij,
l)-masse_adv_v(
ij-iip1,
l)