5      s  ps,masse,pk,flux_u,flux_v,teta,phi,ucov,vcov,trac)
 
   21 #include "dimensions.h" 
   59       integer,
SAVE :: icum,ncum
 
   61       LOGICAL,
SAVE :: first=.
true.
 
   65       REAl,
SAVE,
ALLOCATABLE :: zfactv(:,:)
 
   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,
ALLOCATABLE :: vcont(:,:,:),ucont(:,:,:)
 
   91       REAL,
SAVE,
ALLOCATABLE :: ang(:,:,:),unat(:,:,:)
 
   92       REAL,
SAVE,
ALLOCATABLE :: massebx(:,:,:),masseby(:,:,:)
 
   93       REAL,
SAVE,
ALLOCATABLE :: vorpot(:,:,:)
 
   94       REAL,
SAVE,
ALLOCATABLE :: w(:,:,:),ecin(:,:,:),convm(:,:,:)
 
   95       REAL,
SAVE,
ALLOCATABLE :: bern(:,:,:)
 
   98       real,
SAVE,
ALLOCATABLE :: Q(:,:,:,:)
 
  101       real,
SAVE,
ALLOCATABLE ::  ps_cum(:,:)
 
  102       real,
SAVE,
ALLOCATABLE ::  masse_cum(:,:,:)
 
  103       real,
SAVE,
ALLOCATABLE ::  flux_u_cum(:,:,:)
 
  104       real,
SAVE,
ALLOCATABLE ::  flux_v_cum(:,:,:)
 
  105       real,
SAVE,
ALLOCATABLE ::  Q_cum(:,:,:,:)
 
  106       real,
SAVE,
ALLOCATABLE ::  flux_uQ_cum(:,:,:,:)
 
  107       real,
SAVE,
ALLOCATABLE ::  flux_vQ_cum(:,:,:,:)
 
  108       real,
SAVE,
ALLOCATABLE ::  flux_wQ_cum(:,:,:,:)
 
  109       real,
SAVE,
ALLOCATABLE ::  dQ(:,:,:,:)
 
  119       character*10,
save :: znom(ntr,nq)
 
  120       character*20,
save :: znoml(ntr,nq)
 
  121       character*10,
save :: zunites(ntr,nq)
 
  123       INTEGER,
PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5
 
  125       character*3 ctrs(ntr)
 
  126       data ctrs/
'  ',
'TOT',
'MMC',
'TRS',
'STN'/
 
  128       real,
SAVE,
ALLOCATABLE ::  zvQ(:,:,:,:),zvQtmp(:,:)
 
  129       real,
SAVE,
ALLOCATABLE ::  zavQ(:,:,:),psiQ(:,:,:)
 
  130       real,
SAVE,
ALLOCATABLE ::  zmasse(:,:),zamasse(:)
 
  132       real,
SAVE,
ALLOCATABLE ::  zv(:,:),psi(:,:)
 
  143       integer thoriid, zvertiid
 
  146       INTEGER,
SAVE,
ALLOCATABLE :: ndex3d(:)
 
  157       real,
SAVE,
ALLOCATABLE :: rlong(:),rlatg(:)
 
  158       integer :: jjb,jje,jjn,ijb,ije
 
  164       INTEGER,
DIMENSION(1) :: ddid
 
  165       INTEGER,
DIMENSION(1) :: dsg
 
  166       INTEGER,
DIMENSION(1) :: dsl
 
  167       INTEGER,
DIMENSION(1) :: dpf
 
  168       INTEGER,
DIMENSION(1) :: dpl
 
  169       INTEGER,
DIMENSION(1) :: dhs
 
  170       INTEGER,
DIMENSION(1) :: dhe 
 
  172       INTEGER :: bilan_dyn_domain_id
 
  228         if (abs(ncum*dt_app-dt_cum).gt.1.e-5*dt_app) 
then 
  230      .            
