Ignore:
Timestamp:
Dec 15, 2003, 6:50:41 PM (20 years ago)
Author:
lmdzadmin
Message:

Phasage avec la version de Ionela
IM/LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/branches/rel-LF/libf/phylmd/physiq.F

    r478 r486  
    132132c      PARAMETER (ok_mensuel=.true.)
    133133c
     134      LOGICAL ok_mensuelNMC ! sortir le fichier mensuel niveaux NMC
     135      PARAMETER (ok_mensuelNMC=.true.)
     136c     save ok_mensuelNMC
     137c
    134138      LOGICAL ok_instan ! sortir le fichier instantane
    135139      save ok_instan
     
    187191      REAL d_ps(klon)
    188192
    189 cccIM
    190       INTEGER klevp1
    191       PARAMETER(klevp1=klev+1)
     193      INTEGER klevp1, klevm1
     194      PARAMETER(klevp1=klev+1,klevm1=klev-1)
    192195#include "raddim.h"
    193 cc      REAL*8 ZFSUP(KDLON,KFLEV+1)
    194 cc      REAL*8 ZFSDN(KDLON,KFLEV+1)
    195 cc      REAL*8 ZFSUP0(KDLON,KFLEV+1)
    196 cc      REAL*8 ZFSDN0(KDLON,KFLEV+1)
    197196c
    198197      REAL swdn0(klon,2), swdn(klon,2), swup0(klon,2), swup(klon,2)
    199198      SAVE swdn0 , swdn, swup0, swup
    200199
    201 cccIM cf. FH
    202       real u850(klon),v850(klon),u200(klon),v200(klon)
    203       real u500(klon),v500(klon),phi500(klon),w500(klon)
    204 cIM
     200c vents meridien et zonal a un niveau de pression
     201      real u1000(klon), v1000(klon) !vents a 1000 hPa
     202      real u925(klon), v925(klon)   !vents a  925 hPa
     203      real u850(klon),v850(klon)    !vents a  850 hPa
     204      real u700(klon),v700(klon)
     205      real u600(klon),v600(klon)
     206      real u500(klon),v500(klon)
     207      real u400(klon),v400(klon)
     208      real u300(klon),v300(klon)
     209      real u250(klon),v250(klon)
     210      real u200(klon),v200(klon)
     211      real u150(klon),v150(klon)
     212      real u100(klon),v100(klon)
     213      real u70(klon),v70(klon)
     214      real u50(klon),v50(klon)
     215      real u30(klon),v30(klon)
     216      real u20(klon),v20(klon)
     217      real u10(klon),v10(klon)
     218      real phi500(klon),w500(klon)
     219c prw: precipitable water
    205220      real prw(klon)
    206221
    207 cIM ISCCP - proprietes microphysiques des nuages convectifs
    208222      REAL convliq(klon,klev)  ! eau liquide nuageuse convective
    209223      REAL convfra(klon,klev)  ! fraction nuageuse convective
     
    214228      REAL cldt_s(klon),cldq_s(klon) !nuage total, eau liquide integree
    215229
    216       INTEGER kinv, linv
    217 
    218 cIM ISCCP simulator BEGIN
    219       INTEGER igfi2D(iim,jjmp1)
     230      INTEGER linv, kp1
     231c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
     232c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
     233      REAL flwp(klon), fiwp(klon)
     234      REAL flwc(klon,klev), fiwc(klon,klev)
     235      REAL flwp_c(klon), fiwp_c(klon)
     236      REAL flwc_c(klon,klev), fiwc_c(klon,klev)
     237      REAL flwp_s(klon), fiwp_s(klon)
     238      REAL flwc_s(klon,klev), fiwc_s(klon,klev)
     239
     240c ISCCP simulator v3.4
     241c dans clesphys.h top_height, overlap
    220242cv3.4
    221243      INTEGER debug, debugcol
    222244      INTEGER npoints
    223245      PARAMETER(npoints=klon)
    224       INTEGER sunlit(klon)
    225 
     246c
     247      INTEGER sunlit(klon) !sunlit=1 if day; sunlit=0 if night
     248      INTEGER nregISCtot
     249      PARAMETER(nregISCtot=1)
     250c
     251c imin_debut, nbpti, jmin_debut, nbptj : parametres pour sorties sur 1 region rectangulaire
     252c y compris pour 1 point
     253c imin_debut : indice minimum de i; nbpti : nombre de points en direction i (longitude)
     254c jmin_debut : indice minimum de j; nbptj : nombre de points en direction j (latitude)
     255      INTEGER imin_debut, nbpti
     256      INTEGER jmin_debut, nbptj
     257c
     258      REAL nbsunlit(nregISCtot,klon)  !nbsunlit : moyenne de sunlit
    226259      INTEGER ncol, seed(klon)
    227260
    228 cIM dans clesphys.h top_height, overlap
     261c ncol = nb. de sous-colonnes pour chaque maille du GCM
    229262c     PARAMETER(ncol=100)
    230263c     PARAMETER(ncol=625)
    231       PARAMETER(ncol=10)
     264c     PARAMETER(ncol=10)
     265      PARAMETER(ncol=25)
    232266      REAL tautab(0:255)
    233267      INTEGER invtau(-20:45000)
     
    235269      PARAMETER(emsfc_lw=0.99)
    236270      REAL    ran0                      ! type for random number fuction
    237 
     271c
     272      REAL cldtot(klon,klev)
     273c variables de haut en bas pour le simulateur ISCCP
     274      REAL dtau_s(klon,klev) !tau nuages startiformes
     275      REAL dtau_c(klon,klev) !tau nuages convectifs
     276      REAL dem_s(klon,klev)  !emissivite nuages startiformes
     277      REAL dem_c(klon,klev)  !emissivite nuages convectifs
     278c
     279c variables de haut en bas pour le simulateur ISCCP
    238280      REAL pfull(klon,klev)
    239281      REAL phalf(klon,klev+1)
    240       REAL cldtot(klon,klev)
    241       REAL dtau_s(klon,klev)
    242       REAL dtau_c(klon,klev)
    243       REAL dem_s(klon,klev)
    244       REAL dem_c(klon,klev)
    245 cPLUS : variables de haut en bas pour le simulateur ISCCP
    246282      REAL qv(klon,klev)
    247283      REAL cc(klon,klev)
     
    253289      REAL dem_cH2B(klon,klev)
    254290
    255 c output from ISCCP
     291c output from ISCCP simulator
    256292      REAL fq_isccp(klon,7,7)
    257293      REAL totalcldarea(klon)
     
    260296      REAL boxtau(klon,ncol)
    261297      REAL boxptop(klon,ncol)
    262 
    263 c grille 4d physique
    264       INTEGER l, ni, nj, kmax, lmax, nrec
    265       INTEGER ni1, ni2, nj1, nj2
    266 c     PARAMETER(kmax=7, lmax=7)
     298c
     299      INTEGER l, ni, nj, kmax, lmax
    267300      PARAMETER(kmax=8, lmax=8)
    268301      INTEGER kmaxm1, lmaxm1
    269302      PARAMETER(kmaxm1=kmax-1, lmaxm1=lmax-1)
    270 c     INTEGER iimx7, jjmx7, jjmp1x7
    271 c     PARAMETER(iimx7=iim*7, jjmx7=jjm*7, jjmp1x7=jjmp1*7)
    272 c     REAL fq4d(iim,jjmp1,7,7)
    273 c     REAL fq3d(iimx7, jjmp1x7)
    274       INTEGER iimx8, jjmx8, jjmp1x8
    275       PARAMETER(iimx8=iim*8, jjmx8=jjm*8, jjmp1x8=jjmp1*8)
    276       REAL fq4d(iim,jjmp1,8,8)
    277       REAL fq3d(iimx8, jjmp1x8)
    278 cIM180603     SAVE fq3d
    279 
    280 c     REAL maxfq3d, minfq3d
     303      INTEGER iimx7, jjmx7, jjmp1x7
     304      PARAMETER(iimx7=iim*kmaxm1, jjmx7=jjm*lmaxm1,
     305     .jjmp1x7=jjmp1*lmaxm1)
     306      REAL fq4d(iim,jjmp1,kmaxm1,lmaxm1)
     307      REAL fq3d(iimx7, jjmp1x7)
    281308c
    282309      INTEGER iw, iwmax
     
    285312      PARAMETER(wmin=-200.,pas_w=10.,iwmax=40)
    286313      REAL o500(klon)
    287       INTEGER nreg, nbreg
    288       PARAMETER(nbreg=5)
    289 c     REAL histoW(iwmax,kmaxm1,lmaxm1)
    290       REAL histoW(kmaxm1,lmaxm1,iwmax,nbreg)
    291       REAL nhistoW(kmaxm1,lmaxm1,iwmax,nbreg)
    292 cIM180603     
    293 c     SAVE histoW, nhistoW
    294 c     SAVE nhistoW
    295       REAL nhistoWt(kmaxm1,lmaxm1,iwmax,nbreg)
     314c
     315cIM: nbregdyn = nbre regions pour calculs statistiques sur output du ISCCP
     316cIM: dynamiques 
     317      INTEGER nreg, nbregdyn
     318      PARAMETER(nbregdyn=5)
     319      REAL histoW(kmaxm1,lmaxm1,iwmax,nbregdyn)
     320      REAL nhistoW(kmaxm1,lmaxm1,iwmax,nbregdyn)
     321      REAL nhistoWt(kmaxm1,lmaxm1,iwmax,nbregdyn)
    296322      SAVE nhistoWt
    297323
    298 c     REAL histoWinv(kmaxm1,lmaxm1,iwmax)
    299 c     REAL nhistoW(kmaxm1,lmaxm1,iwmax)
    300       INTEGER linv
    301 c     LOGICAL pct_ocean(klon,nbreg)
    302       INTEGER pct_ocean(klon,nbreg)
     324      INTEGER pct_ocean(klon,nbregdyn)
    303325      REAL rlonPOS(klon)
    304 c     CHARACTER*4 pdirect
    305326 
    306327c sorties ISCCP
     
    321342#endif
    322343
     344c sorties statistiques regime dynamique
     345      logical ok_regdyn
     346      real ecrit_regdyn
     347      integer nid_regdyn
     348      save ok_regdyn, ecrit_regdyn, nid_regdyn
     349
     350#undef histREGDYN
     351#define histREGDYN
     352#ifdef histREGDYN
     353c     data ok_regdyn,ecrit_regdyn/.true.,0.125/
     354c     data ok_regdyn,ecrit_regdyn/.true.,1./
     355       data ok_regdyn/.true./
     356#else
     357      data ok_regdyn/.false./
     358#endif
     359
    323360      REAL zx_tau(kmaxm1), zx_pc(lmaxm1), zx_o500(iwmax)
    324 c     DATA zx_tau/0.1, 1.3, 3.6, 9.4, 23., 60./
    325 c     DATA zx_pc/50., 180., 310., 440., 560., 680., 800., 1015./
    326 c     DATA zx_pc/50., 180., 310., 440., 560., 680., 800./
    327 cOK     DATA zx_tau/0.0, 0.1, 1.3, 3.6, 9.4, 23., 60./
    328 cOK     DATA zx_pc/800., 680., 560., 440., 310., 180., 50./
    329 
    330 c tester l'alure
    331       DATA zx_tau/1., 2., 3., 4., 5., 6., 7./
    332 c     DATA zx_pc/1., 2., 3., 4., 5., 6., 7./
    333       DATA zx_pc/7., 6., 5., 4., 3., 2., 1./
     361      DATA zx_tau/0.0, 0.3, 1.3, 3.6, 9.4, 23., 60./
     362      DATA zx_pc/50., 180., 310., 440., 560., 680., 800./
     363
     364c cldtopres pression au sommet des nuages
     365      REAL cldtopres(lmaxm1)
     366      DATA cldtopres/50., 180., 310., 440., 560., 680., 800./
    334367
    335368      INTEGER komega, nhoriRD
    336369
    337 c statistiques regime dynamique END
    338 
    339 c     REAL del_lon(iim), del_lat(jjmp1)
    340       REAL del_lon, del_lat
    341 c     REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7)
    342       REAL zx_lonx8(iimx8), zx_latx8(jjmp1x8)
    343 c     INTEGER nhorix7
    344       INTEGER nhorix8
    345 
    346 cIM ISCCP simulator END
    347 
     370c taulev: numero du niveau de tau dans les sorties ISCCP
     371      CHARACTER *4 taulev(kmaxm1)
     372      DATA taulev/'tau1','tau2','tau3','tau4','tau5','tau6','tau7'/
     373
     374      REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7)
     375      INTEGER nhorix7
     376cIM: region='3d' <==> sorties en global
     377      CHARACTER*3 region
     378      PARAMETER(region='3d')
     379c
    348380      logical ok_hf
    349381      real ecrit_hf
     
    513545      REAL yu1(klon)            ! vents dans la premiere couche U
    514546      REAL yv1(klon)            ! vents dans la premiere couche V
    515 cIM cf JLD
    516       REAL ffonte(klon,nbsrf)         !Flux thermique utilise pour fondre la neige
    517       REAL fqcalving(klon,nbsrf)      !Flux d'eau "perdue" par la surface
     547      REAL ffonte(klon,nbsrf)    !Flux thermique utilise pour fondre la neige
     548      REAL fqcalving(klon,nbsrf) !Flux d'eau "perdue" par la surface
    518549c                               !et necessaire pour limiter la
    519550c                               !hauteur de neige, en kg/m2/s
     
    539570      REAL dlw(klon)    ! derivee infra rouge
    540571      REAL bils(klon) ! bilan de chaleur au sol
    541 cIM cf. JLD
    542572      REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque
    543573C                   type de sous-surface et pondere par la fraction
     
    574604      EXTERNAL angle     ! calculer angle zenithal du soleil
    575605      EXTERNAL alboc     ! calculer l'albedo sur ocean
    576       EXTERNAL albsno    ! calculer albedo sur neige
    577606      EXTERNAL ajsec     ! ajustement sec
    578607      EXTERNAL clmain    ! couche limite
     
    601630      EXTERNAL ecrirega  ! ecrire le fichier binaire regional
    602631      EXTERNAL ecriregs  ! ecrire le fichier binaire regional
     632cIM
     633      EXTERNAL haut2bas  !variables de haut en bas
    603634c
    604635c Variables locales
     
    685716      REAL cape(klon)           ! CAPE
    686717      SAVE cape
    687 cccIM
    688       CHARACTER*40 capemaxcels
     718      CHARACTER*40 capemaxcels  !max(CAPE)
    689719
    690720      REAL pbase(klon)          ! cloud base pressure
     
    739769      REAL d_u_lif(klon,klev), d_v_lif(klon,klev)
    740770      REAL d_t_lif(klon,klev)
     771      REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif
    741772
    742773      REAL ratqs(klon,klev),ratqss(klon,klev),ratqsc(klon,klev)
     
    792823c
    793824      INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev)
    794       REAL zx_tmp_fi2d(klon)
     825      REAL zx_tmp_fi2d(klon)      ! variable temporaire grille physique
     826      REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
    795827      REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev)
    796828      REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1)
    797829c
    798       INTEGER nid_day, nid_mth, nid_ins
    799       SAVE nid_day, nid_mth, nid_ins
     830      INTEGER nid_day, nid_mth, nid_ins, nid_nmc
     831      SAVE nid_day, nid_mth, nid_ins, nid_nmc
    800832c
    801833      INTEGER nhori, nvert
     
    841873      REAL ZRCPD
    842874c-jld ec_conser
    843 cIM
    844       REAL t2m(klon,nbsrf), q2m(klon,nbsrf)
    845       REAL u10m(klon,nbsrf), v10m(klon,nbsrf)
    846       REAL zt2m(klon), zq2m(klon)
    847       REAL zu10m(klon), zv10m(klon)
    848       CHARACTER*40 t2mincels, t2maxcels
     875cIM: t2m, q2m, u10m, v10m et t2mincels, t2maxcels
     876      REAL t2m(klon,nbsrf), q2m(klon,nbsrf)   !temperature, humidite a 2m
     877      REAL u10m(klon,nbsrf), v10m(klon,nbsrf) !vents a 10m
     878      REAL zt2m(klon), zq2m(klon)             !temp., hum. 2m moyenne s/ 1 maille
     879      REAL zu10m(klon), zv10m(klon)           !vents a 10m moyennes s/1 maille
     880      CHARACTER*40 t2mincels, t2maxcels       !t2m min., t2m max
    849881c
    850882c Declaration des constantes et des fonctions thermodynamiques
     
    10311063c   Initialisation des sorties
    10321064c=============================================================
     1065#ifdef histhf
     1066#include "ini_histhf.h"
     1067#endif
     1068
     1069#include "ini_histday.h"
     1070#include "ini_histmth.h"
     1071
     1072#undef histmthNMC
     1073#define histmthNMC
     1074#ifdef histmthNMC
     1075#include "ini_histmthNMC.h"
     1076#endif
     1077
     1078#include "ini_histins.h"
     1079
     1080#ifdef histREGDYN
     1081#include "ini_histREGDYN.h"
     1082#endif
    10331083
    10341084#ifdef histISCCP
    10351085#include "ini_histISCCP.h"
    10361086#endif
    1037 
    1038 #ifdef histhf
    1039 #include "ini_histhf.h"
    1040 #endif
    1041 
    1042 #include "ini_histday.h"
    1043 #include "ini_histmth.h"
    1044 #include "ini_histins.h"
    10451087
    10461088cXXXPB Positionner date0 pour initialisation de ORCHIDEE
     
    12531295       sunlit(i)=1
    12541296       IF(rmu0(i).EQ.0.) sunlit(i)=0
    1255 c      IF(rmu0(i).EQ.0.) THEN
    1256 c       sunlit(i)=0
    1257 c       PRINT*,' il fait nuit ',i,rlat(i),rlon(i)
    1258 c      ENDIF
     1297       nbsunlit(1,i)=FLOAT(sunlit(i))
    12591298      ENDDO
    12601299cIM END
     
    12891328     e            julien, rmu0, co2_ppm,
    12901329     e            ok_veget, ocean, npas, nexca, ftsol,
    1291      $            soil_model,cdmmax, cdhmax, ftsoil, qsol,
     1330     $            soil_model,cdmmax, cdhmax,
     1331     $            ksta, ksta_ter, ok_kzmin, ftsoil, qsol,
    12921332     $            paprs,pplay,radsol, fsnow,fqsurf,fevap,falbe,falblw,
    12931333     $            fluxlat,
     
    17891829      enddo
    17901830
    1791 cIM ISCCP simulator BEGIN
     1831cIM calcul nuages par le simulateur ISCCP
    17921832      IF (ok_isccp) THEN
    17931833cIM calcul tau. emi nuages convectifs
    17941834      convfra(:,:)=rnebcon(:,:)
    17951835      convliq(:,:)=rnebcon(:,:)*clwcon(:,:)
    1796 c     CALL newmicro (paprs, pplay,ok_newmicro,
    1797 c    .            t_seri, cldliq, cldfra, cldtau, cldemi,
    1798 c    .            cldh, cldl, cldm, cldt, cldq)
    17991836      CALL newmicro (paprs, pplay,ok_newmicro,
    18001837     .            t_seri, convliq, convfra, dtau_c, dem_c,
    1801      .            cldh_c, cldl_c, cldm_c, cldt_c, cldq_c)
    1802 
     1838     .            cldh_c, cldl_c, cldm_c, cldt_c, cldq_c,
     1839     .            flwp_c, fiwp_c, flwc_c, fiwc_c)
     1840c
    18031841cIM calcul tau. emi nuages startiformes
    18041842      CALL newmicro (paprs, pplay,ok_newmicro,
    18051843     .            t_seri, cldliq, cldfra, dtau_s, dem_s,
    1806      .            cldh_s, cldl_s, cldm_s, cldt_s, cldq_s)
    1807 cIM calcul diagramme (PC, tau) cf. ISCCP D
    1808 c     seed=50
    1809 c     seed=ran0(klon)
    1810 cT1O3     
    1811 c     top_height=1
    1812 cT3O3
    1813 c     top_height=3
    1814 c     overlap=3
    1815 cIM cf GCM     
     1844     .            cldh_s, cldl_s, cldm_s, cldt_s, cldq_s,
     1845     .            flwp_s, fiwp_s, flwc_s, fiwc_s)
     1846c
    18161847      cldtot(:,:)=min(max(cldfra(:,:),rnebcon(:,:)),1.)
    18171848
    18181849cIM inversion des niveaux de pression ==> de haut en bas
    1819       DO k=1,klev
    1820        kinv=klev-k+1
    1821        DO i=1,klon
    1822         pfull(i,k)=pplay(i,kinv)
    1823 c on met toutes les variables de Haut 2 Bas
    1824         qv(i,k)=q_seri(i,kinv)
    1825         cc(i,k)=cldtot(i,kinv)
    1826         conv(i,k)=rnebcon(i,kinv)
    1827         dtau_sH2B(i,k)=dtau_s(i,kinv)
    1828         dtau_cH2B(i,k)=dtau_c(i,kinv)
    1829         at(i,k)=t_seri(i,kinv)
    1830         dem_sH2B(i,k)=dem_s(i,kinv)
    1831         dem_cH2B(i,k)=dem_c(i,kinv)
    1832 
    1833        ENDDO
    1834       ENDDO
    1835 
    1836       DO k=1,klev+1
    1837        kinv=klev-k+2
    1838        DO i=1,klon
    1839         phalf(i,k)=paprs(i,kinv)
    1840        ENDDO
    1841       ENDDO
     1850      CALL haut2bas(klon, klev, pplay, pfull)
     1851      CALL haut2bas(klon, klev, q_seri, qv)
     1852      CALL haut2bas(klon, klev, cldtot, cc)
     1853      CALL haut2bas(klon, klev, rnebcon, conv)
     1854      CALL haut2bas(klon, klev, dtau_s, dtau_sH2B)
     1855      CALL haut2bas(klon, klev, dtau_c, dtau_cH2B)
     1856      CALL haut2bas(klon, klev, t_seri, at)
     1857      CALL haut2bas(klon, klev, dem_s, dem_sH2B)
     1858      CALL haut2bas(klon, klev, dem_c, dem_cH2B)
     1859      CALL haut2bas(klon, klevp1, paprs, phalf)
    18421860
    18431861c     open(99,file='tautab.bin',access='sequential',
     
    18551873      close(99)
    18561874c
     1875cIM: calcul coordonnees regions pour statistiques distribution
     1876cIM: nuages en ftion du regime dynamique pour regions oceaniques
     1877       IF (ok_regdyn) THEN !histREGDYN
    18571878       nsrf=3
    1858        DO nreg=1, nbreg
     1879       DO nreg=1, nbregdyn
    18591880       DO i=1, klon
    18601881
     
    18671888c       ENDIF
    18681889
    1869 c       pct_ocean(i,nreg)=.FALSE.
    18701890        pct_ocean(i,nreg)=0
    1871 
    1872 c      DO nsrf = 1, nbsrf
    18731891
    18741892c test si c'est 1 point d'ocean
     
    18791897c TROP
    18801898          IF(rlat(i).GE.-30.AND.rlat(i).LE.30.) THEN
    1881 c          pct_ocean(i,nreg)=.TRUE.
    18821899           pct_ocean(i,nreg)=1
    18831900          ENDIF
     
    18871904           IF(rlat(i).GE.40.AND.rlat(i).LE.60.) THEN
    18881905            IF(rlonPOS(i).GE.160..AND.rlonPOS(i).LE.235.) THEN
    1889 c            pct_ocean(i,nreg)=.TRUE.
    18901906             pct_ocean(i,nreg)=1
    18911907            ENDIF
     
    18951911          IF(rlonPOS(i).GE.220..AND.rlonPOS(i).LE.250.) THEN
    18961912           IF(rlat(i).GE.15.AND.rlat(i).LE.35.) THEN
    1897 c           pct_ocean(i,nreg)=.TRUE.
    18981913            pct_ocean(i,nreg)=1
    18991914           ENDIF
     
    19031918         IF(rlonPOS(i).GE.180..AND.rlonPOS(i).LE.220.) THEN
    19041919          IF(rlat(i).GE.15.AND.rlat(i).LE.35.) THEN
    1905 c          pct_ocean(i,nreg)=.TRUE.
    19061920           pct_ocean(i,nreg)=1
    19071921          ENDIF
     
    19111925         IF(rlonPOS(i).GE.70..AND.rlonPOS(i).LE.150.) THEN
    19121926          IF(rlat(i).GE.-5.AND.rlat(i).LE.20.) THEN
    1913 c          pct_ocean(i,nreg)=.TRUE.
    19141927           pct_ocean(i,nreg)=1
    19151928          ENDIF
    19161929         ENDIF
    1917         ENDIF !nbreg
     1930        ENDIF !nbregdyn
    19181931c TROP
    19191932c        IF(rlat(i).GE.-30.AND.rlat(i).LE.30.) THEN
     
    19241937
    19251938        ENDIF !pctsrf
    1926 c      ENDDO
    19271939       ENDDO !klon
    1928        ENDDO !nbreg
     1940       ENDDO !nbregdyn
     1941       ENDIF !ok_regdyn
    19291942 
    19301943cIM somme de toutes les nhistoW BEG
    1931       DO nreg = 1, nbreg
    1932       DO k = 1, kmaxm1
    1933       DO l = 1, lmaxm1
    1934       DO iw = 1, iwmax
    1935        nhistoWt(k,l,iw,nreg)=0.
    1936       ENDDO
    1937       ENDDO
    1938       ENDDO
    1939       ENDDO
     1944      DO nreg = 1, nbregdyn
     1945       DO k = 1, kmaxm1
     1946        DO l = 1, lmaxm1
     1947         DO iw = 1, iwmax
     1948          nhistoWt(k,l,iw,nreg)=0.
     1949         ENDDO !iw
     1950        ENDDO !l
     1951       ENDDO !k
     1952      ENDDO !nreg
    19401953cIM somme de toutes les nhistoW END
    1941       ENDIF
    1942 
    1943 
    1944 c     CALL ISCCP_CLOUD_TYPES(nlev,ncol,seed,pfull,phalf,qv,
    1945 c    &     cc,conv,dtau_s,dtau_c,top_height,overlap,
    1946 c    &     tautab,invtau,skt,emsfc_lw,at,dem_s,dem_c,fq_isccp,
    1947 c    &     totalcldarea,meanptop,meantaucld,boxtau,boxptop)
    1948 
    1949 c     DO i=1, klon
    1950 c     i=1
    1951 c1011  CONTINUE
    1952 c
    1953 cIM on verifie les donnees de INPUT en dehors du simulateur ISCCP
    1954 cIM 1D non-vectorise (!) pour qu'on gagne du temps ...
    1955 cIM
    1956 c BEGIN find unpermittable data.....
    1957 !     ---------------------------------------------------!
    1958 !     find unpermittable data.....
    1959 !
    1960 c     do 13 k=1,klev
    1961 c ca prend trop de temps ??
    1962 c     cldtot(:,:) = min(max(cldtot(:,:),0.),1.)
    1963 c     rnebcon(:,:) = min(max(rnebcon(:,:),0.),1.)
    1964 c     dtau_s(:,:) = max(dtau_s(:,:),0.)
    1965 c     dem_s(:,:) = min(max(dem_s(:,:),0.),1.)
    1966 c     dtau_c(:,:) = max(dtau_c(:,:),0.)
    1967 c     dem_c(:,:) = min(max(dem_c(:,:),0.),1.)
    1968 c ca prend trop de temps ??
    1969 
    1970 c           if (cldtot(i,k) .lt. 0.) then
    1971 c               print *, ' error = cloud fraction less than zero'
    1972 c               STOP
    1973 c           end if
    1974 c           if (cldtot(i,k) .gt. 1.) then
    1975 c               print *, ' error = cloud fraction greater than 1'
    1976 c               STOP
    1977 c           end if
    1978 c           if (rnebcon(i,k) .lt. 0.) then
    1979 c               print *,
    1980 c    &           ' error = convective cloud fraction less than zero'
    1981 c               STOP
    1982 c           end if
    1983 c           if (rnebcon(i,k) .gt. 1.) then
    1984 c               print *,
    1985 c    &           ' error = convective cloud fraction greater than 1'
    1986 c               STOP
    1987 c           end if
    1988 
    1989 c           if (dtau_s(i,k) .lt. 0.) then
    1990 c               print *,
    1991 c    &           ' error = stratiform cloud opt. depth less than zero'
    1992 c               STOP
    1993 c           end if
    1994 c           if (dem_s(i,k) .lt. 0.) then
    1995 c               print *,
    1996 c    &           ' error = stratiform cloud emissivity less than zero'
    1997 c               STOP
    1998 c           end if
    1999 c           if (dem_s(i,k) .gt. 1.) then
    2000 c               print *,
    2001 c    &           ' error = stratiform cloud emissivity greater than 1'
    2002 c               STOP
    2003 c           end if
    2004 
    2005 c           if (dtau_c(i,k) .lt. 0.) then
    2006 c               print *,
    2007 c    &           ' error = convective cloud opt. depth less than zero'
    2008 c               STOP
    2009 c           end if
    2010 c           if (dem_c(i,k) .lt. 0.) then
    2011 c               print *,
    2012 c    &           ' error = convective cloud emissivity less than zero'
    2013 c               STOP
    2014 c           end if
    2015 c           if (dem_c(i,k) .gt. 1.) then
    2016 c               print *,
    2017 c    &           ' error = convective cloud emissivity greater than 1'
    2018 c               STOP
    2019 c           end if
    2020 c13    continue
    2021 
    2022 !     ---------------------------------------------------!
    2023 c
    2024 c END   find unpermittable data.....
    2025 cv2.2.1.1     DO i=1, klon
    2026 c     i=1
    2027 c     seed=i
    2028 c
    2029 cv3.4
    2030       if (debut) then
     1954c
     1955cIM: initialisation de seed
    20311956        DO i=1, klon
    20321957          seed(i)=i+100
    2033 c         seed(i)=i+50
    20341958        ENDDO
    2035       endif
    2036 c     seed=aint(ran0(klon))
    2037 c     CALL ISCCP_CLOUD_TYPES(klev,ncol,seed,pfull(i,:),phalf(i,:)
    2038 cv2.2.1.1
    2039 c     CALL ISCCP_CLOUD_TYPES(klev,ncol,seed(i),pfull(i,:),phalf(i,:)
    2040 c    &     ,q_seri(i,:),
    2041 c    &     cldtot(i,:),rnebcon(i,:),dtau_s(i,:),dtau_c(i,:),
    2042 c    &     top_height,overlap,
    2043 c    &     tautab,invtau,ztsol,emsfc_lw,t_seri(i,:),dem_s(i,:),
    2044 c    &     dem_c(i,:),
    2045 c    &     fq_isccp(i,:,:),
    2046 c    &     totalcldarea(i),meanptop(i),meantaucld(i),
    2047 c    &     boxtau(i,:),boxptop(i,:))
    2048 cv2.2.1.1
    2049 cv3.4
     1959      ENDIF !debut
     1960cIM: pas de debug, debugcol
    20501961      debug=0
    20511962      debugcol=0
    20521963cIM260503
    2053 c o500 ==> distribution nuage ftion du regime dynamique
    2054       DO i=1, klon
    2055        o500(i)=omega(i,8)*864.
    2056 c      PRINT*,'pphi8 ',pphi(i,8),'zphi8,11,12',zphi(i,8),
    2057 c    & zphi(i,11),zphi(i,12)
    2058       ENDDO
    2059 
    2060 c axe vertical pour les differents niveaux des histogrammes
    2061 c     DO iw=1, iwmax
    2062 c       zx_o500(iw)=wmin+(iw-1./2.)*pas_w
    2063 c     ENDDO
    2064 c     PRINT*,' phys AVANT seed(3361)=',seed(3361)
     1964c o500 ==> distribution nuage ftion du regime dynamique a 500 hPa
     1965        DO k=1, klevm1
     1966        kp1=k+1
     1967c       PRINT*,'k, presnivs',k,presnivs(k), presnivs(kp1)
     1968        if(presnivs(k).GT.50000.AND.presnivs(kp1).LT.50000.) THEN
     1969         DO i=1, klon
     1970          o500(i)=omega(i,k)*RDAY/100.
     1971c         if(i.EQ.1) print*,' 500hPa lev',k,presnivs(k),presnivs(kp1)
     1972         ENDDO
     1973         GOTO 1000
     1974        endif
     19751000  continue
     1976      ENDDO
     1977
    20651978      CALL ISCCP_CLOUD_TYPES(
    20661979     &     debug,
     
    20731986     &     pfull,
    20741987     &     phalf,
    2075 c var de bas en haut ==> PB !
    2076 c    &     q_seri,
    2077 c    &     cldtot,
    2078 c    &     rnebcon,
    2079 c    &     dtau_s,
    2080 c    &     dtau_c,
    2081 c var de Haut en Bas BEG
    20821988     &     qv, cc, conv, dtau_sH2B, dtau_cH2B,
    2083 c var de Haut en Bas END
    20841989     &     top_height,
    20851990     &     overlap,
     
    20881993     &     ztsol,
    20891994     &     emsfc_lw,
    2090 c var de bas en haut ==> PB !
    2091 c    &     t_seri,
    2092 c    &     dem_s,
    2093 c    &     dem_c,
    2094 c var de Haut en Bas BEG
    20951995     &     at, dem_sH2B, dem_cH2B,
    2096 cIM260503
    2097 c    &     o500, pct_ocean,
    2098 c var de Haut en Bas END
    20991996     &     fq_isccp,
    21001997     &     totalcldarea,
     
    21032000     &     boxtau,
    21042001     &     boxptop)
    2105 c    &     boxptop,
    2106 cIM 260503
    2107 c    &     histoW,
    2108 c    &     nhistoW   
    2109 c    &)
    2110 
    2111 cIM 200603
    2112 c     PRINT*,'physiq fq_isccp(6,1,1)',fq_isccp(6,1,1)
    2113        
    2114 cIM 200603
    2115 cIM somme de toutes les nhistoW BEG
    2116 c     DO k = 1, kmaxm1
    2117 c     DO l = 1, lmaxm1
    2118 c     DO iw = 1, iwmax
    2119 c     nhistoWt(k,l,iw)=nhistoWt(k,l,iw)+nhistoW(k,l,iw)
    2120 ccc      IF(k.EQ.1.AND.l.EQ.1.AND.iw.EQ.1) then
    2121 c      IF(nhistoWt(k,l,iw).NE.0.) THEN
    2122 c       PRINT*,' physiq nWt', k,l,iw,nhistoWt(k,l,iw)
    2123 c      ENDIF
    2124 c     ENDDO
    2125 c     ENDDO
    2126 c     ENDDO
    2127 cIM somme de toutes les nhistoW END
    2128 c     PRINT*,' phys APRES seed(3361)=',seed(3361)
    2129 cv3.4
    2130 c     i=i+1
    2131 c     IF(i.LE.klon) THEN
    2132 c      GOTO 1011
    2133 c     ENDIF
    2134 cv2.2.1.1     ENDDO
     2002
    21352003
    21362004c passage de la grille (klon,7,7) a (iim,jjmp1,7,7)
    2137 c     minfq3d=100.
    2138 c     maxfq3d=0.
    2139 cIM calcul des correspondances entre la grille physique et
    2140 cIM la grille dynamique
    2141 c     DO i=1, klon
    2142 c       grid_phys(i)=i
    2143 c       PRINT*,'i, grid_phys',i,grid_phys(i)
    2144 c     ENDDO
    2145 c     CALL gr_fi_dyn(1,klon,iimp1,jjmp1,grid_phys,grid_dyn)
    2146 c     DO j=1, jjmp1
    2147 c       DO i=1, iimp1
    2148 c        PRINT*,'i,j grid_dyn ',i,j,grid_dyn(i,j)
    2149 c       ENDDO
    2150 c     ENDDO
    2151 c
    2152       DO l=1, lmax
    2153        DO k=1, kmax
    2154 cIM grille physique ==> grille ecriture 2D (iim,jjmp1)
    2155 c
     2005      DO l=1, lmaxm1
     2006       DO k=1, kmaxm1
    21562007        DO i=1, iim
    2157           fq4d(i,1,k,l)=fq_isccp(1,k,l)
    2158 cc         PRINT*,'first j=1 i =',i
     2008         fq4d(i,1,k,l)=fq_isccp(1,k,l)
    21592009        ENDDO
    21602010        DO j=2, jjm
    2161           DO i=1, iim
    2162 cERROR ??         ig=i+iim*(j-1)
     2011         DO i=1, iim
    21632012          ig=i+1+(j-2)*iim
    2164 cc         PRINT*,'i =',i,'j =',j,'ig=',ig
    21652013          fq4d(i,j,k,l)=fq_isccp(ig,k,l)             
    21662014         ENDDO
    21672015        ENDDO
    21682016        DO i=1, iim
    2169           fq4d(i,jjmp1,k,l)=fq_isccp(klon,k,l)
    2170 cc         PRINT*,'last jjmp1 i =',i
     2017         fq4d(i,jjmp1,k,l)=fq_isccp(klon,k,l)
    21712018        ENDDO
    2172         IF(debut) THEN
    2173         DO j=1, jjmp1
    2174           DO i=1, iim
    2175             IF(j.GE.2.AND.j.LE.jjm) THEN
    2176               igfi2D(i,j)=i+1+(j-2)*iim
    2177 c             PRINT*,'i=',i,'j=',j,'ig=',igfi2D(i,j)
    2178             ELSEIF(j.EQ.1) THEN
    2179               igfi2D(i,j)=1
    2180 c             PRINT*,'i=',i,'j=',j,'ig=',igfi2D(i,j)
    2181             ELSEIF(j.EQ.jjmp1) THEN
    2182               igfi2D(i,j)=klon
    2183 c             PRINT*,'i=',i,'j=',j,'ig=',igfi2D(i,j)
    2184             ENDIF
    2185           ENDDO
    2186         ENDDO
    2187         ENDIF
    2188 c       STOP
    2189 c
    2190 c       CALL gr_fi_ecrit(1,klon,iim,jjmp1,fq_isccp(:,k,l),
    2191 c    $       fq4d(:,:,k,l))
    21922019       ENDDO
    21932020      ENDDO
    2194       DO l=1, lmax
    2195        fq4d(:,:,8,l)=-1.e+10
    2196        fq4d(:,:,l,8)=-1.e+10
    2197       ENDDO
    2198       DO l=1, lmax
    2199        DO k=1, kmax 
     2021c
     2022      DO l=1, lmaxm1
     2023       DO k=1, kmaxm1 
    22002024        DO j=1, jjmp1
    22012025         DO i=1, iim
    2202 
    2203 c inversion TAU ?!
    2204 c         ni=(i-1)*lmax+l
    2205 c         nj=(j-1)*kmax+kmax-k+1
    2206 c
    2207 c210503 inversion en PC ==> pas besoin !!!
    2208 c         ni=(i-1)*lmax+lmax-l+1
    2209 c         nj=(j-1)*kmax+k
    2210 c
    2211 c210503
    2212           ni=(i-1)*lmax+l
    2213           nj=(j-1)*kmax+k
    2214  
    2215 c210503         if(k.EQ.8) then
    2216 c          fq4d(i,j,8,l)=-1.e+10
    2217 c         endif
    2218 
    2219 c210503         if(l.EQ.8) then
    2220 c          fq4d(i,j,k,8)=-1.e+10
    2221 c         endif
    2222 
    2223           fq3d(ni,nj)=fq4d(i,j,k,l)
    2224 
    2225 c         if(fq3d(ni,nj).lt.0.) then
    2226 c          print*,' fq3d LT ZERO ',ni,nj,fq3d(ni,nj)
    2227 c         endif
    2228 c         if(fq3d(ni,nj).gt.100.) then
    2229 c          print*,' fq3d GT 100 ',ni,nj,fq3d(ni,nj)
    2230 c         endif
    2231 c max & min fq3d
    2232 c         if(fq3d(ni,nj).gt.maxfq3d) maxfq3d=fq3d(ni,nj)
    2233 c         if(fq3d(ni,nj).lt.minfq3d) minfq3d=fq3d(ni,nj)
    2234          
     2026           ni=(i-1)*lmaxm1+l
     2027           nj=(j-1)*kmaxm1+k
     2028           fq3d(ni,nj)=fq4d(i,j,k,l)
    22352029         ENDDO
    22362030        ENDDO
    2237 c       fq4d(:,:,8,l)=-1.e+10
    2238 c       fq4d(:,:,k,8)=-1.e+10
    2239 c       k=k+1
    2240 c       if(k.LE.kmax) then
    2241 c        goto 1022
    2242 c       endif
    22432031       ENDDO
    2244 c      l=l+1
    2245 c      if(l.LE.lmax) then
    2246 c       goto 1021
    2247 c      endif
    2248       ENDDO
    2249 
    2250 c     print*,' minfq3d=',minfq3d,' maxfq3d=',maxfq3d
     2032      ENDDO
     2033
    22512034c
    22522035c calculs statistiques distribution nuage ftion du regime dynamique
    2253 c     DO i=1, klon
    2254 c!      o500(i)=omega(i,9)*864.
    2255 c!      PRINT*,' o500=',o500(i),' pphi(9)=',pphi(i,9)
    2256 c       o500(i)=omega(i,8)*864.
    2257 cc      PRINT*,' pphi(8)',pphi(i,8),'pphi(11)',pphi(i,11),
    2258 cc    .'pphi(12)',pphi(i,12)
    2259 cc      PRINT*,' zphi8,11,12=',zphi(i,8),zphi(i,11),zphi(i,12)
    2260 cc     PRINT*,' o500',o500(i),' w500',w500(i)
    2261 c     ENDDO
    2262 
    2263 c axe vertical pour les differents niveaux des histogrammes
    2264 c     DO iw=1, iwmax
    2265 c       zx_o500(iw)=wmin+(iw-1./2.)*pas_w
    2266 c     ENDDO
    2267 
    2268 
     2036c
    22692037c Ce calcul doit etre fait a partir de valeurs mensuelles ??
    2270 cc     CALL histo_o500_pctau(o500,fq4d,histoW)
    2271 cc     CALL histo_o500_pctau(paire,pctsrf,o500,fq4d,histoW)
    2272 cc     CALL histo_o500_pctau(pct_ocean,rlat,o500,fq4d,histoW)
    2273 ccOK ???     CALL histo_o500_pctau(pct_ocean,o500,fq4d,histoW)
    2274 c     CALL histo_o500_pctau(klon,pct_ocean,o500,fq4d,histoW,nhistoW)
    2275 c     CALL histo_o500_pctau(klon,pct_ocean,o500,fq_isccp,
    2276       CALL histo_o500_pctau(nbreg,pct_ocean,o500,fq_isccp,
     2038      CALL histo_o500_pctau(nbregdyn,pct_ocean,o500,fq_isccp,
    22772039     &histoW,nhistoW)
    22782040c
    2279 cIM somme de toutes les nhistoW BEG
    2280       DO nreg=1, nbreg
    2281       DO k = 1, kmaxm1
    2282       DO l = 1, lmaxm1
    2283       DO iw = 1, iwmax
    2284        nhistoWt(k,l,iw,nreg)=nhistoWt(k,l,iw,nreg)+
    2285      & nhistoW(k,l,iw,nreg)
    2286 ccc      IF(k.EQ.1.AND.l.EQ.1.AND.iw.EQ.1) then
    2287 c      IF(nhistoWt(k,l,iw).NE.0.) THEN
    2288 c       PRINT*,' physiq nWt', k,l,iw,nhistoWt(k,l,iw)
    2289 c      ENDIF
    2290       ENDDO
    2291       ENDDO
    2292       ENDDO
    2293       ENDDO
    2294 cIM somme de toutes les nhistoW END
    2295 c
    2296 c     IF(lafin) THEN   
    2297 c     DO nreg=1, nbreg
    2298 c     DO iw=1, iwmax
    2299 c     DO l=1,lmaxm1
    2300 c     DO k=1,kmaxm1
    2301 c      IF(histoW(k,l,iw,nreg).NE.0.) then
    2302 c        PRINT*,'physiq H nH',k,l,iw,
    2303 c    &       histoW(k,l,iw,nreg),
    2304 c    &       nhistoW(k,l,iw,nreg),nhistoWt(k,l,iw,nreg)
    2305 c      ENDIF
    2306 c     ENDDO
    2307 c     ENDDO
    2308 c     ENDDO
    2309 c     ENDDO
    2310 cIM verif fq_isccp, fq4d, fq3d
    2311 c     DO l=1, lmaxm1
    2312 c       DO k=1,kmaxm1
    2313 c     i=74
    2314 c     j=36
    2315 c     DO j=1, jjmp1
    2316 c      DO i=1, iim
    2317 c       DO l=1, lmaxm1
    2318 c         WRITE(*,'(a,3i4,7f10.4)')
    2319 c    &    'fq_isccp,j,i,l=',j,i,l,
    2320 c    &    (fq_isccp(igfi2D(i,j),k,l),k=1,kmaxm1)
    2321 c         WRITE(*,'(a,3i4,7f10.4)')
    2322 c    &    'fq4d,j,i,l=',j,i,l,(fq4d(i,j,k,l),k=1,kmaxm1)
    2323 c       ENDDO
    2324 c      ENDDO
    2325 c     ENDDO
    2326 c     ni1=(i-1)*8+1
    2327 c     ni2=i*8
    2328 c     nj1=(j-1)*8+1
    2329 c     nj2=j*8
    2330 c     DO ni=ni1,ni2
    2331 c     WRITE(*,'(a,2i4,7f10.4)')
    2332 c    &     'fq3d, ni,nj=',ni,nj,
    2333 c    &      (fq3d(ni,nj),nj=nj1,nj2)
    2334 c     ENDDO
    2335 c     ENDIF
    2336 
    2337 c     DO iw=1, iwmax
    2338 c      DO l=1,lmaxm1
    2339 c       DO k=1,kmaxm1
    2340 c        PRINT*,' iw,l,k,nhistoW=',iw,l,k,nhistoW(k,l,iw)
    2341 c       ENDDO
    2342 c      ENDDO
    2343 c     ENDDO
    2344 
    2345 c       DO iw=1, iwmax
    2346 c        DO l=1, lmaxm1
    2347 c         linv=lmaxm1-l+1
    2348 c         DO k=1, kmaxm1
    2349 c         histoWinv(k,l,iw)=histoW(iw,k,l)
    2350 c       ENDDO
    2351 c      ENDDO
    2352 c     ENDDO
    2353 c
    2354 c pb syncronisation ?? : 48 * 30 * 7 (jour1) + 48* 29 * 7 (jour suivant)
    2355 c
    2356 
    2357 
     2041c nhistoWt = somme de toutes les nhistoW
     2042      DO nreg=1, nbregdyn
     2043       DO k = 1, kmaxm1
     2044        DO l = 1, lmaxm1
     2045         DO iw = 1, iwmax
     2046          nhistoWt(k,l,iw,nreg)=nhistoWt(k,l,iw,nreg)+
     2047     &    nhistoW(k,l,iw,nreg)
     2048         ENDDO
     2049        ENDDO
     2050       ENDDO
     2051      ENDDO
     2052c
    23582053      ENDIF !ok_isccp
    2359 cIM ISCCP simulator END
    23602054
    23612055c   On prend la somme des fractions nuageuses et des contenus en eau
     
    23632057      cldliq(:,:)=cldliq(:,:)+rnebcon(:,:)*clwcon(:,:)
    23642058
    2365 
    23662059      ENDIF
     2060
    23672061c
    23682062c 2. NUAGES STARTIFORMES
     
    24232117      CALL newmicro (paprs, pplay,ok_newmicro,
    24242118     .            t_seri, cldliq, cldfra, cldtau, cldemi,
    2425      .            cldh, cldl, cldm, cldt, cldq)
     2119     .            cldh, cldl, cldm, cldt, cldq,
     2120     .            flwp, fiwp, flwc, fiwc)
    24262121      else
    24272122      CALL nuage (paprs, pplay,
     
    24502145!      albsollw = albsollw1
    24512146      CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    2452 cIM  e            (dist, rmu0, fract, co2_ppm, solaire,
    24532147     e            (dist, rmu0, fract,
    24542148     e             paprs, pplay,zxtsol,albsol, albsollw, t_seri,q_seri,
     
    24582152     s             topsw,toplw,solsw,sollw,
    24592153     s             sollwdown,
    2460 cccIMs             topsw0,toplw0,solsw0,sollw0)
    24612154     s             topsw0,toplw0,solsw0,sollw0,
    24622155     s             swdn0, swdn, swup0, swup     )
     
    26582351     s                   ve, vq, ue, uq)
    26592352c
     2353c
    26602354c Accumuler les variables a stocker dans les fichiers histoire:
    26612355c
     
    26922386      END IF
    26932387C
    2694 cccIM cf. FH
    26952388c=======================================================================
    26962389c   SORTIES
     
    26992392c   Interpollation sur quelques niveaux de pression
    27002393c   -----------------------------------------------
    2701 
     2394c
     2395cIM sorties sur les 17 niveaux de pression du NMC
     2396c 1000 hPa
     2397      call plevel(klon,klev,.true. ,pplay,100000.,u_seri,u1000)
     2398      call plevel(klon,klev,.false.,pplay,100000.,v_seri,v1000)
     2399c 925 hPa
     2400      call plevel(klon,klev,.true. ,pplay,92500.,u_seri,u925)
     2401      call plevel(klon,klev,.false.,pplay,92500.,v_seri,v925)
     2402c 850 hPa
    27022403      call plevel(klon,klev,.true. ,pplay,85000.,u_seri,u850)
    27032404      call plevel(klon,klev,.false.,pplay,85000.,v_seri,v850)
     2405c 700 hPa
     2406      call plevel(klon,klev,.true. ,pplay,70000.,u_seri,u700)
     2407      call plevel(klon,klev,.false.,pplay,70000.,v_seri,v700)
     2408c 600 hPa
     2409      call plevel(klon,klev,.true. ,pplay,60000.,u_seri,u600)
     2410      call plevel(klon,klev,.false.,pplay,60000.,v_seri,v600)
     2411c 500 hPa
    27042412      call plevel(klon,klev,.true. ,pplay,50000.,u_seri,u500)
    27052413      call plevel(klon,klev,.false.,pplay,50000.,v_seri,v500)
     2414c 400 hPa
     2415      call plevel(klon,klev,.true. ,pplay,40000.,u_seri,u400)
     2416      call plevel(klon,klev,.false.,pplay,40000.,v_seri,v400)
     2417c 300 hPa
     2418      call plevel(klon,klev,.true. ,pplay,30000.,u_seri,u300)
     2419      call plevel(klon,klev,.false.,pplay,30000.,v_seri,v300)
     2420c 250 hPa
     2421      call plevel(klon,klev,.true. ,pplay,25000.,u_seri,u250)
     2422      call plevel(klon,klev,.false.,pplay,25000.,v_seri,v250)
     2423c 200 hPa
    27062424      call plevel(klon,klev,.true. ,pplay,20000.,u_seri,u200)
    27072425      call plevel(klon,klev,.false.,pplay,20000.,v_seri,v200)
     2426c 150 hPa
     2427      call plevel(klon,klev,.true. ,pplay,15000.,u_seri,u150)
     2428      call plevel(klon,klev,.false.,pplay,15000.,v_seri,v150)
     2429c 100 hPa
     2430      call plevel(klon,klev,.true. ,pplay,10000.,u_seri,u100)
     2431      call plevel(klon,klev,.false.,pplay,10000.,v_seri,v100)
     2432c 70 hPa
     2433      call plevel(klon,klev,.true. ,pplay,7000.,u_seri,u70)
     2434      call plevel(klon,klev,.false.,pplay,7000.,v_seri,v70)
     2435c 50 hPa
     2436      call plevel(klon,klev,.true. ,pplay,5000.,u_seri,u50)
     2437      call plevel(klon,klev,.false.,pplay,5000.,v_seri,v50)
     2438c 30 hPa
     2439      call plevel(klon,klev,.true. ,pplay,3000.,u_seri,u30)
     2440      call plevel(klon,klev,.false.,pplay,3000.,v_seri,v30)
     2441c 20 hPa
     2442      call plevel(klon,klev,.true. ,pplay,2000.,u_seri,u20)
     2443      call plevel(klon,klev,.false.,pplay,2000.,v_seri,v20)
     2444c 10 hPa
     2445      call plevel(klon,klev,.true. ,pplay,1000.,u_seri,u10)
     2446      call plevel(klon,klev,.false.,pplay,1000.,v_seri,v10)
     2447c
    27082448      call plevel(klon,klev,.true. ,pplay,50000.,zphi,phi500)
    27092449      call plevel(klon,klev,.true. ,paprs,50000.,omega,w500)
    2710 
    2711 cIM cf. FH     slp(:) = paprs(:,1)*exp(pphis(:)/(289.*t_seri(:,1)))
     2450c slp sea level pressure
    27122451      slp(:) = paprs(:,1)*exp(pphis(:)/(RD*t_seri(:,1)))
    2713 c     PRINT*,' physiq slp ',slp(2185),paprs(2185,1),pphis(2185),
    2714 c    .       RD,t_seri(2185,1)
    27152452c
    27162453ccc prw = eau precipitable
    27172454      DO i = 1, klon
    27182455       prw(i) = 0.
     2456       DO k = 1, klev
     2457        prw(i) = prw(i) +
     2458     .           q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
     2459       ENDDO
     2460      ENDDO
     2461c
     2462cIM sorties bilans energie cinetique et potentielle MJO
    27192463      DO k = 1, klev
    2720        prw(i) = prw(i) +
    2721      .          q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    2722       ENDDO
    2723 c      PRINT*,' i ',i,' prw',prw(i)
    2724       ENDDO
    2725 c
    2726 
     2464      DO i = 1, klon
     2465        d_u_oli(i,k) = d_u_oro(i,k) + d_u_lif(i,k)
     2466        d_v_oli(i,k) = d_v_oro(i,k) + d_v_lif(i,k)
     2467      ENDDO
     2468      ENDDO
    27272469c=============================================================
    27282470c   Ecriture des sorties
    27292471c=============================================================
     2472#ifdef histREGDYN
     2473#include "write_histREGDYN.h"
     2474#endif
    27302475
    27312476#ifdef histISCCP
     
    27392484#include "write_histday.h"
    27402485#include "write_histmth.h"
     2486
     2487#ifdef histmthNMC
     2488#include "write_histmthNMC.h"
     2489#endif
     2490
    27412491#include "write_histins.h"
    27422492
Note: See TracChangeset for help on using the changeset viewer.