5      s  ps,masse,pk,flux_u,flux_v,teta,phi,ucov,vcov,trac)
 
   21 #include "dimensions.h" 
   49       real flux_v(iip1,jjm,
llm)
 
   53       real vcov(iip1,jjm,
llm)
 
   59       integer,
save :: icum,ncum
 
   61       logical,
SAVE :: first=.
true.
 
   65       real,
save :: zfactv(jjm,
llm)
 
   67       integer,
parameter :: nQ=7
 
   72       character(len=6),
save :: nom(nq)
 
   73       character(len=6),
save :: unites(nq)
 
   75       character(len=10) file
 
   79       integer,
PARAMETER :: itemp=1,igeop=2,iecin=3,iang=4,iu=5
 
   80       INTEGER,
PARAMETER :: iovap=6,iun=7
 
   81       integer,
PARAMETER :: i_sortie=1
 
   84       integer,
SAVE :: itau=0.
 
   90       REAL,
save :: vcont(iip1,jjm,
llm),ucont(iip1,
jjp1,
llm)
 
   92       REAL,
save :: massebx(iip1,
jjp1,
llm),masseby(iip1,jjm,
llm)
 
   93       REAL,
save :: vorpot(iip1,jjm,
llm)
 
   95       REAL,
save ::convm(iip1,
jjp1,
llm)
 
   96       REAL,
save :: bern(iip1,
jjp1,
llm)
 
   99       real,
save :: Q(iip1,
jjp1,
llm,nq)
 
  102       real,
save :: ps_cum(iip1,
jjp1)
 
  103       real,
save :: masse_cum(iip1,
jjp1,
llm)
 
  104       real,
save :: flux_u_cum(iip1,
jjp1,
llm)
 
  105       real,
save :: flux_v_cum(iip1,jjm,
llm)
 
  106       real,
save :: Q_cum(iip1,
jjp1,
llm,nq)
 
  107       real,
save :: flux_uQ_cum(iip1,
jjp1,
llm,nq)
 
  108       real,
save :: flux_vQ_cum(iip1,jjm,
llm,nq)
 
  109       real,
save :: flux_wQ_cum(iip1,
jjp1,
llm,nq)
 
  110       real,
save :: dQ(iip1,
jjp1,
llm,nq)
 
  120       character*10,
save :: znom(ntr,nq)
 
  121       character*20,
save :: znoml(ntr,nq)
 
  122       character*10,
save :: zunites(ntr,nq)
 
  124       INTEGER,
PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5
 
  126       character*3 ctrs(ntr)
 
  127       data ctrs/
'  ',
'TOT',
'MMC',
'TRS',
'STN'/
 
  129       real,
save :: zvQ(jjm,
llm,ntr,nq),zvQtmp(jjm,
llm)
 
  130       real,
save :: zavQ(jjm,ntr,nq),psiQ(jjm,
llm+1,nq)
 
  131       real,
save :: zmasse(jjm,
llm),zamasse(jjm)
 
  133       real,
save :: zv(jjm,
llm),psi(jjm,
llm+1)
 
  144       integer thoriid, zvertiid
 
  147       integer,
save :: ndex3d(jjm*
llm)
 
  158       real,
save :: rlong(jjm),rlatg(jjm)
 
  159       integer :: jjb,jje,jjn,ijb,ije
 
  165       INTEGER,
DIMENSION(1) :: ddid
 
  166       INTEGER,
DIMENSION(1) :: dsg
 
  167       INTEGER,
DIMENSION(1) :: dsl
 
  168       INTEGER,
DIMENSION(1) :: dpf
 
  169       INTEGER,
DIMENSION(1) :: dpl
 
  170       INTEGER,
DIMENSION(1) :: dhs
 
  171       INTEGER,
DIMENSION(1) :: dhe 
 
  173       INTEGER :: bilan_dyn_domain_id
 
  193         if (abs(ncum*dt_app-dt_cum).gt.1.e-5*dt_app) 
then 
  195      .            
'Pb : le pas de cumule doit etre multiple du pas' 
  196            WRITE(
lunout,*)
'dt_app=',dt_app
 
  197            WRITE(
lunout,*)
'dt_cum=',dt_cum
 
  200           write(
lunout,*) 
"bilan_dyn_p: ncum=",ncum
 
  223         unites(igeop)=