'Pb : le pas de cumule doit etre multiple du pas' 
  231            WRITE(
lunout,*)
'dt_app=',dt_app
 
  232            WRITE(
lunout,*)
'dt_cum=',dt_cum
 
  246         unites(igeop)=
'm2/s2' 
  247         unites(iecin)=
'm2/s2' 
  250         unites(iovap)=
'kg/kg' 
  261       CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
 
  284      .                 
'box',bilan_dyn_domain_id)
 
  287      .             1, rlong(jjb:jje), jjn, rlatg(jjb:jje),
 
  289      .             tau0, zjulian, dt_cum, thoriid, fileid,
 
  290      .             bilan_dyn_domain_id)
 
  295       call histvert(fileid, 
'presnivs', 
'Niveaux sigma',
'mb',
 
  303                znoml(itr,iq)=nom(iq)
 
  304                zunites(itr,iq)=unites(iq)
 
  306                znom(itr,iq)=ctrs(itr)//
'v'//nom(iq)
 
  307                znoml(itr,iq)=
'transport : v * '//nom(iq)//
' '//ctrs(itr)
 
  308                zunites(itr,iq)=
'm/s * '//unites(iq)
 
  318      . 
WRITE(
lunout,*)
'var ',itr,iq
 
  319      .      ,znom(itr,iq),znoml(itr,iq),zunites(itr,iq)
 
  320             call histdef(fileid,znom(itr,iq),znoml(itr,iq),
 
  321      .        zunites(itr,iq),1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  322      .        32,
'ave(X)',dt_cum,dt_cum)
 
  326           call histdef(fileid,
'psi'//nom(iq)
 
  327      .      ,
'stream fn. '//znoml(itot,iq),
 
  328      .      zunites(itot,iq),1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  329      .      32,
'ave(X)',dt_cum,dt_cum)
 
  335       call histdef(fileid, 
'masse', 
'masse',
 
  336      .             
'kg', 1, jjn, thoriid, 
llm, 1, 
llm, zvertiid,
 
  337      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  338       call histdef(fileid, 
'v', 
'v',
 
  339      .             
'm/s', 1, jjn, thoriid, 
llm, 1, 
llm, zvertiid,
 
  340      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  343           call histdef(fileid,
'psi',
'stream fn. MMC ',
'mega t/s',
 
  344      .      1,jjn,thoriid,
llm,1,
llm,zvertiid,
 
  345      .      32,
'ave(X)',dt_cum,dt_cum)
 
  352             call histdef(fileid,
'a'//znom(itr,iq),znoml(itr,iq),
 
  353      .        zunites(itr,iq),1,jjn,thoriid,1,1,1,-99,
 
  354      .        32,
'ave(X)',dt_cum,dt_cum)
 
  388          ang(:,jjb:jje,l)=ucov(:,jjb:jje,l)+
constang(:,jjb:jje)
 
  389          unat(:,jjb:jje,l)=ucont(:,jjb:jje,l)*
cu(:,jjb:jje)
 
  395         q(:,jjb:jje,l,itemp)=teta(:,jjb:jje,l)*pk(:,jjb:jje,l)/
cpp 
  396         q(:,jjb:jje,l,igeop)=phi(:,jjb:jje,l)
 
  397         q(:,jjb:jje,l,iecin)=ecin(:,jjb:jje,l)
 
  398         q(:,jjb:jje,l,iang)=ang(:,jjb:jje,l)
 
  399         q(:,jjb:jje,l,iu)=unat(:,jjb:jje,l)
 
  400         q(:,jjb:jje,l,iovap)=trac(:,jjb:jje,l,1)
 
  401         q(:,jjb:jje,l,iun)=1.
 
  420           masse_cum(:,jjb:jje,l)=0.
 
  421           flux_u_cum(:,jjb:jje,l)=0.
 
  422           q_cum(:,jjb:jje,l,:)=0.
 
  423           flux_uq_cum(:,jjb:jje,l,:)=0.
 
  425           flux_v_cum(:,jjb:jje,l)=0.
 
  426           flux_vq_cum(:,jjb:jje,l,:)=0.
 
  432      . 
WRITE(
lunout,*)
'dans bilan_dyn ',icum,
'->',icum+1
 
  440       ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)+ps(:,jjb:jje)
 
  446         masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)+masse(:,jjb:jje,l)
 
  447         flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)
 
  448      .                         +flux_u(:,jjb:jje,l)
 
  456        flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)
 
  457      .                          +flux_v(:,jjb:jje,l)
 
  467           q_cum(:,jjb:jje,l,iq)=q_cum(:,jjb:jje,l,iq)
 
  468      .                       +q(:,jjb:jje,l,iq)*masse(:,jjb:jje,l)
 
  484                   flux_uq_cum(i,j,l,iq)=flux_uq_cum(i,j,l,iq)
 
  485      s            +flux_u(i,j,l)*0.5*(q(i,j,l,iq)+q(i+1,j,l,iq))
 
  487                flux_uq_cum(iip1,j,l,iq)=flux_uq_cum(1,j,l,iq)
 
  511                   flux_vq_cum(i,j,l,iq)=flux_vq_cum(i,j,l,iq)
 
  512      s            +flux_v(i,j,l)*0.5*(q(i,j,l,iq)+q(i,j+1,l,iq))
 
  564                     ww=-0.5*w(i,j,l+1)*(q(i,j,l,iq)+q(i,j,l+1,iq))
 
  565                     dq(i,j,l  ,iq)=dq(i,j,l  ,iq)-ww
 
  566                     dq(i,j,l+1,iq)=dq(i,j,l+1,iq)+ww
 
  573                   ww=-0.5*w(i,j,l)*(q(i,j,l-1,iq)+q(i,j,l,iq))
 
  574                   dq(i,j,l,iq)=dq(i,j,l,iq)+ww
 
  582      . 
