!
! $Header$
!
      IF (ok_isccp) THEN
c
      ndex2d = 0
      ndex3d = 0
c
c pour les champs instantannes, il faut mettre la meme valeur pour
c zout et zsto.
c dtime est passe par ailleurs a histbeg
c zstophy = frequence de stockage des champs tous les pdt physiques
c zout = frequence d'ecriture des champs
cIM 300505     zstophy = dtime 
c appel du simulateur toutes les 3heures
          zcals(1) = dtime *6.  !toutes les 3h (en s)
        DO n=1, napisccp
          zcalh(n) = zcals(n)/3600. !stoutes les Xh (en heures)
        ENDDO !n
c
c ecriture 8 fois par jour
c       zout = dtime * REAL(NINT(86400./dtime*ecrit_isccp))
c ecriture toutes les 2h (12 fois par jour)
c       zout = dtime * 4.
c ecriture toutes les 1/2 h (48 fois par jour)
c       zout = dtime
c
c       IF(freqout_isccp.EQ.1.) THEN
c ecriture jounaliere
          zout_isccp(1) = ecrit_day !(en s)
c ecriture mensuelle
c         zout = dtime * ecrit_mth !(en s)
        DO n=1, napisccp 
          zoutj(n)=zout_isccp(n)/86400. !(en jours)
c
c le nombre de sous-colonnes ncol : ncol=(100.*zcalh)/zoutd
          ncol(n)=NINT((100.*zcalh(n))/zoutj(n))
          PRINT*,'n ncol',n,ncol(n)
c
        DO l=1, ncol(n)
          vertlev(l,n)=float(l)
        ENDDO !ncol
c
        ENDDO !n

c       PRINT*, 'La frequence de sortie ISCCP est de ', ecrit_isccp
c
        idayref = day_ref
        CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
c       write(*,*)'ISCCP ', itau_phy, zjulian
c
c
c definition coordonnees lon,lat en globale
c
        CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon)
        DO i = 1, iim
          zx_lon(i,1) = rlon(i+1)
          zx_lon(i,jjmp1) = rlon(i+1)
        ENDDO

        CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat,zx_lat)
c
cIM BEG region
          imin_ins=1
          imax_ins=iim
          jmin_ins=1
          jmax_ins=jjmp1
          do i=1,iim-1
             if(zx_lon(i,1).lt.lonmin_ins) imin_ins=i
             if(zx_lon(i,1).le.lonmax_ins) imax_ins=i+1
          enddo
          do j=1,jjmp1
             if(zx_lat(1,j).ge.latmin_ins) jmax_ins=j
             if(zx_lat(1,j).gt.latmax_ins) jmin_ins=j
          enddo
c
          print*,'On stoke le fichier histISCCP instantanne sur ',
     s   imin_ins,imax_ins,jmin_ins,jmax_ins
          print*,'On stoke le fichier histISCCP instantanne sur ',
     s   zx_lon(imin_ins,1),zx_lon(imax_ins,1),
     s   zx_lat(1,jmin_ins),zx_lat(1,jmax_ins)
cIM END region
c
        IF(1.EQ.0) THEN
         CALL histbeg("histISCCP.nc", iim,zx_lon(:,1),jjmp1,zx_lat(1,:),
     .                 1, iim, 1, jjmp1,
     .                 itau_phy, zjulian, dtime,
     .                 nhori, nid_isccp)
        ENDIF !(1.EQ.0) THEN
c
         CALL histbeg("histISCCP.nc", iim,zx_lon(:,1),
     .                 jjmp1,zx_lat(1,:),
     .                 imin_ins,imax_ins-imin_ins+1,
     .                 jmin_ins,jmax_ins-jmin_ins+1,
     .                 itau_phy, zjulian, dtime,
     .                 nhori, nid_isccp)
c
        IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN
         CALL histvert(nid_isccp, "cldtopres","Cloud Top Pressure","mb",
     .                 lmaxm1, cldtopres, nvert,'down')
        ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
         CALL histvert(nid_isccp,"cldtopres3","Cloud Top Pressure","mb",
     .                 lmax3, cldtopres3, nvert3,'down')
        ENDIF
        DO n=1, napisccp
         CALL histvert(nid_isccp, "Nbcol"//verticaxe(n),
     .        "Nb of Column"//verticaxe(n),"1",
     .        ncol(n), vertlev(:,n), nvlev(n),'up')
        ENDDO