'm2/s2' 
  224         unites(iecin)=
'm2/s2' 
  227         unites(iovap)=
'kg/kg' 
  238       CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
 
  261      .                 
'box',bilan_dyn_domain_id)
 
  264      .             1, rlong(jjb:jje), jjn, rlatg(jjb:jje),
 
  266      .             tau0, zjulian, dt_cum, thoriid, fileid,
 
  267      .             bilan_dyn_domain_id)
 
  272       call histvert(fileid, 
'presnivs', 
'Niveaux sigma',
'mb',
 
  280                znoml(itr,iq)=nom(iq)
 
  281                zunites(itr,iq)=unites(iq)
 
  283                znom(itr,iq)=ctrs(itr)//
'v'//nom(iq)
 
  284                znoml(itr,iq)=
'transport : v * '//nom(iq)//
' '//ctrs(itr)
 
  285                zunites(itr,iq)=
'm/s * '//unites(iq)
 
  295      . 
WRITE(
lunout,*)
'var ',itr,iq
 
  296      .      ,znom(itr,iq),znoml(itr,iq),zunites(itr,iq)
 
  297             call histdef(fileid,znom(itr,iq),znoml(itr,iq),
 
  298      .        zunites(itr,iq),1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  299      .        32,
'ave(X)',dt_cum,dt_cum)
 
  303           call histdef(fileid,
'psi'//nom(iq)
 
  304      .      ,
'stream fn. '//znoml(itot,iq),
 
  305      .      zunites(itot,iq),1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  306      .      32,
'ave(X)',dt_cum,dt_cum)
 
  312       call histdef(fileid, 
'masse', 
'masse',
 
  313      .             
'kg', 1, jjn, thoriid, 
llm, 1, 
llm, zvertiid,
 
  314      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  315       call histdef(fileid, 
'v', 
'v',
 
  316      .             
'm/s', 1, jjn, thoriid, 
llm, 1, 
llm, zvertiid,
 
  317      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  320           call histdef(fileid,
'psi',
'stream fn. MMC ',
'mega t/s',
 
  321      .      1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  322      .      32,
'ave(X)',dt_cum,dt_cum)
 
  329             call histdef(fileid,
'a'//znom(itr,iq),znoml(itr,iq),
 
  330      .        zunites(itr,iq),1,jjn,thoriid,1,1,1,-99,
 
  331      .        32,
'ave(X)',dt_cum,dt_cum)
 
  362       CALL enercin_p(vcov,ucov,vcont,ucont,ecin)
 
  367          ang(:,jjb:jje,l)=ucov(:,jjb:jje,l)+
constang(:,jjb:jje)
 
  368          unat(:,jjb:jje,l)=ucont(:,jjb:jje,l)*
cu(:,jjb:jje)
 
  374         q(:,jjb:jje,l,itemp)=teta(:,jjb:jje,l)*pk(:,jjb:jje,l)/
cpp 
  375         q(:,jjb:jje,l,igeop)=phi(:,jjb:jje,l)
 
  376         q(:,jjb:jje,l,iecin)=ecin(:,jjb:jje,l)
 
  377         q(:,jjb:jje,l,iang)=ang(:,jjb:jje,l)
 
  378         q(:,jjb:jje,l,iu)=unat(:,jjb:jje,l)
 
  379         q(:,jjb:jje,l,iovap)=trac(:,jjb:jje,l,1)
 
  380         q(:,jjb:jje,l,iun)=1.
 
  399           masse_cum(:,jjb:jje,l)=0.
 
  400           flux_u_cum(:,jjb:jje,l)=0.
 
  401           q_cum(:,jjb:jje,l,:)=0.
 
  402           flux_uq_cum(:,jjb:jje,l,:)=0.
 
  404           flux_v_cum(:,jjb:jje,l)=0.
 
  405           flux_vq_cum(:,jjb:jje,l,:)=0.
 
  411      . 
WRITE(
lunout,*)
'dans bilan_dyn ',icum,
'->',icum+1
 
  419       ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)+ps(:,jjb:jje)
 
  425         masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l)
 
  426         flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)
 
  427      .                         +flux_u(:,jjb:jje,l)
 
  435        flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)
 
  436      .                          +flux_v(:,jjb:jje,l)
 
  446           q_cum(:,jjb:jje,l,iq)=q_cum(:,jjb:jje,l,iq)
 
  447      .                       +q(:,jjb:jje,l,iq)*masse(:,jjb:jje,l)
 
  463                   flux_uq_cum(i,j,l,iq)=flux_uq_cum(i,j,l,iq)
 
  464      s            +flux_u(i,j,l)*0.5*(q(i,j,l,iq)+q(i+1,j,l,iq))
 
  466                flux_uq_cum(iip1,j,l,iq)=flux_uq_cum(1,j,l,iq)
 
  475         call register_hallo(q(1,1,1,iq),
ip1jmp1,
llm,0,1,1,0,req)
 
  491                   flux_vq_cum(i,j,l,iq)=flux_vq_cum(i,j,l,iq)
 
  492      s            +flux_v(i,j,l)*0.5*(q(i,j,l,iq)+q(i,j+1,l,iq))
 
  521       call convmas_p(flux_u_cum,flux_v_cum,convm)
 
  534                     ww=-0.5*w(i,j,l+1)*(q(i,j,l,iq)+q(i,j,l+1,iq))
 
  535                     dq(i,j,l  ,iq)=dq(i,j,l  ,iq)-ww
 
  536                     dq(i,j,l+1,iq)=dq(i,j,l+1,iq)+ww
 
  543                   ww=-0.5*w(i,j,l)*(q(i,j,l-1,iq)+q(i,j,l,iq))
 
  544                   dq(i,j,l,iq)=dq(i,j,l,iq)+ww
 
  552      . 
