5      s  ps,masse,pk,flux_u,flux_v,teta,phi,ucov,vcov,trac)
 
   18 #include "dimensions.h" 
   46       real flux_v(iip1,jjm,
llm)
 
   50       real vcov(iip1,jjm,
llm)
 
   58       real zz,zqy,zfactv(jjm,
llm)
 
   66       character*6,
save :: nom(nq)
 
   67       character*6,
save :: unites(nq)
 
   73       integer itemp,igeop,iecin,iang,iu,iovap,iun
 
   77       save itemp,igeop,iecin,iang,iu,iovap,iun
 
   86       data itemp,igeop,iecin,iang,iu,iovap,iun/1,2,3,4,5,6,7/
 
   94       REAL massebx(iip1,
jjp1,
llm),masseby(iip1,jjm,
llm)
 
   95       REAL vorpot(iip1,jjm,
llm)
 
  103       real ps_cum(iip1,
jjp1)
 
  106       real flux_v_cum(iip1,jjm,
llm)
 
  108       real flux_uQ_cum(iip1,
jjp1,
llm,nq)
 
  109       real flux_vQ_cum(iip1,jjm,
llm,nq)
 
  110       real flux_wQ_cum(iip1,
jjp1,
llm,nq)
 
  113       save ps_cum,masse_cum,flux_u_cum,flux_v_cum
 
  114       save q_cum,flux_uq_cum,flux_vq_cum
 
  123       character*10,
save :: znom(ntr,nq)
 
  124       character*20,
save :: znoml(ntr,nq)
 
  125       character*10,
save :: zunites(ntr,nq)
 
  127       integer iave,itot,immc,itrs,istn
 
  128       data iave,itot,immc,itrs,istn/1,2,3,4,5/
 
  129       character*3 ctrs(ntr)
 
  130       data ctrs/
'  ',
'TOT',
'MMC',
'TRS',
'STN'/
 
  132       real zvQ(jjm,
llm,ntr,nq),zvQtmp(jjm,
llm)
 
  133       real zavQ(jjm,ntr,nq),psiQ(jjm,
llm+1,nq)
 
  134       real zmasse(jjm,
llm),zamasse(jjm)
 
  136       real zv(jjm,
llm),psi(jjm,
llm+1)
 
  147       integer thoriid, zvertiid
 
  150       integer ndex3d(jjm*
llm)
 
  161       real rlong(jjm),rlatg(jjm)
 
  182         if (abs(ncum*dt_app-dt_cum).gt.1.e-5*dt_app) 
then 
  184      .            
'Pb : le pas de cumule doit etre multiple du pas' 
  185            WRITE(
lunout,*)
'dt_app=',dt_app
 
  186            WRITE(
lunout,*)
'dt_cum=',dt_cum
 
  190         if (i_sortie.eq.1) 
then 
  193      s  ,0.,180./
pi,0.,0.,jjm,
rlatv,-90.,90.,180./
pi 
  195      s  ,dt_cum,file,
'dyn_zon ')
 
  207         unites(igeop)=
'm2/s2' 
  208         unites(iecin)=
'm2/s2' 
  211         unites(iovap)=