c
        IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN
c
c variables a ecrire
c 
         DO n=1, napisccp
c
         DO k=1, kmaxm1
          CALL histdef(nid_isccp, "cldISCCP_"//taulev(k)//typinout(n),
     .                "LMDZ ISCCP cld", "%",
     .                iim, jjmp1,nhori,lmaxm1,1,lmaxm1,nvert,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
         ENDDO
c
         CALL histdef(nid_isccp, "nsunlit"//typinout(n),
     .                "Nb of calls with sunlit ", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
         ENDDO
c
        ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
c
         DO n=1, napisccp
c
c         print*,'n=',n,' avant histdef(..LMDZ ISCCP cld'
c
          DO k=1, kmaxm1
           DO l=1, lmaxm1
c
           CALL histdef(nid_isccp, pclev(l)//taulev(k)//typinout(n),
     .                "LMDZ ISCCP cld "//cnameisccp(l,k), "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
           ENDDO
          ENDDO
c
c         print*,'n=',n,' avant histdef(..Nb of calls sunlit'
          CALL histdef(nid_isccp, "nsunlit"//typinout(n),
     .                "Nb of calls with sunlit ", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
c 9types de nuages ISCCP-D2
          CALL histdef(nid_isccp, "cirr",
     .                "Cirrus lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "cist",
     .                "CiSt lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "deep",
     .                "Deep lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "alcu",
     .                "AlCu lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "alst",
     .                "AlSt lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "nist",
     .                "NiSt lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "cumu",
     .                "Cumu lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "stcu",
     .                "StCu lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "stra",
     .                "Stra lk ISCCP-D2", "%",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
c 3_epaisseurs_optiques x3_pressions_au_sommet_des_nuages  types de nuages 
          CALL histdef(nid_isccp, "thin",
     .                "Opt. thin ISCCP-D2 like clouds", "%",
     .                iim, jjmp1,nhori,lmax3,1,lmax3,nvert3,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "mid",
     .                "Opt. intermediate ISCCP-D2 like clouds", "%",
     .                iim, jjmp1,nhori,lmax3,1,lmax3,nvert3,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
          CALL histdef(nid_isccp, "thick",
     .                "Opt. thick ISCCP-D2 like clouds", "%",
     .                iim, jjmp1,nhori,lmax3,1,lmax3,nvert3,32,
     .                "ave(X)", zcals(n),zout_isccp(n))
c
c        IF(1.EQ.0) THEN
c        IF(n.EQ.3) THEN
c        IF(n.EQ.1) THEN
c
cIM 070905 BEG
         IF(1.EQ.0) THEN
          print*,'n=',n,' avant histdef(..boxptop axe'
cIM verif boxptop
          CALL histdef(nid_isccp,"boxptop"//verticaxe(n),
     .                "Boxptop axe"//verticaxe(n), "mb",
     .                iim, jjmp1,nhori,
     .                ncol(n),1,ncol(n),nvlev(n),32,
cIM  .                ncolmx,1,ncolmx,nvlev,32,
cIM  .                "inst(X)",dtime,dtime)
     .                "ave(X)",zcals(n),zout_isccp(n))
         ENDIF !(1.EQ.0) THEN
cIM 070905 END
c        ENDIF !(n.EQ.3) THEN
c       ENDIF !(1.EQ.0) THEN
c
c         print*,'n=',n,' avant histdef(..seed axe'
          CALL histdef(nid_isccp, "seed"//verticaxe(n),
     .                "seed axe"//verticaxe(n), "-",
     .                iim, jjmp1,nhori,1,1,1,-99,32,
cIM  .                "inst(X)", dtime,dtime)
     .                "ave(X)", zcals(n),zout_isccp(n))
c
         ENDDO !n
        ENDIF 
        CALL histend(nid_isccp)
c
      ENDIF ! ok_isccp
