4 SUBROUTINE advzp(LIMIT,DTZ,W,SM,S0,SSX,SY,SZ
5 . ,ssxx,ssxy,ssxz,syy,syz,szz,ntra )
33 #include "dimensions.h"
45 INTEGER i,
j,jv,
k,kp,
l,lp
50 REAL w ( iip1,
jjp1,llm )
56 REAL sm(iip1,
jjp1,llm)
57 + ,s0(iip1,
jjp1,llm,ntra)
58 REAL ssx(iip1,
jjp1,llm,ntra)
59 + ,sy(iip1,
jjp1,llm,ntra)
60 + ,sz(iip1,
jjp1,llm,ntra)
61 + ,ssxx(iip1,
jjp1,llm,ntra)
62 + ,ssxy(iip1,
jjp1,llm,ntra)
63 + ,ssxz(iip1,
jjp1,llm,ntra)
64 + ,syy(iip1,
jjp1,llm,ntra)
65 + ,syz(iip1,
jjp1,llm,ntra)
66 + ,szz(iip1,
jjp1,llm,ntra)
75 REAL wgri(iip1,
jjp1,0:llm)
91 REAL f0(
iim,llm,ntra),fm(
iim,llm)
95 REAL fxz(
iim,llm,ntra),fyy(
iim,llm,ntra)
96 REAL fyz(
iim,llm,ntra),fzz(
iim,llm,ntra)
107 REAL slpmax,s1max,s1new,s2new
126 sqi = sqi + s0(
i,
j,
l,ntra)
130 print*,
'---------- DIAG DANS ADVZP - ENTREE --------'
142 wgri(
i,
j,llm+1-
l) = w(
i,
j,
l)
163 IF(.NOT.limit) go to 101
168 IF(s0(
i,
k,
l,jv).GT.0.)
THEN
171 s1new =amin1(s1max,amax1(-s1max,sz(
i,
k,
l,jv)))
172 s2new =amin1( 2.*slpmax-abs(s1new)/3. ,
173 + amax1(abs(s1new)-slpmax,szz(
i,
k,
l,jv)) )
176 ssxz(
i,
k,
l,jv)=amin1(slpmax,amax1(-slpmax,ssxz(
i,
k,
l,jv)))
177 syz(
i,
k,
l,jv)=amin1(slpmax,amax1(-slpmax,syz(
i,
k,
l,jv)))
202 IF(wgri(
i,
k,
l).LT.0.)
THEN
203 fm(
i,
l)=-wgri(
i,
k,
l)*dtz
204 alf(
i)=fm(
i,
l)/sm(
i,
k,lp)
205 sm(
i,
k,lp)=sm(
i,
k,lp)-fm(
i,
l)
207 fm(
i,
l)=wgri(
i,
k,
l)*dtz
212 alfq(
i)=alf(
i)*alf(
i)
214 alf1q(
i)=alf1(
i)*alf1(
i)
215 alf2(
i)=alf1(
i)-alf(
i)
216 alf3(
i)=alf(
i)*alfq(
i)
217 alf4(
i)=alf1(
i)*alf1q(
i)
224 IF(wgri(
i,
k,
l).LT.0.)
THEN
226 f0(
i,
l,jv)=alf(
i)* ( s0(
i,
k,lp,jv)-alf1(
i)*
227 + ( sz(
i,
k,lp,jv)-alf2(
i)*szz(
i,
k,lp,jv) ) )
228 fz(
i,
l,jv)=alfq(
i)*(sz(
i,
k,lp,jv)-3.*alf1(
i)*szz(
i,
k,lp,jv))
229 fzz(
i,
l,jv)=alf3(
i)*szz(
i,
k,lp,jv)
230 fxz(
i,
l,jv)=alfq(
i)*ssxz(
i,
k,lp,jv)
231 fyz(
i,
l,jv)=alfq(
i)*syz(
i,
k,lp,jv)
232 fx(
i,
l,jv)=alf(
i)*(ssx(
i,
k,lp,jv)-alf1(
i)*ssxz(
i,
k,lp,jv))
233 fy(
i,
l,jv)=alf(
i)*(sy(
i,
k,lp,jv)-alf1(
i)*syz(
i,
k,lp,jv))
234 fxx(
i,
l,jv)=alf(
i)*ssxx(
i,
k,lp,jv)
236 fyy(
i,
l,jv)=alf(
i)*syy(
i,
k,lp,jv)
238 s0(
i,
k,lp,jv)=s0(
i,
k,lp,jv)-f0(
i,
l,jv)
239 sz(
i,
k,lp,jv)=alf1q(
i)
240 + *(sz(
i,
k,lp,jv)+3.*alf(
i)*szz(
i,
k,lp,jv))
241 szz(
i,
k,lp,jv)=alf4(
i)*szz(
i,
k,lp,jv)
242 ssxz(
i,
k,lp,jv)=alf1q(
i)*ssxz(
i,
k,lp,jv)
243 syz(
i,
k,lp,jv)=alf1q(
i)*syz(
i,
k,lp,jv)
244 ssx(
i,
k,lp,jv)=ssx(
i,
k,lp,jv)-
fx(
i,
l,jv)
245 sy(
i,
k,lp,jv)=sy(
i,
k,lp,jv)-
fy(
i,
l,jv)
246 ssxx(
i,
k,lp,jv)=ssxx(
i,
k,lp,jv)-fxx(
i,
l,jv)
247 ssxy(
i,
k,lp,jv)=ssxy(
i,
k,lp,jv)-
fxy(
i,
l,jv)
248 syy(
i,
k,lp,jv)=syy(
i,
k,lp,jv)-fyy(
i,
l,jv)
252 f0(
i,
l,jv)=alf(
i)*(s0(
i,
k,
l,jv)
253 + +alf1(
i) * (sz(
i,
k,
l,jv)+alf2(
i)*szz(
i,
k,
l,jv)) )
254 fz(
i,
l,jv)=alfq(
i)*(sz(
i,
k,
l,jv)+3.*alf1(
i)*szz(
i,
k,
l,jv))
255 fzz(
i,
l,jv)=alf3(
i)*szz(
i,
k,
l,jv)
256 fxz(
i,
l,jv)=alfq(
i)*ssxz(
i,
k,
l,jv)
257 fyz(
i,
l,jv)=alfq(
i)*syz(
i,
k,
l,jv)
258 fx(
i,
l,jv)=alf(
i)*(ssx(
i,
k,
l,jv)+alf1(
i)*ssxz(
i,
k,
l,jv))
260 fxx(
i,
l,jv)=alf(
i)*ssxx(
i,
k,
l,jv)
262 fyy(
i,
l,jv)=alf(
i)*syy(
i,
k,
l,jv)
264 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)-f0(
i,
l,jv)
265 sz(
i,
k,
l,jv)=alf1q(
i)*(sz(
i,
k,
l,jv)-3.*alf(
i)*szz(
i,
k,
l,jv))
266 szz(
i,
k,
l,jv)=alf4(
i)*szz(
i,
k,
l,jv)
267 ssxz(
i,
k,
l,jv)=alf1q(
i)*ssxz(
i,
k,
l,jv)
268 syz(
i,
k,
l,jv)=alf1q(
i)*syz(
i,
k,
l,jv)
271 ssxx(
i,
k,
l,jv)=ssxx(
i,
k,
l,jv)-fxx(
i,
l,jv)
273 syy(
i,
k,
l,jv)=syy(
i,
k,
l,jv)-fyy(
i,
l,jv)
289 IF(wgri(
i,
k,
l).LT.0.)
THEN
293 sm(
i,
k,lp)=sm(
i,
k,lp)+fm(
i,
l)
294 alf(
i)=fm(
i,
l)/sm(
i,
k,lp)
298 alfq(
i)=alf(
i)*alf(
i)
299 alf1q(
i)=alf1(
i)*alf1(
i)
300 alf2(
i)=alf(
i)*alf1(
i)
301 alf3(
i)=alf1(
i)-alf(
i)
308 IF(wgri(
i,
k,
l).LT.0.)
THEN
310 temptm=-alf(
i)*s0(
i,
k,
l,jv)+alf1(
i)*f0(
i,
l,jv)
311 s0(
i,
k,
l,jv)=s0(
i,
k,
l,jv)+f0(
i,
l,jv)
312 szz(
i,
k,
l,jv)=alfq(
i)*fzz(
i,
l,jv)+alf1q(
i)*szz(
i,
k,
l,jv)
313 + +5.*( alf2(
i)*(fz(
i,
l,jv)-sz(
i,
k,
l,jv))+alf3(
i)*temptm )
314 sz(
i,
k,
l,jv)=alf(
i)*fz(
i,
l,jv)+alf1(
i)*sz(
i,
k,
l,jv)
316 ssxz(
i,
k,
l,jv)=alf(
i)*fxz(
i,
l,jv)+alf1(
i)*ssxz(
i,
k,
l,jv)
317 + +3.*(alf1(
i)*
fx(
i,
l,jv)-alf(
i)*ssx(
i,
k,
l,jv))
318 syz(
i,
k,
l,jv)=alf(
i)*fyz(
i,
l,jv)+alf1(
i)*syz(
i,
k,
l,jv)
319 + +3.*(alf1(
i)*
fy(
i,
l,jv)-alf(
i)*sy(
i,
k,
l,jv))
322 ssxx(
i,
k,
l,jv)=ssxx(
i,
k,
l,jv)+fxx(
i,
l,jv)
324 syy(
i,
k,
l,jv)=syy(
i,
k,
l,jv)+fyy(
i,
l,jv)
328 temptm=alf(
i)*s0(
i,
k,lp,jv)-alf1(
i)*f0(
i,
l,jv)
329 s0(
i,
k,lp,jv)=s0(
i,
k,lp,jv)+f0(
i,
l,jv)
330 szz(
i,
k,lp,jv)=alfq(
i)*fzz(
i,
l,jv)+alf1q(
i)*szz(
i,
k,lp,jv)
331 + +5.*( alf2(
i)*(sz(
i,
k,lp,jv)-fz(
i,
l,jv))-alf3(
i)*temptm )
332 sz(
i,
k,lp,jv)=alf(
i)*fz(
i,
l,jv)+alf1(
i)*sz(
i,
k,lp,jv)
334 ssxz(
i,
k,lp,jv)=alf(
i)*fxz(
i,
l,jv)+alf1(
i)*ssxz(
i,
k,lp,jv)
335 + +3.*(alf(
i)*ssx(
i,
k,lp,jv)-alf1(
i)*
fx(
i,
l,jv))
336 syz(
i,
k,lp,jv)=alf(
i)*fyz(
i,
l,jv)+alf1(
i)*syz(
i,
k,lp,jv)
337 + +3.*(alf(
i)*sy(
i,
k,lp,jv)-alf1(
i)*
fy(
i,
l,jv))
338 ssx(
i,
k,lp,jv)=ssx(
i,
k,lp,jv)+
fx(
i,
l,jv)
339 sy(
i,
k,lp,jv)=sy(
i,
k,lp,jv)+
fy(
i,
l,jv)
340 ssxx(
i,
k,lp,jv)=ssxx(
i,
k,lp,jv)+fxx(
i,
l,jv)
341 ssxy(
i,
k,lp,jv)=ssxy(
i,
k,lp,jv)+
fxy(
i,
l,jv)
342 syy(
i,
k,lp,jv)=syy(
i,
k,lp,jv)+fyy(
i,
l,jv)
357 sm(iip1,
j,
l) = sm(1,
j,
l)
358 s0(iip1,
j,
l,ntra) = s0(1,
j,
l,ntra)
359 ssx(iip1,
j,
l,ntra) = ssx(1,
j,
l,ntra)
360 sy(iip1,
j,
l,ntra) = sy(1,
j,
l,ntra)
361 sz(iip1,
j,
l,ntra) = sz(1,
j,
l,ntra)
370 sqf = sqf + s0(
i,
j,
l,ntra)
374 print*,
'-------- DIAG DANS ADVZ - SORTIE ---------'