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
69 data qmin,qmax/-1.e33,1.e33/
82 print*,
'SCHEMA PRATHER'
90 coslon(1)=coslon(iip1)
91 coslondlon(1)=coslondlon(iip1)
92 sinlon(1)=sinlon(iip1)
93 sinlondlon(1)=sinlondlon(iip1)
118 sm(
i,
j,llm+1-
l ) =masse(
i,
j,
l)
148 call advxp( limit,0.5*
dt,pbaru,sm,s0,sx,sy,sz
149 . ,sxx,sxy,sxz,syy,syz,szz,1 )
158 call
advyp( limit,.5*
dt*nt,pbarv,sm,s0,sx,sy,sz
159 . ,sxx,sxy,sxz,syy,syz,szz,1 )
175 call
advzp( limit,
dt*nt,w,sm,s0,sx,sy,sz
176 . ,sxx,sxy,sxz,syy,syz,szz,1 )
187 call
advyp( limit,.5*
dt*nt,pbarv,sm,s0,sx,sy,sz
188 . ,sxx,sxy,sxz,syy,syz,szz,1 )
192 s0( iip1,
j,
l)=s0( 1,
j,
l )
193 sx( iip1,
j,
l)=sx( 1,
j,
l )
194 sy( iip1,
j,
l)=sy( 1,
j,
l )
195 sz( iip1,
j,
l)=sz( 1,
j,
l )
196 sxx( iip1,
j,
l)=sxx( 1,
j,
l )
197 sxy( iip1,
j,
l)=sxy( 1,
j,
l)
198 sxz( iip1,
j,
l)=sxz( 1,
j,
l )
199 syy( iip1,
j,
l)=syy( 1,
j,
l )
200 syz( iip1,
j,
l)=syz( 1,
j,
l)
201 szz( iip1,
j,
l)=szz( 1,
j,
l )
205 call advxp( limit,0.5*
dt,pbaru,sm,s0,sx,sy,sz
206 . ,sxx,sxy,sxz,syy,syz,szz,1 )
246 q(
i,1,llm+1-
l,3)=dqzpn
248 q(
i,1,llm+1-
l,0)=qpn
260 zz=s0(
i,2,
l)/sm(
i,2,
l)-
q(
i,1,llm+1-
l,0)
261 dyn1=dyn1+sinlondlon(
i)*zz
262 dyn2=dyn2+coslondlon(
i)*zz
264 dys1=dys1+sinlondlon(
i)*zz
265 dys2=dys2+coslondlon(
i)*zz
269 $ (sinlon(
i)*dyn1+coslon(
i)*dyn2)/2.
270 q(
i,1,llm+1-
l,0)=
q(
i,1,llm+1-
l,0)
273 $ (sinlon(
i)*dys1+coslon(
i)*dys2)/2.
277 q(iip1,1,llm+1-
l,0)=
q(1,1,llm+1-
l,0)
280 sxn(
i)=
q(
i+1,1,llm+1-
l,0)-
q(
i,1,llm+1-
l,0)
286 q(
i+1,1,llm+1-
l,1)=0.25*(sxn(
i)+sxn(
i+1))
287 q(
i+1,
jjp1,llm+1-
l,1)=0.25*(sxs(
i)+sxs(
i+1))
289 q(1,1,llm+1-
l,1)=
q(iip1,1,llm+1-
l,1)
316 q(iip1,
j,llm+1-
l,0)=
q(1,
j,llm+1-
l,0)
317 q(iip1,
j,llm+1-
l,1)=
q(1,
j,llm+1-
l,1)
318 q(iip1,
j,llm+1-
l,2)=
q(1,
j,llm+1-
l,2)
319 q(iip1,
j,llm+1-
l,3)=
q(1,
j,llm+1-
l,3)
320 q(iip1,
j,llm+1-
l,4)=
q(1,
j,llm+1-
l,4)
321 q(iip1,
j,llm+1-
l,5)=
q(1,
j,llm+1-
l,5)
322 q(iip1,
j,llm+1-
l,6)=
q(1,
j,llm+1-
l,6)
323 q(iip1,
j,llm+1-
l,7)=
q(1,
j,llm+1-
l,7)
324 q(iip1,
j,llm+1-
l,8)=
q(1,
j,llm+1-
l,8)
325 q(iip1,
j,llm+1-
l,9)=
q(1,
j,llm+1-
l,9)
331 IF (
q(
i,
j,
l,0).lt.0.)
THEN
332 print*,
'------------ BIP-----------'
333 print*,
'S0(',
i,
j,
l,
')=',
q(
i,
j,
l,0),
335 print*,
'SX(',
i,
j,
l,
')=',
q(
i,
j,
l,1)
336 print*,
'SY(',
i,
j,
l,
')=',
q(
i,
j,
l,2),
338 print*,
'SZ(',
i,
j,
l,
')=',
q(
i,
j,
l,3)
347 IF (
q(
i,
j,
l,0).lt.0.)
THEN
348 print*,
'------------ BIP 2-----------'
349 print*,
'S0(',
i,
j,
l,
')=',
q(
i,
j,
l,0)
350 print*,
'SX(',
i,
j,
l,
')=',
q(
i,
j,
l,1)
351 print*,
'SY(',
i,
j,
l,
')=',
q(
i,
j,
l,2)
352 print*,
'SZ(',
i,
j,
l,
')=',
q(
i,
j,
l,3)