WRITE(
lunout,*)
'Apres les calculs fait a chaque pas' 
  586       if (icum.eq.ncum) 
then 
  590      . 
WRITE(
lunout,*)
'Pas d ecriture' 
  599           q_cum(:,jjb:jje,l,iq)=q_cum(:,jjb:jje,l,iq) 
 
  600      .                                  /masse_cum(:,jjb:jje,l)
 
  608         ps_cum(:,jjb:jje)=ps_cum(:,jjb:jje)*zz
 
  613         masse_cum(:,jjb:jje,l)=masse_cum(:,jjb:jje,l)*zz
 
  614         flux_u_cum(:,jjb:jje,l)=flux_u_cum(:,jjb:jje,l)*zz
 
  615         flux_uq_cum(:,jjb:jje,l,:)=flux_uq_cum(:,jjb:jje,l,:)*zz
 
  616         dq(:,jjb:jje,l,:)=dq(:,jjb:jje,l,:)*zz
 
  624         flux_v_cum(:,jjb:jje,l)=flux_v_cum(:,jjb:jje,l)*zz
 
  625         flux_vq_cum(:,jjb:jje,l,:)=flux_vq_cum(:,jjb:jje,l,:)*zz
 
  638            dq(:,jjb:jje,l,iq)=dq(:,jjb:jje,l,iq)/masse_cum(:,jjb:jje,l)
 
  679                zmasse(j,l)=zmasse(j,l)+masseby(i,j,l)
 
  680                zv(j,l)=zv(j,l)+flux_v_cum(i,j,l)
 
  682             zfactv(j,l)=