WRITE(
lunout,*)
'Apres les calculs fait a chaque pas' 
  556       if (icum.eq.ncum) 
then 
  560      . 
WRITE(
lunout,*)
'Pas d ecriture' 
  569           q_cum(:,jjb:jje,l,iq)=q_cum(:,jjb:jje,l,iq) 
 
  570      .                                  /masse_cum(:,jjb:jje,l)
 
  578       ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)*zz
 
  583         masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)*zz
 
  584         flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)*zz
 
  585         flux_uq_cum(:,jjb:jje,l,:)=flux_uq_cum(:,jjb:jje,l,:)*zz
 
  586         dq(:,jjb:jje,l,:)=dq(:,jjb:jje,l,:)*zz
 
  594         flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)*zz
 
  595         flux_vq_cum(:,jjb:jje,l,:)=flux_vq_cum(:,jjb:jje,l,:)*zz
 
  608            dq(:,jjb:jje,l,iq)=dq(:,jjb:jje,l,iq)/masse_cum(:,jjb:jje,l)
 
  632         call register_hallo(q_cum(1,1,1,iq),
ip1jmp1,
llm,0,1,1,0,req)
 
  640       call massbar_p(masse_cum,massebx,masseby)
 
  650                zmasse(j,l)=zmasse(j,l)+masseby(i,j,l)
 
  651                zv(j,l)=zv(j,l)+flux_v_cum(i,j,l)
 
  653             zfactv(j,l)=
cv(1,j)/zmasse(j,l)
 
  702                   zvq(j,l,itot,iq)=zvq(j,l,itot,iq)
 
  703      s                            +flux_vq_cum(i,j,l,iq)
 
  704                   zqy=      0.5*(q_cum(i,j,l,iq)*masse_cum(i,j,l)+
 
  705      s                           q_cum(i,j+1,l,iq)*masse_cum(i,j+1,l))
 
  706                   zvqtmp(j,l)=zvqtmp(j,l)+flux_v_cum(i,j,l)*zqy
 
  707      s             /(0.5*(masse_cum(i,j,l)+masse_cum(i,j+1,l)))
 
  708                   zvq(j,l,iave,iq)=zvq(j,l,iave,iq)+zqy
 
  712                zvq(j,l,iave,iq)=zvq(j,l,iave,iq)/zmasse(j,l)
 
  713                zvq(j,l,itot,iq)=zvq(j,l,itot,iq)*zfactv(j,l)
 
  714                zvqtmp(j,l)=zvqtmp(j,l)*zfactv(j,l)
 
  715                zvq(j,l,immc,iq)=zv(j,l)*zvq(j,l,iave,iq)*zfactv(j,l)
 
  716                zvq(j,l,itrs,iq)=zvq(j,l,itot,iq)-zvqtmp(j,l)
 
  717                zvq(j,l,istn,iq)=zvqtmp(j,l)-zvq(j,l,immc,iq)
 
  726                psiq(j,l,iq)=psiq(j,l+1,iq)+zvq(j,l,itot,iq)
 
  739             psi(j,l)=psi(j,l+1)+zv(j,l)
 
  740             zv(j,l)=zv(j,l)*zfactv(j,l)
 
  749       if (i_sortie.eq.1) 
then 
  758             call histwrite(fileid,znom(itr,iq),itau,
 
  759      s                     zvq(jjb:jje,:,itr,iq)
 
  762          call histwrite(fileid,
'psi'//nom(iq),
 
  763      s                  itau,psiq(jjb:jje,1:
llm,iq)
 
  766       call histwrite(fileid,
'masse',itau,zmasse(jjb:jje,1:
llm)
 
  768       call histwrite(fileid,
'v',itau,zv(jjb:jje,1:
llm)
 
  770       psi(jjb:jje,:)=psi(jjb:jje,:)*1.e-9
 
  771       call histwrite(fileid,
'psi',itau,psi(jjb:jje,1:
llm),
 
  783          zamasse(jjb:jje)=zamasse(jjb:jje)+zmasse(jjb:jje,l)
 
  790                zavq(jjb:jje,itr,iq)=zavq(jjb:jje,itr,iq)
 
  791      s                             +zvq(jjb:jje,l,itr,iq)
 
  794             zavq(jjb:jje,itr,iq)=zavq(jjb:jje,itr,iq)/zamasse(jjb:jje)
 
  795             call histwrite(fileid,
'a'//znom(itr,iq),itau,
 
  796      s                     zavq(jjb:jje,itr,iq),jjn*
llm,ndex3d)
 
!$Header llmm1 INTEGER ip1jmp1
 
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
 
subroutine register_hallo(Field, ij, ll, RUp, Rdown, SUp, SDown, a_request)
 
!$Header!CDK comgeom COMMON comgeom constang
 
subroutine convflu_p(xflu, yflu, nbniv, convfl)
 
!$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
 
!$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
 
subroutine enercin_p(vcov, ucov, vcont, ucont, ecin)
 
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL nid_tra CALL histvert(nid_tra,"presnivs","Vertical levels","Pa", klev, presnivs, nvert,"down") zsto
 
subroutine massbar_p(masse, massebx, masseby)
 
!$Id mode_top_bound COMMON comconstr cpp
 
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
 
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
 
!$Header!CDK comgeom COMMON comgeom rlatv
 
subroutine sendrequest(a_Request)
 
!$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
 
!$Id!Parameters for parameters that control the rate of approach!to quasi equilibrium noff nlm real tlcrit real entp real sigd real coeffs real dtmax real cu real betad real damp real delta COMMON cvparam nlm tlcrit sigd coeffs cu
 
subroutine bilan_dyn_p(ntrac, dt_app, dt_cum, ps, masse, pk, flux_u, flux_v, teta, phi, ucov, vcov, trac)
 
subroutine covcont_p(klevel, ucov, vcov, ucont, vcont)
 
subroutine vitvert_p(convm, w)
 
c c zjulian c cym CALL iim cym klev iim
 
!$Header!CDK comgeom COMMON comgeom cv
 
c c zjulian c cym CALL iim cym klev iim cym jjmp1 cym On stoke le fichier bilKP instantanne s jmax_ins print On stoke le fichier bilKP instantanne s s cym cym nid_bilKPins ENDIF c cIM BEG c cIM cf AM BEG region cym CALL histbeg("histbilKP_ins", iim, zx_lon(:, 1), cym.jjmp1, zx_lat(1,:), cym.imin_ins, imax_ins-imin_ins+1, cym.jmin_ins, jmax_ins-jmin_ins+1, cym.itau_phy, zjulian, dtime, cym.nhori, nid_bilKPins) CALL histbeg_phy("histbilKP_ins"
 
subroutine convmas_p(pbaru, pbarv, convm)
 
subroutine waitrequest(a_Request)
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout