4 SUBROUTINE prather (q,w,masse,pbaru,pbarv,nt,dt)
21 #include "dimensions.h"
31 REAL masse(iip1,
jjp1,llm)
32 REAL q( iip1,
jjp1,llm,0:9)
39 real zq(iip1,
jjp1,llm)
40 REAL sm ( iip1,
jjp1, llm )
41 REAL s0( iip1,
jjp1,llm ), sx( iip1,
jjp1,llm )
42 REAL sy( iip1,
jjp1,llm ), sz( iip1,
jjp1,llm )
43 REAL sxx( iip1,
jjp1,llm)
44 REAL sxy( iip1,
jjp1,llm)
45 REAL sxz( iip1,
jjp1,llm)
46 REAL syy( iip1,
jjp1,llm )
47 REAL syz( iip1,
jjp1,llm )
48 REAL szz( iip1,
jjp1,llm ),zz
50 real sxn(iip1),sxs(iip1)
52 real sinlon(iip1),sinlondlon(iip1)
53 real coslon(iip1),coslondlon(iip1)
56 save sinlon,coslon,sinlondlon,coslondlon
57 real dyn1,dyn2,dys1,dys2,qpn,qps,dqzpn,dqzps
67 data qmin,qmax/-1.e33,1.e33/
80 print*,
'SCHEMA PRATHER'
88 coslon(1)=coslon(iip1)
89 coslondlon(1)=coslondlon(iip1)
90 sinlon(1)=sinlon(iip1)
91 sinlondlon(1)=sinlondlon(iip1)
116 sm(
i,
j,llm+1-
l ) =masse(
i,
j,
l)
146 call advxp( limit,0.5*
dt,pbaru,sm,s0,sx,sy,sz
147 . ,sxx,sxy,sxz,syy,syz,szz,1 )
156 call
advyp( limit,.5*
dt*nt,pbarv,sm,s0,sx,sy,sz
157 . ,sxx,sxy,sxz,syy,syz,szz,1 )
173 call
advzp( limit,
dt*nt,w,sm,s0,sx,sy,sz
174 . ,sxx,sxy,sxz,syy,syz,szz,1 )
185 call
advyp( limit,.5*
dt*nt,pbarv,sm,s0,sx,sy,sz
186 . ,sxx,sxy,sxz,syy,syz,szz,1 )
190 s0( iip1,
j,
l)=s0( 1,
j,
l )
191 sx( iip1,
j,
l)=sx( 1,
j,
l )
192 sy( iip1,
j,
l)=sy( 1,
j,
l )
193 sz( iip1,
j,
l)=sz( 1,
j,
l )
194 sxx( iip1,
j,
l)=sxx( 1,
j,
l )
195 sxy( iip1,
j,
l)=sxy( 1,
j,
l)
196 sxz( iip1,
j,
l)=sxz( 1,
j,
l )
197 syy( iip1,
j,
l)=syy( 1,
j,
l )
198 syz( iip1,
j,
l)=syz( 1,
j,
l)
199 szz( iip1,
j,
l)=szz( 1,
j,
l )
203 call advxp( limit,0.5*
dt,pbaru,sm,s0,sx,sy,sz
204 . ,sxx,sxy,sxz,syy,syz,szz,1 )
244 q(
i,1,llm+1-
l,3)=dqzpn
246 q(
i,1,llm+1-
l,0)=qpn
258 zz=s0(
i,2,
l)/sm(
i,2,
l)-
q(
i,1,llm+1-
l,0)
259 dyn1=dyn1+sinlondlon(
i)*zz
260 dyn2=dyn2+coslondlon(
i)*zz
262 dys1=dys1+sinlondlon(
i)*zz
263 dys2=dys2+coslondlon(
i)*zz
267 $ (sinlon(
i)*dyn1+coslon(
i)*dyn2)/2.
268 q(
i,1,llm+1-
l,0)=
q(
i,1,llm+1-
l,0)
271 $ (sinlon(
i)*dys1+coslon(
i)*dys2)/2.
275 q(iip1,1,llm+1-
l,0)=
q(1,1,llm+1-
l,0)
278 sxn(
i)=
q(
i+1,1,llm+1-
l,0)-
q(
i,1,llm+1-
l,0)
284 q(
i+1,1,llm+1-
l,1)=0.25*(sxn(
i)+sxn(
i+1))
285 q(
i+1,
jjp1,llm+1-
l,1)=0.25*(sxs(
i)+sxs(
i+1))
287 q(1,1,llm+1-
l,1)=
q(iip1,1,llm+1-
l,1)
314 q(iip1,
j,llm+1-
l,0)=
q(1,
j,llm+1-
l,0)
315 q(iip1,
j,llm+1-
l,1)=
q(1,
j,llm+1-
l,1)
316 q(iip1,
j,llm+1-
l,2)=
q(1,
j,llm+1-
l,2)
317 q(iip1,
j,llm+1-
l,3)=
q(1,
j,llm+1-
l,3)
318 q(iip1,
j,llm+1-
l,4)=
q(1,
j,llm+1-
l,4)
319 q(iip1,
j,llm+1-
l,5)=
q(1,
j,llm+1-
l,5)
320 q(iip1,
j,llm+1-
l,6)=
q(1,
j,llm+1-
l,6)
321 q(iip1,
j,llm+1-
l,7)=
q(1,
j,llm+1-
l,7)
322 q(iip1,
j,llm+1-
l,8)=
q(1,
j,llm+1-
l,8)
323 q(iip1,
j,llm+1-
l,9)=
q(1,
j,llm+1-
l,9)
329 IF (
q(
i,
j,
l,0).lt.0.)
THEN
330 print*,
'------------ BIP-----------'
331 print*,
'S0(',
i,
j,
l,
')=',
q(
i,
j,
l,0),
333 print*,
'SX(',
i,
j,
l,
')=',
q(
i,
j,
l,1)
334 print*,
'SY(',
i,
j,
l,
')=',
q(
i,
j,
l,2),
336 print*,
'SZ(',
i,
j,
l,
')=',
q(
i,
j,
l,3)
345 IF (
q(
i,
j,
l,0).lt.0.)
THEN
346 print*,
'------------ BIP 2-----------'
347 print*,
'S0(',
i,
j,
l,
')=',
q(
i,
j,
l,0)
348 print*,
'SX(',
i,
j,
l,
')=',
q(
i,
j,
l,1)
349 print*,
'SY(',
i,
j,
l,
')=',
q(
i,
j,
l,2)
350 print*,
'SZ(',
i,
j,
l,
')=',
q(
i,
j,
l,3)