cv(1,j)/zmasse(j,l)
 
  731                   zvq(j,l,itot,iq)=zvq(j,l,itot,iq)
 
  732      s                            +flux_vq_cum(i,j,l,iq)
 
  733                   zqy=      0.5*(q_cum(i,j,l,iq)*masse_cum(i,j,l)+
 
  734      s                           q_cum(i,j+1,l,iq)*masse_cum(i,j+1,l))
 
  735                   zvqtmp(j,l)=zvqtmp(j,l)+flux_v_cum(i,j,l)*zqy
 
  736      s             /(0.5*(masse_cum(i,j,l)+masse_cum(i,j+1,l)))
 
  737                   zvq(j,l,iave,iq)=zvq(j,l,iave,iq)+zqy
 
  741                zvq(j,l,iave,iq)=zvq(j,l,iave,iq)/zmasse(j,l)
 
  742                zvq(j,l,itot,iq)=zvq(j,l,itot,iq)*zfactv(j,l)
 
  743                zvqtmp(j,l)=zvqtmp(j,l)*zfactv(j,l)
 
  744                zvq(j,l,immc,iq)=zv(j,l)*zvq(j,l,iave,iq)*zfactv(j,l)
 
  745                zvq(j,l,itrs,iq)=zvq(j,l,itot,iq)-zvqtmp(j,l)
 
  746                zvq(j,l,istn,iq)=zvqtmp(j,l)-zvq(j,l,immc,iq)
 
  755                psiq(j,l,iq)=psiq(j,l+1,iq)+zvq(j,l,itot,iq)
 
  768             psi(j,l)=psi(j,l+1)+zv(j,l)
 
  769             zv(j,l)=zv(j,l)*zfactv(j,l)
 
  778       if (i_sortie.eq.1) 
then 
  786             call histwrite(fileid,znom(itr,iq),itau,
 
  787      s                     zvq(jjb:jje,:,itr,iq)
 
  790          call histwrite(fileid,
'psi'//nom(iq),
 
  791      s                  itau,psiq(jjb:jje,1:
llm,iq)
 
  795       call histwrite(fileid,
'masse',itau,zmasse(jjb:jje,1:
llm)
 
  797       call histwrite(fileid,
'v',itau,zv(jjb:jje,1:
llm)
 
  799       psi(jjb:jje,:)=psi(jjb:jje,:)*1.e-9
 
  800       call histwrite(fileid,
'psi',itau,psi(jjb:jje,1:
llm),
 
  812          zamasse(jjb:jje)=zamasse(jjb:jje)+zmasse(jjb:jje,l)
 
  819                zavq(jjb:jje,itr,iq)=zavq(jjb:jje,itr,iq)
 
  820      s                             +zvq(jjb:jje,l,itr,iq)
 
  823             zavq(jjb:jje,itr,iq)=zavq(jjb:jje,itr,iq)/zamasse(jjb:jje)
 
  824             call histwrite(fileid,
'a'//znom(itr,iq),itau,
 
  825      s                     zavq(jjb:jje,itr,iq),jjn*
llm,ndex3d)
 
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
 
subroutine bilan_dyn_loc(ntrac, dt_app, dt_cum, ps, masse, pk, flux_u, flux_v, teta, phi, ucov, vcov, trac)
 
!$Header!CDK comgeom COMMON comgeom constang
 
subroutine convmas_loc(pbaru, pbarv, convm)
 
!$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 vitvert_loc(convm, w)
 
!$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
 
!$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
 
!$Id mode_top_bound COMMON comconstr cpp
 
!FH On elimine toutes les clefs physiques dans la dynamique prt_level
 
subroutine register_hallo_u(Field, ll, RUp, Rdown, SUp, SDown, a_request)
 
!$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)
 
subroutine convflu_loc(xflu, yflu, nbniv, convfl)
 
!$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 covcont_loc(klevel, ucov, vcov, ucont, vcont)
 
subroutine enercin_loc(vcov, ucov, vcont, ucont, ecin)
 
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 massbar_loc(masse, massebx, masseby)
 
subroutine register_hallo_v(Field, ll, RUp, Rdown, SUp, SDown, a_request)
 
subroutine waitrequest(a_Request)
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout