Changeset 1056 for trunk/LMDZ.TITAN/libf


Ignore:
Timestamp:
Oct 7, 2013, 6:42:03 PM (11 years ago)
Author:
slebonnois
Message:

SL: Titan runs ! see DOC/chantiers/commit_importants.log

Location:
trunk/LMDZ.TITAN/libf/phytitan
Files:
33 added
7 deleted
30 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.TITAN/libf/phytitan/brume3D.F

    r474 r1056  
    5050         integer xnz,xnrad,ngrid
    5151         integer li,lf,ihor
    52          real dt
     52         real dt,g
    5353         real c0(nz,nrad),c(nz,nrad,2)
    5454         real k(nz,nrad,nrad),knu
     
    7272         data itime/0/
    7373
    74 * initialisation
    75 * --------------
    76 
    77 * effet saisonnier
    78 * ----------------
    79 
    80 
    81          xsaison=0.
    82          xsaison=pmu0*4.*pfract
    83                               !=Pi si fract=1/2 (equinoxe) et
    84                               !    si mu0(ihor)=1 sous le soleil
    85                               !    exactement.
    86 
    87 c        xsaison=0.
    88 c        if (ihor.le.9.or.ihor.ge.41) xsaison=8.  ! rapport des surfaces
    89 c        xsaison=1.
    90 
    9174* controles
    9275* ---------
     
    10487         dt=x1
    10588
    106          if (itime.eq.0) then
    107            ITIME=1
     89* initialisation unique
     90* --------------
     91
     92c         if (itime.eq.0) then
     93c           ITIME=1
     94c         endif
     95
     96* initialisation
     97* --------------
     98
    10899           call init
    109100           call calcoag
    110          endif
     101
     102* effet saisonnier
     103* ----------------
     104
     105
     106         xsaison=0.
     107         xsaison=pmu0*4.*pfract
     108                              !=Pi si fract=1/2 (equinoxe) et
     109                              !    si mu0(ihor)=1 sous le soleil
     110                              !    exactement.
     111
     112c        xsaison=0.
     113c        if (ihor.le.9.or.ihor.ge.41) xsaison=8.  ! rapport des surfaces
     114c        xsaison=1.
    111115
    112116         do i=1,nz,1
    113117           do j=1,nrad
    114118             v1=vitesse(i,j,0)
    115 c             ho que c'est moche ! -> taused = RT/(Mn2*g)*1/vaer = H/v
    116              taused(i,j)=(8.314*t(i)/28.e-3/1.35)/v1
     119             g=g0*(rtit/(rtit+z(i)))**2
     120             taused(i,j)=rgp*t(i)/(mn2*g)/v1
    117121           enddo
    118122         enddo
     
    620624
    621625         zbx=z(h)+dz(h)/2.
     626
     627c ATTENTION !!
     628c toutes ces definitions sont contradictoires,
     629c pour mettre 0 au bout du compte...
     630c A NETTOYER !!
     631
    622632         if(zbx.le.42000.) then
    623633           kd=1.64e+12*(pb(h)/(kbz*tb(h)))**(-1./2.)
    624634           kd=4.
    625635         else
    626            kd=0.0*kd
    627636           kd=1.64e+12*(pb(h)/(kbz*tb(h)))**(-1./2.)
    628637         endif
     
    758767*   rap= aar/an2  cst sur l'altitude
    759768
    760          rap=0.191
     769         rap=0.02
     770c         rap=0.191
    761771         do 23 i=1,nz
    762772           an2(i)=(1.-ach4(i))/(1.+rap)
     
    76977924       continue
    770780
    771          do 34 i=1,nz
     781         do i=1,nz
    772782           m=ach4(i)*mch4+an2(i)*mn2+aar(i)*mar
    773783           rhob(i)=pb(i)*m/(rgp*tb(i))
    774784c          print*,pb(i),m,rgp,tb(i),rhob(i),rho(i)
    775 34       continue
     785         enddo
    776786
    777787*  fin d'interpolation des taux de melange
  • trunk/LMDZ.TITAN/libf/phytitan/calchim.F

    r104 r1056  
    1       SUBROUTINE calchim(ny,qy_c,nomqy_c,declin_rad,ls_rad,dtchim,
     1      SUBROUTINE calchim(nlon,ny,qy_c,nomqy_c,declin_rad,ls_rad,dtchim,
    22     .                   ctemp,cplay,cplev,
    33     .                   dqyc)
     
    99c     Auteur: S. Lebonnois,  01/2000 | 09/2003
    1010c            adaptation pour Titan 3D: 02/2009
     11c            adaptation pour // : 04/2013
    1112c
    1213c-------------------------------------------------
    1314c
    1415      use dimphy
     16      use common_mod, only:utilaer,maer,prodaer,csn,csh,psurfhaze,
     17     .                     NLEV,NC,ND,NR
     18      USE comgeomphy,  only: rlatd
     19      use moyzon_mod,  only: klat
    1520      implicit none
    1621#include "dimensions.h"
     
    1924#include "YOMCST.h"
    2025
    21 #include "titan_for.h" 
    22 !!!  doit etre en accord avec titan.h
    23 #include "aerprod.h"
    24 
    2526c    Arguments
    2627c    ---------
    2728
     29      INTEGER      nlon                   ! nb of horiz points
    2830      INTEGER      ny                     ! nb de composes (nqmax-nmicro)
    29       REAL         qy_c(jjm+1,klev,NC)    ! Especes chimiques apres adv.+diss.
     31      REAL         qy_c(nlon,klev,NC)     ! Especes chimiques apres adv.+diss.
    3032      character*10 nomqy_c(NC+1)          ! Noms des especes chimiques
    3133      REAL         declin_rad,ls_rad      ! declinaison et long solaire en radians
    3234      REAL         dtchim                 ! pas de temps chimie
    33       REAL         ctemp(jjm+1,klev)      ! Temperature
    34       REAL         cplay(jjm+1,klev)      ! pression (Pa)
    35       REAL         cplev(jjm+1,klev)      ! pression intercouches (Pa)
    36      
    37       REAL         dqyc(jjm+1,klev,NC)    ! Tendances especes chimiques
     35      REAL         ctemp(nlon,klev)      ! Temperature
     36      REAL         cplay(nlon,klev)      ! pression (Pa)
     37      REAL         cplev(nlon,klev)      ! pression intercouches (Pa)
     38     
     39      REAL         dqyc(nlon,klev,NC)    ! Tendances especes chimiques
    3840     
    3941c    Local variables :
    4042c    -----------------
     43
     44      integer i,j,l,ic,jm1
     45
    4146c variables envoyees dans la chimie: double precision
    4247
    43       integer i,j,l,ic
    4448      REAL  temp_c(klev),press_c(klev)     ! T,p(mbar) a 1 lat donnee
    4549      REAL  declin_c                       ! declinaison en degres
     
    6468     
    6569      REAL  mass(NC),duree
    66       REAL  tablefluxtop(NC,jjm+1,5)
     70      REAL  tablefluxtop(NC,jjp1,5)
    6771      REAL  botCH4
    6872      DATA  botCH4/0.05/
     
    9094c ************************************
    9195
    92         allocate(krpd(15,ND+1,klev,jjm+1),krate(klev,NR))
     96        allocate(krpd(15,ND+1,klev,jjp1),krate(klev,NR))
    9397
    9498c Verification dimension verticale: coherence titan_for.h et klev
     
    110114        endif
    111115
    112 c calcul de temp_c, densites et press_c a l'equateur:
    113 c --------------------------------------------------
    114 
    115         print*,'pression, densites et temp a l equateur (chimie):'
     116c calcul de temp_c, densites et press_c au milieu de l'ensemble des points:
     117c ----------------------------------------------------------------------
     118
     119        print*,'pression, densites et temp (chimie):'
    116120        print*,'level, press_c, nb, temp_c'
    117121        DO l=1,klev
    118122c     temp_c (K):
    119          temp_c(l)  = ctemp(jjm/2+1,l)
     123         temp_c(l)  = ctemp(nlon/2+1,l)
    120124c     press_c (mbar):
    121          press_c(l) = cplay(jjm/2+1,l)/100.
     125         press_c(l) = cplay(nlon/2+1,l)/100.
    122126c     nb (cm-3):
    123127         nb(l) = 1.e-4*press_c(l) / (RKBOL*temp_c(l))
     
    393397c                BOUCLE SUR LES LATITUDES
    394398c
    395       DO j=1,jjp1
    396      
     399      DO j=1,nlon
     400     
     401      if (j.eq.1) then
     402         jm1=1
     403      else
     404         jm1=j-1
     405      endif
     406
     407      if((j.eq.1).or.(klat(j).ne.klat(jm1))) then
     408
    397409c***********************************************************************
    398410c***********************************************************************
     
    459471c!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    460472
    461        if (firstcal.and.(j.eq.1)) then
    462          print*,'Alt, densites et temp au pole (chimie):'
    463          print*,'level, z_bas, nb, temp_c'
    464          do l=1,klev
    465           print*,l,rinter(l)-RA/1000.,nb(l),temp_c(l)
    466          enddo
    467        endif
    468 
    469        if (firstcal.and.(j.eq.jjm/2)) then
    470 c         print*,'g,mugaz'
    471 c         print*,g,mugaz
    472          print*,'Alt, densites et temp a l equateur (chimie):'
    473          print*,'level, z_bas, nb, temp_c'
    474          do l=1,klev
    475           print*,l,rinter(l)-RA/1000.,nb(l),temp_c(l)
    476          enddo
    477        endif
    478        
    479473c-----------------------------------------------------------------------
    480474c
     
    507501c   --------------------
    508502       
    509        call gptitan(jjp1,rinter,temp_c,nb,
     503       call gptitan(rinter,temp_c,nb,
    510504     $              nomqy_c,cqy,fluxtop,
    511      $              declin_c,duree,(j-1),mass,
     505     $              declin_c,duree,(klat(j)-1),mass,
    512506     $              botCH4,krpd,krate,reactif,
    513507     $              nom_prod,nom_perte,prod,perte,
     
    515509     $              htoh2,surfhaze)
    516510       
    517 c       if ( j.eq.jjm/2 )
    518 c    $        print*,cqy(1,1),cqy(klev,1),cqy(1,2),cqy(klev,2)
    519 c       if ( j.eq.jjm/2 )
    520 c    $  print*,qy_c(j,1,1),qy_c(j,klev,1),qy_c(j,1,2),qy_c(j,klev,2)
    521 
    522 c       stop
    523 
    524511c   Tendances composition
    525512c   ---------------------
     
    551538c***********************************************************************
    552539c***********************************************************************
    553 c
     540
    554541c              FIN: BOUCLE SUR LES LATITUDES
    555 c
     542
     543      else      ! same latitude, we don't do calculations again
     544        dqyc(j,:,:) = dqyc(jm1,:,:)
     545        if (aerprod.eq.1) then
     546          prodaer(j,:,:) = prodaer(jm1,:,:)
     547          maer(j,:,:)    = maer(jm1,:,:)
     548          csn(j,:,:)     = csn(jm1,:,:)
     549          csh(j,:,:)     = csh(jm1,:,:)
     550        endif
     551      endif
     552
    556553      ENDDO
    557554     
  • trunk/LMDZ.TITAN/libf/phytitan/clesphys.h

    r1048 r1056  
    3030       real    tx,tcorrect,p_prodaer
    3131       real    xnuf
     32       REAL    xvis,xir
    3233
    3334
     
    3940       COMMON/clesphys_r/                                               &
    4041     &     ecritphy, solaire, z0, lmixmin, ksta, inertie, emis,         &
    41      &     tx,tcorrect,p_prodaer,xnuf
     42     &     tx,tcorrect,p_prodaer,xnuf,xvis,xir
    4243
    4344       COMMON/clesphys_l/cycle_diurne, soil_model,                      &
  • trunk/LMDZ.TITAN/libf/phytitan/comgeomphy.F90

    r102 r1056  
    99 
    1010  subroutine initcomgeomphy
    11   use dimphy
     11  USE mod_phys_lmdz_para
    1212  implicit none
    1313   
    1414 
    15     allocate(airephy(klon))
    16     allocate(cuphy(klon))
    17     allocate(cvphy(klon))
    18     allocate(rlatd(klon))
    19     allocate(rlond(klon))
     15    allocate(airephy(klon_omp))
     16    allocate(cuphy(klon_omp))
     17    allocate(cvphy(klon_omp))
     18    allocate(rlatd(klon_omp))
     19    allocate(rlond(klon_omp))
    2020
    2121  end subroutine initcomgeomphy
  • trunk/LMDZ.TITAN/libf/phytitan/conf_phys.F90

    r815 r1056  
    374374  call getin('tcorrect',tcorrect)
    375375
     376!
     377!Config Key  = xvis
     378!Config Desc = Facteur d ajustement des proprietes vis des aerosols
     379!Config Def  = 1.5
     380!Config Help =
     381!
     382  xvis = 1.0
     383  call getin('xvis',xvis)
     384!
     385!Config Key  = xir
     386!Config Desc = Facteur d ajustement des proprietes IR des aerosols
     387!Config Def  = 0.5
     388!Config Help =
     389!
     390  xir = 1.0
     391  call getin('xir',xir)
    376392!
    377393!Config Key  = p_prodaer
     
    487503  write(numout,*)' tx = ', tx
    488504  write(numout,*)' tcorrect = ', tcorrect
     505  write(numout,*)' xvis = ', xvis
     506  write(numout,*)' xir = ', xir
    489507  write(numout,*)' p_prodaer = ', p_prodaer
    490508  write(numout,*)' cutoff = ', cutoff
  • trunk/LMDZ.TITAN/libf/phytitan/dimphy.F90

    r102 r1056  
    88  INTEGER,SAVE :: klevp1
    99  INTEGER,SAVE :: klevm1
    10   INTEGER,SAVE :: kflev
    1110
    1211!$OMP THREADPRIVATE(klon,kfdia,kidia,kdlon)
    13   REAL,save,allocatable,dimension(:) :: zmasq
    14 !$OMP THREADPRIVATE(zmasq)   
    1512
    1613CONTAINS
     
    3128    klevp1=klev+1
    3229    klevm1=klev-1
    33     kflev=klev
    3430!$OMP END MASTER   
    35     ALLOCATE(zmasq(klon))   
    3631   
    3732  END SUBROUTINE init_dimphy
  • trunk/LMDZ.TITAN/libf/phytitan/ini_histday.h

    r902 r1056  
    11      IF (ok_journe) THEN
    2 c
     2
    33         zsto = dtime
    4          zout = dtime * FLOAT(ecrit_day)
     4         zout = dtime * REAL(ecrit_day)
    55c zsto1: pour des flux radiatifs calcules tous les radpas appels physiq
    6          zsto1= dtime * FLOAT(radpas)
    7 c
     6         zsto1= dtime * REAL(radpas)
     7
    88         idayref = day_ref
    99         CALL ymds2ju(annee_ref, 1, idayref, zero, zjulian)
    10 c
    11          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlond,zx_lon)
    12          DO i = 1, iim
    13             zx_lon(i,1) = rlond(i+jjmp1-jjm)
    14             zx_lon(i,jjmp1) = rlond(i+jjmp1-jjm)
    15          ENDDO
    16          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlatd,zx_lat)
    17          CALL histbeg("histday", iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    18      .                 1,iim,1,jjmp1, itau_phy, zjulian, dtime,
     10
     11         CALL histbeg_phy("histday.nc", itau_phy, zjulian, dtime,
    1912     .                 nhori, nid_day)
    20          write(*,*)'Journee ', itau_phy, zjulian
    21          CALL histvert(nid_day, "presnivs", "Vertical levels", "mb",
     13
     14!$OMP MASTER
     15         CALL histvert(nid_day, "presnivs", "Vertical levels", "Pa",
    2216     .                 klev, presnivs, nvert)
    2317
    2418c-------------------------------------------------------
    2519      IF(lev_histday.GE.1) THEN
    26 c
     20
    2721ccccccccccccc 2D fields, invariables
    28 c
     22
    2923         CALL histdef(nid_day, "phis", "Surface geop. height", "-",
    30      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     24     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3125     .                "once",  zsto,zout)
    32 c
     26
    3327         CALL histdef(nid_day, "aire", "Grid area", "-",
    34      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     28     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3529     .                "once",  zsto,zout)
    36 c
     30
    3731ccccccc axe Ls
    3832         CALL histdef(nid_day, "ls", "Solar longitude", "degrees",
    39      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    40      .                "ave(X)", zsto,zout)
    41 c
     33     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     34     .                "ave(X)", zsto,zout)
     35
    4236ccccccccccccc 2D fields, variables
    43 c
     37
    4438         CALL histdef(nid_day, "tsol", "Surface Temperature", "K",
    45      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    46      .                "ave(X)", zsto,zout)
    47 c
     39     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     40     .                "ave(X)", zsto,zout)
     41
    4842         CALL histdef(nid_day, "psol", "Surface Pressure", "Pa",
    49      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    50      .                "ave(X)", zsto,zout)
    51 c
     43     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     44     .                "ave(X)", zsto,zout)
     45
    5246c        CALL histdef(nid_day, "ue", "Zonal energy transport", "-",
    53 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     47c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    5448c    .                "ave(X)", zsto,zout)
    55 c
     49
    5650c        CALL histdef(nid_day, "ve", "Merid energy transport", "-",
    57 c     .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     51c     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    5852c     .                "ave(X)", zsto,zout)
    59 c
     53
    6054      ENDIF !lev_histday.GE.1
    61 c
     55
    6256c-------------------------------------------------------
    6357      IF(lev_histday.GE.2) THEN
    64 c
     58
    6559ccccccccccccc 3D fields, basics
    66 c
     60
    6761         CALL histdef(nid_day, "temp", "Air temperature", "K",
    68      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    69      .                "ave(X)", zsto,zout)
    70 c
     62     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     63     .                "ave(X)", zsto,zout)
     64
    7165         CALL histdef(nid_day, "pres", "Air pressure", "Pa",
    72      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    73      .                "ave(X)", zsto,zout)
    74 c
     66     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     67     .                "ave(X)", zsto,zout)
     68
    7569         CALL histdef(nid_day, "geop", "Geopotential height", "m",
    76      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    77      .                "ave(X)", zsto,zout)
    78 c
     70     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     71     .                "ave(X)", zsto,zout)
     72
    7973         CALL histdef(nid_day, "vitu", "Zonal wind", "m/s",
    80      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    81      .                "ave(X)", zsto,zout)
    82 c
     74     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     75     .                "ave(X)", zsto,zout)
     76
    8377         CALL histdef(nid_day, "vitv", "Meridional wind", "m/s",
    84      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    85      .                "ave(X)", zsto,zout)
    86 c
     78     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     79     .                "ave(X)", zsto,zout)
     80
    8781         CALL histdef(nid_day, "vitw", "Vertical wind", "Pa/s",
    88      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    89      .                "ave(X)", zsto,zout)
    90 c
     82     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     83     .                "ave(X)", zsto,zout)
     84
    9185         CALL histdef(nid_day, "tops", "Solar rad. at TOA", "W/m2",
    92      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     86     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    9387     .                "ave(X)", zsto1,zout)
    94 c
     88
     89         CALL histdef(nid_day, "duvdf", "Boundary-layer dU", "m/s2",
     90     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     91     .                "ave(X)", zsto,zout)
     92
    9593         CALL histdef(nid_day, "dudyn", "Dynamics dU", "m/s2",
    96      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    97      .                "ave(X)", zsto,zout)
    98 c
    99          CALL histdef(nid_day, "duvdf", "Boundary-layer dU", "m/s2",
    100      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    101      .                "ave(X)", zsto,zout)
    102 c
     94     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     95     .                "ave(X)", zsto,zout)
     96
    10397cccccccccccccccccc  Tracers
    104 c
     98
    10599         if (iflag_trac.eq.1) THEN
    106100          if (microfi.ge.1) then
    107101c           DO iq=1,nmicro
    108102c             CALL histdef(nid_day, tname(iq), ttext(iq), "n/m2",
    109 c     .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     103c     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    110104c     .                "ave(X)", zsto,zout)
    111105c           ENDDO
    112106             CALL histdef(nid_day, "qaer","nb tot aer" , "n/m2",
    113      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     107     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    114108     .                    "ave(X)", zsto,zout)
    115109
    116110            if (clouds.eq.1) then
    117111             CALL histdef(nid_day, "qnoy","nb tot noy" , "n/m2",
    118      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     112     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    119113     .                    "ave(X)", zsto,zout)
    120114             CALL histdef(nid_day, "qgl1","V tot gl1" , "m3/m2",
    121      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     115     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    122116     .                    "ave(X)", zsto,zout)
    123117             CALL histdef(nid_day, "qgl2","V tot gl2" , "m3/m2",
    124      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     118     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    125119     .                    "ave(X)", zsto,zout)
    126120             CALL histdef(nid_day, "qgl3","V tot gl3" , "m3/m2",
    127      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     121     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    128122     .                    "ave(X)", zsto,zout)
    129123c--------------
    130124c ----- SATURATION ESP NUAGES
    131125               CALL histdef(nid_day,"ch4sat", "saturation CH4", "--",
    132      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     126     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    133127     .                "ave(X)", zsto,zout)
    134128               CALL histdef(nid_day,"c2h6sat", "saturation C2H6", "--",
    135      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     129     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    136130     .                "ave(X)", zsto,zout)
    137131               CALL histdef(nid_day,"c2h2sat", "saturation C2H2", "--",
    138      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     132     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    139133     .                "ave(X)", zsto,zout)
    140134c --------------
    141135c ----- RESERVOIR DE SURFACE
    142136               CALL histdef(nid_day, "reserv", "Reservoir surface","m",
    143      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     137     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    144138     .                "ave(X)", zsto,zout)
    145139c --------------
    146140c ----- ECHANGE GAZ SURF/ATM (evaporation)
    147141               CALL histdef(nid_day, "evapch4", "Evaporation CH4","m",
    148      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     142     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    149143     .                "ave(X)", zsto,zout)
    150144c --------------
    151145c ----- PRECIPITATIONS (precipitations cumulatives)
    152146               CALL histdef(nid_day,"prech4","Precip CH4","m",
    153      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     147     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    154148     .                "ave(X)", zsto,zout)
    155149               CALL histdef(nid_day,"prec2h6","Precip C2H6",
    156      .                "m",iim,jjmp1,nhori, 1,1,1, -99, 32,
     150     .                "m",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    157151     .                "ave(X)", zsto,zout)
    158152               CALL histdef(nid_day,"prec2h2","Precip C2H2",
    159      .                "m",iim,jjmp1,nhori, 1,1,1, -99, 32,
     153     .                "m",iim,jj_nb,nhori, 1,1,1, nvert, 32,
     154     .                "ave(X)", zsto,zout)
     155               CALL histdef(nid_day,"prenoy","Precip NOY",
     156     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
     157     .                "ave(X)", zsto,zout)
     158               CALL histdef(nid_day,"preaer","Precip AER",
     159     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    160160     .                "ave(X)", zsto,zout)
    161161c --------------
    162162c ----- FLUX GLACE
    163163               CALL histdef(nid_day,"flxgl1", "flux gl CH4",
    164      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     164     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    165165     .              "ave(X)", zsto,zout)
    166166               CALL histdef(nid_day,"flxgl2", "flux gl C2H6",
    167      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     167     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    168168     .              "ave(X)", zsto,zout)
    169169               CALL histdef(nid_day,"flxgl3", "flux gl C2H2",
    170      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     170     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    171171     .              "ave(X)", zsto,zout)
    172172c --------------
    173173c ----- RAYON DES GOUTTES
    174174               CALL histdef(nid_day,"rcldbar", "rayon moyen goutte",
    175      .                "m",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     175     .                "m",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    176176     .                "ave(X)", zsto,zout)
    177177            endif
     
    182182           DO iq=nmicro+1,nqmax
    183183         CALL histdef(nid_day, tname(iq), ttext(iq), "ppm",
    184      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     184     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    185185     .                "ave(X)", zsto,zout)
    186186           ENDDO
    187187          endif
    188188         endif
    189 c
     189
    190190      ENDIF !lev_histday.GE.2
    191 c
     191
    192192c-------------------------------------------------------
    193193      IF(lev_histday.GE.3) THEN
    194 c
     194
    195195cccccccccccccccccc  Radiative transfer
    196 c
     196
    197197c 2D
    198 c
     198
    199199         CALL histdef(nid_day, "topl", "IR rad. at TOA", "W/m2",
    200      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     200     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    201201     .                "ave(X)", zsto1,zout)
    202 c
     202
    203203         CALL histdef(nid_day, "sols", "Solar rad. at surf.", "W/m2",
    204      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     204     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    205205     .                "ave(X)", zsto1,zout)
    206 c
     206
    207207         CALL histdef(nid_day, "soll", "IR rad. at surface", "W/m2",
    208      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     208     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    209209     .                "ave(X)", zsto1,zout)
    210 c
     210
    211211c 3D
    212 c
     212
    213213         CALL histdef(nid_day, "SWnet", "Net SW flux","W/m2",
    214      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     214     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    215215     .                32, "ave(X)", zsto1,zout)
    216 c
     216
    217217         CALL histdef(nid_day, "LWnet", "Net LW flux","W/m2",
    218      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     218     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    219219     .                32, "ave(X)", zsto1,zout)
    220 c
     220
    221221c --------------
    222222c ----- OPACITE BRUME
    223223         DO k=7,NSPECV,10
    224            write(str1,'(i2.2)') k
    225          CALL histdef(nid_day,"thv"//str1,"Haze Opa Vis",
    226      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    227      .                "ave(X)",zsto1,zout)
    228          ENDDO
    229 c
     224           write(str2,'(i2.2)') k
     225         CALL histdef(nid_day,"thv"//str2,"Haze Opa Vis",
     226     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     227     .                "ave(X)",zsto1,zout)
     228         ENDDO
     229
    230230         DO k=8,NSPECI,10
    231            write(str1,'(i2.2)') k
    232          CALL histdef(nid_day,"thi"//str1,"Haze Opa IR",
    233      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    234      .                "ave(X)",zsto1,zout)
    235          ENDDO
    236 c
     231           write(str2,'(i2.2)') k
     232         CALL histdef(nid_day,"thi"//str2,"Haze Opa IR",
     233     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     234     .                "ave(X)",zsto1,zout)
     235         ENDDO
     236
    237237c --------------
    238238c ----- EXTINCTION BRUME
    239239         DO k=7,NSPECV,10
    240            write(str1,'(i2.2)') k
    241          CALL histdef(nid_day,"khv"//str1,"Haze ext Vis ",
    242      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    243      .                "ave(X)",zsto1,zout)
    244          ENDDO
    245 c
     240           write(str2,'(i2.2)') k
     241         CALL histdef(nid_day,"khv"//str2,"Haze ext Vis ",
     242     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     243     .                "ave(X)",zsto1,zout)
     244         ENDDO
     245
    246246         DO k=8,NSPECI,10
    247            write(str1,'(i2.2)') k
    248          CALL histdef(nid_day,"khi"//str1,"Haze ext IR ",
    249      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    250      .                "ave(X)",zsto1,zout)
    251          ENDDO
    252 c
     247           write(str2,'(i2.2)') k
     248         CALL histdef(nid_day,"khi"//str2,"Haze ext IR ",
     249     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     250     .                "ave(X)",zsto1,zout)
     251         ENDDO
     252
    253253c --------------
    254254c ----- OPACITE GAZ
    255255         DO k=7,NSPECV,10
    256            write(str1,'(i2.2)') k
    257          CALL histdef(nid_day,"tgv"//str1,"Gas Opa Vis",
    258      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    259      .                "ave(X)",zsto1,zout)
    260          ENDDO
    261 c
     256           write(str2,'(i2.2)') k
     257         CALL histdef(nid_day,"tgv"//str2,"Gas Opa Vis",
     258     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     259     .                "ave(X)",zsto1,zout)
     260         ENDDO
     261
    262262         DO k=8,NSPECI,10
    263            write(str1,'(i2.2)') k
    264          CALL histdef(nid_day,"tgi"//str1,"Gas Opa IR",
    265      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    266      .                "ave(X)",zsto1,zout)
    267          ENDDO
    268 c
     263           write(str2,'(i2.2)') k
     264         CALL histdef(nid_day,"tgi"//str2,"Gas Opa IR",
     265     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     266     .                "ave(X)",zsto1,zout)
     267         ENDDO
     268
    269269c --------------
    270270c ----- EXTINCTION GAZ
    271271         DO k=7,NSPECV,10
    272            write(str1,'(i2.2)') k
    273          CALL histdef(nid_day,"kgv"//str1,"Gas ext Vis ",
    274      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    275      .                "ave(X)",zsto1,zout)
    276          ENDDO
    277 c
     272           write(str2,'(i2.2)') k
     273         CALL histdef(nid_day,"kgv"//str2,"Gas ext Vis ",
     274     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     275     .                "ave(X)",zsto1,zout)
     276         ENDDO
     277
    278278         DO k=8,NSPECI,10
    279            write(str1,'(i2.2)') k
    280          CALL histdef(nid_day,"kgi"//str1,"Gas ext IR ",
    281      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    282      .                "ave(X)",zsto1,zout)
    283          ENDDO
    284 c
     279           write(str2,'(i2.2)') k
     280         CALL histdef(nid_day,"kgi"//str2,"Gas ext IR ",
     281     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     282     .                "ave(X)",zsto1,zout)
     283         ENDDO
     284
    285285c --------------
    286286c ----- OPACITE NUAGES
    287287         if (clouds.eq.1) then
    288288           CALL histdef(nid_day,"tcld","Cld Opa proxy",
    289      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
     289     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
    290290     .                "ave(X)",zsto,zout)
    291 c
     291
    292292c --------------
    293293c ----- EXTINCTION NUAGES
    294294           CALL histdef(nid_day,"kcld","Cld Ext proxy",
    295      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
     295     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
    296296     .                "ave(X)",zsto,zout)
    297297         endif
    298 c
     298
    299299      ENDIF !lev_histday.GE.3
    300 c
     300
    301301c-------------------------------------------------------
    302302      IF(lev_histday.GE.4) THEN
    303 c
     303
    304304         CALL histdef(nid_day, "dtdyn", "Dynamics dT", "K/s",
    305      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    306      .                "ave(X)", zsto,zout)
    307 c
     305     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     306     .                "ave(X)", zsto,zout)
     307
    308308         CALL histdef(nid_day, "dtphy", "Physics dT", "K/s",
    309      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    310      .                "ave(X)", zsto,zout)
    311 c
     309     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     310     .                "ave(X)", zsto,zout)
     311
    312312         CALL histdef(nid_day, "dtvdf", "Boundary-layer dT", "K/s",
    313      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    314      .                "ave(X)", zsto,zout)
    315 c
     313     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     314     .                "ave(X)", zsto,zout)
     315
    316316         CALL histdef(nid_day, "dtajs", "Dry adjust. dT", "K/s",
    317      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    318      .                "ave(X)", zsto,zout)
    319 c
     317     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     318     .                "ave(X)", zsto,zout)
     319
    320320         CALL histdef(nid_day, "dtswr", "SW radiation dT", "K/s",
    321      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    322      .                "ave(X)", zsto,zout)
    323 c
     321     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     322     .                "ave(X)", zsto,zout)
     323
    324324         CALL histdef(nid_day, "dtlwr", "LW radiation dT", "K/s",
    325      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    326      .                "ave(X)", zsto,zout)
    327 c
     325     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     326     .                "ave(X)", zsto,zout)
     327
    328328c        CALL histdef(nid_day, "dtec", "Cinetic dissip dT", "K/s",
    329 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     329c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    330330c    .                "ave(X)", zsto,zout)
    331 c
     331
    332332      ENDIF !lev_histday.GE.4
    333 c
     333
    334334c-------------------------------------------------------
    335335      IF(lev_histday.GE.5) THEN
    336 c
    337 c
     336
     337
    338338c        call histdef(nid_day, "taux",
    339339c    $         "Zonal wind stress", "Pa", 
    340 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     340c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    341341c    $         "ave(X)", zsto,zout)
    342 c
     342
    343343c        call histdef(nid_day, "tauy",
    344344c    $         "Meridional xind stress", "Pa", 
    345 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     345c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    346346c    $         "ave(X)", zsto,zout)
    347 c
     347
    348348c        CALL histdef(nid_day, "cdrm", "Momentum drag coef.", "-",
    349 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     349c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    350350c    .                "ave(X)", zsto,zout)
    351 c
     351
    352352c        CALL histdef(nid_day, "cdrh", "Heat drag coef.", "-",
    353 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     353c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    354354c    .                "ave(X)", zsto,zout)
    355 c
     355
    356356      ENDIF !lev_histday.GE.5
    357357c-------------------------------------------------------
    358 c
     358
    359359         CALL histend(nid_day)
    360 c
    361          ndex2d = 0
    362          ndex3d = 0
    363 c
     360
    364361      ENDIF ! fin de test sur ok_journe
  • trunk/LMDZ.TITAN/libf/phytitan/ini_histins.h

    r902 r1056  
    11      IF (ok_instan) THEN
    2 c
    3           zsto = dtime * FLOAT(ecrit_ins)
    4           zout = dtime * FLOAT(ecrit_ins)
    5 c
     2
     3          zsto = dtime * REAL(ecrit_ins)
     4          zout = dtime * REAL(ecrit_ins)
     5
    66         idayref = day_ref
    77         CALL ymds2ju(annee_ref, 1, idayref, zero, zjulian)
    8 c
    9          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlond,zx_lon)
    10          DO i = 1, iim
    11             zx_lon(i,1) = rlond(i+jjmp1-jjm)
    12             zx_lon(i,jjmp1) = rlond(i+jjmp1-jjm)
    13          ENDDO
    14          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlatd,zx_lat)
    15          CALL histbeg("histins", iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    16      .                 1,iim,1,jjmp1, itau_phy, zjulian, dtime,
     8
     9         CALL histbeg_phy("histins.nc", itau_phy, zjulian, dtime,
    1710     .                 nhori, nid_ins)
    18          write(*,*)'Inst ', itau_phy, zjulian
    19          CALL histvert(nid_ins, "presnivs", "Vertical levels", "mb",
     11
     12!$OMP MASTER
     13         CALL histvert(nid_ins, "presnivs", "Vertical levels", "Pa",
    2014     .                 klev, presnivs, nvert)
    2115
     
    2317
    2418      IF(lev_histday.GE.1) THEN
    25 c
     19
    2620ccccccccccccc 2D fields, invariables
    27 c
     21
    2822         CALL histdef(nid_ins, "phis", "Surface geop. height", "-",
    29      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     23     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3024     .                "once",  zsto,zout)
    31 c
     25
    3226         CALL histdef(nid_ins, "aire", "Grid area", "-",
    33      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     27     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3428     .                "once",  zsto,zout)
    35 c
     29
    3630ccccccc axe Ls
    3731         CALL histdef(nid_ins, "ls", "Solar longitude", "degrees",
    38      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    39      .                "inst(X)", zsto,zout)
    40 c
     32     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     33     .                "inst(X)", zsto,zout)
     34
    4135ccccccccccccc 2D fields, variables
    42 c
     36
    4337         CALL histdef(nid_ins, "tsol", "Surface Temperature", "K",
    44      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    45      .                "inst(X)", zsto,zout)
    46 c
     38     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     39     .                "inst(X)", zsto,zout)
     40
    4741         CALL histdef(nid_ins, "psol", "Surface Pressure", "Pa",
    48      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    49      .                "inst(X)", zsto,zout)
    50 c
     42     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     43     .                "inst(X)", zsto,zout)
     44
    5145c        CALL histdef(nid_ins, "ue", "Zonal energy transport", "-",
    52 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    53 c    .                "inst(X)", zsto,zout)
    54 c
     46c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     47c    .                "inst(X)", zsto,zout)
     48
    5549c        CALL histdef(nid_ins, "ve", "Merid energy transport", "-",
    56 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    57 c    .                "inst(X)", zsto,zout)
    58 c
     50c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     51c    .                "inst(X)", zsto,zout)
     52
    5953      ENDIF !lev_histday.GE.1
    60 c
     54
    6155c-------------------------------------------------------
    6256      IF(lev_histday.GE.2) THEN
    63 c
     57
    6458ccccccccccccc 3D fields, basics
    65 c
     59
    6660         CALL histdef(nid_ins, "temp", "Air temperature", "K",
    67      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    68      .                "inst(X)", zsto,zout)
    69 c
     61     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     62     .                "inst(X)", zsto,zout)
     63
    7064         CALL histdef(nid_ins, "pres", "Air pressure", "Pa",
    71      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    72      .                "inst(X)", zsto,zout)
    73 c
     65     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     66     .                "inst(X)", zsto,zout)
     67
    7468         CALL histdef(nid_ins, "geop", "Geopotential height", "m",
    75      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    76      .                "inst(X)", zsto,zout)
    77 c
     69     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     70     .                "inst(X)", zsto,zout)
     71
    7872         CALL histdef(nid_ins, "vitu", "Zonal wind", "m/s",
    79      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    80      .                "inst(X)", zsto,zout)
    81 c
     73     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     74     .                "inst(X)", zsto,zout)
     75
    8276         CALL histdef(nid_ins, "vitv", "Meridional wind", "m/s",
    83      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    84      .                "inst(X)", zsto,zout)
    85 c
     77     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     78     .                "inst(X)", zsto,zout)
     79
    8680         CALL histdef(nid_ins, "vitw", "Vertical wind", "Pa/s",
    87      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    88      .                "inst(X)", zsto,zout)
    89 c
     81     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     82     .                "inst(X)", zsto,zout)
     83
    9084         CALL histdef(nid_ins, "tops", "Solar rad. at TOA", "W/m2",
    91      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    92      .                "inst(X)", zsto,zout)
    93 c
     85     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     86     .                "inst(X)", zsto,zout)
     87
    9488c        CALL histdef(nid_ins, "duvdf", "Boundary-layer dU", "m/s2",
    95 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    96 c    .                "inst(X)", zsto,zout)
    97 c
     89c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     90c    .                "inst(X)", zsto,zout)
     91
    9892c        CALL histdef(nid_ins, "dudyn", "Dynamics dU", "m/s2",
    99 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    100 c    .                "inst(X)", zsto,zout)
    101 c
     93c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     94c    .                "inst(X)", zsto,zout)
     95
    10296      ENDIF !lev_histday.GE.2
    103 c
     97
    10498c-------------------------------------------------------
    10599      IF(lev_histday.GE.3) THEN
    106 c
     100
    107101cccccccccccccccccc  Tracers
    108 c
     102
    109103         if (iflag_trac.eq.1) THEN
    110104          if (microfi.ge.1) then
    111105           DO iq=1,nmicro
    112106         CALL histdef(nid_ins, tname(iq), ttext(iq), "n/m2",
    113      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     107     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    114108     .                "inst(X)", zsto,zout)
    115109           ENDDO
     
    118112           DO iq=nmicro+1,nqmax
    119113         CALL histdef(nid_ins, tname(iq), ttext(iq), "ppm",
    120      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     114     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    121115     .                "inst(X)", zsto,zout)
    122116           ENDDO
    123117          endif
    124118         endif
    125 c
     119
    126120cccccccccccccccccc  Radiative transfer
    127 c
     121
    128122c 2D
    129 c
     123
    130124         CALL histdef(nid_ins, "topl", "IR rad. at TOA", "W/m2",
    131      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    132      .                "inst(X)", zsto,zout)
    133 c
     125     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     126     .                "inst(X)", zsto,zout)
     127
    134128         CALL histdef(nid_ins, "sols", "Solar rad. at surf.", "W/m2",
    135      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    136      .                "inst(X)", zsto,zout)
    137 c
     129     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     130     .                "inst(X)", zsto,zout)
     131
    138132         CALL histdef(nid_ins, "soll", "IR rad. at surface", "W/m2",
    139      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    140      .                "inst(X)", zsto,zout)
    141 c
     133     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     134     .                "inst(X)", zsto,zout)
     135
    142136c 3D
    143 c
     137
    144138         CALL histdef(nid_ins, "SWnet", "Net SW flux","W/m2",
    145      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     139     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    146140     .                32, "inst(X)", zsto,zout)
    147 c
     141
    148142         CALL histdef(nid_ins, "LWnet", "Net LW flux","W/m2",
    149      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     143     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    150144     .                32, "inst(X)", zsto,zout)
    151 c
     145
    152146c --------------
    153147c ----- OPACITE BRUME
    154148         DO k=7,NSPECV,10
    155            write(str1,'(i2.2)') k
    156          CALL histdef(nid_ins,"thv"//str1,"Haze Opa Vis",
    157      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    158      .                "ins(X)",zsto,zout)
    159          ENDDO
    160 c
    161          DO k=8,NSPECI,10
    162            write(str1,'(i2.2)') k
    163          CALL histdef(nid_ins,"thi"//str1,"Haze Opa IR",
    164      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    165      .                "ins(X)",zsto,zout)
    166          ENDDO
    167 c
     149           write(str2,'(i2.2)') k
     150         CALL histdef(nid_ins,"thv"//str2,"Haze Opa Vis",
     151     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     152     .                "ins(X)",zsto,zout)
     153         ENDDO
     154
     155         DO k=8,NSPECI,10
     156           write(str2,'(i2.2)') k
     157         CALL histdef(nid_ins,"thi"//str2,"Haze Opa IR",
     158     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     159     .                "ins(X)",zsto,zout)
     160         ENDDO
     161
    168162c --------------
    169163c ----- EXTINCTION BRUME
    170164         DO k=7,NSPECV,10
    171            write(str1,'(i2.2)') k
    172          CALL histdef(nid_ins,"khv"//str1,"Haze ext Vis ",
    173      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    174      .                "ins(X)",zsto,zout)
    175          ENDDO
    176 c
    177          DO k=8,NSPECI,10
    178            write(str1,'(i2.2)') k
    179          CALL histdef(nid_ins,"khi"//str1,"Haze ext IR ",
    180      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    181      .                "ins(X)",zsto,zout)
    182          ENDDO
    183 c
     165           write(str2,'(i2.2)') k
     166         CALL histdef(nid_ins,"khv"//str2,"Haze ext Vis ",
     167     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     168     .                "ins(X)",zsto,zout)
     169         ENDDO
     170
     171         DO k=8,NSPECI,10
     172           write(str2,'(i2.2)') k
     173         CALL histdef(nid_ins,"khi"//str2,"Haze ext IR ",
     174     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     175     .                "ins(X)",zsto,zout)
     176         ENDDO
     177
    184178c --------------
    185179c ----- OPACITE GAZ
    186180         DO k=7,NSPECV,10
    187            write(str1,'(i2.2)') k
    188          CALL histdef(nid_ins,"tgv"//str1,"Haze Opa Vis",
    189      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    190      .                "ins(X)",zsto,zout)
    191          ENDDO
    192 c
    193          DO k=8,NSPECI,10
    194            write(str1,'(i2.2)') k
    195          CALL histdef(nid_ins,"tgi"//str1,"Haze Opa IR",
    196      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    197      .                "ins(X)",zsto,zout)
    198          ENDDO
    199 c
     181           write(str2,'(i2.2)') k
     182         CALL histdef(nid_ins,"tgv"//str2,"Haze Opa Vis",
     183     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     184     .                "ins(X)",zsto,zout)
     185         ENDDO
     186
     187         DO k=8,NSPECI,10
     188           write(str2,'(i2.2)') k
     189         CALL histdef(nid_ins,"tgi"//str2,"Haze Opa IR",
     190     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     191     .                "ins(X)",zsto,zout)
     192         ENDDO
     193
    200194c --------------
    201195c ----- EXTINCTION GAZ
    202196         DO k=7,NSPECV,10
    203            write(str1,'(i2.2)') k
    204          CALL histdef(nid_ins,"kgv"//str1,"Haze ext Vis ",
    205      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    206      .                "ins(X)",zsto,zout)
    207          ENDDO
    208 c
    209          DO k=8,NSPECI,10
    210            write(str1,'(i2.2)') k
    211          CALL histdef(nid_ins,"kgi"//str1,"Haze ext IR ",
    212      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    213      .                "ins(X)",zsto,zout)
    214          ENDDO
    215 c
     197           write(str2,'(i2.2)') k
     198         CALL histdef(nid_ins,"kgv"//str2,"Haze ext Vis ",
     199     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     200     .                "ins(X)",zsto,zout)
     201         ENDDO
     202
     203         DO k=8,NSPECI,10
     204           write(str2,'(i2.2)') k
     205         CALL histdef(nid_ins,"kgi"//str2,"Haze ext IR ",
     206     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     207     .                "ins(X)",zsto,zout)
     208         ENDDO
     209
    216210      ENDIF !lev_histday.GE.3
    217 c
     211
    218212c-------------------------------------------------------
    219213      IF(lev_histday.GE.4) THEN
    220 c
     214
    221215         CALL histdef(nid_ins, "dtdyn", "Dynamics dT", "K/s",
    222      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    223      .                "inst(X)", zsto,zout)
    224 c
     216     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     217     .                "inst(X)", zsto,zout)
     218
    225219         CALL histdef(nid_ins, "dtphy", "Physics dT", "K/s",
    226      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    227      .                "inst(X)", zsto,zout)
    228 c
     220     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     221     .                "inst(X)", zsto,zout)
     222
    229223         CALL histdef(nid_ins, "dtvdf", "Boundary-layer dT", "K/s",
    230      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    231      .                "inst(X)", zsto,zout)
    232 c
     224     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     225     .                "inst(X)", zsto,zout)
     226
    233227         CALL histdef(nid_ins, "dtajs", "Dry adjust. dT", "K/s",
    234      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    235      .                "inst(X)", zsto,zout)
    236 c
     228     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     229     .                "inst(X)", zsto,zout)
     230
    237231         CALL histdef(nid_ins, "dtswr", "SW radiation dT", "K/s",
    238      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    239      .                "inst(X)", zsto,zout)
    240 c
     232     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     233     .                "inst(X)", zsto,zout)
     234
    241235         CALL histdef(nid_ins, "dtlwr", "LW radiation dT", "K/s",
    242      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    243      .                "inst(X)", zsto,zout)
    244 c
     236     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     237     .                "inst(X)", zsto,zout)
     238
    245239c        CALL histdef(nid_ins, "dtec", "Cinetic dissip dT", "K/s",
    246 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    247 c    .                "inst(X)", zsto,zout)
    248 c
     240c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     241c    .                "inst(X)", zsto,zout)
     242
    249243c        CALL histdef(nid_ins, "dvvdf", "Boundary-layer dV", "m/s2",
    250 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    251 c    .                "inst(X)", zsto,zout)
    252 c
     244c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     245c    .                "inst(X)", zsto,zout)
     246
    253247      ENDIF !lev_histday.GE.4
    254 c
     248
    255249c-------------------------------------------------------
    256250      IF(lev_histday.GE.5) THEN
    257 c
    258 c
     251
     252
    259253c        call histdef(nid_ins, "taux",
    260254c    $         "Zonal wind stress", "Pa", 
    261 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     255c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    262256c    $         "inst(X)", zsto,zout)
    263 c
     257
    264258c        call histdef(nid_ins, "tauy",
    265259c    $         "Meridional xind stress", "Pa", 
    266 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     260c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    267261c    $         "inst(X)", zsto,zout)
    268 c
     262
    269263c        CALL histdef(nid_ins, "cdrm", "Momentum drag coef.", "-",
    270 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    271 c    .                "inst(X)", zsto,zout)
    272 c
     264c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     265c    .                "inst(X)", zsto,zout)
     266
    273267c        CALL histdef(nid_ins, "cdrh", "Heat drag coef.", "-",
    274 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    275 c    .                "inst(X)", zsto,zout)
    276 c
     268c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     269c    .                "inst(X)", zsto,zout)
     270
    277271      ENDIF !lev_histday.GE.5
    278272c-------------------------------------------------------
    279273
    280274         CALL histend(nid_ins)
    281 c
    282          ndex2d = 0
    283          ndex3d = 0
    284 c
     275
    285276      ENDIF
  • trunk/LMDZ.TITAN/libf/phytitan/ini_histmth.h

    r902 r1056  
    11      IF (ok_mensuel) THEN
    2 c
     2
    33         zsto = dtime
    4          zout = dtime * FLOAT(ecrit_mth)
     4         zout = dtime * REAL(ecrit_mth)
    55c zsto1: pour des flux radiatifs calcules tous les radpas appels physiq
    6          zsto1= dtime * FLOAT(radpas)
    7 c
     6         zsto1= dtime * REAL(radpas)
     7
    88         idayref = day_ref
    99         CALL ymds2ju(annee_ref, 1, idayref, zero, zjulian)
    10 c
    11          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlond,zx_lon)
    12          DO i = 1, iim
    13             zx_lon(i,1) = rlond(i+jjmp1-jjm)
    14             zx_lon(i,jjmp1) = rlond(i+jjmp1-jjm)
    15          ENDDO
    16          CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlatd,zx_lat)
    17          CALL histbeg("histmth", iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    18      .                 1,iim,1,jjmp1, itau_phy, zjulian, dtime,
     10
     11         CALL histbeg_phy("histmth.nc", itau_phy, zjulian, dtime,
    1912     .                 nhori, nid_mth)
    20          write(*,*)'Journee ', itau_phy, zjulian
    21          CALL histvert(nid_mth, "presnivs", "Vertical levels", "mb",
     13
     14!$OMP MASTER
     15         CALL histvert(nid_mth, "presnivs", "Vertical levels", "Pa",
    2216     .                 klev, presnivs, nvert)
    2317
    2418c-------------------------------------------------------
    2519      IF(lev_histmth.GE.1) THEN
    26 c
     20
    2721ccccccccccccc 2D fields, invariables
    28 c
     22
    2923         CALL histdef(nid_mth, "phis", "Surface geop. height", "-",
    30      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     24     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3125     .                "once",  zsto,zout)
    32 c
     26
    3327         CALL histdef(nid_mth, "aire", "Grid area", "-",
    34      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     28     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    3529     .                "once",  zsto,zout)
    36 c
     30
    3731ccccccc axe Ls
    3832         CALL histdef(nid_mth, "ls", "Solar longitude", "degrees",
    39      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    40      .                "ave(X)", zsto,zout)
    41 c
     33     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     34     .                "ave(X)", zsto,zout)
     35
    4236ccccccccccccc 2D fields, variables
    43 c
     37
    4438         CALL histdef(nid_mth, "tsol", "Surface Temperature", "K",
    45      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    46      .                "ave(X)", zsto,zout)
    47 c
     39     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     40     .                "ave(X)", zsto,zout)
     41
    4842         CALL histdef(nid_mth, "psol", "Surface Pressure", "Pa",
    49      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    50      .                "ave(X)", zsto,zout)
    51 c
     43     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     44     .                "ave(X)", zsto,zout)
     45
    5246c        CALL histdef(nid_mth, "ue", "Zonal energy transport", "-",
    53 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    54 c    .                "ave(X)", zsto,zout)
    55 c
     47c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     48c    .                "ave(X)", zsto,zout)
     49
    5650c        CALL histdef(nid_mth, "ve", "Merid energy transport", "-",
    57 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    58 c    .                "ave(X)", zsto,zout)
    59 c
    60 c        CALL histdef(nid_mth, "cdragh", "Drag coef on T", "-",
    61 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    62 c    .                "ave(X)", zsto,zout)
    63 c
    64 c        CALL histdef(nid_mth, "cdragm", "Drag coef on U", "-",
    65 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    66 c    .                "ave(X)", zsto,zout)
    67 c
     51c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     52c    .                "ave(X)", zsto,zout)
     53
    6854      ENDIF !lev_histmth.GE.1
    69 c
     55
    7056c-------------------------------------------------------
    7157      IF(lev_histmth.GE.2) THEN
    72 c
     58
    7359ccccccccccccc 3D fields, basics
    74 c
     60
    7561         CALL histdef(nid_mth, "temp", "Air temperature", "K",
    76      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    77      .                "ave(X)", zsto,zout)
    78 c
     62     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     63     .                "ave(X)", zsto,zout)
     64
    7965         CALL histdef(nid_mth, "pres", "Air pressure", "Pa",
    80      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    81      .                "ave(X)", zsto,zout)
    82 c
     66     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     67     .                "ave(X)", zsto,zout)
     68
    8369         CALL histdef(nid_mth, "geop", "Geopotential height", "m",
    84      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    85      .                "ave(X)", zsto,zout)
    86 c
     70     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     71     .                "ave(X)", zsto,zout)
     72
    8773         CALL histdef(nid_mth, "vitu", "Zonal wind", "m/s",
    88      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    89      .                "ave(X)", zsto,zout)
    90 c
     74     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     75     .                "ave(X)", zsto,zout)
     76
    9177         CALL histdef(nid_mth, "vitv", "Meridional wind", "m/s",
    92      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    93      .                "ave(X)", zsto,zout)
    94 c
     78     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     79     .                "ave(X)", zsto,zout)
     80
    9581         CALL histdef(nid_mth, "vitw", "Vertical wind", "Pa/s",
    96      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    97      .                "ave(X)", zsto,zout)
    98 c
     82     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     83     .                "ave(X)", zsto,zout)
     84
    9985c        CALL histdef(nid_mth, "Kz", "vertical diffusion coef", "m2/s",
    100 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    101 c    .                "ave(X)", zsto,zout)
    102 c
     86c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     87c    .                "ave(X)", zsto,zout)
     88
    10389         CALL histdef(nid_mth, "tops", "Solar rad. at TOA", "W/m2",
    104      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     90     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    10591     .                "ave(X)", zsto1,zout)
    106 c
     92
     93         CALL histdef(nid_mth, "duvdf", "Boundary-layer dU", "m/s2",
     94     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     95     .                "ave(X)", zsto,zout)
     96
     97         CALL histdef(nid_mth, "dudyn", "Dynamics dU", "m/s2",
     98     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     99     .                "ave(X)", zsto,zout)
     100
    107101cccccccccccccccccc  Tracers
    108 c
     102
    109103         if (iflag_trac.eq.1) THEN
    110104          if (microfi.ge.1) then
    111105c           DO iq=1,nmicro
    112106c             CALL histdef(nid_mth, tname(iq), ttext(iq), "n/m2",
    113 c     .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     107c     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    114108c     .                "ave(X)", zsto,zout)
    115109c           ENDDO
    116110             CALL histdef(nid_mth, "qaer","nb tot aer" , "n/m2",
    117      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     111     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    118112     .                    "ave(X)", zsto,zout)
    119113
    120114            if (clouds.eq.1) then
    121115             CALL histdef(nid_mth, "qnoy","nb tot noy" , "n/m2",
    122      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     116     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    123117     .                    "ave(X)", zsto,zout)
    124118             CALL histdef(nid_mth, "qgl1","V tot gl1" , "m3/m2",
    125      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     119     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    126120     .                    "ave(X)", zsto,zout)
    127121             CALL histdef(nid_mth, "qgl2","V tot gl2" , "m3/m2",
    128      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     122     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    129123     .                    "ave(X)", zsto,zout)
    130124             CALL histdef(nid_mth, "qgl3","V tot gl3" , "m3/m2",
    131      .                    iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     125     .                    iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    132126     .                    "ave(X)", zsto,zout)
    133127c--------------
    134128c ----- SATURATION ESP NUAGES
    135129               CALL histdef(nid_mth,"ch4sat", "saturation CH4", "--",
    136      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     130     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    137131     .                "ave(X)", zsto,zout)
    138132               CALL histdef(nid_mth,"c2h6sat", "saturation C2H6", "--",
    139      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     133     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    140134     .                "ave(X)", zsto,zout)
    141135               CALL histdef(nid_mth,"c2h2sat", "saturation C2H2", "--",
    142      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     136     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    143137     .                "ave(X)", zsto,zout)
    144138c --------------
    145139c ----- RESERVOIR DE SURFACE
    146140               CALL histdef(nid_mth, "reserv", "Reservoir surface","m",
    147      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     141     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    148142     .                "ave(X)", zsto,zout)
    149143c --------------
    150144c ----- ECHANGE GAZ SURF/ATM (evaporation)
    151145               CALL histdef(nid_mth, "evapch4", "Evaporation CH4","m",
    152      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     146     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    153147     .                "ave(X)", zsto,zout)
    154148c --------------
    155149c ----- PRECIPITATIONS (precipitations moyennes)
    156150               CALL histdef(nid_mth,"prech4","Precip CH4","um/s",
    157      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     151     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    158152     .                "ave(X)", zsto,zout)
    159153               CALL histdef(nid_mth,"prec2h6","Precip C2H6",
    160      .                "um/s",iim,jjmp1,nhori, 1,1,1, -99, 32,
     154     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    161155     .                "ave(X)", zsto,zout)
    162156               CALL histdef(nid_mth,"prec2h2","Precip C2H2",
    163      .                "um/s",iim,jjmp1,nhori, 1,1,1, -99, 32,
     157     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    164158     .                "ave(X)", zsto,zout)
    165159               CALL histdef(nid_mth,"prenoy","Precip NOY",
    166      .                "um/s",iim,jjmp1,nhori, 1,1,1, -99, 32,
     160     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    167161     .                "ave(X)", zsto,zout)
    168162               CALL histdef(nid_mth,"preaer","Precip AER",
    169      .                "um/s",iim,jjmp1,nhori, 1,1,1, -99, 32,
     163     .                "um/s",iim,jj_nb,nhori, 1,1,1, nvert, 32,
    170164     .                "ave(X)", zsto,zout)
    171165c --------------
    172166c ----- FLUX GLACE
    173167               CALL histdef(nid_mth,"flxgl1", "flux gl CH4",
    174      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     168     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    175169     .              "ave(X)", zsto,zout)
    176170               CALL histdef(nid_mth,"flxgl2", "flux gl C2H6",
    177      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     171     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    178172     .              "ave(X)", zsto,zout)
    179173               CALL histdef(nid_mth,"flxgl3", "flux gl C2H2",
    180      .              "kg/m2/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     174     .              "kg/m2/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    181175     .              "ave(X)", zsto,zout)
    182176c --------------
    183177c ----- Source/puits GLACE
    184178               CALL histdef(nid_mth,"solch4", "dQ gl CH4",
    185      .              "m3/m3",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     179     .              "m3/m3",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    186180     .              "ave(X)", zsto,zout)
    187181               CALL histdef(nid_mth,"solc2h6", "dQ gl C2H6",
    188      .              "m3/m3",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     182     .              "m3/m3",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    189183     .              "ave(X)", zsto,zout)
    190184               CALL histdef(nid_mth,"solc2h2", "dQ gl C2H2",
    191      .              "m3/m3",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     185     .              "m3/m3",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    192186     .              "ave(X)", zsto,zout)
    193187c --------------
    194188c ----- RAYON DES GOUTTES
    195189               CALL histdef(nid_mth,"rcldbar", "rayon moyen goutte",
    196      .                "m",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     190     .                "m",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    197191     .                "ave(X)", zsto,zout)
    198192            endif
     
    203197           DO iq=nmicro+1,nqmax
    204198         CALL histdef(nid_mth, tname(iq), ttext(iq), "ppm",
    205      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     199     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    206200     .                "ave(X)", zsto,zout)
    207201           ENDDO
     
    209203c          DO iq=nmicro+1,nqmax
    210204c        CALL histdef(nid_mth, "c_"//tname(iq), "c_"//ttext(iq),
    211 c    .        "ppm/s",iim,jjmp1,nhori, klev,1,klev,nvert, 32,
     205c    .        "ppm/s",iim,jj_nb,nhori, klev,1,klev,nvert, 32,
    212206c    .                "ave(X)", zsto,zout)
    213207c          ENDDO
    214208          endif
    215209         endif
    216 c
     210
    217211      ENDIF !lev_histmth.GE.2
    218 c
     212
    219213c-------------------------------------------------------
    220214      IF(lev_histmth.GE.3) THEN
    221 c
     215
    222216cccccccccccccccccc  Radiative transfer
    223 c
     217
    224218c 2D
    225 c
     219
    226220         CALL histdef(nid_mth, "topl", "IR rad. at TOA", "W/m2",
    227      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     221     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    228222     .                "ave(X)", zsto1,zout)
    229 c
     223
    230224         CALL histdef(nid_mth, "sols", "Solar rad. at surf.", "W/m2",
    231      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     225     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    232226     .                "ave(X)", zsto1,zout)
    233 c
     227
    234228         CALL histdef(nid_mth, "soll", "IR rad. at surface", "W/m2",
    235      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     229     .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
    236230     .                "ave(X)", zsto1,zout)
    237 c
     231
    238232c 3D
    239 c
     233
    240234         CALL histdef(nid_mth, "SWnet", "Net SW flux","W/m2",
    241      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     235     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    242236     .                32, "ave(X)", zsto1,zout)
    243 c
     237
    244238         CALL histdef(nid_mth, "LWnet", "Net LW flux","W/m2",
    245      .                iim,jjmp1,nhori, klev,1,klev,nvert,
     239     .                iim,jj_nb,nhori, klev,1,klev,nvert,
    246240     .                32, "ave(X)", zsto1,zout)
    247 c
     241
    248242c --------------
    249243c ----- OPACITE BRUME
    250244         DO k=7,NSPECV,10
    251            write(str1,'(i2.2)') k
    252          CALL histdef(nid_mth,"thv"//str1,"Haze Opa Vis",
    253      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    254      .                "ave(X)",zsto1,zout)
    255          ENDDO
    256 c
     245           write(str2,'(i2.2)') k
     246         CALL histdef(nid_mth,"thv"//str2,"Haze Opa Vis",
     247     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     248     .                "ave(X)",zsto1,zout)
     249         ENDDO
     250
    257251         DO k=8,NSPECI,10
    258            write(str1,'(i2.2)') k
    259          CALL histdef(nid_mth,"thi"//str1,"Haze Opa IR",
    260      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    261      .                "ave(X)",zsto1,zout)
    262          ENDDO
    263 c
     252           write(str2,'(i2.2)') k
     253         CALL histdef(nid_mth,"thi"//str2,"Haze Opa IR",
     254     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     255     .                "ave(X)",zsto1,zout)
     256         ENDDO
     257
    264258c --------------
    265259c ----- EXTINCTION BRUME
    266260         DO k=7,NSPECV,10
    267            write(str1,'(i2.2)') k
    268          CALL histdef(nid_mth,"khv"//str1,"Haze ext Vis ",
    269      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    270      .                "ave(X)",zsto1,zout)
    271          ENDDO
    272 c
     261           write(str2,'(i2.2)') k
     262         CALL histdef(nid_mth,"khv"//str2,"Haze ext Vis ",
     263     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     264     .                "ave(X)",zsto1,zout)
     265         ENDDO
     266
    273267         DO k=8,NSPECI,10
    274            write(str1,'(i2.2)') k
    275          CALL histdef(nid_mth,"khi"//str1,"Haze ext IR ",
    276      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    277      .                "ave(X)",zsto1,zout)
    278          ENDDO
    279 c
     268           write(str2,'(i2.2)') k
     269         CALL histdef(nid_mth,"khi"//str2,"Haze ext IR ",
     270     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     271     .                "ave(X)",zsto1,zout)
     272         ENDDO
     273
    280274c --------------
    281275c ----- OPACITE GAZ
    282276         DO k=7,NSPECV,10
    283            write(str1,'(i2.2)') k
    284          CALL histdef(nid_mth,"tgv"//str1,"Gas Opa Vis",
    285      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    286      .                "ave(X)",zsto1,zout)
    287          ENDDO
    288 c
     277           write(str2,'(i2.2)') k
     278         CALL histdef(nid_mth,"tgv"//str2,"Gas Opa Vis",
     279     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     280     .                "ave(X)",zsto1,zout)
     281         ENDDO
     282
    289283         DO k=8,NSPECI,10
    290            write(str1,'(i2.2)') k
    291          CALL histdef(nid_mth,"tgi"//str1,"Haze Opa IR",
    292      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    293      .                "ave(X)",zsto1,zout)
    294          ENDDO
    295 c
     284           write(str2,'(i2.2)') k
     285         CALL histdef(nid_mth,"tgi"//str2,"Haze Opa IR",
     286     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     287     .                "ave(X)",zsto1,zout)
     288         ENDDO
     289
    296290c --------------
    297291c ----- EXTINCTION GAZ
    298292         DO k=7,NSPECV,10
    299            write(str1,'(i2.2)') k
    300          CALL histdef(nid_mth,"kgv"//str1,"Gas ext Vis ",
    301      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    302      .                "ave(X)",zsto1,zout)
    303          ENDDO
    304 c
     293           write(str2,'(i2.2)') k
     294         CALL histdef(nid_mth,"kgv"//str2,"Gas ext Vis ",
     295     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     296     .                "ave(X)",zsto1,zout)
     297         ENDDO
     298
    305299         DO k=8,NSPECI,10
    306            write(str1,'(i2.2)') k
    307          CALL histdef(nid_mth,"kgi"//str1,"Gas ext IR ",
    308      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
    309      .                "ave(X)",zsto1,zout)
    310          ENDDO
    311 c
     300           write(str2,'(i2.2)') k
     301         CALL histdef(nid_mth,"kgi"//str2,"Gas ext IR ",
     302     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
     303     .                "ave(X)",zsto1,zout)
     304         ENDDO
     305
    312306c --------------
    313307c ----- OPACITE NUAGES
    314308         if (clouds.eq.1) then
    315309           CALL histdef(nid_mth,"tcld","Cld Opa proxy",
    316      .                "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
     310     .                "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
    317311     .                "ave(X)",zsto,zout)
    318 c
     312
    319313c --------------
    320314c ----- EXTINCTION NUAGES
    321315           CALL histdef(nid_mth,"kcld","Cld Ext proxy",
    322      .                "m-1",iim,jjmp1,nhori,klev,1,klev,nvert,32,
     316     .                "m-1",iim,jj_nb,nhori,klev,1,klev,nvert,32,
    323317     .                "ave(X)",zsto,zout)
    324318         endif
    325 c
     319
    326320c --------------
    327321c ----- OCCURENCE NUAGES
    328322           do k=1,12
    329              write(str1,'(i2.2)') k
    330              CALL histdef(nid_mth,"occcld"//str1,"occ cld",
    331      .       "--",iim,jjmp1,nhori,klev,1,klev,nvert,32,
     323             write(str2,'(i2.2)') k
     324             CALL histdef(nid_mth,"occcld"//str2,"occ cld",
     325     .       "--",iim,jj_nb,nhori,klev,1,klev,nvert,32,
    332326     .       "ave(X)",zsto,zout)
    333327           enddo
    334 c
     328
    335329      ENDIF !lev_histmth.GE.3
    336 c
     330
    337331c-------------------------------------------------------
    338332      IF(lev_histmth.GE.4) THEN
    339 c
     333
    340334         CALL histdef(nid_mth, "dtdyn", "Dynamics dT", "K/s",
    341      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    342      .                "ave(X)", zsto,zout)
    343 c
     335     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     336     .                "ave(X)", zsto,zout)
     337
    344338         CALL histdef(nid_mth, "dtphy", "Physics dT", "K/s",
    345      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    346      .                "ave(X)", zsto,zout)
    347 c
     339     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     340     .                "ave(X)", zsto,zout)
     341
    348342         CALL histdef(nid_mth, "dtvdf", "Boundary-layer dT", "K/s",
    349      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    350      .                "ave(X)", zsto,zout)
    351 c
     343     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     344     .                "ave(X)", zsto,zout)
     345
    352346         CALL histdef(nid_mth, "dtajs", "Dry adjust. dT", "K/s",
    353      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    354      .                "ave(X)", zsto,zout)
    355 c
     347     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     348     .                "ave(X)", zsto,zout)
     349
    356350         CALL histdef(nid_mth, "dtswr", "SW radiation dT", "K/s",
    357      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    358      .                "ave(X)", zsto,zout)
    359 c
     351     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     352     .                "ave(X)", zsto,zout)
     353
    360354         CALL histdef(nid_mth, "dtlwr", "LW radiation dT", "K/s",
    361      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    362      .                "ave(X)", zsto,zout)
    363 c
     355     .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     356     .                "ave(X)", zsto,zout)
     357
    364358c        CALL histdef(nid_mth, "dtec", "Cinetic dissip dT", "K/s",
    365 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    366 c    .                "ave(X)", zsto,zout)
    367 c
    368          CALL histdef(nid_mth, "duvdf", "Boundary-layer dU", "m/s2",
    369      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    370      .                "ave(X)", zsto,zout)
    371 c
    372          CALL histdef(nid_mth, "dudyn", "Dynamics dU", "m/s2",
    373      .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    374      .                "ave(X)", zsto,zout)
    375 c
     359c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     360c    .                "ave(X)", zsto,zout)
     361
    376362c        CALL histdef(nid_mth, "dvvdf", "Boundary-layer dV", "m/s2",
    377 c    .                iim,jjmp1,nhori, klev,1,klev,nvert, 32,
    378 c    .                "ave(X)", zsto,zout)
    379 c
     363c    .                iim,jj_nb,nhori, klev,1,klev,nvert, 32,
     364c    .                "ave(X)", zsto,zout)
     365
    380366      ENDIF !lev_histmth.GE.4
    381 c
     367
    382368c-------------------------------------------------------
    383369      IF(lev_histmth.GE.5) THEN
    384 c
    385 c
     370
     371
    386372c        call histdef(nid_mth, "taux",
    387373c    $         "Zonal wind stress", "Pa", 
    388 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     374c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    389375c    $         "ave(X)", zsto,zout)
    390 c
     376
    391377c        call histdef(nid_mth, "tauy",
    392378c    $         "Meridional xind stress", "Pa", 
    393 c    $         iim,jjmp1,nhori, 1,1,1, -99, 32,
     379c    $         iim,jj_nb,nhori, 1,1,1, nvert, 32,
    394380c    $         "ave(X)", zsto,zout)
    395 c
     381
    396382c        CALL histdef(nid_mth, "cdrm", "Momentum drag coef.", "-",
    397 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    398 c    .                "ave(X)", zsto,zout)
    399 c
     383c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     384c    .                "ave(X)", zsto,zout)
     385
    400386c        CALL histdef(nid_mth, "cdrh", "Heat drag coef.", "-",
    401 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    402 c    .                "ave(X)", zsto,zout)
    403 c
     387c    .                iim,jj_nb,nhori, 1,1,1, nvert, 32,
     388c    .                "ave(X)", zsto,zout)
     389
    404390      ENDIF !lev_histmth.GE.5
    405391c-------------------------------------------------------
    406 c
     392
    407393         CALL histend(nid_mth)
    408 c
    409          ndex2d = 0
    410          ndex3d = 0
    411 c
     394
    412395      ENDIF ! fin de test sur ok_journe
  • trunk/LMDZ.TITAN/libf/phytitan/iniphysiq.F

    r841 r1056  
    4343c   -------------
    4444 
    45       use dimphy
    46       USE comgeomphy
     45      USE dimphy, only : klev
     46      USE mod_grid_phy_lmdz, only : klon_glo
     47      USE mod_phys_lmdz_para, only : klon_omp,klon_omp_begin,
     48     &                               klon_omp_end,klon_mpi_begin
     49      USE comgeomphy, only : airephy,cuphy,cvphy,rlond,rlatd
    4750      IMPLICIT NONE
    48 #include "dimensions.h"
     51#include "iniprint.h"
    4952
    50       REAL prad,pg,pr,pcpp,punjours
     53      REAL,INTENT(IN) :: prad ! radius of the planet (m)
     54      REAL,INTENT(IN) :: pg ! gravitational acceleration (m/s2)
     55      REAL,INTENT(IN) :: pr ! ! reduced gas constant R/mu
     56      REAL,INTENT(IN) :: pcpp ! specific heat Cp
     57      REAL,INTENT(IN) :: punjours ! length (in s) of a standard day
     58      INTEGER,INTENT(IN) :: ngrid ! number of horizontal grid points in the physics
     59      INTEGER,INTENT(IN) :: nlayer ! number of atmospheric layers
     60      REAL,INTENT(IN) :: plat(ngrid) ! latitudes of the physics grid
     61      REAL,INTENT(IN) :: plon(ngrid) ! longitudes of the physics grid
     62      REAL,INTENT(IN) :: parea(klon_glo) ! area (m2)
     63      REAL,INTENT(IN) :: pcu(klon_glo) ! cu coeff. (u_covariant = cu * u)
     64      REAL,INTENT(IN) :: pcv(klon_glo) ! cv coeff. (v_covariant = cv * v)
     65      INTEGER,INTENT(IN) :: pdayref ! reference day of for the simulation
     66      REAL,INTENT(IN) :: ptimestep !physics time step (s)
    5167      INTEGER,INTENT(IN) :: iflag_phys ! type of physics to be called
    52       INTEGER ngrid,nlayer
    53       REAL plat(ngrid),plon(ngrid),parea(klon),pcu(klon),pcv(klon)
    54       INTEGER pdayref
    55  
    56       REAL ptimestep
     68
     69      INTEGER :: ibegin,iend,offset
     70      CHARACTER (LEN=20) :: modname='iniphysiq'
     71      CHARACTER (LEN=80) :: abort_message
    5772 
    5873      IF (nlayer.NE.klev) THEN
    59          PRINT*,'STOP in inifis'
    60          PRINT*,'Probleme de dimensions :'
    61          PRINT*,'nlayer     = ',nlayer
    62          PRINT*,'klev   = ',klev
    63          STOP
     74         write(lunout,*) 'STOP in ',trim(modname)
     75         write(lunout,*) 'Problem with dimensions :'
     76         write(lunout,*) 'nlayer     = ',nlayer
     77         write(lunout,*) 'klev   = ',klev
     78         abort_message = ''
     79         CALL abort_gcm (modname,abort_message,1)
    6480      ENDIF
    6581
    66       IF (ngrid.NE.klon) THEN
    67          PRINT*,'STOP in inifis'
    68          PRINT*,'Probleme de dimensions :'
    69          PRINT*,'ngrid     = ',ngrid
    70          PRINT*,'klon   = ',klon
    71          STOP
     82      IF (ngrid.NE.klon_glo) THEN
     83         write(lunout,*) 'STOP in ',trim(modname)
     84         write(lunout,*) 'Problem with dimensions :'
     85         write(lunout,*) 'ngrid     = ',ngrid
     86         write(lunout,*) 'klon   = ',klon_glo
     87         abort_message = ''
     88         CALL abort_gcm (modname,abort_message,1)
    7289      ENDIF
    7390
    74       airephy=parea
    75       cuphy=pcu
    76       cvphy=pcv
    77       rlond = plon
    78       rlatd = plat
     91c$OMP PARALLEL PRIVATE(ibegin,iend)
     92c$OMP+         SHARED(parea,pcu,pcv,plon,plat)
     93     
     94      offset=klon_mpi_begin-1
     95      airephy(1:klon_omp)=parea(offset+klon_omp_begin:
     96     &                          offset+klon_omp_end)
     97      cuphy(1:klon_omp)=pcu(offset+klon_omp_begin:offset+klon_omp_end)
     98      cvphy(1:klon_omp)=pcv(offset+klon_omp_begin:offset+klon_omp_end)
     99      rlond(1:klon_omp)=plon(offset+klon_omp_begin:offset+klon_omp_end)
     100      rlatd(1:klon_omp)=plat(offset+klon_omp_begin:offset+klon_omp_end)
    79101
    80102      call suphec
     103
     104c$OMP END PARALLEL
     105
    81106c     print*,'ATTENTION !!! TRAVAILLER SUR INIPHYSIQ'
    82107c     print*,'CONTROLE DES LATITUDES, LONGITUDES, PARAMETRES ...'
    83108
     109c      print*,'agagagagagagagagaga'
     110c      print*,'klon_mpi_begin =', klon_mpi_begin
     111c      print*,'klon_mpi_end =', klon_mpi_end
     112c      print*,'klon_mpi =', klon_mpi
     113c      print*,'klon_mpi_para_nb =', klon_mpi_para_nb
     114c      print*,'klon_mpi_para_begin =', klon_mpi_para_begin
     115c      print*,'klon_mpi_para_end  =', klon_mpi_para_end
     116c      print*,'mpi_rank =', mpi_rank
     117c      print*,'mpi_size =', mpi_size
     118c      print*,'mpi_root =', mpi_root
     119c      print*,'klon_glo =', klon_glo
     120c      print*,'is_mpi_root =',is_mpi_root
     121c      print*,'is_omp_root =',is_omp_root
     122
     123! pas d'inifis ici...
     124! est-ce que cursor est utile ? Voir avec Aymeric
     125!      cursor = klon_mpi_begin
     126!      print*, "CURSOR !!!!", mpi_rank, cursor
    84127
    85128      RETURN
  • trunk/LMDZ.TITAN/libf/phytitan/init_phys_lmdz.F90

    r119 r1056  
    33!
    44SUBROUTINE init_phys_lmdz(iim,jjp1,llm,nb_proc,distrib)
     5  USE mod_phys_lmdz_para
    56  USE mod_grid_phy_lmdz
    6   USE dimphy
     7  USE dimphy, ONLY : init_dimphy
     8  USE infotrac, ONLY : type_trac
     9
    710  IMPLICIT NONE
    811 
     
    1518
    1619    CALL init_grid_phy_lmdz(iim,jjp1,llm)
    17     CALL init_dimphy(klon_glo,nbp_lev)
     20    CALL init_phys_lmdz_para(iim,jjp1,nb_proc,distrib)
     21!$OMP PARALLEL
     22    CALL init_dimphy(klon_omp,nbp_lev)
     23!$OMP END PARALLEL
    1824 
    1925END SUBROUTINE init_phys_lmdz 
  • trunk/LMDZ.TITAN/libf/phytitan/interface_surf.F90

    r1055 r1056  
    4545      & tsol_rad, tsurf_new, alb_new)
    4646
     47      use write_field_phy
    4748      use cpdet_mod, only: cpdet
    4849
     
    159160           CALL soil(dtime, knon, tsurf, tsoil,soilcap, soilflux)
    160161           cal(1:knon) = zcp(1:knon) / soilcap(1:knon)
     162! for tests:
     163!  call writefield_phy('interfsurf_hq_zcp',zcp,1)
     164!  call writefield_phy('interfsurf_hq_cal',cal,1)
     165!  call writefield_phy('interfsurf_hq_soilcap',soilcap,1)
    161166!       print*,"DIAGNOSTIC SOIL"
    162167!       print*,"soilcap=",soilcap
     
    191196     & tsurf_new, fluxsens, dflux_s)
    192197
     198  use write_field_phy
    193199  use cpdet_mod, only: t2tpot, tpot2t
    194200
     
    326332  ENDDO
    327333
     334! for tests: write output fields...
     335!  call writefield_phy('calcul_fluxs_d_ts',d_ts,1)
     336!  call writefield_phy('calcul_fluxs_fluxsens',fluxsens,1)
     337!  call writefield_phy('calcul_fluxs_dflux_s',dflux_s,1)
     338
    328339  END SUBROUTINE calcul_fluxs
    329340!
  • trunk/LMDZ.TITAN/libf/phytitan/muphys3D.F

    r474 r1056  
    6464c------------------------------------------------------
    6565         use dimphy
     66c         use radcommon_h, only : volume,rayon,vrat,drayon,dvolume
     67         USE comgeomphy,  only: rlatd
     68
    6669         IMPLICIT NONE
    6770#include "dimensions.h"
     
    7477
    7578         integer iq,nmicro
    76 
     79         real    ptimestep
     80         real    pdpsrf(ngrid)
     81
     82c a la place de radcommon_h:
    7783         common/part/vaer,raer,vrat,draer,dvaer
    7884         real   vaer(nrad),raer(nrad),vrat,
    7985     &          draer(nrad),dvaer(nrad)
    80 
    81          real   ptimestep
    82  
    83          real  pdpsrf(ngrid)
    8486
    8587c*************************************
     
    116118         real  q(ngrid,klev,nmicro)
    117119         REAL taused(klev,nrad)
    118          integer jsup,jinf,h,jalt,ihor,k
     120         integer jsup,jinf,h,jalt,ihor,k,im1
    119121
    120122c    microphysique    *
     
    146148         IF (IPREM.eq.0) THEN
    147149 
    148            IF (microfi.eq.1) THEN
    149              IF (ngrid.ne.jjm+1) THEN
    150                print*,"aLeRte :"
    151                print*,"microfi en 2D mais ngrid.ne.jjm+1"
    152                print*,ngrid,jjm+1
    153                stop "je m'arrete..."
    154              ENDIF
    155            ELSEIF (microfi.eq.2) THEN
    156150             IF (ngrid.ne.klon) THEN
    157151               print*,"aLeRte :"
    158                print*,"microfi en 3D mais ngrid.ne.klon"
     152               print*,"microfi, mais ngrid.ne.klon"
    159153               print*,ngrid,klon
    160                stop "je m'arrete..."
     154               stop "je m'arrete... (muphys3D)"
    161155             ENDIF
    162            ENDIF
    163156
    164157c initialisation des constantes de la microphysique :
     
    183176           call rdf()
    184177c   ici on recopie la grille dans un common specifique a la microfi...
     178c          v_e    = volume
     179c          r_e    = rayon
     180c          vrat_e = vrat
     181c          dr_e   = drayon
     182c          dv_e   = dvolume
    185183           v_e    = vaer
    186184           r_e    = raer
     
    221219c correpondance des couches / sens GCM > microphysique
    222220c-----------------------------------------------------
    223 c
     221
     222c***************************************************************
    224223         do IHOR=1,NGRID ! GRANDE BOUCLE HORIZONTALE / SEPARATION DES COLONNES
    225224
     225         if (IHOR.eq.1) then
     226           im1=1
     227         else
     228           im1=IHOR-1
     229         endif
     230
     231c***************************************************************
     232c On refait les calculs si on est au premier point
     233c         OU            si on change de latitude
     234c         OU            si on calcule la microfi en 3D
     235c***************************************************************
     236        if((IHOR.eq.1)   
     237     & .or.(rlatd(IHOR).ne.rlatd(im1))
     238     & .or.(microfi.eq.2)) then
     239c***************************************************************
    226240 
    227241c  Ici, on initialise la grille verticale et les
     
    415429           endif
    416430
     431c***************************************************************
     432         else      ! same latitude, we don't do calculations again
     433           q(ihor,:,:)       = q(im1,:,:)
     434           tau_aer(ihor,:,:) = tau_aer(im1,:,:)
     435           prec(ihor,:)    = prec(im1,:)
     436           if (clouds.eq.1) then
     437             solesp(ihor,:,:)   = solesp(im1,:,:)
     438             flxesp_i(ihor,:,:) = flxesp_i(im1,:,:)
     439             tau_drop(ihor,:) = tau_drop(im1,:)
     440             gaz1(ihor,:) = gaz1(im1,:)
     441             gaz2(ihor,:) = gaz2(im1,:)
     442             gaz3(ihor,:) = gaz3(im1,:)
     443           endif
     444         endif
     445
    417446         ENDDO             ! Fin de la boucle IHOR
     447c***************************************************************
    418448
    419449102      CONTINUE           ! la premiere fois, c'est une boucle vide!
  • trunk/LMDZ.TITAN/libf/phytitan/n_acethylene.F

    r175 r1056  
    9595#include "varmuphy.h"
    9696
    97 
    9897      integer ng,nalt
    9998      parameter(ng=1,nalt=llm)
     
    163162
    164163c     Variables for latent heat release
    165       real lw,cpp
     164      real lw
    166165      data lw / 581.e+3/
    167       data cpp/1050./ ! pour etre cohérent avec le reste...
    168       save lw,cpp
     166      save lw
    169167
    170168
  • trunk/LMDZ.TITAN/libf/phytitan/n_ethane.F

    r175 r1056  
    177177
    178178c     Variables for latent heat release
    179       real lw,cpp
     179      real lw
    180180      data lw / 581.e+3/
    181 c     data cpp/1044./
    182       data cpp/1050./ ! pour etre cohérent avec le reste...
    183       save lw,cpp
     181      save lw
    184182
    185183
  • trunk/LMDZ.TITAN/libf/phytitan/n_methane.F

    r175 r1056  
    157157
    158158c     Variables for latent heat release
    159       real lw,cpp
     159      real lw
    160160      data lw / 510.e+3/
    161 c     data cpp/1044./
    162       data cpp/1050./ ! pour etre cohérent avec le reste...
    163       save lw,cpp
     161      save lw
    164162
    165163
  • trunk/LMDZ.TITAN/libf/phytitan/optci.F

    r808 r1056  
    22      use dimphy
    33      use infotrac
     4      use common_mod, only:rmcbar,xfbar,ncount,TauHID,TauCID,TauGID
    45#include "dimensions.h"
    56#include "microtab.h"
     
    4243     &                TAUHV(ngrid,NSPECV),TAUCV(ngrid,NSPECV),
    4344     &                TAUGV(ngrid,NSPECV)
    44 
    45       COMMON /TAUD/   TAUHID(ngrid,NLAYER,NSPECI)
    46      &               ,TAUCID(ngrid,NLAYER,NSPECI)
    47      &               ,TAUGID(ngrid,NLAYER,NSPECI)
    48      &               ,TAUHVD(ngrid,NLAYER,NSPECV)
    49      &               ,TAUCVD(ngrid,NLAYER,NSPECV)
    50      &               ,TAUGVD(ngrid,NLAYER,NSPECV)
    51 
    5245
    5346      COMMON /OPTICI/ DTAUI(ngrid,NLAYER,NSPECI)
     
    7063      COMMON /CONST/RGAS,RHOP,PI,SIGMA
    7164      COMMON /part/v,rayon,vrat,dr,dv
    72 
    73 c-----Rayons nuages et "composition" de la goutte
    74 c     sur la grille ...
    75       integer ncount(ngrid,NLAYER)
    76       real    rmcbar(ngrid,NLAYER)
    77       real    xfbar(ngrid,NLAYER,4)
    78       COMMON/rnuabar/ncount,rmcbar,xfbar
    7965
    8066      DIMENSION PROD(NLEVEL)
     
    164150      DO 420 K=1,NSPECI
    165151C LETS USE THE THOLIN OPTICAL CONSTANTS FOR THE HAZE.
    166           CALL THOLIN(WLNI(K),TNR,TNI)
     152c         CALL THOLIN(WLNI(K),TNR,TNI)
     153          CALL THOLIN_CVD(WLNI(K),TNR,TNI)
    167154          REALI(K)=TNR
    168155          XIMGI(K)=TNI*FHIR
     
    293280        TAUGI(ig,:)    = TAUGI_1pt(:)
    294281
    295         TAUHID(ig,:,:) = TAUHID_1pt(:,:)
    296         TAUCID(ig,:,:) = TAUCID_1pt(:,:)
    297         TAUGID(ig,:,:) = TAUGID_1pt(:,:)
     282        TauHID(ig,:,:) = TAUHID_1pt(:,:)
     283        TauCID(ig,:,:) = TAUCID_1pt(:,:)
     284        TauGID(ig,:,:) = TAUGID_1pt(:,:)
    298285
    299286c************************************************************************
  • trunk/LMDZ.TITAN/libf/phytitan/optci_1pt_3.F

    r888 r1056  
    1212     &     ximgi, realv, ximgv, rcldi, xicldi, rcldv, xicldv, rcldi2,
    1313     &     xicldi2, rcldv2, xicldv2,real bwni, wnoi, dwni, wlni, csubp,
    14      &     rsfi, rsfv, f0pi, rhch4, fh2, fhaze, fhvis
     14     &     f0pi, rhch4, fh2, fhaze, fhvis
    1515     &     reali, ximgi, bwni, fhir, taufac, rcloud, fargon, rgas, rhop,
    1616     &     pi, sigma, prod,reali,fhvis
     
    5555     &                DWNI(NSPECI), WLNI(NSPECI)
    5656
    57       COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
     57      COMMON /PLANT/ CSUBP,F0PI
    5858      COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
    5959      COMMON /CONST/RGAS,RHOP,PI,SIGMA
     
    9999          DO 100 J=1,NLAYER    ! BOUCLE SUR L'ALTITUDE
    100100c************************************************************************
    101 c      print*,'ig,k,j ',ig,k,j
    102101
    103102C SET UP THE COEFFICIENT TO REDUCE MASS PATH TO STP ...SEE NOTES
     
    282281c     TAEROSCAT=xv2(j,k)
    283282c     CBAR=xv3(j,k)
    284 
    285 c     if (ig.eq.1) then
    286 c     if (k.eq.NSPECV/2) then
    287 c      print*,'@IR',K,J,TAEROS,TAEROSCAT,CBAR
    288 c     stop'Pour faire des comparaisons'
    289 c     endif
    290 c     endif
    291283
    292284
     
    337329       TAUGAS=0.0
    338330       IF (WNOI(K) .LT. 940. ) THEN
    339 c        if(ig.eq.1.and.k.eq.nspecv/2) print*,'avant PIA'
    340331                 CALL PIA(K,TBAR,PNN,PCC,PCN,PHN)
    341 c        if(ig.eq.1.and.k.eq.nspecv/2) print*,'apres PIA'
    342332C HERE IS WHERE WE COULD SCALE THE PIA COEFFICEINTS TO FIT DATA
    343333C BASED ON REGIS' NOTES. ---TGM HAS THIS ADJUST IN IT AS DEFAULT
     
    360350C     ??FLAG? HERE MUST BE WATCHED CAREFULLY
    361351                     U=COLDEN(J)*6.02204E23/BMU
    362           if(ig.eq.1.and.k.eq.nspecv/2) print*,'Avant GAS2'
    363352                     if((ylellouch).or.(.not.hcnrad)) then
    364353                       CALL GAS2_NOHCN(J, KGAS,TBAR,PBAR,U,TAU2)
     
    366355                       CALL GAS2(J, KGAS,TBAR,PBAR,U,TAU2)
    367356                     endif
    368           if(ig.eq.1.and.k.eq.nspecv/2) print*,'Apres GAS2'
    369357                     TAUGAS=TAUGAS+TAU2
    370358       ENDIF
     
    457445c 195    CONTINUE
    458446
    459 c        IF(ig.eq.12) WRITE (6,240) TAUI_1pt(NLEVEL,K)
    460447c 200    CONTINUE
    461448
  • trunk/LMDZ.TITAN/libf/phytitan/optcv.F

    r808 r1056  
    33      use dimphy
    44      use infotrac
     5      use common_mod, only:rmcbar,xfbar,ncount,TauHVD,TauCVD,TauGVD
    56#include "dimensions.h"
    67#include "microtab.h"
     
    4142     &               ,TAUHV(ngrid,NSPECV) ,TAUCV(ngrid,NSPECV)
    4243     &               ,TAUGV(ngrid,NSPECV)
    43 
    44       COMMON /TAUD/   TAUHID(ngrid,NLAYER,NSPECI)
    45      &               ,TAUCID(ngrid,NLAYER,NSPECI)
    46      &               ,TAUGID(ngrid,NLAYER,NSPECI)
    47      &               ,TAUHVD(ngrid,NLAYER,NSPECV)
    48      &               ,TAUCVD(ngrid,NLAYER,NSPECV)
    49      &               ,TAUGVD(ngrid,NLAYER,NSPECV)
    5044
    5145      COMMON /OPTICV/ DTAUV(ngrid,NLAYER,NSPECV,4)
     
    6559      COMMON /CONST/ RGAS,RHOP,PI,SIGMA
    6660      COMMON /part/ v(nrad),rayon(nrad),vrat,dr(nrad),dv(nrad)
    67 
    68 c-----Rayons nuages et "composition" de la goutte
    69 c     sur la grille ...
    70       integer ncount(ngrid,NLAYER)
    71       real    rmcbar(ngrid,NLAYER)
    72       real    xfbar(ngrid,NLAYER,4)
    73       COMMON/rnuabar/ncount,rmcbar,xfbar
    7461
    7562      REAL xv1(klev,NSPECV)
     
    136123      DO 130 K=1,NSPECV
    137124C LETS USE THE OPTICAL CONSTANTS FOR THOLIN
    138       CALL THOLIN(WLNV(K),TNR,TNI)
     125c     CALL THOLIN(WLNV(K),TNR,TNI)
     126      CALL THOLIN_CVD(WLNV(K),TNR,TNI)
    139127      REALV(K)=TNR
    140128      XIMGV(K)=TNI*FHVIS
     
    228216        TAUGV(ig,:)    = TAUGV_1pt(:)
    229217
    230         TAUHVD(ig,:,:) = TAUHVD_1pt(:,:)
    231         TAUCVD(ig,:,:) = TAUCVD_1pt(:,:)
    232         TAUGVD(ig,:,:) = TAUGVD_1pt(:,:)
     218        TauHVD(ig,:,:) = TAUHVD_1pt(:,:)
     219        TauCVD(ig,:,:) = TAUCVD_1pt(:,:)
     220        TauGVD(ig,:,:) = TAUGVD_1pt(:,:)
    233221
    234222 101  CONTINUE
  • trunk/LMDZ.TITAN/libf/phytitan/optcv_1pt_3.F

    r814 r1056  
    1212     &     ximgi, realv, ximgv, rcldi, xicldi, rcldv, xicldv, rcldi2,
    1313     &     xicldi2, rcldv2, xicldv2,real bwni, wnoi, dwni, wlni, csubp,
    14      &     rsfi, rsfv, f0pi, rhch4, fh2, fhaze, fhvis
     14     &     f0pi, rhch4, fh2, fhaze, fhvis
    1515     &     reali, ximgi, bwni, fhir, taufac, rcloud, fargon, rgas, rhop,
    1616     &     pi, sigma, prod,reali,fhvis
     
    5858     &               ,DWNV(NSPECV),WLNV(NSPECV)
    5959
    60       COMMON /PLANT/ CSUBP,RSFI,RSFV,F0PI
     60      COMMON /PLANT/ CSUBP,F0PI
    6161      COMMON /ADJUST/ RHCH4,FH2,FHAZE,FHVIS,FHIR,TAUFAC,RCLOUD,FARGON
    6262      COMMON /CONST/ RGAS,RHOP,PI,SIGMA
     
    380380c          WRITE (6,120)
    381381c 120      FORMAT(///'  OPTICAL CONSTANTS IN THE VISIBLE (@EQUATOR) ')
    382 c          WRITE(6,*) 'latitude:',ig
    383382c          DO 200 K=1,NSPECV
    384383c          WRITE (6,190)
     
    387386c          WRITE (6,230)REALV(K),XIMGV(K)
    388387c          DO 195 J=1,NLAYER,NLAYER
    389 C RECALCULATE FOR PRINT OUT ONLY, ONLY FIRST NTERM AT ig=12 (EQUATOR)
    390388c          WRITE (6,220)XNUMB(J), WBARV_1pt(J,K,NT),COSBV_1pt(J,K,NT)
    391389c    &      ,DTAUV_1pt(J,K,NT),TAUV_1pt(J,K,NT)
  • trunk/LMDZ.TITAN/libf/phytitan/physiq.F

    r1048 r1056  
    1313c
    1414c Modifications pour la physique de Titan
    15 c  adaptation a partir de celle de Venus
    16 c     S. Lebonnois (LMD/CNRS) Mai 2008
     15c     S. Lebonnois (LMD/CNRS) Juin 2013: Parallelisation
    1716c
    1817c ---------------------------------------------------------------------
     
    2827c  Arguments:
    2928c
    30 c nlon------input-I-nombre de points horizontaux
    31 c nlev------input-I-nombre de couches verticales
    32 c nqmax-----input-I-nombre de traceurs
    33 c debut-----input-L-variable logique indiquant le premier passage
    34 c lafin-----input-L-variable logique indiquant le dernier passage
    35 c rjourvrai-input-R-NBjours
    36 c gmtime----input-R-temps universel dans la journee (fraction de jour)
    37 c pdtphys---input-R-pas d'integration pour la physique (seconde)
    38 c paprs-----input-R-pression pour chaque inter-couche (en Pa)
    39 c pplay-----input-R-pression pour le mileu de chaque couche (en Pa)
    40 c ppk  -----input-R-fonction d'Exner au milieu de couche
    41 c pphi------input-R-geopotentiel de chaque couche (g z) (reference sol)
    42 c pphis-----input-R-geopotentiel du sol
    43 c presnivs--input_R_pressions approximat. des milieux couches ( en PA)
    44 c u---------input-R-vitesse dans la direction X (de O a E) en m/s
    45 c v---------input-R-vitesse Y (de S a N) en m/s
    46 c t---------input-R-temperature (K)
    47 c qx--------input-R-mass mixing ratio traceurs (kg/kg)
    48 c d_t_dyn---input-R-tendance dynamique pour "t" (K/s)
    49 c omega-----input-R-vitesse verticale en Pa/s
     29c nlon----input-I-nombre de points horizontaux
     30c nlev----input-I-nombre de couches verticales
     31c nqmax---input-I-nombre de traceurs
     32c debut---input-L-variable logique indiquant le premier passage
     33c lafin---input-L-variable logique indiquant le dernier passage
     34c rjour---input-R-numero du jour de l'experience
     35c gmtime--input-R-temps universel dans la journee (0 a RDAY s)
     36c pdtphys-input-R-pas d'integration pour la physique (seconde)
     37c paprs---input-R-pression pour chaque inter-couche (en Pa)
     38c pplay---input-R-pression pour le mileu de chaque couche (en Pa)
     39c ppk  ---input-R-fonction d'Exner au milieu de couche
     40c pphi----input-R-geopotentiel de chaque couche (g z) (reference sol)
     41c pphis---input-R-geopotentiel du sol
     42c presnivs-input_R_pressions approximat. des milieux couches ( en PA)
     43c u-------input-R-vitesse dans la direction X (de O a E) en m/s
     44c v-------input-R-vitesse Y (de S a N) en m/s
     45c t-------input-R-temperature (K)
     46c qx------input-R-mass mixing ratio traceurs (kg/kg)
     47c d_t_dyn-input-R-tendance dynamique pour "t" (K/s)
     48c omega---input-R-vitesse verticale en Pa/s
    5049c
    5150c d_u-----output-R-tendance physique de "u" (m/s/s)
     
    6261      USE comgeomphy
    6362      use cpdet_mod, only: cpdet, t2tpot
     63      USE mod_phys_lmdz_para, only : is_parallel,jj_nb
     64      USE phys_state_var_mod ! Variables sauvegardees de la physique
     65      USE iophy
     66      USE common_mod, only: rmcbar,xfbar,ncount,
     67     &      flxesp_i,tau_drop,tau_aer,solesp,precip,
     68     &      evapch4,occcld_m,occcld,satch4,satc2h6,satc2h2,rmcloud,
     69     &      TauHID,TauHVD,TauGID,TauGVD,TauCID,TauCVD,NSPECV,NSPECI,
     70     &      common_init
     71
     72      USE moyzon_mod
     73      USE write_field_phy
    6474      IMPLICIT none
    6575c======================================================================
    6676c   CLEFS CPP POUR LES IO
    6777c   =====================
     78#define histday
    6879#define histmth
    69 #define histday
    7080#define histins
    7181c======================================================================
     
    7888#include "iniprint.h"
    7989#include "logic.h"
     90#include "tabcontrol.h"
    8091#include "comorbit.h"
    8192#include "microtab.h"
    82 #include "diagmuphy.h"
    83 #include "tabcontrol.h"
    8493#include "itemps.h"
    8594c======================================================================
     95      LOGICAL ok_journe ! sortir le fichier journalier
     96      save ok_journe
     97c      PARAMETER (ok_journe=.true.)
     98c
    8699      LOGICAL ok_mensuel ! sortir le fichier mensuel
    87100      save ok_mensuel
    88101c      PARAMETER (ok_mensuel=.true.)
    89 c
    90       LOGICAL ok_journe ! sortir le fichier journalier
    91       save ok_journe
    92 c      PARAMETER (ok_journe=.true.)
    93102c
    94103      LOGICAL ok_instan ! sortir le fichier instantane
     
    121130      REAL qx(klon,klev,nqmax)
    122131
    123       REAL,save,allocatable :: t_ancien(:,:)
    124       REAL,save,allocatable :: u_ancien(:,:)
    125       LOGICAL ancien_ok
    126       SAVE ancien_ok
    127 
    128132      REAL d_u_dyn(klon,klev)
    129133      REAL d_t_dyn(klon,klev)
     
    137141      REAL d_ps(klon)
    138142
    139       REAL,save,allocatable :: swnet(:,:)
    140       REAL,save,allocatable :: lwnet(:,:)
    141 c
    142143c Variables propres a la physique
    143144c
    144       REAL,save,allocatable :: radsol(:) ! bilan radiatif au sol calcule par code radiatif
    145145      REAL,save,allocatable :: rlev(:,:) ! altitude a chaque niveau (interface inferieure de la couche)
    146146      INTEGER,save :: itap        ! compteur pour la physique
    147       REAL,save,allocatable :: ftsol(:)    ! temperature du sol
    148       REAL,save,allocatable :: ftsoil(:,:) ! temperature dans le sol
    149       REAL,save,allocatable :: falbe(:)    ! albedo
    150147      REAL delp(klon,klev)        ! epaisseur d'une couche
    151148     
    152 CMODDEB FLOTT
    153 c
    154 c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
    155 c
    156       REAL,save,allocatable :: zmea(:)   ! orographie moyenne
    157       REAL,save,allocatable :: zstd(:)   ! deviation standard de l'OESM
    158       REAL,save,allocatable :: zsig(:)   ! pente de l'OESM
    159       REAL,save,allocatable :: zgam(:)   ! anisotropie de l'OESM
    160       REAL,save,allocatable :: zthe(:)   ! orientation de l'OESM
    161       REAL,save,allocatable :: zpic(:)   ! Maximum de l'OESM
    162       REAL,save,allocatable :: zval(:)   ! Minimum de l'OESM
    163       REAL,save,allocatable :: rugoro(:) ! longueur de rugosite de l'OESM
    164 
    165149      INTEGER igwd,idx(klon),itest(klon)
    166150c
     
    191175
    192176      REAL zustrph(klon),zvstrph(klon)
    193 c
    194       REAL,save,allocatable :: zuthe(:),zvthe(:)
    195177
    196178c Variables locales:
     
    199181      REAL cdragm(klon) ! drag coefficient pour vent
    200182c
    201 cAA  Pour TRACEURS
     183cAA  Pour  TRACEURS
    202184cAA
    203185      REAL,save,allocatable :: source(:,:)
    204186      integer nmicro
    205187      save    nmicro
     188      character*8 nom
     189      REAL qaer(klon,klev,nqmax)
    206190
    207191      REAL ycoefh(klon,klev)    ! coef d'echange pour phytrac
    208192      REAL yu1(klon)            ! vents dans la premiere couche U
    209193      REAL yv1(klon)            ! vents dans la premiere couche V
    210       character*8 nom
    211       REAL qaer(klon,klev,nqmax)
    212194
    213195      REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
    214       REAL,save,allocatable :: dlw(:)  ! derivee infra rouge
    215       REAL,save,allocatable :: fder(:) ! Derive de flux (sensible et latente)
    216196      REAL ve(klon) ! integr. verticale du transport meri. de l'energie
    217197      REAL vq(klon) ! integr. verticale du transport meri. de l'eau
     
    232212      EXTERNAL radlwsw   ! rayonnements solaire et infrarouge
    233213      EXTERNAL suphec    ! initialiser certaines constantes
    234 c      EXTERNAL transp    ! transport total de l'eau et de l'energie
     214c     EXTERNAL transp    ! transport total de l'eau et de l'energie
    235215      EXTERNAL abort_gcm
    236216      EXTERNAL printflag
     
    253233      REAL flux_ec(klon,klev)   ! flux de chaleur Ec
    254234c
    255 c Le rayonnement n'est pas calcule tous les pas, il faut donc
    256 c                      sauvegarder les sorties du rayonnement
    257       REAL,save,allocatable :: heat(:,:)    ! chauffage solaire
    258       REAL,save,allocatable :: cool(:,:)    ! refroidissement infrarouge
    259       REAL,save,allocatable :: dtrad(:,:)   ! K s-1
    260       REAL,save,allocatable :: topsw(:), toplw(:)
    261       REAL,save,allocatable :: solsw(:), sollw(:)
    262       REAL,save,allocatable :: sollwdown(:) ! downward LW flux at surface
    263       REAL tmpout(klon,klev)  ! K s-1
    264 
    265235      REAL    dtimerad
    266236      INTEGER itaprad
     
    268238      REAL zdtime
    269239c
    270 
    271240c CHIMIE
    272241
     
    278247
    279248      REAL dist, rmu0(klon), fract(klon), pdecli
     249      REAL rmu0bar(klon), fractbar(klon)
    280250      REAL zday
    281251      REAL zls,zlsdeg,zlsm1
     
    332302c
    333303      REAL tr_seri(klon,klev,nqmax)
     304      REAL d_tr(klon,klev,nqmax)
    334305c
    335306c pour ioipsl
    336       INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev)
    337       REAL zx_tmp_fi2d(klon)      ! variable temporaire grille physique
    338       REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
    339       REAL zx_tmp_2d(iim,jjmp1),zx_tmp_3d(iim,jjmp1,klev)
    340       REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1)
    341 
    342307      INTEGER nid_day, nid_mth, nid_ins
    343308      SAVE nid_day, nid_mth, nid_ins
    344 c
    345309      INTEGER nhori, nvert, idayref
    346310      REAL zsto, zout, zsto1, zsto2, zero
     
    348312      real zjulian
    349313      save zjulian
    350 
     314      REAL tmpout(klon,klev)  ! pour sorties
     315
     316      CHARACTER*1  str1
    351317      CHARACTER*2  str2
    352318      character*20 modname
     
    383349      REAL mangtot            ! moment cinetique total
    384350
    385       CHARACTER*2 str1
    386 
    387351c Temporaire avant de trouver mieux :
    388352c Recuperation des TAU du TR
     
    390354      REAL t_tcld(klon,klev),t_kcld(klon,klev)
    391355      REAL t_kcvd(klon,klev)
    392 c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
    393       INTEGER   ngrid
    394       PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
    395       INTEGER NSPECV,NSPECI,NLAYER
    396       PARAMETER (NSPECV=24,NSPECI=46,NLAYER=llm)
    397       REAL TAUHID(ngrid,NLAYER,NSPECI)
    398      &               ,TAUCID(ngrid,NLAYER,NSPECI)
    399      &               ,TAUGID(ngrid,NLAYER,NSPECI)
    400      &               ,TAUHVD(ngrid,NLAYER,NSPECV)
    401      &               ,TAUCVD(ngrid,NLAYER,NSPECV)
    402      &               ,TAUGVD(ngrid,NLAYER,NSPECV)
    403 
    404       COMMON /TAUD/   TAUHID,TAUCID,TAUGID,TAUHVD,TAUCVD,TAUGVD
    405       COMMON /PLANT/ CSUBP,F0PI
    406       REAL CSUBP,F0PI
    407 
    408 * common relatifs au nuages
    409       real rmcbar(ngrid,NLAYER),xfbar(ngrid,NLAYER,4)
    410       integer ncount(ngrid,NLAYER)
    411       COMMON/rnuabar/ncount,rmcbar,xfbar
    412356
    413357       REAL ch4(klon,jjm+1),dch4(jjm+1)
     
    427371c======================================================================
    428372c INITIALISATIONS
    429 c======================================================================
     373c================
    430374
    431375      modname = 'physiq'
     
    434378      bilansmc = 0
    435379      ballons  = 0
     380! NE FONCTIONNENT PAS ENCORE EN PARALLELE !!!
     381      if (is_parallel) then
     382        bilansmc = 0
     383        ballons  = 0
     384      endif
    436385
    437386      IF (if_ebil.ge.1) THEN
     
    449398c========================
    450399      IF (debut) THEN
    451          allocate(t_ancien(klon,klev),u_ancien(klon,klev))
    452          allocate(swnet(klon,klevp1),lwnet(klon,klevp1))
    453          allocate(radsol(klon),ftsol(klon),falbe(klon))
    454          allocate(rlev(klon,klevp1),ftsoil(klon,nsoilmx))
    455          allocate(zmea(klon),zstd(klon),zsig(klon),zgam(klon))
    456          allocate(zthe(klon),zpic(klon),zval(klon),rugoro(klon))
    457          allocate(zuthe(klon),zvthe(klon),dlw(klon),fder(klon))
    458          allocate(heat(klon,klev),cool(klon,klev))
    459          allocate(dtrad(klon,klev),topsw(klon),toplw(klon))
    460          allocate(solsw(klon),sollw(klon),sollwdown(klon))
     400         allocate(rlev(klon,klevp1))
    461401         allocate(source(klon,nqmax))
    462402         allocate(reservoir(klon))
     
    468408c appel a la lecture du physiq.def
    469409c
    470          call conf_phys(ok_mensuel,ok_journe,ok_instan,if_ebil)
    471 
     410         call conf_phys(ok_journe, ok_mensuel,
     411     .                  ok_instan,
     412     .                  if_ebil)
     413
     414         call phys_state_var_init
     415         call common_init
    472416c
    473417c Initialiser les compteurs:
    474418c
    475          itap        = 0
    476          itaprad     = 0
     419         itap    = 0
     420         itaprad = 0
    477421         itapchim    = 0
     422
     423c init rnuabar
    478424         ncount(:,:) = 0
    479 
     425         rmcbar  = 0.
     426         xfbar   = 0.
     427         
    480428c         
    481429c Lecture startphy.nc :
    482430c
    483 c REMETTRE TOUS LES PARAMETRES POUR OROGW...  A FAIRE POUR TITAN
    484          CALL phyetat0 ("startphy.nc",
    485      .       rlatd,rlond,ftsol,ftsoil,
    486      .       falbe, solsw, sollw,
    487      .       dlw,radsol,reservoir,
    488 c     .      zmea,zstd,zsig,zgam,zthe,zpic,zval,
    489      .       t_ancien, ancien_ok)
    490 
    491 c dtime est defini dans tabcontrol.h et lu dans startphy
     431         CALL phyetat0 ("startphy.nc")
     432
     433c dtime est defini dans tabcontrol.h et lu dans startphy
    492434c pdtphys est calcule a partir des nouvelles conditions:
    493435c Reinitialisation du pas de temps physique quand changement
     
    508450         chimpas =   radpas*nbapp_rad/nbapp_chim
    509451
    510          CALL printflag( ok_mensuel,ok_journe, ok_instan )
    511 
     452         CALL printflag( ok_mensuel,ok_journe,ok_instan )
    512453c
    513454c Initialiser les pas de temps:
    514455c
    515       dtimerad = dtime*FLOAT(radpas)  ! pas de temps du rayonnement (s)
     456      dtimerad = dtime*REAL(radpas)  ! pas de temps du rayonnement (s)
    516457c      PRINT*,'dtimerad,dtime,radpas',dtimerad,dtime,radpas
    517458           
    518       dtimechim = dtime*FLOAT(chimpas)  ! pas de temps de la chimie (s)
     459      dtimechim = dtime*REAL(chimpas)  ! pas de temps de la chimie (s)
    519460c      PRINT*,'dtimechim,dtime,chimpas',dtimechim,dtime,chimpas
    520461
     
    526467c---------
    527468c FLOTT
    528 c       IF (ok_orodr) THEN
    529 c         DO i=1,klon
    530 c         rugoro(i) = MAX(1.0e-05, zstd(i)*zsig(i)/2.0)
    531 c         ENDDO
    532 c         CALL SUGWD(klon,klev,paprs,pplay)
    533 c         DO i=1,klon
    534 c         zuthe(i)=0.
    535 c         zvthe(i)=0.
    536 c         if(zstd(i).gt.10.)then
    537 c           zuthe(i)=(1.-zgam(i))*cos(zthe(i))
    538 c           zvthe(i)=(1.-zgam(i))*sin(zthe(i))
    539 c         endif
    540 c         ENDDO
    541 c       ENDIF
     469       IF (ok_orodr) THEN
     470         DO i=1,klon
     471         rugoro(i) = MAX(1.0e-05, zstd(i)*zsig(i)/2.0)
     472         ENDDO
     473         CALL SUGWD(klon,klev,paprs,pplay)
     474         DO i=1,klon
     475         zuthe(i)=0.
     476         zvthe(i)=0.
     477         if(zstd(i).gt.10.)then
     478           zuthe(i)=(1.-zgam(i))*cos(zthe(i))
     479           zvthe(i)=(1.-zgam(i))*sin(zthe(i))
     480         endif
     481         ENDDO
     482       ENDIF
    542483
    543484      if (bilansmc.eq.1) then
     
    566507C TRACEURS
    567508C source dans couche limite
    568           source = 0.0 ! pas de source, pour l'instant
     509         source = 0.0 ! pas de source, pour l'instant
    569510C
    570511c Si microphysique offline, pas besoin d'avoir de traceurs microphysiques
     
    586527      print*,"nmicro=",nmicro
    587528
    588 c
     529c --------------
    589530c Verifications:
    590 c
     531c --------------
    591532         IF ((nmicro.eq.0).and.(microfi.eq.1)) THEN
    592533           abort_message="MICROPHYSIQUE ONLINE, MAIS NMICRO=0..."
     
    611552            call abort_gcm(modname,abort_message,1)
    612553         ENDIF
    613 c
    614          IF (dtime*FLOAT(radpas).GT.(RDAY*0.25).AND.cycle_diurne)
     554
     555         IF (((moyzon_mu).and.(microfi.ne.1)).or.
     556     .       ((.not.moyzon_mu).and.(microfi.eq.1))) THEN
     557           abort_message="Microphysic 2D and moyzon_mu not compatible"
     558           write(lunout,*) "moyzon_mu=",moyzon_mu
     559           write(lunout,*) "microfi=",microfi
     560           call abort_gcm(modname,abort_message,1)
     561         ENDIF
     562         IF (((moyzon_ch).and.(.not.chimi)).or.
     563     .       ((.not.moyzon_ch).and.(chimi))) THEN
     564           abort_message="Chemistry and moyzon_ch not compatible"
     565           write(lunout,*) "moyzon_ch=",moyzon_ch
     566           write(lunout,*) "chimi=",chimi
     567           call abort_gcm(modname,abort_message,1)
     568         ENDIF
     569
     570         IF (dtime*REAL(radpas).GT.(RDAY*0.25).AND.cycle_diurne)
    615571     $    THEN
    616572           WRITE(lunout,*)'Nbre d appels au rayonnement insuffisant'
     
    625581         ecrit_mth = NINT(RDAY/dtime) *nday  ! tous les nday jours
    626582         IF (ok_mensuel) THEN
    627          WRITE(lunout,*)'La frequence de sortie mensuelle est de ',
     583         WRITE(lunout,*)'La frequence de sortie mensuelle est de ', 
    628584     .                   ecrit_mth
    629585         ENDIF
     
    646602#ifdef CPP_IOIPSL
    647603
     604#ifdef histday
     605#include "ini_histday.h"
     606#endif
     607
    648608#ifdef histmth
    649609#include "ini_histmth.h"
    650610#endif
    651611
    652 #ifdef histday
    653 #include "ini_histday.h"
    654 #endif
    655 
    656612#ifdef histins
    657613#include "ini_histins.h"
     
    670626      ENDDO
    671627
    672       rmcbar  = 0.
    673       xfbar   = 0.
    674          
    675628      ENDIF ! debut
    676629c====================================================================
     
    719672C
    720673      DO i = 1, klon
    721           ztsol(i) = ftsol(i) 
     674          ztsol(i) = ftsol(i)
    722675      ENDDO
    723676C
     
    777730      ENDDO
    778731
     732c     call WriteField_phy('physiq_pphi',pphi,klev)
     733c     call WriteField_phy('physiq_pphis',pphis,1)
     734
    779735c   calcul du geopotentiel aux niveaux intercouches
    780736c   ponderation des altitudes au niveau des couches en dp/p
     
    796752         DO i=1,klon
    797753            z1=(pplay(i,l-1)+paprs(i,l))/(pplay(i,l-1)-paprs(i,l))
    798             z2=(paprs(i,l)+pplay(i,l))/(paprs(i,l)-pplay(i,l))
     754            z2=(paprs(i,l)  +pplay(i,l))/(paprs(i,l)  -pplay(i,l))
    799755            zzlev(i,l)=(z1*zzlay(i,l-1)+z2*zzlay(i,l))/(z1+z2)
    800756         ENDDO
     
    804760      ENDDO
    805761
     762! zonal averages needed
     763      if (moyzon_ch.or.moyzon_mu) then
     764
     765c      zzlaybar(1,:)=(zphibar(1,:)+zphisbar(1))/RG
     766c SI ON TIENT COMPTE DE LA VARIATION DE G AVEC L'ALTITUDE:
     767       zzlaybar(1,:)=RG*RA*RA/(RG*RA-(zphibar(1,:)+zphisbar(1)))-RA
     768       zzlevbar(1,1)=zphisbar(1)/RG
     769       DO l=2,klev
     770            z1=(zplaybar(1,l-1)+zplevbar(1,l))/
     771     .            (zplevbar(1,l-1)-zplevbar(1,l))
     772            z2=(zplevbar(1,l)  +zplaybar(1,l))/
     773     .            (zplevbar(1,l)  -zplaybar(1,l))
     774            zzlevbar(1,l)=(z1*zzlaybar(1,l-1)+z2*zzlaybar(1,l))/(z1+z2)
     775       ENDDO
     776       zzlevbar(1,klev+1)=zzlaybar(1,klev)+
     777     .            (zzlaybar(1,klev)-zzlevbar(1,klev))
     778
     779       DO i=2,klon
     780        if (rlatd(i).ne.rlatd(i-1)) then
     781         DO l=1,klev
     782c         zzlaybar(i,l)=(zphibar(i,l)+zphisbar(i))/RG
     783c SI ON TIENT COMPTE DE LA VARIATION DE G AVEC L'ALTITUDE:
     784          zzlaybar(i,l)=RG*RA*RA/(RG*RA-(zphibar(i,l)+zphisbar(i)))-RA
     785         ENDDO
     786         zzlevbar(i,1)=zphisbar(i)/RG
     787         DO l=2,klev
     788            z1=(zplaybar(i,l-1)+zplevbar(i,l))/
     789     .            (zplevbar(i,l-1)-zplevbar(i,l))
     790            z2=(zplevbar(i,l)  +zplaybar(i,l))/
     791     .            (zplevbar(i,l)  -zplaybar(i,l))
     792            zzlevbar(i,l)=(z1*zzlaybar(i,l-1)+z2*zzlaybar(i,l))/(z1+z2)
     793         ENDDO
     794         zzlevbar(i,klev+1)=zzlaybar(i,klev)+
     795     .              (zzlaybar(i,klev)-zzlevbar(i,klev))
     796        else
     797         zzlaybar(i,:)=zzlaybar(i-1,:)
     798         zzlevbar(i,:)=zzlevbar(i-1,:)
     799        endif
     800       ENDDO
     801
     802      endif  ! moyzon
     803
     804c     call WriteField_phy('physiq_zphi',zphi,klev)
     805c     call WriteField_phy('physiq_zzlay',zzlay,klev)
     806c     call WriteField_phy('physiq_zzlev',zzlev,klev+1)
    806807c- - - - - - - - - - - - - - - -
    807808c DIAGNOSTIQUE GRILLE VERTICALE
     
    838839      ENDDO
    839840
    840 
    841 
    842 
    843 c====================================================================
    844 c ORBITE ET ECLAIREMENT
    845 c====================================================================
    846 
     841c====================================================================
     842c Orbite et eclairement
     843c====================================================================
    847844
    848845c Pour TITAN:
     
    856853
    857854c dans zenang, Ls en degres ; dans mucorr, Ls en radians
     855      call mucorr(klon,zls,rlatd,rmu0bar,fractbar)
    858856      IF (cycle_diurne) THEN
    859         zdtime=dtime*FLOAT(radpas) ! pas de temps du rayonnement (s)
     857        zdtime=dtime*REAL(radpas) ! pas de temps du rayonnement (s)
    860858        CALL zenang(zlsdeg,gmtime,zdtime,rlatd,rlond,rmu0,fract)
    861859      ELSE
    862         call mucorr(klon,zls,rlatd,rmu0,fract)
     860        rmu0  = rmu0bar
     861        fract = fractbar
    863862      ENDIF
    864 
    865 c====================================================================
    866 c COUCHE LIMITE
     863     
     864c====================================================================
     865c Appeler la diffusion verticale (programme de couche limite)
    867866c====================================================================
    868867
     
    901900c     print*,"sollw avant clmain=",sollw(klon/2)
    902901
    903 c  CLMAIN
    904 
    905902! ADAPTATION GCM POUR CP(T)
     903
    906904      CALL clmain(dtime,itap,
    907905     e            t_seri,u_seri,v_seri,
     
    911909     $            paprs,pplay,ppk,radsol,falbe,
    912910     e            solsw, sollw, sollwdown, fder,
    913      e            rlond, rlatd, cuphy, cvphy,
     911     e            rlond, rlatd, cuphy, cvphy,  
    914912     e            debut, lafin,
    915913     s            d_t_vdf,d_u_vdf,d_v_vdf,d_ts,
     
    940938      ENDDO
    941939
    942 c        print*,"d_t_vdf1=",d_t_vdf(1,:)*dtime
    943 c        print*,"d_t_vdf2=",d_t_vdf(klon/2,:)*dtime
    944 c        print*,"d_t_vdf3=",d_t_vdf(klon,:)*dtime
    945 c        print*,"d_u_vdf=",d_u_vdf(klon/2,:)*dtime
    946 c        print*,"d_v_vdf=",d_v_vdf(klon/2,:)*dtime
     940c     call WriteField_phy('physiq_dtvdf',d_t_vdf,klev)
     941c     call WriteField_phy('physiq_duvdf',d_u_vdf,klev)
     942c     call WriteField_phy('physiq_dvvdf',d_v_vdf,klev)
    947943
    948944C TRACEURS
     
    950946      d_tr_vdf = 0.
    951947      if (iflag_trac.eq.1) then
    952       DO iq=1, nqmax
    953           CALL cltrac(dtime,ycoefh,t_seri,
    954      s               tr_seri(1,1,iq), source,
    955      e               paprs, pplay, delp,
     948         DO iq=1, nqmax
     949             CALL cltrac(dtime,ycoefh,t_seri,
     950     s               tr_seri(1,1,iq),source,
     951     e               paprs, pplay,delp,
    956952     s               d_tr_vdf(1,1,iq))
    957 
    958           tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_vdf(:,:,iq)
    959           d_tr_vdf(:,:,iq)= d_tr_vdf(:,:,iq)/dtime          ! /s
    960       ENDDO
     953             tr_seri(:,:,iq) = tr_seri(:,:,iq) + d_tr_vdf(:,:,iq)
     954             d_tr_vdf(:,:,iq)= d_tr_vdf(:,:,iq)/dtime          ! /s
     955         ENDDO
    961956      endif
    962957
     
    976971c Incrementer la temperature du sol
    977972c
    978 c     print*,'Tsol avant clmain:',ftsol(klon/2)
     973c     print*,'Tsol avant clmain:',ftsol(1)
    979974      DO i = 1, klon
    980975         ftsol(i) = ftsol(i) + d_ts(i)
    981976      ENDDO
    982977c     print*,'DTsol apres clmain:',d_ts(klon/2)
    983 c     print*,'Tsol apres clmain:',ftsol(klon/2)
     978c     print*,'Tsol apres clmain:',ftsol(1)
    984979
    985980c Calculer la derive du flux infrarouge
     
    10401035         d_v_ajs(:,:)= d_v_ajs(:,:)/dtime          ! (m/s)/s
    10411036      if (iflag_trac.eq.1) then
    1042          tr_seri(:,:,:) = tr_seri(:,:,:) + d_tr_ajs(:,:,:)
    1043          d_tr_ajs(:,:,:)= d_tr_ajs(:,:,:)/dtime          ! /s
     1037           tr_seri(:,:,:) = tr_seri(:,:,:) + d_tr_ajs(:,:,:)
     1038           d_tr_ajs(:,:,:)= d_tr_ajs(:,:,:)/dtime  ! /s
    10441039      endif
    1045      
    1046 c        print*,"d_t_ajs1=",d_t_ajs(1,:)*dtime
    1047 c        print*,"d_t_ajs2=",d_t_ajs(klon/2,:)*dtime
    1048 c        print*,"d_t_ajs3=",d_t_ajs(klon,:)*dtime
    1049 c        print*,"d_u_ajs=",d_u_ajs(klon/2,:)*dtime
    1050 c        print*,"d_v_ajs=",d_v_ajs(klon/2,:)*dtime
     1040
     1041c     call WriteField_phy('physiq_dtajs',d_t_ajs,klev)
     1042c     call WriteField_phy('physiq_duajs',d_u_ajs,klev)
     1043c     call WriteField_phy('physiq_dvajs',d_v_ajs,klev)
    10511044
    10521045      endif
     
    10901083
    10911084      if (iflag_trac.eq.1) then
     1085c        call WriteField_phy('physiq_qaer01',
     1086c    .                          qaer(:,:,1),klev)
     1087c        call WriteField_phy('physiq_qaer10',
     1088c    .                          qaer(:,:,10),klev)
     1089c        call WriteField_phy('physiq_tr_seri01',
     1090c    .                          tr_seri(:,:,1),klev)
     1091c        call WriteField_phy('physiq_tr_seri10',
     1092c    .                          tr_seri(:,:,10),klev)
     1093
    10921094c         call begintime(tt0)
     1095c in phytrac call, mu0 and fract are only used in brume
     1096c so we need to pass either rmu0 ou rmu0bar depending on
     1097c moyzon_mu
     1098       if (moyzon_mu) then
    10931099         call phytrac (debut,lafin,
    1094      .                   nqmax,nmicro,dtime,appel_chim,dtimechim,
    1095      .                   paprs,pplay,delp,t,rmu0,fract,pdecli,zls,
    1096      .                   yu1,yv1,zzlev,zzlay,ftsol,
    1097      .                   tr_seri,qaer,d_tr_mph,d_tr_kim,
    1098      .                   fclat,reservoir)
     1100     .                 nqmax,nmicro,dtime,appel_chim,dtimechim,
     1101     .                 paprs,pplay,delp,t,rmu0bar,fractbar,pdecli,zls,
     1102     .                 yu1,yv1,zzlev,zzlay,ftsol,
     1103     .                 tr_seri,qaer,d_tr_mph,d_tr_kim,
     1104     .                 fclat,reservoir)
     1105       else
     1106         call phytrac (debut,lafin,
     1107     .                 nqmax,nmicro,dtime,appel_chim,dtimechim,
     1108     .                 paprs,pplay,delp,t,rmu0,fract,pdecli,zls,
     1109     .                 yu1,yv1,zzlev,zzlay,ftsol,
     1110     .                 tr_seri,qaer,d_tr_mph,d_tr_kim,
     1111     .                 fclat,reservoir)
     1112       endif
    10991113
    11001114c         call endtime(tt0,tt1)
     
    11121126         tr_seri(:,:,1:nmicro) = tr_seri(:,:,1:nmicro)
    11131127     .                        + d_tr_mph(:,:,1:nmicro)*dtime
     1128c        call WriteField_phy('physiq_d_tr_mph01',
     1129c    .                          d_tr_mph(:,:,1),klev)
     1130c        call WriteField_phy('physiq_d_tr_mph10',
     1131c    .                          d_tr_mph(:,:,10),klev)
    11141132        endif
    11151133c       PAS ELEGANT mais je n'ai pas trouve d'autres solutions :
     
    11951213        DO i=1,klon
    11961214          DO j=1,klev
    1197             rmcbar(i,j)=rmcbar(i,j)/MAX(FLOAT(ncount(i,j)),1.)
    1198             xfbar(i,j,:)=xfbar(i,j,:)/MAX(FLOAT(ncount(i,j)),1.)
     1215            rmcbar(i,j)=rmcbar(i,j)/MAX(REAL(ncount(i,j)),1.)
     1216            xfbar(i,j,:)=xfbar(i,j,:)/MAX(REAL(ncount(i,j)),1.)
    11991217          ENDDO
    12001218        ENDDO
     
    12031221c      call begintime(tt0)
    12041222      CALL radlwsw
    1205      e            (dist, rmu0, fract, falbe, zzlev,
     1223     e            (dist, rmu0, fract, zzlev,
    12061224     e             paprs, pplay,ftsol, t_seri, nqmax, nmicro,
    1207      c             tr_seri, qaer,
    1208      s             heat,cool,radsol,
    1209      s             topsw,toplw,solsw,sollw,
    1210      s             sollwdown,
    1211      s             lwnet, swnet)
     1225     c             tr_seri, qaer)
     1226c     print*,"apres radlwsw"
     1227
    12121228c      call endtime(tt0,tt1)
    12131229c      ttrad=ttrad+tt1
     
    12211237      ENDIF
    12221238
    1223 c     print*,"radsol apres radlwsw=",radsol(klon/2)
    1224 c     print*,"solsw apres radlwsw=",solsw(klon/2)
    1225 c     print*,"sollw apres radlwsw=",sollw(klon/2)
    12261239      itaprad = 0
    12271240      DO k = 1, klev
     
    12301243       ENDDO
    12311244      ENDDO
    1232 c       print*,"heat (K/s) =",heat(klon/2,:)
    1233 c       print*,"cool (K/s) =",cool(klon/2,:)
    1234 c       print*,"dtrad1 (K/s) =",dtrad(1,:)
    1235 c       print*,"dtrad2 (K/s) =",dtrad(klon/2,:)
    1236 c       print*,"dtrad3 (K/s) =",dtrad(klon,:)
    1237            
     1245
     1246c     call WriteField_phy('physiq_heat',heat,klev)
     1247c     call WriteField_phy('physiq_cool',cool,klev)
     1248
    12381249      ENDIF
    12391250      itaprad = itaprad + 1
     
    12611272c
    12621273
     1274c====================================================================
     1275c   Calcul  des gravity waves  FLOTT
     1276c====================================================================
     1277c
     1278      if (ok_orodr.or.ok_gw_nonoro) then
     1279c  CALCUL DE N2
     1280       do i=1,klon
     1281        do k=2,klev
     1282          ztlev(i,k)  = (t_seri(i,k)+t_seri(i,k-1))/2.
     1283          zpklev(i,k) = sqrt(ppk(i,k)*ppk(i,k-1))
     1284        enddo
     1285       enddo
     1286       call t2tpot(klon*klev,ztlev, ztetalev,zpklev)
     1287       call t2tpot(klon*klev,t_seri,ztetalay,ppk)
     1288       do i=1,klon
     1289        do k=2,klev
     1290          zdtetalev(i,k) = ztetalay(i,k)-ztetalay(i,k-1)
     1291          zdzlev(i,k)    = (zphi(i,k)-zphi(i,k-1))/RG
     1292          zn2(i,k) = RG*zdtetalev(i,k)/(ztetalev(i,k)*zdzlev(i,k))
     1293          zn2(i,k) = max(zn2(i,k),1.e-12)  ! securite
     1294        enddo
     1295        zn2(i,1) = 1.e-12  ! securite
     1296       enddo
     1297
     1298      endif
     1299     
     1300c ----------------------------ORODRAG
     1301      IF (ok_orodr) THEN
     1302c
     1303c  selection des points pour lesquels le shema est actif:
     1304        igwd=0
     1305        DO i=1,klon
     1306        itest(i)=0
     1307c        IF ((zstd(i).gt.10.0)) THEN
     1308        IF (((zpic(i)-zmea(i)).GT.100.).AND.(zstd(i).GT.10.0)) THEN
     1309          itest(i)=1
     1310          igwd=igwd+1
     1311          idx(igwd)=i
     1312        ENDIF
     1313        ENDDO
     1314c        igwdim=MAX(1,igwd)
     1315c
     1316c A ADAPTER POUR VENUS!!!
     1317        CALL drag_noro(klon,klev,dtime,paprs,pplay,zphi,zn2,
     1318     e                   zmea,zstd, zsig, zgam, zthe,zpic,zval,
     1319     e                   igwd,idx,itest,
     1320     e                   t_seri, u_seri, v_seri,
     1321     s                   zulow, zvlow, zustrdr, zvstrdr,
     1322     s                   d_t_oro, d_u_oro, d_v_oro)
     1323
     1324c       print*,"d_u_oro=",d_u_oro(klon/2,:)
     1325c  ajout des tendances
     1326           t_seri(:,:) = t_seri(:,:) + d_t_oro(:,:)
     1327           d_t_oro(:,:)= d_t_oro(:,:)/dtime          ! K/s
     1328           u_seri(:,:) = u_seri(:,:) + d_u_oro(:,:)
     1329           d_u_oro(:,:)= d_u_oro(:,:)/dtime          ! (m/s)/s
     1330           v_seri(:,:) = v_seri(:,:) + d_v_oro(:,:)
     1331           d_v_oro(:,:)= d_v_oro(:,:)/dtime          ! (m/s)/s
     1332c   
     1333      ELSE
     1334         d_t_oro = 0.
     1335         d_u_oro = 0.
     1336         d_v_oro = 0.
     1337         zustrdr = 0.
     1338         zvstrdr = 0.
     1339c
     1340      ENDIF ! fin de test sur ok_orodr
     1341c
     1342c ----------------------------OROLIFT
     1343      IF (ok_orolf) THEN
     1344       print*,"ok_orolf NOT IMPLEMENTED !"
     1345       stop
     1346c
     1347c  selection des points pour lesquels le shema est actif:
     1348        igwd=0
     1349        DO i=1,klon
     1350        itest(i)=0
     1351        IF ((zpic(i)-zmea(i)).GT.100.) THEN
     1352          itest(i)=1
     1353          igwd=igwd+1
     1354          idx(igwd)=i
     1355        ENDIF
     1356        ENDDO
     1357c        igwdim=MAX(1,igwd)
     1358c
     1359c A ADAPTER POUR VENUS ET TITAN!!!
     1360c            CALL lift_noro(klon,klev,dtime,paprs,pplay,
     1361c     e                   rlatd,zmea,zstd,zpic,zgam,zthe,zpic,zval,
     1362c     e                   igwd,idx,itest,
     1363c     e                   t_seri, u_seri, v_seri,
     1364c     s                   zulow, zvlow, zustrli, zvstrli,
     1365c     s                   d_t_lif, d_u_lif, d_v_lif               )
     1366
     1367c
     1368c  ajout des tendances
     1369           t_seri(:,:) = t_seri(:,:) + d_t_lif(:,:)
     1370           d_t_lif(:,:)= d_t_lif(:,:)/dtime          ! K/s
     1371           u_seri(:,:) = u_seri(:,:) + d_u_lif(:,:)
     1372           d_u_lif(:,:)= d_u_lif(:,:)/dtime          ! (m/s)/s
     1373           v_seri(:,:) = v_seri(:,:) + d_v_lif(:,:)
     1374           d_v_lif(:,:)= d_v_lif(:,:)/dtime          ! (m/s)/s
     1375c
     1376      ELSE
     1377         d_t_lif = 0.
     1378         d_u_lif = 0.
     1379         d_v_lif = 0.
     1380         zustrli = 0.
     1381         zvstrli = 0.
     1382c
     1383      ENDIF ! fin de test sur ok_orolf
     1384
     1385c ---------------------------- NON-ORO GRAVITY WAVES
     1386       IF(ok_gw_nonoro) then
     1387
     1388        abort_message="Option non developpee pour Titan"
     1389        call abort_gcm(modname,abort_message,1)
     1390c A FAIRE POUR TITAN
     1391c      call flott_gwd_ran(klon,klev,dtime,pplay,zn2,
     1392c     e               t_seri, u_seri, v_seri,
     1393c     o               zustrhi,zvstrhi,
     1394c     o               d_t_hin, d_u_hin, d_v_hin)
     1395
     1396c  ajout des tendances
     1397
     1398c         t_seri(:,:) = t_seri(:,:) + d_t_hin(:,:)
     1399c         d_t_hin(:,:)= d_t_hin(:,:)/dtime          ! K/s
     1400c         u_seri(:,:) = u_seri(:,:) + d_u_hin(:,:)
     1401c         d_u_hin(:,:)= d_u_hin(:,:)/dtime          ! (m/s)/s
     1402c         v_seri(:,:) = v_seri(:,:) + d_v_hin(:,:)
     1403c         d_v_hin(:,:)= d_v_hin(:,:)/dtime          ! (m/s)/s
     1404
     1405      ELSE
     1406         d_t_hin = 0.
     1407         d_u_hin = 0.
     1408         d_v_hin = 0.
     1409         zustrhi = 0.
     1410         zvstrhi = 0.
     1411
     1412      ENDIF ! fin de test sur ok_gw_nonoro
     1413
     1414c====================================================================
     1415c Transport de ballons
     1416c====================================================================
     1417      if (ballons.eq.1) then
     1418         CALL ballon(30,pdtphys,rjourvrai,gmtime,rlatd,rlond,
     1419c    C               t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
     1420     C               t,pplay,u,v,zphi)   ! alt above planet average radius
     1421      endif !ballons
     1422
     1423c====================================================================
     1424c Bilan de mmt angulaire
     1425c====================================================================
     1426      if (bilansmc.eq.1) then
     1427CMODDEB FLOTT
     1428C  CALCULER LE BILAN DE MOMENT ANGULAIRE (DIAGNOSTIQUE)
     1429C STRESS NECESSAIRES: COUCHE LIMITE ET TOUTE LA PHYSIQUE
     1430
     1431      DO i = 1, klon
     1432        zustrph(i)=0.
     1433        zvstrph(i)=0.
     1434        zustrcl(i)=0.
     1435        zvstrcl(i)=0.
     1436      ENDDO
     1437      DO k = 1, klev
     1438      DO i = 1, klon
     1439       zustrph(i)=zustrph(i)+(u_seri(i,k)-u(i,k))/dtime*
     1440     c            (paprs(i,k)-paprs(i,k+1))/rg
     1441       zvstrph(i)=zvstrph(i)+(v_seri(i,k)-v(i,k))/dtime*
     1442     c            (paprs(i,k)-paprs(i,k+1))/rg
     1443       zustrcl(i)=zustrcl(i)+d_u_vdf(i,k)*
     1444     c            (paprs(i,k)-paprs(i,k+1))/rg
     1445       zvstrcl(i)=zvstrcl(i)+d_v_vdf(i,k)*
     1446     c            (paprs(i,k)-paprs(i,k+1))/rg
     1447      ENDDO
     1448      ENDDO
     1449
     1450      CALL aaam_bud (27,klon,klev,rjourvrai,gmtime,
     1451     C               ra,rg,romega,
     1452     C               rlatd,rlond,pphis,
     1453     C               zustrdr,zustrli,zustrcl,
     1454     C               zvstrdr,zvstrli,zvstrcl,
     1455     C               paprs,u,v)
     1456                     
     1457CCMODFIN FLOTT
     1458      endif !bilansmc
     1459
     1460c====================================================================
     1461c====================================================================
     1462c Calculer le transport de l'eau et de l'energie (diagnostique)
     1463c
     1464c  A REVOIR POUR VENUS ET TITAN...
     1465c
     1466c     CALL transp (paprs,ftsol,
     1467c    e                   t_seri, q_seri, u_seri, v_seri, zphi,
     1468c    s                   ve, vq, ue, uq)
     1469c
    12631470c====================================================================
    12641471c+jld ec_conser
     
    12811488c-jld ec_conser
    12821489c====================================================================
    1283 
    12841490      IF (if_ebil.ge.1) THEN
    12851491        ztit='after physic'
     
    13011507      END IF
    13021508C
    1303 c====================================================================
    1304 c   Calcul  des gravity waves  FLOTT
    1305 c====================================================================
    1306 c
    1307 c      if (ok_orodr.or.ok_gw_nonoro) then
    1308 cc  CALCUL DE N2
    1309 c       do i=1,klon
    1310 c        do k=2,klev
    1311 c         ztlev(i,k)  = (t_seri(i,k)+t_seri(i,k-1))/2.
    1312 c         zpklev(i,k) = sqrt(ppk(i,k)*ppk(i,k-1))
    1313 c       enddo
    1314 c       enddo
    1315 c       call t2tpot(klon*klev,ztlev, ztetalev,zpklev)
    1316 c       call t2tpot(klon*klev,t_seri,ztetalay,ppk)
    1317 c       do i=1,klon
    1318 c        do k=2,klev
    1319 c         zdtetalev(i,k) = ztetalay(i,k)-ztetalay(i,k-1)
    1320 c         zdzlev(i,k)    = (zphi(i,k)-zphi(i,k-1))/RG
    1321 c          zn2(i,k) = RG*zdtetalev(i,k)/(ztetalev(i,k)*zdzlev(i,k))
    1322 c          zn2(i,k) = max(zn2(i,k),1.e-12)  ! securite
    1323 c       enddo
    1324 c       enddo
    1325 c
    1326 c      endif
    1327 c     
    1328 cc ----------------------------ORODRAG
    1329 c      IF (ok_orodr) THEN
    1330 cc
    1331 cc  selection des points pour lesquels le shema est actif:
    1332 c        igwd=0
    1333 c        DO i=1,klon
    1334 c        itest(i)=0
    1335 cc        IF ((zstd(i).gt.10.0)) THEN
    1336 c        IF (((zpic(i)-zmea(i)).GT.100.).AND.(zstd(i).GT.10.0)) THEN
    1337 c          itest(i)=1
    1338 c          igwd=igwd+1
    1339 c          idx(igwd)=i
    1340 c        ENDIF
    1341 c        ENDDO
    1342 cc        igwdim=MAX(1,igwd)
    1343 cc
    1344 cc A ADAPTER POUR TITAN !!!
    1345 c        CALL drag_noro(klon,klev,dtime,paprs,pplay,zphi,zn2,
    1346 c     e                   zmea,zstd, zsig, zgam, zthe,zpic,zval,
    1347 c     e                   igwd,idx,itest,
    1348 c     e                   t_seri, u_seri, v_seri,
    1349 c     s                   zulow, zvlow, zustrdr, zvstrdr,
    1350 c     s                   d_t_oro, d_u_oro, d_v_oro)
    1351 c
    1352 cc  ajout des tendances
    1353 c           t_seri(:,:) = t_seri(:,:) + d_t_oro(:,:)
    1354 c           d_t_oro(:,:)= d_t_oro(:,:)/dtime          ! K/s
    1355 c           u_seri(:,:) = u_seri(:,:) + d_u_oro(:,:)
    1356 c           d_u_oro(:,:)= d_u_oro(:,:)/dtime          ! (m/s)/s
    1357 c           v_seri(:,:) = v_seri(:,:) + d_v_oro(:,:)
    1358 c           d_v_oro(:,:)= d_v_oro(:,:)/dtime          ! (m/s)/s
    1359 cc   
    1360 c      ELSE
    1361 c         d_t_oro = 0.
    1362 c         d_u_oro = 0.
    1363 c         d_v_oro = 0.
    1364 c        zustrdr = 0.
    1365 c        zvstrdr = 0.
    1366 cc
    1367 c      ENDIF ! fin de test sur ok_orodr
    1368 cc
    1369 cc ----------------------------OROLIFT
    1370 c      IF (ok_orolf) THEN
    1371 cc
    1372 cc  selection des points pour lesquels le shema est actif:
    1373 c        igwd=0
    1374 c        DO i=1,klon
    1375 c        itest(i)=0
    1376 c        IF ((zpic(i)-zmea(i)).GT.100.) THEN
    1377 c          itest(i)=1
    1378 c          igwd=igwd+1
    1379 c          idx(igwd)=i
    1380 c        ENDIF
    1381 c        ENDDO
    1382 cc        igwdim=MAX(1,igwd)
    1383 cc
    1384 cc A ADAPTER POUR VENUS!!!
    1385 cc            CALL lift_noro(klon,klev,dtime,paprs,pplay,
    1386 cc     e                   rlatd,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    1387 cc     e                   igwd,idx,itest,
    1388 cc     e                   t_seri, u_seri, v_seri,
    1389 cc     s                   zulow, zvlow, zustrli, zvstrli,
    1390 cc     s                   d_t_lif, d_u_lif, d_v_lif               )
    1391 c
    1392 cc
    1393 cc  ajout des tendances
    1394 c           t_seri(:,:) = t_seri(:,:) + d_t_lif(:,:)
    1395 c           d_t_lif(:,:)= d_t_lif(:,:)/dtime          ! K/s
    1396 c           u_seri(:,:) = u_seri(:,:) + d_u_lif(:,:)
    1397 c           d_u_lif(:,:)= d_u_lif(:,:)/dtime          ! (m/s)/s
    1398 c           v_seri(:,:) = v_seri(:,:) + d_v_lif(:,:)
    1399 c           d_v_lif(:,:)= d_v_lif(:,:)/dtime          ! (m/s)/s
    1400 cc
    1401 c      ELSE
    1402 c         d_t_lif = 0.
    1403 c         d_u_lif = 0.
    1404 c         d_v_lif = 0.
    1405 c         zustrli = 0.
    1406 c         zvstrli = 0.
    1407 cc
    1408 c      ENDIF ! fin de test sur ok_orolf
    1409 c
    1410 cc ---------------------------- NON-ORO GRAVITY WAVES
    1411 c       IF(ok_gw_nonoro) then
    1412 c
    1413 c      call flott_gwd_ran(klon,klev,dtime,pplay,zn2,
    1414 c     e               t_seri, u_seri, v_seri,
    1415 c     o               zustrhi,zvstrhi,
    1416 c     o               d_t_hin, d_u_hin, d_v_hin)
    1417 c
    1418 cc  ajout des tendances
    1419 c
    1420 c         t_seri(:,:) = t_seri(:,:) + d_t_hin(:,:)
    1421 c         d_t_hin(:,:)= d_t_hin(:,:)/dtime          ! K/s
    1422 c         u_seri(:,:) = u_seri(:,:) + d_u_hin(:,:)
    1423 c         d_u_hin(:,:)= d_u_hin(:,:)/dtime          ! (m/s)/s
    1424 c         v_seri(:,:) = v_seri(:,:) + d_v_hin(:,:)
    1425 c         d_v_hin(:,:)= d_v_hin(:,:)/dtime          ! (m/s)/s
    1426 c
    1427 c      ELSE
    1428 c         d_t_hin = 0.
    1429 c         d_u_hin = 0.
    1430 c         d_v_hin = 0.
    1431 c         zustrhi = 0.
    1432 c         zvstrhi = 0.
    1433 c
    1434 c      ENDIF ! fin de test sur ok_gw_nonoro
    1435 c
    1436 c====================================================================
    1437 c Transport de ballons
    1438 c====================================================================
    1439       if (ballons.eq.1) then
    1440          CALL ballon(30,pdtphys,rjourvrai,gmtime*RDAY,rlatd,rlond,
    1441 c    C               t,pplay,u,v,pphi)   ! alt above surface (smoothed for GCM)
    1442      C               t,pplay,u,v,zphi)   ! alt above planet average radius
    1443       endif !ballons
    1444 
    1445 c====================================================================
    1446 c Bilan de mmt angulaire
    1447 c====================================================================
    1448       if (bilansmc.eq.1) then
    1449 CMODDEB FLOTT
    1450 C  CALCULER LE BILAN DE MOMENT ANGULAIRE (DIAGNOSTIQUE)
    1451 C STRESS NECESSAIRES: COUCHE LIMITE ET TOUTE LA PHYSIQUE
    1452 
    1453       DO i = 1, klon
    1454         zustrph(i)=0.
    1455         zvstrph(i)=0.
    1456         zustrcl(i)=0.
    1457         zvstrcl(i)=0.
    1458       ENDDO
    1459       DO k = 1, klev
    1460       DO i = 1, klon
    1461        zustrph(i)=zustrph(i)+(u_seri(i,k)-u(i,k))/dtime*
    1462      c            (paprs(i,k)-paprs(i,k+1))/rg
    1463        zvstrph(i)=zvstrph(i)+(v_seri(i,k)-v(i,k))/dtime*
    1464      c            (paprs(i,k)-paprs(i,k+1))/rg
    1465        zustrcl(i)=zustrcl(i)+d_u_vdf(i,k)*
    1466      c            (paprs(i,k)-paprs(i,k+1))/rg
    1467        zvstrcl(i)=zvstrcl(i)+d_v_vdf(i,k)*
    1468      c            (paprs(i,k)-paprs(i,k+1))/rg
    1469       ENDDO
    1470       ENDDO
    1471 
    1472       CALL aaam_bud (27,klon,klev,rjourvrai,gmtime*RDAY,
    1473      C               ra,rg,romega,
    1474      C               rlatd,rlond,pphis,
    1475      C               zustrdr,zustrli,zustrcl,
    1476      C               zvstrdr,zvstrli,zvstrcl,
    1477      C               paprs,u,v)
    1478                      
    1479 CCMODFIN FLOTT
    1480       endif !bilansmc
    1481 
    14821509c=======================================================================
    14831510c   SORTIES
     
    14931520      ENDDO
    14941521      ENDDO
    1495 c     print*,"vnatphy=",v(705,:)
    1496 c     print*,"unatphy=",u(705,:)
    14971522c
    14981523      DO iq = 1, nqmax
     
    15071532c Calcul moment cinetique
    15081533c------------------------
    1509 c TEST 
     1534c TEST...
    15101535c     mangtot = 0.0
    15111536c     DO k = 1, klev
     
    15131538c       mang(i,k) = RA*cos(rlatd(i)*RPI/180.)
    15141539c    .     *(u_seri(i,k)+RA*cos(rlatd(i)*RPI/180.)*ROMEGA)
    1515 c    .     *airephy(i)*delp(i,k)/RG
     1540c    .     *airephy(i)*(paprs(i,k)-paprs(i,k+1))/RG
    15161541c       mangtot=mangtot+mang(i,k)
    15171542c     ENDDO
     
    15361561#ifdef CPP_IOIPSL
    15371562
     1563#ifdef histday
     1564#include "write_histday.h"
     1565#endif
     1566
    15381567#ifdef histmth
    15391568#include "write_histmth.h"
    15401569#endif
    15411570
    1542 #ifdef histday
    1543 #include "write_histday.h"
    1544 #endif
    1545 
    15461571#ifdef histins
    15471572#include "write_histins.h"
    15481573#endif
    1549              
     1574
    15501575#endif
    15511576
     
    15571582         itau_phy = itau_phy + itap
    15581583         lsinit   = zlsdeg
    1559 c REMETTRE TOUS LES PARAMETRES POUR OROGW... A FAIRE POUR TITAN
    1560          CALL phyredem ("restartphy.nc",
    1561      .      rlatd, rlond, ftsol, ftsoil,
    1562      .      falbe,
    1563      .      solsw, sollw,dlw,
    1564      .      radsol,reservoir,
    1565 c     .      zmea,zstd,zsig,zgam,zthe,zpic,zval,
    1566      .      t_ancien)
    1567      
     1584         CALL phyredem ("restartphy.nc")
     1585     
    15681586c--------------FLOTT
    15691587CMODEB LOTT
     
    15911609      ENDIF
    15921610     
    1593 
    15941611      RETURN
    15951612      END
  • trunk/LMDZ.TITAN/libf/phytitan/phytrac.F

    r888 r1056  
    1616c nqmax--------input-I-nombre de traceurs (total)
    1717c nmicro-------input-I-nombre de traceurs microphysiques !! doivent etre toujours en premiers!!
    18 c ptimestep----input-R-pas d'integration pour la physique (seconde)
     18c ptimestep----input-R-pas d integration pour la physique (seconde)
    1919c appkim-------input-I-appel a la chimie
    2020c dtkim--------input-R-pas de temps chimique (seconde)
     
    4040      USE infotrac
    4141      use dimphy
     42      USE common_mod, only: rmcbar,xfbar,ncount,
     43     &      flxesp_i,tau_drop,tau_aer,solesp,precip,
     44     &      evapch4,occcld_m,occcld,satch4,satc2h6,satc2h2,rmcloud
     45      USE moyzon_mod
    4246      IMPLICIT none
    4347#include "dimensions.h"
     
    4650#include "microtab.h"
    4751#include "varmuphy.h"
    48 #include "diagmuphy.h"
    4952#include "itemps.h"
     53#include "logic.h"
    5054
    5155c======================================================================
     
    7276      REAL prec(klon,5)
    7377
    74 c  ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX
    75       INTEGER   ngrid,NLAYER
    76       PARAMETER (ngrid=(jjm-1)*iim+2)  ! = klon
    77       PARAMETER (NLAYER=llm)           ! = klev
    78 * common relatifs au nuages
    79       real rmcbar(ngrid,NLAYER),xfbar(ngrid,NLAYER,4)
    80       integer ncount(ngrid,NLAYER)
    81       COMMON/rnuabar/ncount,rmcbar,xfbar
    82 
    8378      REAL rcloud(klon,klev,nrad),xfrac(klon,klev,4)
    8479
     
    9186
    9287c grandeurs en moyennes zonales
    93       REAL zplev(jjm+1,klev+1),zplay(jjm+1,klev),ztsol(jjm+1)
    94       REAL zzlev(jjm+1,klev+1),zzlay(jjm+1,klev)
    95       REAL ztemp(jjm+1,klev),zmu0(jjm+1),zfract(jjm+1)
     88      REAL zplev(klon,klev+1),zplay(klon,klev)
     89      REAL zzlev(klon,klev+1),zzlay(klon,klev)
     90      REAL ztemp(klon,klev), delpbar(klon,klev)
    9691      real temp_eq(klev),press_eq(klev)
    97       REAL zqaer(jjm+1,klev,nqmax)    ! et non nmicro... Permet nmicro=0.
    98       REAL zqaer0(jjm+1,klev,nqmax)
    99       REAL zdqmufi(jjm+1,klev,nqmax)
    100       REAL ychim(jjm+1,klev,nqmax-nmicro)
    101       REAL zgaz1(jjm+1,klev),zgaz2(jjm+1,klev),zgaz3(jjm+1,klev)
    102       REAL zgaz10(jjm+1,klev),zgaz20(jjm+1,klev),zgaz30(jjm+1,klev)
     92      REAL qaer0bar(klon,klev,nqmax)   ! et non nmicro... Permet nmicro=0.
     93      REAL zdqmufi(klon,klev,nqmax)
     94      REAL ychim(klon,klev,nqmax-nmicro)
    10395c La saturation n est calculee qu une seule fois: sauvegarde qysat
    10496c La chimie n est pas calculee tous les pas, il faut donc
     
    109101      integer      i,j,k,l,iq,ig0
    110102     
    111       REAL zprec(jjm+1,5),zsolesp(jjm+1,klev,3),
    112      &     zflxesp_i(jjm+1,klev,3)
    113       REAL ztau_drop(jjm+1,klev),ztau_aer(jjm+1,klev,nrad)
    114 c
    115103c    indice des esp chimiques utilisees dans la microfi 
    116104      integer icldch4,icldc2h6,icldc2h2
     
    121109      REAL tmp,ex,kmin,kmax,dqsq
    122110      REAL dqch4
    123 c      REAL ch4(jjm+1),ch4b(jjm+1),dch4(jjm+1),ch4c(jjm+1,llm)
    124 c       integer ich4
    125 c       common/ch4ind/ich4
    126111
    127112c======================================================================
     
    129114
    130115      if (firstcall) then
    131        allocate(qysat(klev,nqmax-nmicro),pdyfi(jjm+1,klev,nqmax-nmicro))
     116       allocate(qysat(klev,nqmax-nmicro),pdyfi(klon,klev,nqmax-nmicro))
    132117
    133118c  -------- Quelques verifications au demarrage sur les tailles des tableaux.
     
    156141         ENDIF
    157142
    158       endif
     143      endif  ! firstcall
    159144
    160145c RAZ des sorties : les moyennes se font directement dans IOIPSL :
     
    177162c   -------------------
    178163c   Gestion de la temperature et de la pression :
     164c   Utilisation des moyennes zonales:
     165
    179166c   soit la chimie est active, soit la microphysique se fait en 2D.
    180167      IF (chimi.or.microfi.eq.1) THEN
    181  
    182         zplev = 0.0
    183         zplay = 0.0
    184         zzlev = 0.0
    185         zzlay = 0.0
    186         ztemp = 0.0
    187         zqaer = 0.0
     168        zplev(:,:) = zplevbar(:,:)
     169        zplay(:,:) = zplaybar(:,:)
     170        zzlev(:,:) = zzlevbar(:,:)
     171        zzlay(:,:) = zzlaybar(:,:)
     172        ztemp(:,:) = ztfibar(:,:)
    188173        ychim = 0.0
    189         zmu0  = 0.0
    190         zfract= 0.0
    191         zgaz1 = 0.0
    192         zgaz2 = 0.0
    193         zgaz3 = 0.0
    194         zprec = 0.0
    195         zflxesp_i = 0.0
    196         ztau_drop = 0.0
    197         ztau_aer  = 0.0
    198         zsolesp   = 0.0
    199    
    200        do l=1,llm+1
    201          zplev(1,l) = pplev(1,l)
    202          zzlev(1,l) = pzlev(1,l)
    203          do j=2,jjm
    204             ig0=1+(j-2)*iim
    205             do i=1,iim
    206                zplev(j,l) = zplev(j,l) + pplev(ig0+i,l)/iim
    207                zzlev(j,l) = zzlev(j,l) + pzlev(ig0+i,l)/iim
    208             enddo
    209          enddo
    210          zplev(jjm+1,l) = pplev(klon,l)
    211          zzlev(jjm+1,l) = pzlev(klon,l)
    212        enddo
    213 
    214        do l=1,llm
    215          ztemp(1,l) = ptemp(1,l)
    216          zplay(1,l) = pplay(1,l)
    217          zzlay(1,l) = pzlay(1,l)
    218          do j=2,jjm
    219             ig0=1+(j-2)*iim
    220             do i=1,iim
    221                ztemp(j,l) = ztemp(j,l) + ptemp(ig0+i,l)/iim
    222                zplay(j,l) = zplay(j,l) + pplay(ig0+i,l)/iim
    223                zzlay(j,l) = zzlay(j,l) + pzlay(ig0+i,l)/iim
    224             enddo
    225          enddo
    226          ztemp(jjm+1,l) = ptemp(klon,l)
    227          zplay(jjm+1,l) = pplay(klon,l)
    228          zzlay(jjm+1,l) = pzlay(klon,l)
    229          temp_eq  = ztemp((jjm+1)/2,:)
    230          press_eq = zplay((jjm+1)/2,:)/100. ! en mbar
    231        enddo
    232 
    233       ENDIF   ! chimi or microfi=1
    234 
    235 c   -----------------------------
    236 c   Gestion des variables de la microphysique :
    237 c
    238 c   -------------------
    239       if (microfi.ge.1) then
    240 
    241 c   Traceurs microphysiques: passage en extensif: n/kg --> n/m^2 (2D ou 3D passage obligatoire)
    242       DO iq=1,nmicro
    243 c        print*,tname(iq)
     174      ENDIF
     175
     176c  Si la microphysique est faite en 2D:
     177      IF (microfi.eq.1) THEN
    244178        DO l=1,llm
    245179          DO i = 1, klon
    246             qaer(i,l,iq) = tr_seri(i,l,iq)*delp(i,l)/RG
     180            delpbar(i,l) = zplevbar(i,l) - zplevbar(i,l+1)
    247181          ENDDO
    248182        ENDDO
    249       ENDDO
    250 c     copie du tableau de traceur :
    251       qaer0(:,:,:)=qaer(:,:,:)
    252 c
     183c   Traceurs microphysiques: passage en extensif: n/kg --> n/m^2
     184        DO iq=1,nmicro
     185         qaer(:,:,iq) = zqfibar(:,:,iq)*delpbar(:,:)/RG
     186         qaer0(:,:,iq)= tr_seri(:,:,iq)*delp(:,:)/RG
     187         qaer0bar(:,:,iq) = qaer(:,:,iq)
     188        ENDDO
     189      ENDIF
     190
     191c  Si la microphysique est faite en 3D:
     192      IF (microfi.eq.2) THEN
     193        zplev(:,:) = pplev(:,:)
     194        zplay(:,:) = pplay(:,:)
     195        zzlev(:,:) = pzlev(:,:)
     196        zzlay(:,:) = pzlay(:,:)
     197        ztemp(:,:) = ptemp(:,:)   
     198c   Traceurs microphysiques: passage en extensif: n/kg --> n/m^2
     199        DO iq=1,nmicro
     200         qaer(:,:,iq) = tr_seri(:,:,iq)*delp(:,:)/RG
     201         qaer0(:,:,iq)= tr_seri(:,:,iq)*delp(:,:)/RG
     202        ENDDO
     203      ENDIF
     204
     205      do l=1,llm
     206         temp_eq  = tmoy
     207         press_eq = playmoy/100. ! en mbar
     208      enddo
     209
    253210c   -------------------
    254211c    Extraction des gaz pour les nuages
    255 c
     212      IF ((microfi.ge.1).and.(clouds.eq.1)) THEN
     213
    256214c     recuperation des indices des gaz qui nous interesse       
    257215      if (firstcall) then
    258         if (clouds.eq.1) then
    259216          icldch4=-1
    260217          icldc2h6=-1
     
    279236            STOP
    280237          endif
    281         endif    ! clouds=1
    282238      endif      ! firstcall
    283239
     
    286242c     On le fait ici pour les sortir dans physiq.F sans avoir a surcharger la routine.
    287243c     Elles passent ensuite dans un common pour passer dans les I/O.
    288 c
    289 c-------------------------------------------
    290       IF (clouds.eq.1) THEN
     244
    291245        DO l=1,llm
    292246          DO i = 1, klon
     
    299253            call c2h2sat(ptemp(i,l),pplay(i,l),tmp)
    300254            satc2h2(i,l) =tr_seri(i,l,icldc2h2)/(tmp*28./26.)
    301    
    302255          ENDDO
    303256        ENDDO
    304257
    305258c   Copie des gaz (en 3D)  <== UNIQUEMENT SI ON FAIT DES NUAGES
    306         gaz1(:,:) = tr_seri(:,:,icldch4)
    307         gaz2(:,:) = tr_seri(:,:,icldc2h6)
    308         gaz3(:,:) = tr_seri(:,:,icldc2h2)
    309 
    310       ENDIF      ! clouds=1
     259        if (moyzon_mu) then
     260         gaz1(:,:) = zqfibar(:,:,icldch4)
     261         gaz2(:,:) = zqfibar(:,:,icldc2h6)
     262         gaz3(:,:) = zqfibar(:,:,icldc2h2)
     263        else
     264         gaz1(:,:) = tr_seri(:,:,icldch4)
     265         gaz2(:,:) = tr_seri(:,:,icldc2h6)
     266         gaz3(:,:) = tr_seri(:,:,icldc2h2)
     267        endif
    311268       
    312       endif      ! microfi.ge.1
    313 
    314 c     -------------------
    315 c     Si microfi = 1 on est en 2D :
    316 c     conversion des inputs de muphys
    317       IF (microfi.eq.1) THEN
    318 
    319          zmu0(1)   = pmu0(1)
    320          zfract(1) = pfract(1)
    321          do j=2,jjm
    322             ig0=1+(j-2)*iim
    323             do i=1,iim
    324                zmu0(j)   = zmu0(j)   + pmu0(ig0+i)/iim
    325                zfract(j) = zfract(j) + pfract(ig0+i)/iim
    326             enddo
    327          enddo
    328          zmu0(jjm+1)   = pmu0(klon)
    329          zfract(jjm+1) = pfract(klon)
    330 c
    331 c     traceurs 3D --> 2D
    332 c
    333       do iq=1,nqmax
    334        do l=1,llm
    335          zqaer(1,l,iq) = qaer(1,l,iq)
    336          do j=2,jjm
    337             ig0=1+(j-2)*iim
    338             do i=1,iim
    339                zqaer(j,l,iq) = zqaer(j,l,iq) + qaer(ig0+i,l,iq)/iim
    340             enddo
    341          enddo
    342          zqaer(jjm+1,l,iq) = qaer(klon,l,iq)
    343        enddo
    344       enddo
    345 c       copie du tableau de traceur
    346         zqaer0(:,:,:) = zqaer(:,:,:)
    347 c
    348 c      gaz 3D --> 2D    <=== UNIQUEMENT SI ON FAIT DES NUAGES.
    349 c
    350         if (clouds.eq.1) then
    351           do l=1,llm
    352             zgaz1(1,l) = gaz1(1,l)
    353             zgaz2(1,l) = gaz2(1,l)
    354             zgaz3(1,l) = gaz3(1,l)
    355             do j=2,jjm
    356               ig0=1+(j-2)*iim
    357               do i=1,iim
    358                 zgaz1(j,l) = zgaz1(j,l) + gaz1(ig0+i,l)/iim
    359                 zgaz2(j,l) = zgaz2(j,l) + gaz2(ig0+i,l)/iim
    360                 zgaz3(j,l) = zgaz3(j,l) + gaz3(ig0+i,l)/iim
    361               enddo
    362             enddo
    363             zgaz1(jjm+1,l) = gaz1(klon,l)
    364             zgaz2(jjm+1,l) = gaz2(klon,l)
    365             zgaz3(jjm+1,l) = gaz3(klon,l)
    366           enddo
    367  
    368           zgaz10=zgaz1
    369           zgaz20=zgaz2
    370           zgaz30=zgaz3
    371         endif ! clouds=1
    372 
    373       endif   ! microfi=1
     269      endif      ! microfi.ge.1 + clouds.eq.1
     270c   -------------------
    374271
    375272c AUTRES TRACEURS
    376273     
    377274      if (nqmax.gt.nmicro) then
    378       do iq=nmicro+1,nqmax
    379        do l=1,llm
    380          ychim(1,l,iq-nmicro) = tr_seri(1,l,iq)
    381          do j=2,jjm
    382             ig0=1+(j-2)*iim
    383             do i=1,iim
    384                ychim(j,l,iq-nmicro) = ychim(j,l,iq-nmicro)
    385      .                              + tr_seri(ig0+i,l,iq)/iim
    386             enddo
    387          enddo
    388          ychim(jjm+1,l,iq-nmicro) = tr_seri(klon,l,iq)
     275       do iq=nmicro+1,nqmax
     276        if (moyzon_ch) then
     277          ychim(:,:,iq-nmicro) = zqfibar(:,:,iq)
     278        else
     279          ychim(:,:,iq-nmicro) = tr_seri(:,:,iq)
     280        endif
     281        nomqy(iq-nmicro) = tname(iq)
     282c        print*,iq-nmicro,nomqy(iq-nmicro)
    389283       enddo
    390        nomqy(iq-nmicro) = tname(iq)
    391 c       print*,iq-nmicro,nomqy(iq-nmicro)
    392       enddo
    393       nomqy(nqmax-nmicro+1) = "HV"
     284       nomqy(nqmax-nmicro+1) = "HV"
    394285      endif
    395286
     
    416307       IF (MICROFI.eq.0) THEN
    417308c        PAS DE MICROPHYSIQUE :
    418 c        On appelle juste rdf pour creer la grille de rayons.
    419309         IF (firstcall) THEN
    420310          print*,'MICROPHYSIQUE OFF-LINE',MICROFI
    421            call rdf()
    422311         ENDIF
    423 c        NOTES :
    424 c        L'appel de rdf ne sert a rien ici mis a part pour le TR. Si cet
    425 c        appel a deja lieu dans le TR inutile de le refaire ici.
    426 c        Je ne sais pas exactement comment marche les modules en F90
    427 c        Mais je recopie les valeurs du common/part/ de rdf pour
    428 c        les mettre dans un common interne a la microphysique (voir varmuphy.h)
    429 c        DONC J'AI BESOIN D'AVOIR ACCES A L'ANCIEN COMMON !!!
    430 c
    431        ELSEIF (MICROFI.eq.1) THEN
    432 c      MICROPHYSIQUE 2D :
    433 c      Les input/output comportent le prefixe z pour 2D :)
     312       ELSE
    434313         zdqmufi = 0.  ! ne sert que pour chimi pour condensation
    435          call muphys(jjm+1,
     314         call muphys(klon,
    436315     &        zplev,zplay,zzlev,zzlay,
    437      &        ztemp,zqaer,zgaz1,zgaz2,zgaz3,
     316     &        ztemp,qaer,gaz1,gaz2,gaz3,
    438317     &        nmicro,ptimestep,
    439      &        zmu0,zfract,
     318     &        pmu0,pfract,
    440319c -------- sorties diagnostiques
    441      &        zflxesp_i,
    442      &        ztau_drop,ztau_aer,
    443      &        zsolesp,zprec)
    444        ELSE
    445 c      MICROPHYSIQUE 3D :
    446 c      Les input sont des champs 3D directement !
    447          call muphys(klon,
    448      &        pplev,pplay,pzlev,pzlay,
    449      &        ptemp,qaer,gaz1,gaz2,gaz3,
    450      &        nmicro,ptimestep,
    451      &        pmu0,pfract,     
    452 c ------ sorties diagnostiques
    453320     &        flxesp_i,
    454321     &        tau_drop,tau_aer,
    455322     &        solesp,prec)
    456 c
     323
    457324c    NOTES :
    458325c    Ici toutes nos sorties sont des champs 3D...(meme les diagnostiques)
    459326c    On a rien a faire mis a part copier les dq dans les d_tr
    460 c
     327
    461328       ENDIF
    462329c       call endtime(tt0,tt1)
    463330c       ttmuphys=ttmuphys+tt1
    464 
    465 c-----------------------------------------------------------------------
    466 c     Mise a jour des sorties de muphys
    467 c    -------------
    468 c       En 2D on copie les sorties de muphys de la grille LATxALT
    469 c       sur la grille complete.
    470        IF (microfi.eq.1) THEN
    471 c        precipitations
    472          DO l=1,5
    473            prec(1,l) = zprec(1,l)
    474            ig0 = 2
    475            DO j=2,jjm
    476              DO i = 1, iim
    477                prec(ig0,l) = zprec(j,l)
    478                ig0 = ig0 + 1
    479              ENDDO
    480            ENDDO
    481            prec(ig0,l) = zprec(jjm+1,l)
    482          ENDDO
    483 c        taux sedimentation
    484          DO l=1,llm
    485 c          taux sed goutte
    486            IF (clouds.eq.1) THEN
    487              tau_drop(1,l) = ztau_drop(1,l)
    488              ig0 = 2
    489              DO j=2,jjm
    490                DO i = 1, iim
    491                  tau_drop(ig0,l) = ztau_drop(j,l)
    492                  ig0 = ig0 + 1
    493                ENDDO
    494              ENDDO
    495              tau_drop(ig0,l) = ztau_drop(jjm+1,l)
    496            ENDIF
    497 c          taux sed aer
    498            DO iq=1,nrad
    499              tau_aer(1,l,iq)  = ztau_aer(1,l,iq)
    500              ig0 = 2
    501              DO j=2,jjm
    502                DO i = 1, iim
    503                  tau_aer(ig0,l,iq)  = ztau_aer(j,l,iq)
    504                  ig0 = ig0 + 1
    505                ENDDO
    506              ENDDO
    507              tau_aer(ig0,l,iq) = ztau_aer(jjm+1,l,iq)
    508            ENDDO
    509          ENDDO
    510 c        flux glace / production glace
    511          IF (clouds.eq.1) THEN
    512            DO iq=1,3
    513              DO l=1,llm
    514                flxesp_i(1,l,iq) = zflxesp_i(1,l,iq)
    515                solesp(1,l,iq) = zsolesp(1,l,iq)
    516                ig0 = 2
    517                DO j=2,jjm
    518                  DO i = 1, iim
    519                    flxesp_i(ig0,l,iq)=zflxesp_i(j,l,iq)
    520                    solesp(ig0,l,iq) = zsolesp(j,l,iq)   
    521                    ig0 = ig0 + 1
    522                  ENDDO
    523                ENDDO
    524                flxesp_i(ig0,l,iq)=zflxesp_i(jjm+1,l,iq)
    525                solesp(ig0,l,iq) = zsolesp(jjm+1,l,iq)
    526              ENDDO
    527            ENDDO
    528          ENDIF
    529        ENDIF
    530331       
    531332c-----------------------------------------------------------------------
     
    534335c
    535336       IF (clouds.eq.1) THEN
    536          IF (microfi.eq.1) THEN
    537 c          On repasse les gaz en 3D si on a fait de la microphysique en 2D
    538            DO l=1,llm
    539              gaz1(1,l) = zgaz1(1,l)
    540              gaz2(1,l) = zgaz2(1,l)
    541              gaz3(1,l) = zgaz3(1,l)
    542              ig0 = 2
    543              DO j=2,jjm
    544                DO i = 1, iim
    545                  gaz1(ig0,l) = zgaz1(j,l)* gaz1(ig0,l) /zgaz10(j,l)
    546                  gaz2(ig0,l) = zgaz2(j,l)* gaz2(ig0,l) /zgaz20(j,l)
    547                  gaz3(ig0,l) = zgaz3(j,l)* gaz3(ig0,l) /zgaz30(j,l)
    548                  ig0 = ig0 + 1
    549                ENDDO
    550              ENDDO
    551              gaz1(ig0,l) = zgaz1(jjm+1,l)
    552              gaz2(ig0,l) = zgaz2(jjm+1,l)
    553              gaz3(ig0,l) = zgaz3(jjm+1,l)
    554            ENDDO
    555          ENDIF
    556 c        Mise a jour du reservoir de CH4 (ie : seul le CH4 remplit le reservoir)
    557          DO i=1,klon
    558             reservoir(i) = reservoir(i)+prec(i,1)
    559          ENDDO
    560 c        Calcul des sources :
    561 c        ch4=0.
    562 c        ch4(1) = gaz1(1,1)
    563 c         do j=2,jjm
    564 c           ig0=1+(j-2)*iim
    565 c           do i=1,iim
    566 c             ch4(j)= ch4(j) + gaz1(ig0+i,1)/iim
    567 c           enddo
    568 c         enddo
    569 c         ch4(jjm+1) = gaz1(ig0,1)
    570 
    571          CALL sources(klon,klev,ptimestep,z0,
     337        IF (microfi.eq.1) THEN
     338c        On repasse les gaz en 3D si on a fait de la microphysique en 2D
     339         gaz1(:,:)=gaz1(:,:)*tr_seri(:,:,icldch4)/zqfibar(:,:,icldch4)
     340         gaz2(:,:)=gaz2(:,:)*tr_seri(:,:,icldc2h6)/zqfibar(:,:,icldc2h6)
     341         gaz3(:,:)=gaz3(:,:)*tr_seri(:,:,icldc2h2)/zqfibar(:,:,icldc2h2)
     342        ENDIF
     343c       Mise a jour du reservoir de CH4 (ie : seul le CH4 remplit le reservoir)
     344        DO i=1,klon
     345          reservoir(i) = reservoir(i)+prec(i,1)
     346        ENDDO
     347
     348        CALL sources(klon,klev,ptimestep,z0,
    572349     &                pu,pv,pplev,pzlay,pzlev,
    573350     &                gaz1,gaz2,gaz3,
    574351     &                ftsol,evapch4,reservoir)
    575352 
    576 c        ch4b=0.
    577 c        ch4b(1) = gaz1(1,1)
    578 c         do j=2,jjm
    579 c           ig0=1+(j-2)*iim
    580 c           do i=1,iim
    581 c             ch4b(j)= ch4b(j) + gaz1(ig0+i,1)/iim
    582 c           enddo
    583 c         enddo
    584 c         ch4b(jjm+1) = gaz1(ig0,1)
    585 c         do j=1,jjm+1
    586 c           write(499,*) j,ch4(j),ch4b(j)
    587 c         enddo
    588 c         write(499,*) ""
    589353       ENDIF
    590354c-----------------------------------------------------------------------
     
    599363        do iq=1,nqmax-nmicro
    600364           do l=1,llm
    601               do j=1,jjm+1
     365              do j=1,klon
    602366                 if (ychim(j,l,iq).gt.qysat(l,iq)) then
    603367           zdqmufi(j,l,nmicro+iq)= (-ychim(j,l,iq)+qysat(l,iq)) !delta y
     
    622386c         if (nomqy(iq).eq."CH4") then
    623387c          do l=1,llm
    624 c             do j=1,jjm+1
     388c             do j=1,klon
    625389c                if (ychim(j,l,iq).le.0.015) then
    626390c          zdqmufi(j,l,nmicro+iq)= (-ychim(j,l,iq)+0.015) !delta y
     
    640404c         if (nomqy(iq).eq."C2H2") then
    641405c          do l=1,llm
    642 c             do j=1,jjm+1
     406c             do j=1,klon
    643407c                if (ychim(j,l,iq).gt.1.e-5) then
    644408c          zdqmufi(j,l,nmicro+iq)= (-ychim(j,l,iq)+1.e-5) !delta y
     
    650414c         if (nomqy(iq).eq."C2H6") then
    651415c          do l=1,llm
    652 c             do j=1,jjm+1
     416c             do j=1,klon
    653417c                if (ychim(j,l,iq).gt.3.e-5) then
    654418c          zdqmufi(j,l,nmicro+iq)= (-ychim(j,l,iq)+3.e-5) !delta y
     
    680444c Appel Chimie
    681445c ------------
    682        CALL calchim(nqmax-nmicro,ychim,nomqy,pdecli,lonsol,dtkim,
     446       CALL calchim(klon,nqmax-nmicro,ychim,nomqy,pdecli,lonsol,dtkim,
    683447     .              ztemp,zplay,zplev,
    684448     .              pdyfi)   
     
    701465c ---> microphysique 2D
    702466      IF (microfi.eq.1) THEN
    703 c  on repasse le champ de traceurs en 3D (pas les tendances)
    704467         DO iq=1,nmicro
    705468           DO l=1,llm
    706              qaer(1,l,iq) = zqaer(1,l,iq)
    707              ig0          = 2
    708              DO j=2,jjm
    709                DO i = 1, iim
     469             DO i=1,klon
     470c  on repasse le champ de traceurs en 3D (pas les tendances)
     471c qaer est ce qui entre dans muphy, donc la moyenne zonale
     472c qaer0 est la valeur initiale du champ
     473c qaer0 est la moyenne zonale initiale
     474c la variation relative pour une bande de latitude est donc (qaer/qaer0bar)
     475c la nouvelle valeur en un point (3D) est donc qaer0*(qaer/qaer0bar)
     476c et la tendance: qaer0*(qaer/qaer0bar)-qaer0
    710477c    un petit patch :
    711478c    Si la moyenne zonale au depart est "nulle" :
     
    714481c    Cela permet aussi entre autre d eviter les NaN pour les traceurs des nuages !
    715482c    (au dessus de la tropo pas de nuages donc qaer(nrad+1:ntype*nrad) = 0 !!!)
    716                  IF (zqaer0(j,l,iq).lt.1e-100) THEN
    717                    qaer(ig0,l,iq) = zqaer(j,l,iq)
    718                  ELSE
    719                    qaer(ig0,l,iq) = zqaer(j,l,iq) *
    720      &             qaer0(ig0,l,iq)/zqaer0(j,l,iq)
    721                  ENDIF
    722                  ig0 = ig0 + 1
    723                ENDDO
    724              ENDDO
    725              qaer(ig0,l,iq) = zqaer(jjm+1,l,iq)
    726            ENDDO
    727          ENDDO
    728 c        La tendances correspond a (qaer-qaer0)/ptimestep
    729          DO iq=1,nmicro
    730            DO i=1,klon
    731              DO l=1,llm
     483               IF (qaer0bar(i,l,iq).gt.1e-100) THEN
     484                   qaer(i,l,iq) = qaer0(i,l,iq) *
     485     &             qaer(i,l,iq)/qaer0bar(i,l,iq)
     486               ENDIF
     487c        La tendance correspond a (qaer-qaer0)/ptimestep
    732488               d_tr_mph(i,l,iq) = (qaer(i,l,iq)-qaer0(i,l,iq))/
    733489     &                            ptimestep
     
    738494       ELSEIF(microfi.gt.1) THEN
    739495         DO iq=1,nmicro
    740            DO l=1,llm
    741              DO i = 1, klon
    742                d_tr_mph(i,l,iq)=(qaer(i,l,iq)-qaer0(i,l,iq))/ptimestep
    743              ENDDO
    744            ENDDO
     496           d_tr_mph(:,:,iq)=(qaer(:,:,iq)-qaer0(:,:,iq))/ptimestep
    745497         ENDDO
    746 
    747498       ENDIF   ! microfi
    748499
    749500       DO iq=1,nmicro
    750          DO l=1,llm
    751            DO i = 1, klon
    752501c  Traceurs microphysiques: passage en intensif: n/m^2 --> n/kg
    753              d_tr_mph(i,l,iq) = d_tr_mph(i,l,iq)*RG/delp(i,l)
    754            ENDDO
    755          ENDDO
     502         d_tr_mph(:,:,iq) = d_tr_mph(:,:,iq)*RG/delp(:,:)
    756503       ENDDO
    757504
     
    764511
    765512      DO iq=nmicro+1,nqmax
    766          DO l=1,llm
    767             d_tr_kim(1,l,iq) = pdyfi(1,l,iq-nmicro)
    768             d_tr_mph(1,l,iq) = zdqmufi(1,l,iq)
    769             ig0          = 2
    770             DO j=2,jjm
    771                DO i = 1, iim
    772                   d_tr_kim(ig0,l,iq)  = pdyfi(j,l,iq-nmicro)
    773      &                 *tr_seri(ig0,l,iq)/ychim(j,l,iq-nmicro)
    774                   d_tr_mph(ig0,l,iq)  = zdqmufi(j,l,iq)
    775      &                 *tr_seri(ig0,l,iq)/ychim(j,l,iq-nmicro)
    776                   ig0             = ig0 + 1
    777                ENDDO
    778             ENDDO
    779             d_tr_kim(ig0,l,iq) = pdyfi(jjm+1,l,iq-nmicro)
    780             d_tr_mph(ig0,l,iq) = zdqmufi(jjm+1,l,iq)
    781          ENDDO
     513         d_tr_kim(:,:,iq) = pdyfi(:,:,iq-nmicro)
     514     &             *tr_seri(:,:,iq)/ychim(:,:,iq-nmicro)
     515         d_tr_mph(:,:,iq) = zdqmufi(:,:,iq)
     516     &             *tr_seri(:,:,iq)/ychim(:,:,iq-nmicro)
    782517      ENDDO
    783518
     
    792527c les especes concernees (CH4, C2H6 pour le moment).
    793528       IF (microfi.ge.1.and.clouds.eq.1) THEN
    794          DO i=1,klon
    795            DO l=1,klev
    796529c     condensation CH4
    797              d_tr_mph(i,l,icldch4)=(gaz1(i,l)-tr_seri(i,l,icldch4))
     530          d_tr_mph(:,:,icldch4) =(gaz1(:,:)-tr_seri(:,:,icldch4))
    798531     &                            /ptimestep
    799532c     condensation C2H6
    800              d_tr_mph(i,l,icldc2h6)=(gaz2(i,l)-tr_seri(i,l,icldc2h6))
    801      &                             /ptimestep
     533          d_tr_mph(:,:,icldc2h6)=(gaz2(:,:)-tr_seri(:,:,icldc2h6))
     534     &                            /ptimestep
    802535c     condensation C2H2
    803              d_tr_mph(i,l,icldc2h2)=(gaz3(i,l)-tr_seri(i,l,icldc2h2))
    804      &                             /ptimestep
    805            ENDDO
    806          ENDDO
     536          d_tr_mph(:,:,icldc2h2)=(gaz3(:,:)-tr_seri(:,:,icldc2h2))
     537     &                            /ptimestep
    807538       ENDIF
    808 c        ch4c=0.
    809 c       do l=1,llm
    810 c       ch4c(1,l) = tr_seri(1,l,icldch4)
    811 c       do j=2,jjm
    812 c         ig0=1+(j-2)*iim
    813 c         do i=1,iim
    814 c            ch4c(j,l)= ch4c(j,l)+tr_seri(ig0+i,l,icldch4)/iim
    815 c         enddo
    816 c       enddo
    817 c        ch4c(jjm+1,l) = tr_seri(klon,l,icldch4)
    818 c      enddo
    819 c       do l=1,llm
    820 c         write(500,*) pplay(25,l),ch4c(25,l)
    821 c       enddo
    822 c       write(500,*) ""
    823 
    824539
    825540c--------------------------------------------------
     
    882597           DO j=1,klev
    883598             DO iq=1,nrad
    884 *      Rayon minimum selon la quantité de noyaux
    885                IF (qaer(i,j,iq+nrad) .le.   1.e-5) THEN
    886                   rcloud(i,j,iq) = 1.e-10
     599*      Rayon minimum selon la quantite de noyaux
     600               IF (qaer(i,j,iq+nrad) .le. 1.e-5) THEN
     601                 rcloud(i,j,iq) = 1.e-10
    887602               ELSE
    888603                 rcloud(i,j,iq)=
     
    940655c
    941656c      OCCCLD
    942 c      Calcul le nombre d'occurence d'un nuage
    943 c      d opacité comprise en kmin et kmax
     657c      Calcul le nombre d occurence d un nuage
     658c      d opacite comprise en kmin et kmax
    944659c          k        kmin            kmax
    945660c          1   0.0000000      0.10000000   
  • trunk/LMDZ.TITAN/libf/phytitan/radlwsw.F

    r815 r1056  
    1       SUBROUTINE radlwsw(dist, rmu0, fract, falbe, zzlev,
    2      .                  paprs, pplay,tsol, pt, nq, nmicro, pq,
    3      .                  qaer,
    4      .                  heat,cool,radsol,
    5      .                  topsw,toplw,solsw,sollw,
    6      .                  sollwdown,
    7      .                  lwnet, swnet)
     1      SUBROUTINE radlwsw(dist, rmu0, fract, zzlev,
     2     .                  paprs, pplay,tsol, pt, nq, nmicro, pq,qaer)
    83c     
    94c======================================================================
     
    4136      use dimphy
    4237      USE comgeomphy
    43       IMPLICIT none
     38      USE phys_state_var_mod, only: falbe,heat,cool,radsol,
     39     .      topsw,toplw,solsw,sollw,sollwdown,lwnet,swnet
     40      USE write_field_phy
     41       IMPLICIT none
    4442#include "dimensions.h"
    4543#include "YOMCST.h"
     
    4846c ARGUMENTS
    4947      INTEGER nq,nmicro
    50       real rmu0(klon), fract(klon), falbe(klon), dist
     48      real rmu0(klon), fract(klon), dist
    5149c
    5250      real zzlev(klon,klev+1),paprs(klon,klev+1), pplay(klon,klev)
     
    5553      real pq(klon,klev,nq)
    5654      REAL qaer(klon,klev,nq)
    57       real heat(klon,klev), cool(klon,klev)
    58       real radsol(klon), topsw(klon), toplw(klon)
    59       real solsw(klon), sollw(klon)
    60       real sollwdown(klon)
    61       REAL swnet(klon,klev+1),lwnet(klon,klev+1)
    6255c
    6356c LOCAL VARIABLES
     
    8780             enddo
    8881
     82c     call WriteField_phy('radlwsw_zp',zp,klev+1)
     83
     84c =======================================
    8985c   altitudes (m) avec indice 1 en haut
    9086             do l=1,klev+1
     
    121117         CALL radtitan(zp,nq,nmicro,zq,qaer)
    122118
    123 c =======================================
    124119c CALCUL DU SW
    125120c =======================================
  • trunk/LMDZ.TITAN/libf/phytitan/radtitan.F

    r815 r1056  
    3535      USE comgeomphy
    3636      USE optcld, only : iniqcld
     37      use moyzon_mod, only:plevmoy
    3738      IMPLICIT NONE
    3839#include "dimensions.h"
     
    118119      IPRINT=1
    119120
    120 C MODIFY ADJUSTABLE NUMBERS HERE -- NOT IN COMMON
    121121C&&
    122122      FHAZE=0.3
     
    124124       if(iprem.eq.0) then
    125125         TAUFAC=0
    126          FHVIS=2.0
    127          FHIR=.2
    128        print*,'ouverture du fichier initpar'
    129        open (unit=1,file='initpar')
    130        read(1,*) xpoub,kkk,xvis,xir
    131        close(1)
    132          FHVIS= xvis
    133          FHIR = xir
    134        print*,'ouverture du fichier initpar ok'
    135        print*,'DANS RADTITAN'
    136        print*,'-------------'
    137        print*,'FHVIS  = ',FHVIS
    138        print*,'FHIR   = ',FHIR
     126c xvis et xir lus dans physiq.def  (ancien fichier initpar)
     127       FHVIS= xvis
     128       FHIR = xir
    139129c      on initialise le paquet optcld
    140130       if (clouds.eq.1) call iniqcld()
     
    151141       print*,notfirstcall
    152142
    153       DO 210 J=1,NLEVEL
    154          PRESS(J)=SSUM(klon,p(1,j),1)/FLOAT(klon)
     143c   pression moyenne globale
     144c   passage au pressions en bar avec indice 1 au sommet.
     145c   (similaire zp dans radlwsw)
     146      DO 210 J=2,NLEVEL
     147         PRESS(J)=plevmoy(NLEVEL+1-j)*1.e-5
    155148210   CONTINUE
     149      PRESS(1) = PRESS(2)*0.001
    156150
    157151c  a cause du tableau predefini dans lell.F (et lell_light.F)
  • trunk/LMDZ.TITAN/libf/phytitan/rcm1d.F

    r1048 r1056  
    8585      COMMON/cpdetvenus/cppdyn,nu_venus,t0_venus
    8686      REAL cppdyn,nu_venus,t0_venus
     87      real pi
    8788
    8889c=======================================================================
     
    175176      ndt=ndt*day_step     
    176177      dtphys=daysec/day_step 
     178      dtime=dtphys
    177179
    178180c Pression de surface sur la planete
  • trunk/LMDZ.TITAN/libf/phytitan/snuages3D.F

    r814 r1056  
    923923         real rfg(nz),dfg(nz,nrad)
    924924         real puit(nz)
    925 c ------ echange est decrit sur ngrid=klon mais peut etre utilisee
    926 c        uniquement sur jjm+1
     925c ------ echange est cree sur la taille maxi mais n'est utilisee
     926c        que sur la dim geree par le proc (klon ou jjm+1)
    927927         integer ngrid
    928          parameter (ngrid=(jjm-1)*iim+2)  ! = klon
     928         parameter (ngrid=(jjm-1)*iim+2)  ! = taille maximum
    929929         real echange(nz,nz,ngrid)
     930c pas genial mais vu que c est tres local, pas de soucis a priori en parallele.
    930931         real bilan1,bilan2,bilan3,bilan4,bilan5
    931932         real bilan11,bilan12,bilan13,bilan14,bilan15
  • trunk/LMDZ.TITAN/libf/phytitan/write_histday.h

    r808 r1056  
    33!
    44      IF (ok_journe) THEN
    5 c
    6       ndex2d = 0
    7       ndex3d = 0
    8       zx_tmp_2d = 0.
    9       zx_tmp_3d = 0.
    10       zx_tmp_fi2d=0.
    11       zx_tmp_fi3d=0.
    12 c
     5
    136         zsto = dtime
    14          zout = dtime * FLOAT(ecrit_day)
     7         zout = dtime * REAL(ecrit_day)
    158         itau_w = itau_phy + itap
    169
    17 c
    1810c-------------------------------------------------------
    1911      IF(lev_histday.GE.1) THEN
    20 c
     12
    2113ccccccccccccc 2D fields, invariables
    22 c
    23       CALL gr_fi_ecrit(1,klon,iim,jjmp1,pphis,zx_tmp_2d)
    24       CALL histwrite(nid_day,"phis",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    25 C
    26       CALL gr_fi_ecrit(1,klon,iim,jjmp1,airephy,zx_tmp_2d)
    27       CALL histwrite(nid_day,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    28 c
     14
     15      call histwrite_phy(nid_day,.false.,"phis",itau_w,pphis)
     16      call histwrite_phy(nid_day,.false.,"aire",itau_w,airephy)
     17
    2918ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
    30       do j=1,jjmp1
    31        do i=1,iim
    32         zx_tmp_2d(i,j)=zls*180./RPI      ! zls est en radians !!
    33        enddo
    34       enddo
    35 c Correction passage de 360 à 0... Sinon probleme avec moyenne
     19c Correction passage de 360 a 0... Sinon probleme avec moyenne
    3620      if (zls.lt.zlsm1) then
    37         zx_tmp_2d = zx_tmp_2d+360.
     21        do i=1,klon
     22          tmpout(i,1) = zls*180./RPI+360.
     23        enddo
    3824        zlsm1 = 2.*RPI
    3925      else
     26        do i=1,klon
     27          tmpout(i,1) = zls*180./RPI
     28        enddo
    4029        zlsm1 = zls
    4130      endif
    42       CALL histwrite(nid_day,"ls",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    43 c
     31      call histwrite_phy(nid_day,.false.,"ls",itau_w,tmpout(:,1))
     32
    4433ccccccccccccc 2D fields, variables
    45 c
    46       CALL gr_fi_ecrit(1, klon,iim,jjmp1, ftsol,zx_tmp_2d)
    47       CALL histwrite(nid_day,"tsol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    48 c
    49       DO i = 1, klon
    50          zx_tmp_fi2d(i) = paprs(i,1)
    51       ENDDO
    52       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    53       CALL histwrite(nid_day,"psol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    54 c
    55 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ue,zx_tmp_2d)
    56 c     CALL histwrite(nid_day,"ue",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    57 c
    58 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ve,zx_tmp_2d)
    59 c     CALL histwrite(nid_day,"ve",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    60 c
     34
     35      call histwrite_phy(nid_day,.false.,"tsol",itau_w,ftsol)
     36      call histwrite_phy(nid_day,.false.,"psol",itau_w,paprs(:,1))
     37
     38c     call histwrite_phy(nid_day,.false.,"ue",itau_w,ue)
     39c     call histwrite_phy(nid_day,.false.,"ve",itau_w,ve)
     40
    6141      ENDIF !lev_histday.GE.1
    62 c
     42
    6343c-------------------------------------------------------
    6444      IF(lev_histday.GE.2) THEN
    65 c
     45
    6646ccccccccccccc 3D fields, basics
    67 c
    68       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, t_seri, zx_tmp_3d)
    69       CALL histwrite(nid_day,"temp",itau_w,zx_tmp_3d,
    70      .                                   iim*jjmp1*klev,ndex3d)
    71 c
    72       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, pplay, zx_tmp_3d)
    73       CALL histwrite(nid_day,"pres",itau_w,zx_tmp_3d,
    74      .                                   iim*jjmp1*klev,ndex3d)
    75 c
    76       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, zphi, zx_tmp_3d)
    77       CALL histwrite(nid_day,"geop",itau_w,zx_tmp_3d,
    78      .                                   iim*jjmp1*klev,ndex3d)
    79 c
    80       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, u_seri, zx_tmp_3d)
    81       CALL histwrite(nid_day,"vitu",itau_w,zx_tmp_3d,
    82      .                                   iim*jjmp1*klev,ndex3d)
    83 c
    84       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, v_seri, zx_tmp_3d)
    85       CALL histwrite(nid_day,"vitv",itau_w,zx_tmp_3d,
    86      .                                   iim*jjmp1*klev,ndex3d)
    87 c
    88       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, omega, zx_tmp_3d)
    89       CALL histwrite(nid_day,"vitw",itau_w,zx_tmp_3d,
    90      .                                   iim*jjmp1*klev,ndex3d)
    91 c
    92       CALL gr_fi_ecrit(1, klon,iim,jjmp1, topsw,zx_tmp_2d)
    93       CALL histwrite(nid_day,"tops",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    94 c
    95       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_dyn, zx_tmp_3d)
    96       CALL histwrite(nid_day,"dudyn",itau_w,zx_tmp_3d,
    97      .                                   iim*jjmp1*klev,ndex3d)
    98 c
    99       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_vdf, zx_tmp_3d)
    100       CALL histwrite(nid_day,"duvdf",itau_w,zx_tmp_3d,
    101      .                                   iim*jjmp1*klev,ndex3d)
    102 c
     47
     48      call histwrite_phy(nid_day,.false.,"temp",itau_w,t_seri)
     49      call histwrite_phy(nid_day,.false.,"pres",itau_w,pplay)
     50      call histwrite_phy(nid_day,.false.,"geop",itau_w,zphi)
     51      call histwrite_phy(nid_day,.false.,"vitu",itau_w,u_seri)
     52      call histwrite_phy(nid_day,.false.,"vitv",itau_w,v_seri)
     53      call histwrite_phy(nid_day,.false.,"vitw",itau_w,omega)
     54      call histwrite_phy(nid_day,.false.,"tops",itau_w,topsw)
     55      call histwrite_phy(nid_day,.false.,"duvdf",itau_w,d_u_vdf)
     56      call histwrite_phy(nid_day,.false.,"dudyn",itau_w,d_u_dyn)
     57
    10358cccccccccccccccccc  Tracers
    104 c
     59
    10560         if (iflag_trac.eq.1) THEN
    10661          if (microfi.ge.1) then
    107 c           DO iq=1,nmicro
    108 c      CALL gr_fi_ecrit(klev,klon,iim,jjmp1, qaer(1,1,iq), zx_tmp_3d)
    109 c      CALL histwrite(nid_day,tname(iq),itau_w,zx_tmp_3d,
    110 c     .                                   iim*jjmp1*klev,ndex3d)
    111 c           ENDDO
     62c          DO iq=1,nmicro
     63c      call histwrite_phy(nid_day,.false.,tname(iq),
     64c    .                    itau_w,qaer(1:klon,1:klev,iq))
     65c          ENDDO
    11266c    -------   NB AER TOT
    11367               do i=1,klon
    11468                 do j=1,klev
    115                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,1:nrad))
    116                  enddo
    117                enddo
    118        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    119        CALL histwrite(nid_day,"qaer",itau_w,zx_tmp_3d,
    120      .                                   iim*jjmp1*klev,ndex3d)
     69                   tmpout(i,j)= SUM(qaer(i,j,1:nrad))
     70                 enddo
     71               enddo
     72       call histwrite_phy(nid_day,.false.,"qaer",itau_w,tmpout)
    12173
    12274             if (clouds.eq.1) then
     
    12476               do i=1,klon
    12577                 do j=1,klev
    126                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,nrad+1:2*nrad))
    127                  enddo
    128                enddo
    129        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    130        CALL histwrite(nid_day,"qnoy",itau_w,zx_tmp_3d,
    131      .                                   iim*jjmp1*klev,ndex3d)
     78                   tmpout(i,j)= SUM(qaer(i,j,nrad+1:2*nrad))
     79                 enddo
     80               enddo
     81       call histwrite_phy(nid_day,.false.,"qnoy",itau_w,tmpout)
    13282c    -------   V GLA1 TOT
    13383               do i=1,klon
    13484                 do j=1,klev
    135                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,2*nrad+1:3*nrad))
    136                  enddo
    137                enddo
    138        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    139        CALL histwrite(nid_day,"qgl1",itau_w,zx_tmp_3d,
    140      .                                   iim*jjmp1*klev,ndex3d)
     85                   tmpout(i,j)= SUM(qaer(i,j,2*nrad+1:3*nrad))
     86                 enddo
     87               enddo
     88       call histwrite_phy(nid_day,.false.,"qgl1",itau_w,tmpout)
    14189c    -------   V GLA2 TOT
    14290               do i=1,klon
    14391                 do j=1,klev
    144                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,3*nrad+1:4*nrad))
    145                  enddo
    146                enddo
    147        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    148        CALL histwrite(nid_day,"qgl2",itau_w,zx_tmp_3d,
    149      .                                   iim*jjmp1*klev,ndex3d)
     92                   tmpout(i,j)= SUM(qaer(i,j,3*nrad+1:4*nrad))
     93                 enddo
     94               enddo
     95       call histwrite_phy(nid_day,.false.,"qgl2",itau_w,tmpout)
    15096c    -------   V GLA3 TOT
    15197               do i=1,klon
    15298                 do j=1,klev
    153                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,4*nrad+1:5*nrad))
    154                  enddo
    155                enddo
    156        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    157        CALL histwrite(nid_day,"qgl3",itau_w,zx_tmp_3d,
    158      .                                   iim*jjmp1*klev,ndex3d)
     99                   tmpout(i,j)= SUM(qaer(i,j,4*nrad+1:5*nrad))
     100                 enddo
     101               enddo
     102       call histwrite_phy(nid_day,.false.,"qgl3",itau_w,tmpout)
    159103c --------------
    160104c ----- SATURATION ESP NUAGES
    161        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satch4,zx_tmp_3d)
    162        CALL histwrite(nid_day,"ch4sat", itau_w, zx_tmp_3d,
    163      .                                   iim*jjmp1*klev,ndex3d)
    164 
    165        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satc2h6,zx_tmp_3d)
    166        CALL histwrite(nid_day,"c2h6sat", itau_w, zx_tmp_3d,
    167      .                                   iim*jjmp1*klev,ndex3d)
    168 
    169        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satc2h2,zx_tmp_3d)
    170        CALL histwrite(nid_day,"c2h2sat", itau_w, zx_tmp_3d,
    171      .                                   iim*jjmp1*klev,ndex3d)
     105       call histwrite_phy(nid_day,.false.,"ch4sat",itau_w,satch4)
     106       call histwrite_phy(nid_day,.false.,"c2h6sat",itau_w,satc2h6)
     107       call histwrite_phy(nid_day,.false.,"c2h2sat",itau_w,satc2h2)
    172108c --------------
    173109c ----- RESERVOIR DE SURFACE
    174        CALL gr_fi_ecrit(1, klon,iim,jjmp1,reservoir,zx_tmp_2d)
    175        CALL histwrite(nid_day,"reserv",itau_w,zx_tmp_2d,
    176      .                        iim*jjmp1,ndex2d)
     110       call histwrite_phy(nid_day,.false.,"reserv",itau_w,reservoir)
    177111c --------------
    178112c ----- ECHANGE GAZ SURF/ATM (evaporation)
    179        CALL gr_fi_ecrit(1, klon,iim,jjmp1,evapch4,zx_tmp_2d)
    180        CALL histwrite(nid_day,"evapch4",itau_w,zx_tmp_2d,
    181      .                        iim*jjmp1,ndex2d)
     113       call histwrite_phy(nid_day,.false.,"evapch4",itau_w,evapch4)
    182114c --------------
    183115c ----- PRECIPITATIONS
    184116c       -----  CH4
    185        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,1),zx_tmp_2d)
    186        CALL histwrite(nid_day,"prech4",itau_w,zx_tmp_2d,
    187      .                        iim*jjmp1,ndex2d)
     117       call histwrite_phy(nid_day,.false.,"prech4",
     118     .            itau_w,precip(1:klon,1))
    188119c       -----  C2H6
    189        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,2),zx_tmp_2d)
    190        CALL histwrite(nid_day,"prec2h6",itau_w,zx_tmp_2d,
    191      .                        iim*jjmp1,ndex2d)
     120       call histwrite_phy(nid_day,.false.,"prec2h6",
     121     .            itau_w,precip(1:klon,2))
    192122c       -----  C2H2
    193        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,3),zx_tmp_2d)
    194        CALL histwrite(nid_day,"prec2h2",itau_w,zx_tmp_2d,
    195      .                        iim*jjmp1,ndex2d)
    196 c
     123       call histwrite_phy(nid_day,.false.,"prec2h2",
     124     .            itau_w,precip(1:klon,3))
     125c       -----  NOY
     126       call histwrite_phy(nid_day,.false.,"prenoy",
     127     .            itau_w,precip(1:klon,4))
     128c       -----  AER
     129       call histwrite_phy(nid_day,.false.,"preaer",
     130     .            itau_w,precip(1:klon,5))
    197131c --------------
    198132c ----- FLUX GLACE
    199        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    200      .              flxesp_i(1:klon,1:klev,1),zx_tmp_3d)
    201        CALL histwrite(nid_day,"flxgl1", itau_w, zx_tmp_3d,
    202      .                                   iim*jjmp1*klev,ndex3d)
    203        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    204      .              flxesp_i(1:klon,1:klev,2),zx_tmp_3d)
    205        CALL histwrite(nid_day,"flxgl2", itau_w, zx_tmp_3d,
    206      .                                   iim*jjmp1*klev,ndex3d)
    207        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    208      .              flxesp_i(1:klon,1:klev,3),zx_tmp_3d)
    209        CALL histwrite(nid_day,"flxgl3", itau_w, zx_tmp_3d,
    210      .                                   iim*jjmp1*klev,ndex3d)
    211 c
     133c       -----  CH4
     134       call histwrite_phy(nid_day,.false.,"flxgl1",
     135     .            itau_w,flxesp_i(1:klon,1:klev,1))
     136c       -----  C2H6
     137       call histwrite_phy(nid_day,.false.,"flxgl2",
     138     .            itau_w,flxesp_i(1:klon,1:klev,2))
     139c       -----  C2H2
     140       call histwrite_phy(nid_day,.false.,"flxgl3",
     141     .            itau_w,flxesp_i(1:klon,1:klev,3))
     142c --------------
     143c ----- Source/puits GLACE
     144c       -----  CH4
     145       call histwrite_phy(nid_day,.false.,"solch4",
     146     .            itau_w,solesp(1:klon,1:klev,1))
     147c       -----  C2H6
     148       call histwrite_phy(nid_day,.false.,"solc2h6",
     149     .            itau_w,solesp(1:klon,1:klev,2))
     150c       -----  C2H2
     151       call histwrite_phy(nid_day,.false.,"solc2h2",
     152     .            itau_w,solesp(1:klon,1:klev,3))
    212153c --------------
    213154c ----- RAYON MOYEN GOUTTE
    214        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, rmcloud,zx_tmp_3d)
    215        CALL histwrite(nid_day,"rcldbar", itau_w, zx_tmp_3d,
    216      .                                   iim*jjmp1*klev,ndex3d)
    217 c
     155       call histwrite_phy(nid_day,.false.,"rcldbar",itau_w,rmcloud)
     156
    218157             endif
    219158          endif
    220 c
     159
    221160c --------------
    222161c ----- TRACEURS CHIMIQUES
    223162          if (nmicro.lt.nqmax) then
    224163           DO iq=nmicro+1,nqmax
    225        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,tr_seri(1,1,iq),zx_tmp_3d)
    226        CALL histwrite(nid_day,tname(iq),itau_w,zx_tmp_3d,
    227      .                                   iim*jjmp1*klev,ndex3d)
     164       call histwrite_phy(nid_day,.false.,tname(iq),
     165     .                    itau_w,tr_seri(1:klon,1:klev,iq))
    228166           ENDDO
    229167          endif
    230168         endif
    231 c
     169
    232170      ENDIF !lev_histday.GE.2
    233 c
     171
    234172c-------------------------------------------------------
    235173      IF(lev_histday.GE.3) THEN
    236 c
     174
    237175cccccccccccccccccc  Radiative transfer
    238 c
     176
    239177c 2D
    240 c
    241       CALL gr_fi_ecrit(1, klon,iim,jjmp1, toplw,zx_tmp_2d)
    242       CALL histwrite(nid_day,"topl",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    243 c
    244       CALL gr_fi_ecrit(1, klon,iim,jjmp1, solsw,zx_tmp_2d)
    245       CALL histwrite(nid_day,"sols",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    246 c
    247       CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d)
    248       CALL histwrite(nid_day,"soll",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    249 c
     178
     179      call histwrite_phy(nid_day,.false.,"topl",itau_w,toplw)
     180      call histwrite_phy(nid_day,.false.,"sols",itau_w,solsw)
     181      call histwrite_phy(nid_day,.false.,"soll",itau_w,sollw)
     182
    250183c 3D
    251 c
    252       zx_tmp_fi3d(1:klon,1:klev)=swnet(1:klon,1:klev)
    253       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    254       CALL histwrite(nid_day,"SWnet",itau_w,zx_tmp_3d,
    255      .                                   iim*jjmp1*klev,ndex3d)
    256 c
    257       zx_tmp_fi3d(1:klon,1:klev)=lwnet(1:klon,1:klev)
    258       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    259       CALL histwrite(nid_day,"LWnet",itau_w,zx_tmp_3d,
    260      .                                   iim*jjmp1*klev,ndex3d)
    261 c
     184
     185      call histwrite_phy(nid_day,.false.,"SWnet",
     186     .          itau_w,swnet(1:klon,1:klev))
     187      call histwrite_phy(nid_day,.false.,"LWnet",
     188     .          itau_w,lwnet(1:klon,1:klev))
     189
    262190c --------------
    263191c ----- OPACITE BRUME
     
    268196         enddo
    269197         enddo
    270          write(str1,'(i2.2)') k
    271       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    272       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    273       CALL histwrite(nid_day,"thv"//str1,itau_w,zx_tmp_3d,
    274      .                                   iim*jjmp1*klev,ndex3d)
     198         write(str2,'(i2.2)') k
     199       call histwrite_phy(nid_day,.false.,"thv"//str2,itau_w,t_tauhvd)
    275200       enddo      ! fin boucle NSPECV
    276201
     
    281206         enddo
    282207         enddo
    283          write(str1,'(i2.2)') k
    284       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    285       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    286       CALL histwrite(nid_day,"thi"//str1,itau_w,zx_tmp_3d,
    287      .                                   iim*jjmp1*klev,ndex3d)
     208         write(str2,'(i2.2)') k
     209       call histwrite_phy(nid_day,.false.,"thi"//str2,itau_w,t_tauhvd)
    288210       enddo      ! fin boucle NSPECI
    289 c
    290211c --------------
    291212c ----- EXTINCTION BRUME
     
    302223         enddo
    303224         enddo
    304          write(str1,'(i2.2)') k
    305       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    306       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    307       CALL histwrite(nid_day,"khv"//str1,itau_w,zx_tmp_3d,
    308      .                                   iim*jjmp1*klev,ndex3d)
     225         write(str2,'(i2.2)') k
     226       call histwrite_phy(nid_day,.false.,"khv"//str2,itau_w,t_khvd)
    309227       enddo      ! fin boucle NSPECV
    310228
     
    321239         enddo
    322240         enddo
    323          write(str1,'(i2.2)') k
    324       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    325       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    326       CALL histwrite(nid_day,"khi"//str1,itau_w,zx_tmp_3d,
    327      .                                   iim*jjmp1*klev,ndex3d)
     241         write(str2,'(i2.2)') k
     242       call histwrite_phy(nid_day,.false.,"khi"//str2,itau_w,t_khvd)
    328243       enddo      ! fin boucle NSPECI
    329 c
    330244c --------------
    331245c ----- OPACITE GAZ
     
    336250         enddo
    337251         enddo
    338          write(str1,'(i2.2)') k
    339       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    340       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    341       CALL histwrite(nid_day,"tgv"//str1,itau_w,zx_tmp_3d,
    342      .                                   iim*jjmp1*klev,ndex3d)
     252         write(str2,'(i2.2)') k
     253       call histwrite_phy(nid_day,.false.,"tgv"//str2,itau_w,t_tauhvd)
    343254       enddo      ! fin boucle NSPECV
    344255
     
    349260         enddo
    350261         enddo
    351          write(str1,'(i2.2)') k
    352       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    353       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    354       CALL histwrite(nid_day,"tgi"//str1,itau_w,zx_tmp_3d,
    355      .                                   iim*jjmp1*klev,ndex3d)
     262         write(str2,'(i2.2)') k
     263       call histwrite_phy(nid_day,.false.,"tgi"//str2,itau_w,t_tauhvd)
    356264       enddo      ! fin boucle NSPECI
    357 c
    358265c --------------
    359266c ----- EXTINCTION GAZ
     
    370277         enddo
    371278         enddo
    372          write(str1,'(i2.2)') k
    373       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    374       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    375       CALL histwrite(nid_day,"kgv"//str1,itau_w,zx_tmp_3d,
    376      .                                   iim*jjmp1*klev,ndex3d)
     279         write(str2,'(i2.2)') k
     280       call histwrite_phy(nid_day,.false.,"kgv"//str2,itau_w,t_khvd)
    377281       enddo      ! fin boucle NSPECV
    378282
     
    390294         enddo
    391295         enddo
    392          write(str1,'(i2.2)') k
    393       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    394       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    395       CALL histwrite(nid_day,"kgi"//str1,itau_w,zx_tmp_3d,
    396      .                                   iim*jjmp1*klev,ndex3d)
     296         write(str2,'(i2.2)') k
     297       call histwrite_phy(nid_day,.false.,"kgi"//str2,itau_w,t_khvd)
    397298       enddo      ! fin boucle NSPECI
    398299
    399300c --------------
     301         if (clouds.eq.1) then
     302c --------------
    400303c ----- OPACITE NUAGES (ATTENTION PROXY)
    401          if (clouds.eq.1) then
    402            zx_tmp_fi3d(1:klon,1:klev)=occcld(1:klon,1:klev)
    403            CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    404            CALL histwrite(nid_day,"tcld",itau_w,zx_tmp_3d,
    405      .                                   iim*jjmp1*klev,ndex3d)
     304         call histwrite_phy(nid_day,.false.,"tcld",itau_w,occcld)
    406305c --------------
    407306c ----- EXTINCTION NUAGES (ATTENTION PROXY)
     
    414313             enddo
    415314           enddo
    416            zx_tmp_fi3d(1:klon,1:klev)=t_kcld(1:klon,1:klev)
    417            CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    418            CALL histwrite(nid_day,"kcld",itau_w,zx_tmp_3d,
    419      .                                   iim*jjmp1*klev,ndex3d)
     315         call histwrite_phy(nid_day,.false.,"kcld",itau_w,t_kcld)
     316c --------------
    420317        endif 
    421 c
     318c --------------
     319
    422320      ENDIF !lev_histday.GE.3
    423 c
     321
    424322c-------------------------------------------------------
    425323      IF(lev_histday.GE.4) THEN
    426 c
    427       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t_dyn, zx_tmp_3d)
    428       CALL histwrite(nid_day,"dtdyn",itau_w,zx_tmp_3d,
    429      .                                   iim*jjmp1*klev,ndex3d)
    430 c
    431       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t, zx_tmp_3d)
    432       CALL histwrite(nid_day,"dtphy",itau_w,zx_tmp_3d,
    433      .                                   iim*jjmp1*klev,ndex3d)
     324
     325      call histwrite_phy(nid_day,.false.,"dtdyn",itau_w,d_t_dyn)
     326      call histwrite_phy(nid_day,.false.,"dtphy",itau_w,d_t)
    434327c K/s
    435       zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)
    436       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    437       CALL histwrite(nid_day,"dtvdf",itau_w,zx_tmp_3d,
    438      .                                   iim*jjmp1*klev,ndex3d)
    439 c
     328      call histwrite_phy(nid_day,.false.,"dtvdf",itau_w,d_t_vdf)
    440329c K/s
    441       zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)
    442       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    443       CALL histwrite(nid_day,"dtajs",itau_w,zx_tmp_3d,
    444      .                                   iim*jjmp1*klev,ndex3d)
    445 c
     330      call histwrite_phy(nid_day,.false.,"dtajs",itau_w,d_t_ajs)
    446331c K/s
    447       zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)
    448       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    449       CALL histwrite(nid_day,"dtswr",itau_w,zx_tmp_3d,
    450      .                                   iim*jjmp1*klev,ndex3d)
    451 c
     332      call histwrite_phy(nid_day,.false.,"dtswr",itau_w,heat)
     333c K/s
     334      call histwrite_phy(nid_day,.false.,"dtlwr",itau_w,-1.*cool)
    452335c K/s     
    453       zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)
    454       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    455       CALL histwrite(nid_day,"dtlwr",itau_w,zx_tmp_3d,
    456      .                                   iim*jjmp1*klev,ndex3d)
    457 c K/s     
    458 c     zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)
    459 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    460 c     CALL histwrite(nid_day,"dtec",itau_w,zx_tmp_3d,
    461 c    .                                   iim*jjmp1*klev,ndex3d)
    462 c
     336c      call histwrite_phy(nid_day,.false.,"dtec",itau_w,d_t_ec)
     337
    463338      ENDIF !lev_histday.GE.4
    464 c
     339
    465340c-------------------------------------------------------
    466341      IF(lev_histday.GE.5) THEN
    467 c
    468 c
    469 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxu , zx_tmp_2d)
    470 c      CALL histwrite(nid_day,"taux_",itau_w,
    471 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    472 c     
    473 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxv , zx_tmp_2d)
    474 c      CALL histwrite(nid_day,"tauy_",itau_w,
    475 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    476 c
    477 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragm,zx_tmp_2d)
    478 c     CALL histwrite(nid_day,"cdrm",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    479 c
    480 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragh,zx_tmp_2d)
    481 c     CALL histwrite(nid_day,"cdrh",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    482 c
     342
     343c      call histwrite_phy(nid_day,.false.,"taux",itau_w,fluxu)
     344c      call histwrite_phy(nid_day,.false.,"tauy",itau_w,fluxv)
     345c      call histwrite_phy(nid_day,.false.,"cdrm",itau_w,cdragm)
     346c      call histwrite_phy(nid_day,.false.,"cdrh",itau_w,cdragh)
     347
    483348      ENDIF !lev_histday.GE.5
    484349c-------------------------------------------------------
    485 c
     350
    486351      if (ok_sync) then
    487352        call histsync(nid_day)
  • trunk/LMDZ.TITAN/libf/phytitan/write_histins.h

    r808 r1056  
    33!
    44      IF (ok_instan) THEN
    5 c
    6       ndex2d = 0
    7       ndex3d = 0
    8       zx_tmp_2d = 0.
    9       zx_tmp_3d = 0.
    10       zx_tmp_fi2d=0.
    11       zx_tmp_fi3d=0.
    12 c
    13           zsto = dtime * FLOAT(ecrit_ins)
    14           zout = dtime * FLOAT(ecrit_ins)
     5
     6         zsto = dtime * REAL(ecrit_ins)
     7         zout = dtime * REAL(ecrit_ins)
    158         itau_w = itau_phy + itap
    169
    17 c
    1810c-------------------------------------------------------
    1911      IF(lev_histday.GE.1) THEN
    20 c
     12
    2113ccccccccccccc 2D fields, invariables
    22 c
    23       CALL gr_fi_ecrit(1,klon,iim,jjmp1,pphis,zx_tmp_2d)
    24       CALL histwrite(nid_ins,"phis",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    25 C
    26       CALL gr_fi_ecrit(1,klon,iim,jjmp1,airephy,zx_tmp_2d)
    27       CALL histwrite(nid_ins,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    28 c
     14
     15      call histwrite_phy(nid_ins,.false.,"phis",itau_w,pphis)
     16      call histwrite_phy(nid_ins,.false.,"aire",itau_w,airephy)
     17
    2918ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
    30       do j=1,jjmp1
    31        do i=1,iim
    32         zx_tmp_2d(i,j)=zls*180./RPI      ! zls est en radians !!
    33        enddo
     19      do i=1,klon
     20        tmpout(i,1) = zls*180./RPI
    3421      enddo
    35       CALL histwrite(nid_ins,"ls",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    36 c
     22      call histwrite_phy(nid_ins,.false.,"ls",itau_w,tmpout(:,1))
     23
    3724ccccccccccccc 2D fields, variables
    38 c
    39       CALL gr_fi_ecrit(1, klon,iim,jjmp1, ftsol,zx_tmp_2d)
    40       CALL histwrite(nid_ins,"tsol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    41 c
    42       DO i = 1, klon
    43          zx_tmp_fi2d(i) = paprs(i,1)
    44       ENDDO
    45       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    46       CALL histwrite(nid_ins,"psol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    47 c
    48 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ue,zx_tmp_2d)
    49 c     CALL histwrite(nid_ins,"ue",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    50 c
    51 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ve,zx_tmp_2d)
    52 c     CALL histwrite(nid_ins,"ve",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    53 c
     25
     26      call histwrite_phy(nid_ins,.false.,"tsol",itau_w,ftsol)
     27      call histwrite_phy(nid_ins,.false.,"psol",itau_w,paprs(:,1))
     28
     29c     call histwrite_phy(nid_ins,.false.,"ue",itau_w,ue)
     30c     call histwrite_phy(nid_ins,.false.,"ve",itau_w,ve)
     31
    5432      ENDIF !lev_histday.GE.1
    55 c
     33
    5634c-------------------------------------------------------
    5735      IF(lev_histday.GE.2) THEN
    58 c
     36
    5937ccccccccccccc 3D fields, basics
    60 c
    61       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, t_seri, zx_tmp_3d)
    62       CALL histwrite(nid_ins,"temp",itau_w,zx_tmp_3d,
    63      .                                   iim*jjmp1*klev,ndex3d)
    64 c
    65       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, pplay, zx_tmp_3d)
    66       CALL histwrite(nid_ins,"pres",itau_w,zx_tmp_3d,
    67      .                                   iim*jjmp1*klev,ndex3d)
    68 c
    69       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, zphi, zx_tmp_3d)
    70       CALL histwrite(nid_ins,"geop",itau_w,zx_tmp_3d,
    71      .                                   iim*jjmp1*klev,ndex3d)
    72 c
    73       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, u_seri, zx_tmp_3d)
    74       CALL histwrite(nid_ins,"vitu",itau_w,zx_tmp_3d,
    75      .                                   iim*jjmp1*klev,ndex3d)
    76 c
    77       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, v_seri, zx_tmp_3d)
    78       CALL histwrite(nid_ins,"vitv",itau_w,zx_tmp_3d,
    79      .                                   iim*jjmp1*klev,ndex3d)
    80 c
    81       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, omega, zx_tmp_3d)
    82       CALL histwrite(nid_ins,"vitw",itau_w,zx_tmp_3d,
    83      .                                   iim*jjmp1*klev,ndex3d)
    84 c
    85       CALL gr_fi_ecrit(1, klon,iim,jjmp1, topsw,zx_tmp_2d)
    86       CALL histwrite(nid_ins,"tops",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    87 c
    88 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_vdf, zx_tmp_3d)
    89 c     CALL histwrite(nid_ins,"duvdf",itau_w,zx_tmp_3d,
    90 c    .                                   iim*jjmp1*klev,ndex3d)
    91 c
    92 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_dyn, zx_tmp_3d)
    93 c     CALL histwrite(nid_ins,"dudyn",itau_w,zx_tmp_3d,
    94 c    .                                   iim*jjmp1*klev,ndex3d)
    95 c
     38
     39      call histwrite_phy(nid_ins,.false.,"temp",itau_w,t_seri)
     40      call histwrite_phy(nid_ins,.false.,"pres",itau_w,pplay)
     41      call histwrite_phy(nid_ins,.false.,"geop",itau_w,zphi)
     42      call histwrite_phy(nid_ins,.false.,"vitu",itau_w,u_seri)
     43      call histwrite_phy(nid_ins,.false.,"vitv",itau_w,v_seri)
     44      call histwrite_phy(nid_ins,.false.,"vitw",itau_w,omega)
     45      call histwrite_phy(nid_ins,.false.,"tops",itau_w,topsw)
     46c      call histwrite_phy(nid_ins,.false.,"duvdf",itau_w,d_u_vdf)
     47c      call histwrite_phy(nid_ins,.false.,"dudyn",itau_w,d_u_dyn)
     48
    9649      ENDIF !lev_histday.GE.2
    97 c
     50
    9851c-------------------------------------------------------
    9952      IF(lev_histday.GE.3) THEN
    100 c
     53
    10154cccccccccccccccccc  Tracers
    102 c
     55
    10356         if (iflag_trac.eq.1) THEN
    10457          if (microfi.eq.1) then
    10558           DO iq=1,nmicro
    106        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, qaer(1,1,iq), zx_tmp_3d)
    107        CALL histwrite(nid_ins,tname(iq),itau_w,zx_tmp_3d,
    108      .                                   iim*jjmp1*klev,ndex3d)
     59       call histwrite_phy(nid_ins,.false.,tname(iq),
     60     .                    itau_w,qaer(1:klon,1:klev,iq))
    10961           ENDDO
    11062          endif
    11163          if (nmicro.lt.nqmax) then
    11264           DO iq=nmicro+1,nqmax
    113        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,tr_seri(1,1,iq),zx_tmp_3d)
    114        CALL histwrite(nid_ins,tname(iq),itau_w,zx_tmp_3d,
    115      .                                   iim*jjmp1*klev,ndex3d)
     65       call histwrite_phy(nid_ins,.false.,tname(iq),
     66     .                    itau_w,tr_seri(1:klon,1:klev,iq))
    11667           ENDDO
    11768          endif
    11869         endif
    119 c
     70
    12071cccccccccccccccccc  Radiative transfer
    121 c
     72
    12273c 2D
    123 c
    124       CALL gr_fi_ecrit(1, klon,iim,jjmp1, toplw,zx_tmp_2d)
    125       CALL histwrite(nid_ins,"topl",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    126 c
    127       CALL gr_fi_ecrit(1, klon,iim,jjmp1, solsw,zx_tmp_2d)
    128       CALL histwrite(nid_ins,"sols",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    129 c
    130       CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d)
    131       CALL histwrite(nid_ins,"soll",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    132 c
     74
     75      call histwrite_phy(nid_ins,.false.,"topl",itau_w,toplw)
     76      call histwrite_phy(nid_ins,.false.,"sols",itau_w,solsw)
     77      call histwrite_phy(nid_ins,.false.,"soll",itau_w,sollw)
     78
    13379c 3D
    134 c
    135       zx_tmp_fi3d(1:klon,1:klev)=swnet(1:klon,1:klev)
    136       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    137       CALL histwrite(nid_ins,"SWnet",itau_w,zx_tmp_3d,
    138      .                                   iim*jjmp1*klev,ndex3d)
    139 c
    140       zx_tmp_fi3d(1:klon,1:klev)=lwnet(1:klon,1:klev)
    141       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    142       CALL histwrite(nid_ins,"LWnet",itau_w,zx_tmp_3d,
    143      .                                   iim*jjmp1*klev,ndex3d)
    144 c
     80
     81      call histwrite_phy(nid_ins,.false.,"SWnet",
     82     .          itau_w,swnet(1:klon,1:klev))
     83      call histwrite_phy(nid_ins,.false.,"LWnet",
     84     .          itau_w,lwnet(1:klon,1:klev))
     85
    14586c --------------
    14687c ----- OPACITE BRUME
     
    15192         enddo
    15293         enddo
    153          write(str1,'(i2.2)') k
    154       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    155       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    156       CALL histwrite(nid_ins,"thv"//str1,itau_w,zx_tmp_3d,
    157      .                                   iim*jjmp1*klev,ndex3d)
     94         write(str2,'(i2.2)') k
     95       call histwrite_phy(nid_ins,.false.,"thv"//str2,itau_w,t_tauhvd)
    15896       enddo      ! fin boucle NSPECV
    15997
     
    164102         enddo
    165103         enddo
    166          write(str1,'(i2.2)') k
    167       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    168       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    169       CALL histwrite(nid_ins,"thi"//str1,itau_w,zx_tmp_3d,
    170      .                                   iim*jjmp1*klev,ndex3d)
     104         write(str2,'(i2.2)') k
     105       call histwrite_phy(nid_ins,.false.,"thi"//str2,itau_w,t_tauhvd)
    171106       enddo      ! fin boucle NSPECI
    172107c --------------
     
    178113     s     t_khvd(i,l)=TAUHVD(i,klev-l+1,k)
    179114     s                -TAUHVD(i,klev-l+1-1,k)
    180 
    181115          if(l.eq.klev)
    182116     s     t_khvd(i,l)=TAUHVD(i,klev-l+1,k)
     
    185119         enddo
    186120         enddo
    187          write(str1,'(i2.2)') k
    188       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    189       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    190       CALL histwrite(nid_ins,"khv"//str1,itau_w,zx_tmp_3d,
    191      .                                   iim*jjmp1*klev,ndex3d)
     121         write(str2,'(i2.2)') k
     122       call histwrite_phy(nid_ins,.false.,"khv"//str2,itau_w,t_khvd)
    192123       enddo      ! fin boucle NSPECV
    193124
     
    198129     s     t_khvd(i,l)=TAUHID(i,klev-l+1,k)
    199130     s                -TAUHID(i,klev-l+1-1,k)
    200 
    201131          if(l.eq.klev)
    202132     s     t_khvd(i,l)=TAUHID(i,klev-l+1,k)
     
    205135         enddo
    206136         enddo
    207          write(str1,'(i2.2)') k
    208       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    209       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    210       CALL histwrite(nid_ins,"khi"//str1,itau_w,zx_tmp_3d,
    211      .                                   iim*jjmp1*klev,ndex3d)
     137         write(str2,'(i2.2)') k
     138       call histwrite_phy(nid_ins,.false.,"khi"//str2,itau_w,t_khvd)
    212139       enddo      ! fin boucle NSPECI
    213140c --------------
     
    219146         enddo
    220147         enddo
    221          write(str1,'(i2.2)') k
    222       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    223       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    224       CALL histwrite(nid_ins,"tgv"//str1,itau_w,zx_tmp_3d,
    225      .                                   iim*jjmp1*klev,ndex3d)
     148         write(str2,'(i2.2)') k
     149       call histwrite_phy(nid_ins,.false.,"tgv"//str2,itau_w,t_tauhvd)
    226150       enddo      ! fin boucle NSPECV
    227151
     
    232156         enddo
    233157         enddo
    234          write(str1,'(i2.2)') k
    235       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    236       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    237       CALL histwrite(nid_ins,"tgi"//str1,itau_w,zx_tmp_3d,
    238      .                                   iim*jjmp1*klev,ndex3d)
     158         write(str2,'(i2.2)') k
     159       call histwrite_phy(nid_ins,.false.,"tgi"//str2,itau_w,t_tauhvd)
    239160       enddo      ! fin boucle NSPECI
    240161c --------------
     
    246167     s     t_khvd(i,l)=TAUGVD(i,klev-l+1,k)
    247168     s                -TAUGVD(i,klev-l+1-1,k)
    248 
    249169          if(l.eq.klev)
    250170     s     t_khvd(i,l)=TAUGVD(i,klev-l+1,k)
     
    253173         enddo
    254174         enddo
    255          write(str1,'(i2.2)') k
    256       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    257       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    258       CALL histwrite(nid_ins,"kgv"//str1,itau_w,zx_tmp_3d,
    259      .                                   iim*jjmp1*klev,ndex3d)
     175         write(str2,'(i2.2)') k
     176       call histwrite_phy(nid_ins,.false.,"kgv"//str2,itau_w,t_khvd)
    260177       enddo      ! fin boucle NSPECV
    261178
     
    273190         enddo
    274191         enddo
    275          write(str1,'(i2.2)') k
    276       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    277       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    278       CALL histwrite(nid_ins,"kgi"//str1,itau_w,zx_tmp_3d,
    279      .                                   iim*jjmp1*klev,ndex3d)
     192         write(str2,'(i2.2)') k
     193       call histwrite_phy(nid_ins,.false.,"kgi"//str2,itau_w,t_khvd)
    280194       enddo      ! fin boucle NSPECI
    281195
    282196      ENDIF !lev_histday.GE.3
    283 c
     197
    284198c-------------------------------------------------------
    285199      IF(lev_histday.GE.4) THEN
    286 c
    287       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t_dyn, zx_tmp_3d)
    288       CALL histwrite(nid_ins,"dtdyn",itau_w,zx_tmp_3d,
    289      .                                   iim*jjmp1*klev,ndex3d)
    290 c
    291       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t, zx_tmp_3d)
    292       CALL histwrite(nid_ins,"dtphy",itau_w,zx_tmp_3d,
    293      .                                   iim*jjmp1*klev,ndex3d)
    294 c K/s
    295       zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)
    296       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    297       CALL histwrite(nid_ins,"dtvdf",itau_w,zx_tmp_3d,
    298      .                                   iim*jjmp1*klev,ndex3d)
    299 c
    300 c K/s
    301       zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)
    302       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    303       CALL histwrite(nid_ins,"dtajs",itau_w,zx_tmp_3d,
    304      .                                   iim*jjmp1*klev,ndex3d)
    305 c
    306 c K/s
    307       zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)
    308       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    309       CALL histwrite(nid_ins,"dtswr",itau_w,zx_tmp_3d,
    310      .                                   iim*jjmp1*klev,ndex3d)
    311 c
     200
     201      call histwrite_phy(nid_ins,.false.,"dtdyn",itau_w,d_t_dyn)
     202      call histwrite_phy(nid_ins,.false.,"dtphy",itau_w,d_t)
     203c K/s
     204      call histwrite_phy(nid_ins,.false.,"dtvdf",itau_w,d_t_vdf)
     205c K/s
     206      call histwrite_phy(nid_ins,.false.,"dtajs",itau_w,d_t_ajs)
     207c K/s
     208      call histwrite_phy(nid_ins,.false.,"dtswr",itau_w,heat)
     209c K/s
     210      call histwrite_phy(nid_ins,.false.,"dtlwr",itau_w,-1.*cool)
    312211c K/s     
    313       zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)
    314       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    315       CALL histwrite(nid_ins,"dtlwr",itau_w,zx_tmp_3d,
    316      .                                   iim*jjmp1*klev,ndex3d)
    317 c K/s     
    318 c     zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)
    319 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    320 c     CALL histwrite(nid_ins,"dtec",itau_w,zx_tmp_3d,
    321 c    .                                   iim*jjmp1*klev,ndex3d)
    322 c
    323 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_v_vdf, zx_tmp_3d)
    324 c     CALL histwrite(nid_ins,"dvvdf",itau_w,zx_tmp_3d,
    325 c    .                                   iim*jjmp1*klev,ndex3d)
    326 c
     212c      call histwrite_phy(nid_ins,.false.,"dtec",itau_w,d_t_ec)
     213c      call histwrite_phy(nid_ins,.false.,"dvvdf",itau_w,d_v_vdf)
     214
    327215      ENDIF !lev_histday.GE.4
    328 c
     216
    329217c-------------------------------------------------------
    330218      IF(lev_histday.GE.5) THEN
    331 c
    332 c
    333 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxu , zx_tmp_2d)
    334 c      CALL histwrite(nid_ins,"taux_",itau_w,
    335 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    336 c     
    337 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxv , zx_tmp_2d)
    338 c      CALL histwrite(nid_ins,"tauy_",itau_w,
    339 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    340 c
    341 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragm,zx_tmp_2d)
    342 c     CALL histwrite(nid_ins,"cdrm",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    343 c
    344 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragh,zx_tmp_2d)
    345 c     CALL histwrite(nid_ins,"cdrh",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    346 c
     219
     220c      call histwrite_phy(nid_ins,.false.,"taux",itau_w,fluxu)
     221c      call histwrite_phy(nid_ins,.false.,"tauy",itau_w,fluxv)
     222c      call histwrite_phy(nid_ins,.false.,"cdrm",itau_w,cdragm)
     223c      call histwrite_phy(nid_ins,.false.,"cdrh",itau_w,cdragh)
     224
    347225      ENDIF !lev_histday.GE.5
    348226c-------------------------------------------------------
    349 c
     227
    350228      if (ok_sync) then
    351229        call histsync(nid_ins)
  • trunk/LMDZ.TITAN/libf/phytitan/write_histmth.h

    r808 r1056  
    11      IF (ok_mensuel) THEN
    2 c
    3       ndex2d = 0
    4       ndex3d = 0
    5       zx_tmp_2d = 0.
    6       zx_tmp_3d = 0.
    7       zx_tmp_fi2d=0.
    8       zx_tmp_fi3d=0.
    9 c
     2
    103         zsto = dtime
    11          zout = dtime * FLOAT(ecrit_mth)
     4         zout = dtime * REAL(ecrit_mth)
    125         itau_w = itau_phy + itap
    13 c
     6
    147c-------------------------------------------------------
    158      IF(lev_histmth.GE.1) THEN
    16 c
     9
    1710ccccccccccccc 2D fields, invariables
    18 c
    19       CALL gr_fi_ecrit(1,klon,iim,jjmp1,pphis,zx_tmp_2d)
    20       CALL histwrite(nid_mth,"phis",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    21 C
    22       CALL gr_fi_ecrit(1,klon,iim,jjmp1,airephy,zx_tmp_2d)
    23       CALL histwrite(nid_mth,"aire",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    24 c
     11
     12      call histwrite_phy(nid_mth,.false.,"phis",itau_w,pphis)
     13      call histwrite_phy(nid_mth,.false.,"aire",itau_w,airephy)
     14
    2515ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
    26       do j=1,jjmp1
    27        do i=1,iim
    28         zx_tmp_2d(i,j)=zls*180./RPI      ! zls est en radians !!
    29        enddo
    30       enddo
    31 c Correction passage de 360 à 0... Sinon probleme avec moyenne
     16c Correction passage de 360 a 0... Sinon probleme avec moyenne
    3217      if (zls.lt.zlsm1) then
    33         zx_tmp_2d = zx_tmp_2d+360.
     18        do i=1,klon
     19          tmpout(i,1) = zls*180./RPI+360.
     20        enddo
    3421        zlsm1 = 2.*RPI
    3522      else
     23        do i=1,klon
     24          tmpout(i,1) = zls*180./RPI
     25        enddo
    3626        zlsm1 = zls
    3727      endif
    38       CALL histwrite(nid_mth,"ls",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    39 c
     28      call histwrite_phy(nid_mth,.false.,"ls",itau_w,tmpout(:,1))
     29
    4030ccccccccccccc 2D fields, variables
    41 c
    42       CALL gr_fi_ecrit(1, klon,iim,jjmp1, ftsol,zx_tmp_2d)
    43       CALL histwrite(nid_mth,"tsol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    44 c
    45       DO i = 1, klon
    46          zx_tmp_fi2d(i) = paprs(i,1)
    47       ENDDO
    48       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    49       CALL histwrite(nid_mth,"psol",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    50 c
    51 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ue,zx_tmp_2d)
    52 c     CALL histwrite(nid_mth,"ue",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    53 c
    54 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, ve,zx_tmp_2d)
    55 c     CALL histwrite(nid_mth,"ve",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    56 c
    57 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragh,zx_tmp_2d)
    58 c     CALL histwrite(nid_mth,"cdragh",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    59 c
    60 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragm,zx_tmp_2d)
    61 c     CALL histwrite(nid_mth,"cdragm",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    62 c
     31
     32      call histwrite_phy(nid_mth,.false.,"tsol",itau_w,ftsol)
     33      call histwrite_phy(nid_mth,.false.,"psol",itau_w,paprs(:,1))
     34
     35c     call histwrite_phy(nid_mth,.false.,"ue",itau_w,ue)
     36c     call histwrite_phy(nid_mth,.false.,"ve",itau_w,ve)
     37
    6338      ENDIF !lev_histmth.GE.1
    64 c
     39
    6540c-------------------------------------------------------
    6641      IF(lev_histmth.GE.2) THEN
    67 c
     42
    6843ccccccccccccc 3D fields, basics
    69 c
    70       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, t_seri, zx_tmp_3d)
    71       CALL histwrite(nid_mth,"temp",itau_w,zx_tmp_3d,
    72      .                                   iim*jjmp1*klev,ndex3d)
    73 c
    74       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, pplay, zx_tmp_3d)
    75       CALL histwrite(nid_mth,"pres",itau_w,zx_tmp_3d,
    76      .                                   iim*jjmp1*klev,ndex3d)
    77 c
    78       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, zphi, zx_tmp_3d)
    79       CALL histwrite(nid_mth,"geop",itau_w,zx_tmp_3d,
    80      .                                   iim*jjmp1*klev,ndex3d)
    81 c
    82       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, u_seri, zx_tmp_3d)
    83       CALL histwrite(nid_mth,"vitu",itau_w,zx_tmp_3d,
    84      .                                   iim*jjmp1*klev,ndex3d)
    85 c
    86       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, v_seri, zx_tmp_3d)
    87       CALL histwrite(nid_mth,"vitv",itau_w,zx_tmp_3d,
    88      .                                   iim*jjmp1*klev,ndex3d)
    89 c
    90       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, omega, zx_tmp_3d)
    91       CALL histwrite(nid_mth,"vitw",itau_w,zx_tmp_3d,
    92      .                                   iim*jjmp1*klev,ndex3d)
    93 c
    94 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1, ycoefh, zx_tmp_3d)
    95 c     CALL histwrite(nid_mth,"Kz",itau_w,zx_tmp_3d,
    96 c    .                                   iim*jjmp1*klev,ndex3d)
    97 c
    98       CALL gr_fi_ecrit(1, klon,iim,jjmp1, topsw,zx_tmp_2d)
    99       CALL histwrite(nid_mth,"tops",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    100 c
     44
     45      call histwrite_phy(nid_mth,.false.,"temp",itau_w,t_seri)
     46      call histwrite_phy(nid_mth,.false.,"pres",itau_w,pplay)
     47      call histwrite_phy(nid_mth,.false.,"geop",itau_w,zphi)
     48      call histwrite_phy(nid_mth,.false.,"vitu",itau_w,u_seri)
     49      call histwrite_phy(nid_mth,.false.,"vitv",itau_w,v_seri)
     50      call histwrite_phy(nid_mth,.false.,"vitw",itau_w,omega)
     51c      call histwrite_phy(nid_mth,.false.,"Kz",itau_w,ycoefh)
     52      call histwrite_phy(nid_mth,.false.,"tops",itau_w,topsw)
     53      call histwrite_phy(nid_mth,.false.,"duvdf",itau_w,d_u_vdf)
     54      call histwrite_phy(nid_mth,.false.,"dudyn",itau_w,d_u_dyn)
     55
    10156cccccccccccccccccc  Tracers
    102 c
     57
    10358         if (iflag_trac.eq.1) THEN
    10459          if (microfi.ge.1) then
    10560c          DO iq=1,nmicro
    106 c      CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    107 c    .                  qaer(1:klon,1:klev,iq), zx_tmp_3d)
    108 c      CALL histwrite(nid_mth,tname(iq),itau_w,zx_tmp_3d,
    109 c    .                                   iim*jjmp1*klev,ndex3d)
     61c      call histwrite_phy(nid_mth,.false.,tname(iq),
     62c    .                    itau_w,qaer(1:klon,1:klev,iq))
    11063c          ENDDO
    11164c    -------   NB AER TOT
    11265               do i=1,klon
    11366                 do j=1,klev
    114                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,1:nrad))
    115                  enddo
    116                enddo
    117        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    118        CALL histwrite(nid_mth,"qaer",itau_w,zx_tmp_3d,
    119      .                                   iim*jjmp1*klev,ndex3d)
     67                   tmpout(i,j)= SUM(qaer(i,j,1:nrad))
     68                 enddo
     69               enddo
     70       call histwrite_phy(nid_mth,.false.,"qaer",itau_w,tmpout)
    12071
    12172             if (clouds.eq.1) then
     
    12374               do i=1,klon
    12475                 do j=1,klev
    125                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,nrad+1:2*nrad))
    126                  enddo
    127                enddo
    128        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    129        CALL histwrite(nid_mth,"qnoy",itau_w,zx_tmp_3d,
    130      .                                   iim*jjmp1*klev,ndex3d)
     76                   tmpout(i,j)= SUM(qaer(i,j,nrad+1:2*nrad))
     77                 enddo
     78               enddo
     79       call histwrite_phy(nid_mth,.false.,"qnoy",itau_w,tmpout)
    13180c    -------   V GLA1 TOT
    13281               do i=1,klon
    13382                 do j=1,klev
    134                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,2*nrad+1:3*nrad))
    135                  enddo
    136                enddo
    137        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    138        CALL histwrite(nid_mth,"qgl1",itau_w,zx_tmp_3d,
    139      .                                   iim*jjmp1*klev,ndex3d)
     83                   tmpout(i,j)= SUM(qaer(i,j,2*nrad+1:3*nrad))
     84                 enddo
     85               enddo
     86       call histwrite_phy(nid_mth,.false.,"qgl1",itau_w,tmpout)
    14087c    -------   V GLA2 TOT
    14188               do i=1,klon
    14289                 do j=1,klev
    143                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,3*nrad+1:4*nrad))
    144                  enddo
    145                enddo
    146        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    147        CALL histwrite(nid_mth,"qgl2",itau_w,zx_tmp_3d,
    148      .                                   iim*jjmp1*klev,ndex3d)
     90                   tmpout(i,j)= SUM(qaer(i,j,3*nrad+1:4*nrad))
     91                 enddo
     92               enddo
     93       call histwrite_phy(nid_mth,.false.,"qgl2",itau_w,tmpout)
    14994c    -------   V GLA3 TOT
    15095               do i=1,klon
    15196                 do j=1,klev
    152                    zx_tmp_fi3d(i,j)= SUM(qaer(i,j,4*nrad+1:5*nrad))
    153                  enddo
    154                enddo
    155        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    156        CALL histwrite(nid_mth,"qgl3",itau_w,zx_tmp_3d,
    157      .                                   iim*jjmp1*klev,ndex3d)
     97                   tmpout(i,j)= SUM(qaer(i,j,4*nrad+1:5*nrad))
     98                 enddo
     99               enddo
     100       call histwrite_phy(nid_mth,.false.,"qgl3",itau_w,tmpout)
    158101c --------------
    159102c ----- SATURATION ESP NUAGES
    160        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satch4,zx_tmp_3d)
    161        CALL histwrite(nid_mth,"ch4sat", itau_w, zx_tmp_3d,
    162      .                                   iim*jjmp1*klev,ndex3d)
    163 
    164        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satc2h6,zx_tmp_3d)
    165        CALL histwrite(nid_mth,"c2h6sat", itau_w, zx_tmp_3d,
    166      .                                   iim*jjmp1*klev,ndex3d)
    167 
    168        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, satc2h2,zx_tmp_3d)
    169        CALL histwrite(nid_mth,"c2h2sat", itau_w, zx_tmp_3d,
    170      .                                   iim*jjmp1*klev,ndex3d)
     103       call histwrite_phy(nid_mth,.false.,"ch4sat",itau_w,satch4)
     104       call histwrite_phy(nid_mth,.false.,"c2h6sat",itau_w,satc2h6)
     105       call histwrite_phy(nid_mth,.false.,"c2h2sat",itau_w,satc2h2)
    171106c --------------
    172107c ----- RESERVOIR DE SURFACE
    173        CALL gr_fi_ecrit(1, klon,iim,jjmp1,reservoir,zx_tmp_2d)
    174        CALL histwrite(nid_mth,"reserv",itau_w,zx_tmp_2d,
    175      .                        iim*jjmp1,ndex2d)
     108       call histwrite_phy(nid_mth,.false.,"reserv",itau_w,reservoir)
    176109c --------------
    177110c ----- ECHANGE GAZ SURF/ATM (evaporation)
    178        CALL gr_fi_ecrit(1, klon,iim,jjmp1,evapch4,zx_tmp_2d)
    179        CALL histwrite(nid_mth,"evapch4",itau_w,zx_tmp_2d,
    180      .                        iim*jjmp1,ndex2d)
     111       call histwrite_phy(nid_mth,.false.,"evapch4",itau_w,evapch4)
    181112c --------------
    182113c ----- PRECIPITATIONS
    183114c       -----  CH4
    184        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,1),zx_tmp_2d)
    185        CALL histwrite(nid_mth,"prech4",itau_w,zx_tmp_2d,
    186      .                        iim*jjmp1,ndex2d)
     115       call histwrite_phy(nid_mth,.false.,"prech4",
     116     .            itau_w,precip(1:klon,1))
    187117c       -----  C2H6
    188        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,2),zx_tmp_2d)
    189        CALL histwrite(nid_mth,"prec2h6",itau_w,zx_tmp_2d,
    190      .                        iim*jjmp1,ndex2d)
     118       call histwrite_phy(nid_mth,.false.,"prec2h6",
     119     .            itau_w,precip(1:klon,2))
    191120c       -----  C2H2
    192        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,3),zx_tmp_2d)
    193        CALL histwrite(nid_mth,"prec2h2",itau_w,zx_tmp_2d,
    194      .                        iim*jjmp1,ndex2d)
    195 c
     121       call histwrite_phy(nid_mth,.false.,"prec2h2",
     122     .            itau_w,precip(1:klon,3))
    196123c       -----  NOY
    197        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,4),zx_tmp_2d)
    198        CALL histwrite(nid_mth,"prenoy",itau_w,zx_tmp_2d,
    199      .                        iim*jjmp1,ndex2d)
     124       call histwrite_phy(nid_mth,.false.,"prenoy",
     125     .            itau_w,precip(1:klon,4))
    200126c       -----  AER
    201        CALL gr_fi_ecrit(1, klon,iim,jjmp1,precip(1:klon,5),zx_tmp_2d)
    202        CALL histwrite(nid_mth,"preaer",itau_w,zx_tmp_2d,
    203      .                        iim*jjmp1,ndex2d)
     127       call histwrite_phy(nid_mth,.false.,"preaer",
     128     .            itau_w,precip(1:klon,5))
    204129c --------------
    205130c ----- FLUX GLACE
    206131c       -----  CH4
    207        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    208      .                  flxesp_i(1:klon,1:klev,1),zx_tmp_3d)
    209        CALL histwrite(nid_mth,"flxgl1", itau_w, zx_tmp_3d,
    210      .                                   iim*jjmp1*klev,ndex3d)
     132       call histwrite_phy(nid_mth,.false.,"flxgl1",
     133     .            itau_w,flxesp_i(1:klon,1:klev,1))
    211134c       -----  C2H6
    212        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    213      .                  flxesp_i(1:klon,1:klev,2),zx_tmp_3d)
    214        CALL histwrite(nid_mth,"flxgl2", itau_w, zx_tmp_3d,
    215      .                                   iim*jjmp1*klev,ndex3d)
     135       call histwrite_phy(nid_mth,.false.,"flxgl2",
     136     .            itau_w,flxesp_i(1:klon,1:klev,2))
    216137c       -----  C2H2
    217        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    218      .                  flxesp_i(1:klon,1:klev,3),zx_tmp_3d)
    219        CALL histwrite(nid_mth,"flxgl3", itau_w, zx_tmp_3d,
    220      .                                   iim*jjmp1*klev,ndex3d)
     138       call histwrite_phy(nid_mth,.false.,"flxgl3",
     139     .            itau_w,flxesp_i(1:klon,1:klev,3))
    221140c --------------
    222141c ----- Source/puits GLACE
    223142c       -----  CH4
    224        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    225      .                          solesp(1:klon,1:klev,1),zx_tmp_3d)
    226        CALL histwrite(nid_mth,"solch4", itau_w, zx_tmp_3d,
    227      .                                   iim*jjmp1*klev,ndex3d)
     143       call histwrite_phy(nid_mth,.false.,"solch4",
     144     .            itau_w,solesp(1:klon,1:klev,1))
    228145c       -----  C2H6
    229        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    230      .                          solesp(1:klon,1:klev,2),zx_tmp_3d)
    231        CALL histwrite(nid_mth,"solc2h6", itau_w, zx_tmp_3d,
    232      .                                   iim*jjmp1*klev,ndex3d)
     146       call histwrite_phy(nid_mth,.false.,"solc2h6",
     147     .            itau_w,solesp(1:klon,1:klev,2))
    233148c       -----  C2H2
    234        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,
    235      .                          solesp(1:klon,1:klev,3),zx_tmp_3d)
    236        CALL histwrite(nid_mth,"solc2h2", itau_w, zx_tmp_3d,
    237      .                                   iim*jjmp1*klev,ndex3d)
    238 c
     149       call histwrite_phy(nid_mth,.false.,"solc2h2",
     150     .            itau_w,solesp(1:klon,1:klev,3))
    239151c --------------
    240152c ----- RAYON MOYEN GOUTTE
    241        CALL gr_fi_ecrit(klev,klon,iim,jjmp1, rmcloud,zx_tmp_3d)
    242        CALL histwrite(nid_mth,"rcldbar", itau_w, zx_tmp_3d,
    243      .                                   iim*jjmp1*klev,ndex3d)
    244 c
     153       call histwrite_phy(nid_mth,.false.,"rcldbar",itau_w,rmcloud)
     154
    245155             endif
    246156          endif
    247 c
     157
    248158c --------------
    249159c ----- TRACEURS CHIMIQUES
    250160          if (nmicro.lt.nqmax) then
    251161           DO iq=nmicro+1,nqmax
    252        CALL gr_fi_ecrit(klev,klon,iim,jjmp1,tr_seri(1,1,iq),zx_tmp_3d)
    253        CALL histwrite(nid_mth,tname(iq),itau_w,zx_tmp_3d,
    254      .                                   iim*jjmp1*klev,ndex3d)
     162       call histwrite_phy(nid_mth,.false.,tname(iq),
     163     .                    itau_w,tr_seri(1:klon,1:klev,iq))
    255164           ENDDO
    256165c Condensation:
    257166c          DO iq=nmicro+1,nqmax
    258 c      CALL gr_fi_ecrit(klev,klon,iim,jjmp1,d_tr_mph(1,1,iq),zx_tmp_3d)
    259 c      CALL histwrite(nid_mth,"c_"//tname(iq),itau_w,zx_tmp_3d,
    260 c    .                                   iim*jjmp1*klev,ndex3d)
     167c      call histwrite_phy(nid_mth,.false.,"c_"//tname(iq),
     168c    .                    itau_w,d_tr_mph(1:klon,1:klev,iq))
    261169c          ENDDO
    262170          endif
    263171         endif
    264 c
     172
    265173      ENDIF !lev_histmth.GE.2
    266 c
     174
    267175c-------------------------------------------------------
    268176      IF(lev_histmth.GE.3) THEN
    269 c
     177
    270178cccccccccccccccccc  Radiative transfer
    271 c
     179
    272180c 2D
    273 c
    274       CALL gr_fi_ecrit(1, klon,iim,jjmp1, toplw,zx_tmp_2d)
    275       CALL histwrite(nid_mth,"topl",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    276 c
    277       CALL gr_fi_ecrit(1, klon,iim,jjmp1, solsw,zx_tmp_2d)
    278       CALL histwrite(nid_mth,"sols",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    279 c
    280       CALL gr_fi_ecrit(1, klon,iim,jjmp1, sollw,zx_tmp_2d)
    281       CALL histwrite(nid_mth,"soll",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    282 c
     181
     182      call histwrite_phy(nid_mth,.false.,"topl",itau_w,toplw)
     183      call histwrite_phy(nid_mth,.false.,"sols",itau_w,solsw)
     184      call histwrite_phy(nid_mth,.false.,"soll",itau_w,sollw)
     185
    283186c 3D
    284 c
    285       zx_tmp_fi3d(1:klon,1:klev)=swnet(1:klon,1:klev)
    286       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    287       CALL histwrite(nid_mth,"SWnet",itau_w,zx_tmp_3d,
    288      .                                   iim*jjmp1*klev,ndex3d)
    289 c
    290       zx_tmp_fi3d(1:klon,1:klev)=lwnet(1:klon,1:klev)
    291       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    292       CALL histwrite(nid_mth,"LWnet",itau_w,zx_tmp_3d,
    293      .                                   iim*jjmp1*klev,ndex3d)
    294 c
     187
     188      call histwrite_phy(nid_mth,.false.,"SWnet",
     189     .          itau_w,swnet(1:klon,1:klev))
     190      call histwrite_phy(nid_mth,.false.,"LWnet",
     191     .          itau_w,lwnet(1:klon,1:klev))
     192
    295193c --------------
    296194c ----- OPACITE BRUME
     
    301199         enddo
    302200         enddo
    303          write(str1,'(i2.2)') k
    304       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    305       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    306       CALL histwrite(nid_mth,"thv"//str1,itau_w,zx_tmp_3d,
    307      .                                   iim*jjmp1*klev,ndex3d)
     201         write(str2,'(i2.2)') k
     202       call histwrite_phy(nid_mth,.false.,"thv"//str2,itau_w,t_tauhvd)
    308203       enddo      ! fin boucle NSPECV
    309204
     
    314209         enddo
    315210         enddo
    316          write(str1,'(i2.2)') k
    317       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    318       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    319       CALL histwrite(nid_mth,"thi"//str1,itau_w,zx_tmp_3d,
    320      .                                   iim*jjmp1*klev,ndex3d)
     211         write(str2,'(i2.2)') k
     212       call histwrite_phy(nid_mth,.false.,"thi"//str2,itau_w,t_tauhvd)
    321213       enddo      ! fin boucle NSPECI
    322 c
    323214c --------------
    324215c ----- EXTINCTION BRUME
     
    335226         enddo
    336227         enddo
    337          write(str1,'(i2.2)') k
    338       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    339       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    340       CALL histwrite(nid_mth,"khv"//str1,itau_w,zx_tmp_3d,
    341      .                                   iim*jjmp1*klev,ndex3d)
     228         write(str2,'(i2.2)') k
     229       call histwrite_phy(nid_mth,.false.,"khv"//str2,itau_w,t_khvd)
    342230       enddo      ! fin boucle NSPECV
    343231
     
    354242         enddo
    355243         enddo
    356          write(str1,'(i2.2)') k
    357       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    358       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    359       CALL histwrite(nid_mth,"khi"//str1,itau_w,zx_tmp_3d,
    360      .                                   iim*jjmp1*klev,ndex3d)
     244         write(str2,'(i2.2)') k
     245       call histwrite_phy(nid_mth,.false.,"khi"//str2,itau_w,t_khvd)
    361246       enddo      ! fin boucle NSPECI
    362 c
    363247c --------------
    364248c ----- OPACITE GAZ
     
    369253         enddo
    370254         enddo
    371          write(str1,'(i2.2)') k
    372       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    373       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    374       CALL histwrite(nid_mth,"tgv"//str1,itau_w,zx_tmp_3d,
    375      .                                   iim*jjmp1*klev,ndex3d)
     255         write(str2,'(i2.2)') k
     256       call histwrite_phy(nid_mth,.false.,"tgv"//str2,itau_w,t_tauhvd)
    376257       enddo      ! fin boucle NSPECV
    377258
     
    382263         enddo
    383264         enddo
    384          write(str1,'(i2.2)') k
    385       zx_tmp_fi3d(1:klon,1:klev)=t_tauhvd(1:klon,1:klev)
    386       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    387       CALL histwrite(nid_mth,"tgi"//str1,itau_w,zx_tmp_3d,
    388      .                                   iim*jjmp1*klev,ndex3d)
     265         write(str2,'(i2.2)') k
     266       call histwrite_phy(nid_mth,.false.,"tgi"//str2,itau_w,t_tauhvd)
    389267       enddo      ! fin boucle NSPECI
    390 c
    391268c --------------
    392269c ----- EXTINCTION GAZ
     
    403280         enddo
    404281         enddo
    405          write(str1,'(i2.2)') k
    406       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    407       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    408       CALL histwrite(nid_mth,"kgv"//str1,itau_w,zx_tmp_3d,
    409      .                                   iim*jjmp1*klev,ndex3d)
     282         write(str2,'(i2.2)') k
     283       call histwrite_phy(nid_mth,.false.,"kgv"//str2,itau_w,t_khvd)
    410284       enddo      ! fin boucle NSPECV
    411285
     
    423297         enddo
    424298         enddo
    425          write(str1,'(i2.2)') k
    426       zx_tmp_fi3d(1:klon,1:klev)=t_khvd(1:klon,1:klev)
    427       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    428       CALL histwrite(nid_mth,"kgi"//str1,itau_w,zx_tmp_3d,
    429      .                                   iim*jjmp1*klev,ndex3d)
     299         write(str2,'(i2.2)') k
     300       call histwrite_phy(nid_mth,.false.,"kgi"//str2,itau_w,t_khvd)
    430301       enddo      ! fin boucle NSPECI
    431302
    432303c --------------
     304         if (clouds.eq.1) then
     305c --------------
    433306c ----- OPACITE NUAGES (ATTENTION PROXY)
    434          if (clouds.eq.1) then
    435            zx_tmp_fi3d(1:klon,1:klev)=occcld(1:klon,1:klev)
    436            CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    437            CALL histwrite(nid_mth,"tcld",itau_w,zx_tmp_3d,
    438      .                                   iim*jjmp1*klev,ndex3d)
     307         call histwrite_phy(nid_mth,.false.,"tcld",itau_w,occcld)
    439308c --------------
    440309c ----- EXTINCTION NUAGES (ATTENTION PROXY)
     
    447316             enddo
    448317           enddo
    449            zx_tmp_fi3d(1:klon,1:klev)=t_kcld(1:klon,1:klev)
    450            CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    451            CALL histwrite(nid_mth,"kcld",itau_w,zx_tmp_3d,
    452      .                                   iim*jjmp1*klev,ndex3d)
    453 c
     318         call histwrite_phy(nid_mth,.false.,"kcld",itau_w,t_kcld)
    454319c --------------
    455320c ----- OCCURENCE NUAGES
    456321           do k=1,12
    457              write(str1,'(i2.2)') k
    458              zx_tmp_fi3d(1:klon,1:klev)=occcld_m(1:klon,1:klev,k)
    459              CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    460              CALL histwrite(nid_mth,"occcld"//str1,itau_w,zx_tmp_3d,
    461      .                                   iim*jjmp1*klev,ndex3d)
     322             write(str2,'(i2.2)') k
     323        call histwrite_phy(nid_mth,.false.,"occcld"//str2,
     324     .          itau_w,occcld_m(1:klon,1:klev,k))
    462325           enddo
    463 c
     326c --------------
    464327        endif 
    465 c
     328c --------------
     329
    466330      ENDIF !lev_histmth.GE.3
    467 c
     331
    468332c-------------------------------------------------------
    469333      IF(lev_histmth.GE.4) THEN
    470 c
    471       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t_dyn, zx_tmp_3d)
    472       CALL histwrite(nid_mth,"dtdyn",itau_w,zx_tmp_3d,
    473      .                                   iim*jjmp1*klev,ndex3d)
    474 c
    475       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_t, zx_tmp_3d)
    476       CALL histwrite(nid_mth,"dtphy",itau_w,zx_tmp_3d,
    477      .                                   iim*jjmp1*klev,ndex3d)
     334
     335      call histwrite_phy(nid_mth,.false.,"dtdyn",itau_w,d_t_dyn)
     336      call histwrite_phy(nid_mth,.false.,"dtphy",itau_w,d_t)
    478337c K/s
    479       zx_tmp_fi3d(1:klon,1:klev)=d_t_vdf(1:klon,1:klev)
    480       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    481       CALL histwrite(nid_mth,"dtvdf",itau_w,zx_tmp_3d,
    482      .                                   iim*jjmp1*klev,ndex3d)
    483 c
     338      call histwrite_phy(nid_mth,.false.,"dtvdf",itau_w,d_t_vdf)
    484339c K/s
    485       zx_tmp_fi3d(1:klon,1:klev)=d_t_ajs(1:klon,1:klev)
    486       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    487       CALL histwrite(nid_mth,"dtajs",itau_w,zx_tmp_3d,
    488      .                                   iim*jjmp1*klev,ndex3d)
    489 c
     340      call histwrite_phy(nid_mth,.false.,"dtajs",itau_w,d_t_ajs)
    490341c K/s
    491       zx_tmp_fi3d(1:klon,1:klev)=heat(1:klon,1:klev)
    492       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    493       CALL histwrite(nid_mth,"dtswr",itau_w,zx_tmp_3d,
    494      .                                   iim*jjmp1*klev,ndex3d)
    495 c
     342      call histwrite_phy(nid_mth,.false.,"dtswr",itau_w,heat)
     343c K/s
     344      call histwrite_phy(nid_mth,.false.,"dtlwr",itau_w,-1.*cool)
    496345c K/s     
    497       zx_tmp_fi3d(1:klon,1:klev)=-1.*cool(1:klon,1:klev)
    498       CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    499       CALL histwrite(nid_mth,"dtlwr",itau_w,zx_tmp_3d,
    500      .                                   iim*jjmp1*klev,ndex3d)
    501 c K/s     
    502 c     zx_tmp_fi3d(1:klon,1:klev)=d_t_ec(1:klon,1:klev)
    503 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1,zx_tmp_fi3d,zx_tmp_3d)
    504 c     CALL histwrite(nid_mth,"dtec",itau_w,zx_tmp_3d,
    505 c    .                                   iim*jjmp1*klev,ndex3d)
    506 c
    507       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_vdf, zx_tmp_3d)
    508       CALL histwrite(nid_mth,"duvdf",itau_w,zx_tmp_3d,
    509      .                                   iim*jjmp1*klev,ndex3d)
    510 c
    511       CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_u_dyn, zx_tmp_3d)
    512       CALL histwrite(nid_mth,"dudyn",itau_w,zx_tmp_3d,
    513      .                                   iim*jjmp1*klev,ndex3d)
    514 c
    515 c     CALL gr_fi_ecrit(klev,klon,iim,jjmp1, d_v_vdf, zx_tmp_3d)
    516 c     CALL histwrite(nid_mth,"dvvdf",itau_w,zx_tmp_3d,
    517 c    .                                   iim*jjmp1*klev,ndex3d)
    518 c
     346c      call histwrite_phy(nid_mth,.false.,"dtec",itau_w,d_t_ec)
     347c      call histwrite_phy(nid_mth,.false.,"dvvdf",itau_w,d_v_vdf)
     348
    519349      ENDIF !lev_histmth.GE.4
    520350c
    521351c-------------------------------------------------------
    522352      IF(lev_histmth.GE.5) THEN
    523 c
    524 c
    525 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxu , zx_tmp_2d)
    526 c      CALL histwrite(nid_mth,"taux_",itau_w,
    527 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    528 c     
    529 c      CALL gr_fi_ecrit(1, klon,iim,jjmp1, fluxv , zx_tmp_2d)
    530 c      CALL histwrite(nid_mth,"tauy_",itau_w,
    531 c    $      zx_tmp_2d,iim*jjmp1,ndex2d)
    532 c
    533 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragm,zx_tmp_2d)
    534 c     CALL histwrite(nid_mth,"cdrm",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    535 c
    536 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1, cdragh,zx_tmp_2d)
    537 c     CALL histwrite(nid_mth,"cdrh",itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    538 c
     353
     354c      call histwrite_phy(nid_mth,.false.,"taux",itau_w,fluxu)
     355c      call histwrite_phy(nid_mth,.false.,"tauy",itau_w,fluxv)
     356c      call histwrite_phy(nid_mth,.false.,"cdrm",itau_w,cdragm)
     357c      call histwrite_phy(nid_mth,.false.,"cdrh",itau_w,cdragh)
     358
    539359      ENDIF !lev_histmth.GE.5
    540360c-------------------------------------------------------
    541 c
     361
    542362      if (ok_sync) then
    543363        call histsync(nid_mth)
  • trunk/LMDZ.TITAN/libf/phytitan/writerestartphy.F

    r779 r1056  
    44     .           solsw, sollw,fder,
    55     .           radsol,
     6     .    zmea, zstd, zsig, zgam, zthe, zpic, zval,
    67     .           t_ancien)
    78
     
    2728      real fder(klon)
    2829      REAL radsol(klon)
     30      REAL zmea(klon), zstd(klon)
     31      REAL zsig(klon), zgam(klon), zthe(klon)
     32      REAL zpic(klon), zval(klon)
    2933      REAL t_ancien(klon,klev)
    3034c
     
    218222      ierr = NF_REDEF (nid)
    219223#ifdef NC_DOUBLE
     224      ierr = NF_DEF_VAR (nid, "ZMEA", NF_DOUBLE, 1, idim2,nvarid)
     225#else
     226      ierr = NF_DEF_VAR (nid, "ZMEA", NF_FLOAT, 1, idim2,nvarid)
     227#endif
     228      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     229     .                        "zmea Orographie sous-maille")
     230      ierr = NF_ENDDEF(nid)
     231#ifdef NC_DOUBLE
     232      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zmea)
     233#else
     234      ierr = NF_PUT_VAR_REAL (nid,nvarid,zmea)
     235#endif
     236c
     237      ierr = NF_REDEF (nid)
     238#ifdef NC_DOUBLE
     239      ierr = NF_DEF_VAR (nid, "ZSTD", NF_DOUBLE, 1, idim2,nvarid)
     240#else
     241      ierr = NF_DEF_VAR (nid, "ZSTD", NF_FLOAT, 1, idim2,nvarid)
     242#endif
     243      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     244     .                        "zstd Orographie sous-maille")
     245      ierr = NF_ENDDEF(nid)
     246#ifdef NC_DOUBLE
     247      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zstd)
     248#else
     249      ierr = NF_PUT_VAR_REAL (nid,nvarid,zstd)
     250#endif
     251c
     252      ierr = NF_REDEF (nid)
     253#ifdef NC_DOUBLE
     254      ierr = NF_DEF_VAR (nid, "ZSIG", NF_DOUBLE, 1, idim2,nvarid)
     255#else
     256      ierr = NF_DEF_VAR (nid, "ZSIG", NF_FLOAT, 1, idim2,nvarid)
     257#endif
     258      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     259     .                        "zsig Orographie sous-maille")
     260      ierr = NF_ENDDEF(nid)
     261#ifdef NC_DOUBLE
     262      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zsig)
     263#else
     264      ierr = NF_PUT_VAR_REAL (nid,nvarid,zsig)
     265#endif
     266c
     267      ierr = NF_REDEF (nid)
     268#ifdef NC_DOUBLE
     269      ierr = NF_DEF_VAR (nid, "ZGAM", NF_DOUBLE, 1, idim2,nvarid)
     270#else
     271      ierr = NF_DEF_VAR (nid, "ZGAM", NF_FLOAT, 1, idim2,nvarid)
     272#endif
     273      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     274     .                        "zgam Orographie sous-maille")
     275      ierr = NF_ENDDEF(nid)
     276#ifdef NC_DOUBLE
     277      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zgam)
     278#else
     279      ierr = NF_PUT_VAR_REAL (nid,nvarid,zgam)
     280#endif
     281c
     282      ierr = NF_REDEF (nid)
     283#ifdef NC_DOUBLE
     284      ierr = NF_DEF_VAR (nid, "ZTHE", NF_DOUBLE, 1, idim2,nvarid)
     285#else
     286      ierr = NF_DEF_VAR (nid, "ZTHE", NF_FLOAT, 1, idim2,nvarid)
     287#endif
     288      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     289     .                        "zthe Orographie sous-maille")
     290      ierr = NF_ENDDEF(nid)
     291#ifdef NC_DOUBLE
     292      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zthe)
     293#else
     294      ierr = NF_PUT_VAR_REAL (nid,nvarid,zthe)
     295#endif
     296c
     297      ierr = NF_REDEF (nid)
     298#ifdef NC_DOUBLE
     299      ierr = NF_DEF_VAR (nid, "ZPIC", NF_DOUBLE, 1, idim2,nvarid)
     300#else
     301      ierr = NF_DEF_VAR (nid, "ZPIC", NF_FLOAT, 1, idim2,nvarid)
     302#endif
     303      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     304     .                        "zpic Orographie sous-maille")
     305      ierr = NF_ENDDEF(nid)
     306#ifdef NC_DOUBLE
     307      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zpic)
     308#else
     309      ierr = NF_PUT_VAR_REAL (nid,nvarid,zpic)
     310#endif
     311c
     312      ierr = NF_REDEF (nid)
     313#ifdef NC_DOUBLE
     314      ierr = NF_DEF_VAR (nid, "ZVAL", NF_DOUBLE, 1, idim2,nvarid)
     315#else
     316      ierr = NF_DEF_VAR (nid, "ZVAL", NF_FLOAT, 1, idim2,nvarid)
     317#endif
     318      ierr = NF_PUT_ATT_TEXT (nid,nvarid,"title", 28,
     319     .                        "zval Orographie sous-maille")
     320      ierr = NF_ENDDEF(nid)
     321#ifdef NC_DOUBLE
     322      ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,zval)
     323#else
     324      ierr = NF_PUT_VAR_REAL (nid,nvarid,zval)
     325#endif
     326c
     327      ierr = NF_REDEF (nid)
     328#ifdef NC_DOUBLE
    220329      ierr = NF_DEF_VAR (nid, "TANCIEN", NF_DOUBLE, 1, idim3,nvarid)
    221330#else
Note: See TracChangeset for help on using the changeset viewer.