! ! $Id: ini_histISCCP.h 1299 2010-01-20 14:27:21Z jyg $ ! IF (ok_isccp) THEN c c$OMP MASTER 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 !IM on lit la frequence d'appel dans physiq.def ! zcals(1) = dtime *6. !toutes les 3h (en s) zcals(1) = freq_ISCCP !toutes les freq_ISCCP secondes 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 !IM on ecrit les resultats du simulateur ISCCP toutes les ! ecrit_ISCCP secondes zout_isccp(1) = ecrit_day !(en s) zout_isccp(1) = ecrit_ISCCP !(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)) IF(ncol(n).GT.ncolmx) THEN PRINT*,'Warning: Augmenter le nombre colonnes du simulateur' PRINT*,' ISCCP ncol=', ncol,' ncolmx=',ncolmx c PRINT*,'n ncol',n,ncol(n) CALL abort ENDIF c DO l=1, ncol(n) vertlev(l,n)=REAL(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 cym CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon) cym DO i = 1, iim cym zx_lon(i,1) = rlon(i+1) cym zx_lon(i,jjmp1) = rlon(i+1) cym ENDDO cym CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat,zx_lat) c cIM BEG region cym Desole dans un premier temps le mode region ne marchera pas cym Il faudra voir dans un second temps pour l'implementer cym Mais cela posera des problemes au niveau de la reconstruction imin_ins=1 imax_ins=iim jmin_ins=1 jmax_ins=jjmp1 cym do i=1,iim-1 cym if(zx_lon(i,1).lt.lonmin_ins) imin_ins=i cym if(zx_lon(i,1).le.lonmax_ins) imax_ins=i+1 cym enddo cym do j=1,jjmp1 cym if(zx_lat(1,j).ge.latmin_ins) jmax_ins=j cym if(zx_lat(1,j).gt.latmax_ins) jmin_ins=j cym enddo c print*,'On stoke le fichier histISCCP sur ', s imin_ins,imax_ins,jmin_ins,jmax_ins cym print*,'On stoke le fichier histISCCP instantanne sur ', cym s zx_lon(imin_ins,1),zx_lon(imax_ins,1), cym s zx_lat(1,jmin_ins),zx_lat(1,jmax_ins) cIM END region c IF(1.EQ.0) THEN cym CALL histbeg("histISCCP.nc", iim,zx_lon(:,1),jjmp1,zx_lat(1,:), cym . 1, iim, 1, jjmp1, cym . itau_phy, zjulian, dtime, cym . nhori, nid_isccp) CALL histbeg_phy("histISCCP.nc", itau_phy, zjulian, dtime, . nhori, nid_isccp) ENDIF !(1.EQ.0) THEN c cym CALL histbeg("histISCCP.nc", iim,zx_lon(:,1), cym . jjmp1,zx_lat(1,:), cym . imin_ins,imax_ins-imin_ins+1, cym . jmin_ins,jmax_ins-jmin_ins+1, cym . itau_phy, zjulian, dtime, cym . nhori, nid_isccp) CALL histbeg_phy("histISCCP.nc", 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)//verticaxe(n), . "LMDZ ISCCP cld", "%", . iim, jj_nb,nhori,lmaxm1,1,lmaxm1,nvert,32, . "ave(X)", zcals(n),zout_isccp(n)) ENDDO c CALL histdef(nid_isccp, "nsunlit"//verticaxe(n), . "Nb of calls with sunlit ", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "meantaucld"//verticaxe(n), . "ISCCP mean cloud optical thickness", "1", . iim, jj_nb,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)//verticaxe(n), . "LMDZ ISCCP cld "//cnameisccp(l,k), "%", . iim, jj_nb,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"//verticaxe(n), . "Nb of calls with sunlit ", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "meantaucld"//verticaxe(n), . "ISCCP mean cloud optical thickness", "1", . iim, jj_nb,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, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "cist", . "CiSt lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "deep", . "Deep lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "alcu", . "AlCu lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "alst", . "AlSt lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "nist", . "NiSt lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "cumu", . "Cumu lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "stcu", . "StCu lk ISCCP-D2", "%", . iim, jj_nb,nhori,1,1,1,-99,32, . "ave(X)", zcals(n),zout_isccp(n)) c CALL histdef(nid_isccp, "stra", . "Stra lk ISCCP-D2", "%", . iim, jj_nb,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, jj_nb,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, jj_nb,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, jj_nb,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, jj_nb,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, jj_nb,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 c$OMP END MASTER ENDIF ! ok_isccp