4 SUBROUTINE pentes_ini (q,w,masse,pbaru,pbarv,mode)
24 #include "dimensions.h"
48 real sinlon(iip1),sinlondlon(iip1)
49 real coslon(iip1),coslondlon(iip1)
50 save sinlon,coslon,sinlondlon,coslondlon
51 real dyn1,dyn2,dys1,dys2
52 real qpn,qps,dqzpn,dqzps
53 real smn,sms,s0n,s0s,sxn(iip1),sxs(iip1)
54 real qmin,zq,pente_max
57 integer ismax,ismin,lati,latf
58 EXTERNAL ssum, ismin,ismax
86 print*,
'SCHEMA AMONT NOUVEAU'
89 coslon(i)=cos(
rlonv(i))
90 sinlon(i)=sin(
rlonv(i))
93 print*,coslondlon(i),sinlondlon(i)
95 coslon(1)=coslon(iip1)
96 coslondlon(1)=coslondlon(iip1)
97 sinlon(1)=sinlon(iip1)
98 sinlondlon(1)=sinlondlon(iip1)
99 print*,
'sum sinlondlon ',ssum(
iim,sinlondlon,1)/sinlondlon(1)
100 print*,
'sum coslondlon ',ssum(
iim,coslondlon,1)/coslondlon(1)
122 s0( i,j,
llm+1-l ) = q( i,j,l,0 )
123 sx( i,j,
llm+1-l ) = q( i,j,l,1 )
124 sy( i,j,
llm+1-l ) = q( i,j,l,2 )
125 sz( i,j,
llm+1-l ) = q( i,j,l,3 )
139 sm( i,j,
llm+1-l)=masse( i,j,l )
152 s0(i,j,l) = s0(i,j,l) * sm( i,j,l )
153 sx(i,j,l) = sx(i,j,l) * sm( i,j,l )
154 sy(i,j,l) = sy(i,j,l) * sm( i,j,l )
155 sz(i,j,l) = sz(i,j,l) * sm( i,j,l )
203 zz=sy(i,1,l)/sm(i,1,l)
204 dyn1=dyn1+sinlondlon(i)*zz
205 dyn2=dyn2+coslondlon(i)*zz
207 dys1=dys1+sinlondlon(i)*zz
208 dys2=dys2+coslondlon(i)*zz
211 sy(i,1,l)=dyn1*sinlon(i)+dyn2*coslon(i)
212 sy(i,
jjp1,l)=dys1*sinlon(i)+dys2*coslon(i)
215 s0(i,1,l)=s0n/smn+sy(i,1,l)
219 s0(iip1,1,l)=s0(1,1,l)
223 sxn(i)=s0(i+1,1,l)-s0(i,1,l)
228 sy(i,1,l)=sy(i,1,l)*sm(i,1,l)
230 s0(i,1,l)=s0(i,1,l)*sm(i,1,l)
236 sx(i+1,1,l)=0.25*(sxn(i)+sxn(i+1))*sm(i+1,1,l)
237 sx(i+1,
jjp1,l)=0.25*(sxs(i)+sxs(i+1))*sm(i+1,
jjp1,l)
239 s0(iip1,1,l)=s0(1,1,l)
241 sy(iip1,1,l)=sy(1,1,l)
243 sx(1,1,l)=sx(iip1,1,l)
258 call limx(s0,sx,sm,pente_max)
272 call limy(s0,sy,sm,pente_max)
281 call limz(s0,sz,sm,pente_max)
293 call limy(s0,sy,sm,pente_max)
297 sm(iip1,j,l)=sm(1,j,l)
298 s0(iip1,j,l)=s0(1,j,l)
299 sx(iip1,j,l)=sx(1,j,l)
300 sy(iip1,j,l)=sy(1,j,l)
301 sz(iip1,j,l)=sz(1,j,l)
317 call limx(s0,sx,sm,pente_max)
337 q(i,j,
llm+1-l,0)=s0(i,j,l)/sm(i,j,l)
338 q(i,j,
llm+1-l,1)=sx(i,j,l)/sm(i,j,l)
339 q(i,j,
llm+1-l,2)=sy(i,j,l)/sm(i,j,l)
340 q(i,j,
llm+1-l,3)=sz(i,j,l)/sm(i,j,l)
350 masn=ssum(
iim,sm(1,1,l),1)
352 qpn=ssum(
iim,s0(1,1,l),1)/masn
353 qps=ssum(
iim,s0(1,
jjp1,l),1)/mass
354 dqzpn=ssum(
iim,sz(1,1,l),1)/masn
355 dqzps=ssum(
iim,sz(1,
jjp1,l),1)/mass
357 q( i,1,
llm+1-l,3)=dqzpn
359 q( i,1,
llm+1-l,0)=qpn
368 dyn1=dyn1+sinlondlon(i)*sy(i,1,l)/sm(i,1,l)
369 dyn2=dyn2+coslondlon(i)*sy(i,1,l)/sm(i,1,l)
370 dys1=dys1+sinlondlon(i)*sy(i,
jjp1,l)/sm(i,
jjp1,l)
371 dys2=dys2+coslondlon(i)*sy(i,
jjp1,l)/sm(i,
jjp1,l)
375 s (sinlon(i)*dyn1+coslon(i)*dyn2)
376 q(i,1,
llm+1-l,0)=q(i,1,
llm+1-l,0)+q(i,1,
llm+1-l,2)
378 s (sinlon(i)*dys1+coslon(i)*dys2)
390 zz=s0(i,2,l)/sm(i,2,l)-q(i,1,
llm+1-l,0)
391 dyn1=dyn1+sinlondlon(i)*zz
392 dyn2=dyn2+coslondlon(i)*zz
393 zz=q(i,
jjp1,
llm+1-l,0)-s0(i,jjm,l)/sm(i,jjm,l)
394 dys1=dys1+sinlondlon(i)*zz
395 dys2=dys2+coslondlon(i)*zz
399 s (sinlon(i)*dyn1+coslon(i)*dyn2)/2.
400 q(i,1,
llm+1-l,0)=q(i,1,
llm+1-l,0)+q(i,1,
llm+1-l,2)
402 s (sinlon(i)*dys1+coslon(i)*dys2)/2.
406 q(iip1,1,
llm+1-l,0)=q(1,1,
llm+1-l,0)
410 sxn(i)=q(i+1,1,
llm+1-l,0)-q(i,1,
llm+1-l,0)
416 q(i+1,1,
llm+1-l,1)=0.25*(sxn(i)+sxn(i+1))
417 q(i+1,
jjp1,
llm+1-l,1)=0.25*(sxs(i)+sxs(i+1))
419 q(1,1,
llm+1-l,1)=q(iip1,1,
llm+1-l,1)
431 q(iip1,j,l,iq)=q(1,j,l,iq)
441 IF (q(i,j,l,0).lt.0.)
THEN
460 if(q(i,j,l,0).lt.qmin)
461 , print*,
'apres pentes, s0(',i,
',',j,
',',l,
')=',q(i,j,l,0)
subroutine pentes_ini(q, w, masse, pbaru, pbarv, mode)
!$Header llmm1 INTEGER ip1jmp1
subroutine limy(s0, sy, sm, pente_max)
subroutine advz(limit, dtz, w, sm, s0, sx, sy, sz)
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Id mode_top_bound COMMON comconstr && pi
subroutine limx(s0, sx, sm, pente_max)
subroutine advx(limit, dtx, pbaru, sm, s0, sx, sy, sz, lati, latf)
!$Header llmm1 INTEGER ip1jm
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
!$Header!CDK comgeom COMMON comgeom rlonu
subroutine limz(s0, sz, sm, pente_max)
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine advy(limit, dty, pbarv, sm, s0, sx, sy, sz)
!$Id mode_top_bound COMMON comconstr dtvr
c c zjulian c cym CALL iim cym klev iim
!$Header!CDK comgeom COMMON comgeom rlonv