'kg/kg' 
  222       CALL ymds2ju(zan, 1, dayref, 0.0, zjulian)
 
  228       call histbeg(infile, 1, rlong, jjm, rlatg,
 
  230      .             tau0, zjulian, dt_cum, thoriid, fileid)
 
  235       call histvert(fileid, 
'presnivs', 
'Niveaux sigma',
'mb',
 
  243                znoml(itr,iq)=nom(iq)
 
  244                zunites(itr,iq)=unites(iq)
 
  246                znom(itr,iq)=ctrs(itr)//
'v'//nom(iq)
 
  247                znoml(itr,iq)=
'transport : v * '//nom(iq)//
' '//ctrs(itr)
 
  248                zunites(itr,iq)=
'm/s * '//unites(iq)
 
  258      . 
WRITE(
lunout,*)
'var ',itr,iq
 
  259      .      ,znom(itr,iq),znoml(itr,iq),zunites(itr,iq)
 
  260             call histdef(fileid,znom(itr,iq),znoml(itr,iq),
 
  261      .        zunites(itr,iq),1,jjm,thoriid,
llm,1,
llm,zvertiid,
 
  262      .        32,
'ave(X)',dt_cum,dt_cum)
 
  266           call histdef(fileid,
'psi'//nom(iq)
 
  267      .      ,
'stream fn. '//znoml(itot,iq),
 
  268      .      zunites(itot,iq),1,jjm,thoriid,
llm,1,
llm,zvertiid,
 
  269      .      32,
'ave(X)',dt_cum,dt_cum)
 
  275       call histdef(fileid, 
'masse', 
'masse',
 
  276      .             
'kg', 1, jjm, thoriid, 
llm, 1, 
llm, zvertiid,
 
  277      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  278       call histdef(fileid, 
'v', 
'v',
 
  279      .             
'm/s', 1, jjm, thoriid, 
llm, 1, 
llm, zvertiid,
 
  280      .             32, 
'ave(X)', dt_cum, dt_cum)
 
  283           call histdef(fileid,
'psi',
'stream fn. MMC ',
'mega t/s',
 
  284      .      1,jjm,thoriid,
llm,1,
llm,zvertiid,
 
  285      .      32,
'ave(X)',dt_cum,dt_cum)
 
  292             call histdef(fileid,
'a'//znom(itr,iq),znoml(itr,iq),
 
  293      .        zunites(itr,iq),1,jjm,thoriid,1,1,1,-99,
 
  294      .        32,
'ave(X)',dt_cum,dt_cum)
 
  313       CALL enercin(vcov,ucov,vcont,ucont,ecin)
 
  317          ang(:,:,l)=ucov(:,:,l)+
constang(:,:)
 
  318          unat(:,:,l)=ucont(:,:,l)*
cu(:,:)
 
  321       q(:,:,:,itemp)=teta(:,:,:)*pk(:,:,:)/
cpp 
  322       q(:,:,:,igeop)=phi(:,:,:)
 
  323       q(:,:,:,iecin)=ecin(:,:,:)
 
  324       q(:,:,:,iang)=ang(:,:,:)
 
  325       q(:,:,:,iu)=unat(:,:,:)
 
  326       q(:,:,:,iovap)=trac(:,:,:,1)
 
  345      . 
WRITE(
lunout,*)
'dans bilan_dyn ',icum,
'->',icum+1
 
  350       masse_cum=masse_cum+masse
 
  351       flux_u_cum=flux_u_cum+flux_u
 
  352       flux_v_cum=flux_v_cum+flux_v
 
  354       q_cum(:,:,:,iq)=q_cum(:,:,:,iq)+q(:,:,:,iq)*masse(:,:,:)
 
  367                   flux_uq_cum(i,j,l,iq)=flux_uq_cum(i,j,l,iq)
 
  368      s            +flux_u(i,j,l)*0.5*(q(i,j,l,iq)+q(i+1,j,l,iq))
 
  370                flux_uq_cum(iip1,j,l,iq)=flux_uq_cum(1,j,l,iq)
 
  381                   flux_vq_cum(i,j,l,iq)=flux_vq_cum(i,j,l,iq)
 
  382      s            +flux_v(i,j,l)*0.5*(q(i,j,l,iq)+q(i,j+1,l,iq))
 
  393       call  convflu(flux_uq_cum,flux_vq_cum,
llm*nq,dq)
 
  396       call convmas(flux_u_cum,flux_v_cum,convm)
 
  403                   ww=-0.5*w(i,j,l+1)*(q(i,j,l,iq)+q(i,j,l+1,iq))
 
  404                   dq(i,j,l  ,iq)=dq(i,j,l  ,iq)-ww
 
  405                   dq(i,j,l+1,iq)=dq(i,j,l+1,iq)+ww
 
  411      . 
WRITE(
lunout,*)
'Apres les calculs fait a chaque pas' 
  415       if (icum.eq.ncum) 
then 
  419      . 
WRITE(
lunout,*)
'Pas d ecriture' 
  423          q_cum(:,:,:,iq)=q_cum(:,:,:,iq)/masse_cum(:,:,:)
 
  427       masse_cum=masse_cum*zz
 
  428       flux_u_cum=flux_u_cum*zz
 
  429       flux_v_cum=flux_v_cum*zz
 
  430       flux_uq_cum=flux_uq_cum*zz
 
  431       flux_vq_cum=flux_vq_cum*zz
 
  438          dq(:,:,:,iq)=dq(:,:,:,iq)/masse_cum(:,:,:)
 
  449       call massbar(masse_cum,massebx,masseby)
 
  453                zmasse(j,l)=zmasse(j,l)+masseby(i,j,l)
 
  454                zv(j,l)=zv(j,l)+flux_v_cum(i,j,l)
 
  456             zfactv(j,l)=
cv(1,j)/zmasse(j,l)
 
  499                   zvq(j,l,itot,iq)=zvq(j,l,itot,iq)
 
  500      s                            +flux_vq_cum(i,j,l,iq)
 
  501                   zqy=      0.5*(q_cum(i,j,l,iq)*masse_cum(i,j,l)+
 
  502      s                           q_cum(i,j+1,l,iq)*masse_cum(i,j+1,l))
 
  503                   zvqtmp(j,l)=zvqtmp(j,l)+flux_v_cum(i,j,l)*zqy
 
  504      s             /(0.5*(masse_cum(i,j,l)+masse_cum(i,j+1,l)))
 
  505                   zvq(j,l,iave,iq)=zvq(j,l,iave,iq)+zqy
 
  509                zvq(j,l,iave,iq)=zvq(j,l,iave,iq)/zmasse(j,l)
 
  510                zvq(j,l,itot,iq)=zvq(j,l,itot,iq)*zfactv(j,l)
 
  511                zvqtmp(j,l)=zvqtmp(j,l)*zfactv(j,l)
 
  512                zvq(j,l,immc,iq)=zv(j,l)*zvq(j,l,iave,iq)*zfactv(j,l)
 
  513                zvq(j,l,itrs,iq)=zvq(j,l,itot,iq)-zvqtmp(j,l)
 
  514                zvq(j,l,istn,iq)=zvqtmp(j,l)-zvq(j,l,immc,iq)
 
  520                psiq(j,l,iq)=psiq(j,l+1,iq)+zvq(j,l,itot,iq)
 
  529             psi(j,l)=psi(j,l+1)+zv(j,l)
 
  530             zv(j,l)=zv(j,l)*zfactv(j,l)
 
  536       if (i_sortie.eq.1) 
then 
  539             call histwrite(fileid,znom(itr,iq),itau,zvq(:,:,itr,iq)
 
  542          call histwrite(fileid,
'psi'//nom(iq),itau,psiq(:,1:
llm,iq)
 
  546       call histwrite(fileid,
'masse',itau,zmasse
 
  548       call histwrite(fileid,
'v',itau,zv
 
  551       call histwrite(fileid,
'psi',itau,psi(:,1:
llm),jjm*
llm,ndex3d)
 
  562          zamasse(:)=zamasse(:)+zmasse(:,l)
 
  568                zavq(:,itr,iq)=zavq(:,itr,iq)+zvq(:,l,itr,iq)*zmasse(:,l)
 
  570             zavq(:,itr,iq)=zavq(:,itr,iq)/zamasse(:)
 
  571             call histwrite(fileid,
'a'//znom(itr,iq),itau,zavq(:,itr,iq)
 
!$Id zjulian!correction pour l heure initiale!jyg!jyg CALL ymds2ju(annee_ref, 1, day_ref, hour, zjulian)!jyg CALL histbeg_phy("histrac"
 
subroutine covcont(klevel, ucov, vcov, ucont, vcont)
 
!$Header!CDK comgeom COMMON comgeom constang
 
!$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 convflu(xflu, yflu, nbniv, convfl)
 
subroutine convmas(pbaru, pbarv, convm)
 
subroutine massbar(masse, massebx, masseby)
 
!$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
 
subroutine inigrads(if, im, x, fx, xmin, xmax, jm, y, ymin, ymax, fy, lm, z, fz, dt, file, titlel)
 
!$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
 
!$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 vitvert(convm, w)
 
c c zjulian c cym CALL iim cym klev iim
 
!$Header!CDK comgeom COMMON comgeom cv
 
subroutine enercin(vcov, ucov, vcont, ucont, ecin)
 
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 bilan_dyn(ntrac, dt_app, dt_cum, ps, masse, pk, flux_u, flux_v, teta, phi, ucov, vcov, trac)
 
!$Header!gestion des impressions de sorties et de débogage la sortie standard prt_level COMMON comprint lunout