Ignore:
Timestamp:
Jun 4, 2007, 4:34:47 PM (17 years ago)
Author:
Laurent Fairhead
Message:

Merge entre la version V3_conv et le HEAD
YM, JG, LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r719 r766  
    33!
    44c
     5c#define IO_DEBUG
     6
    57      SUBROUTINE physiq (nlon,nlev,nqmax,
    68     .            debut,lafin,rjourvrai,gmtime,pdtphys,
     
    1618
    1719      USE ioipsl
    18       USE histcom
    19 #ifdef INCA
    20       USE chemshut
    21       USE species_names
    22 #ifdef INCA_CH4
    23 !      USE obs_pos
    24 #endif
    25 #endif
     20      USE comgeomphy
     21      USE write_field_phy
     22      USE dimphy
     23      USE iophy
     24      USE misc_mod, mydebug=>debug
     25      USE vampir
    2626      IMPLICIT none
    2727c======================================================================
     
    3737c   CLEFS CPP POUR LES IO
    3838c   =====================
    39 #define histins
    40 #define histhf
    41 #define histday
     39c#define histhf
     40c#define histday
    4241#define histmth
    43 #define histmthNMC
    44 #define histISCCP
     42c#define histins
     43c#define histmthNMC
     44c#define histISCCP
    4545c======================================================================
    4646c    modif   ( P. Le Van ,  12/10/98 )
     
    8080      integer jjmp1
    8181      parameter (jjmp1=jjm+1-1/jjm)
    82 #include "dimphy.h"
     82      integer iip1
     83      parameter (iip1=iim+1)
     84cym#include "dimphy.h"
    8385#include "regdim.h"
    8486#include "indicesol.h"
     
    8890#include "logic.h"
    8991#include "temps.h"
    90 #include "comgeomphy.h"
     92cym#include "comgeomphy.h"
    9193#include "advtrac.h"
    9294#include "iniprint.h"
     
    106108#include "oasis.h"
    107109      INTEGER,SAVE :: npas, nexca
     110c$OMP THREADPRIVATE(npas, nexca)
    108111      logical rnpb
    109112#ifdef INCA
     
    115118      character*6 ocean
    116119      SAVE ocean
    117 
     120c$OMP THREADPRIVATE(ocean)
    118121c      parameter (ocean = 'force ')
    119122c     parameter (ocean = 'couple')
    120123      logical ok_ocean
    121124      SAVE ok_ocean
     125c$OMP THREADPRIVATE(ok_ocean)
    122126c
    123127cIM "slab" ocean
     
    137141      logical ok_veget
    138142      save ok_veget
     143c$OMP THREADPRIVATE(ok_veget)
    139144c     parameter (ok_veget = .true.)
    140145c      parameter (ok_veget = .false.)
     
    156161      LOGICAL ok_journe ! sortir le fichier journalier
    157162      save ok_journe
     163c$OMP THREADPRIVATE(ok_journe)
    158164c      PARAMETER (ok_journe=.true.)
    159165c
    160166      LOGICAL ok_mensuel ! sortir le fichier mensuel
    161167      save ok_mensuel
     168c$OMP THREADPRIVATE(ok_mensuel)
    162169c      PARAMETER (ok_mensuel=.true.)
    163170c
    164171      LOGICAL ok_instan ! sortir le fichier instantane
    165172      save ok_instan
     173c$OMP THREADPRIVATE(ok_instan)
    166174c      PARAMETER (ok_instan=.true.)
    167175c
     
    172180      REAL fm_therm(klon,klev+1)
    173181      REAL entr_therm(klon,klev)
    174       real q2(klon,klev+1,nbsrf)
    175       save q2
     182      real,allocatable,save :: q2(:,:,:)
     183c$OMP THREADPRIVATE(q2)
     184cym      save q2
    176185c======================================================================
    177186c
     
    207216      REAL qx(klon,klev,nqmax)
    208217
    209       REAL t_ancien(klon,klev), q_ancien(klon,klev)
    210       SAVE t_ancien, q_ancien
     218      REAL,allocatable,save :: t_ancien(:,:), q_ancien(:,:)
     219c$OMP THREADPRIVATE(t_ancien, q_ancien)
     220cym      SAVE t_ancien, q_ancien
    211221      LOGICAL ancien_ok
    212222      SAVE ancien_ok
    213 
     223c$OMP THREADPRIVATE(ancien_ok)
    214224      REAL d_t_dyn(klon,klev)
    215225      REAL d_q_dyn(klon,klev)
     
    233243      CHARACTER*3 ctetaSTD(nbteta)
    234244      DATA ctetaSTD/'350','380','405'/
     245      SAVE ctetaSTD
     246c$OMP THREADPRIVATE(ctetaSTD)
    235247      REAL rtetaSTD(nbteta)
    236248      DATA rtetaSTD/350., 380., 405./
     249      SAVE rtetaSTD
     250c$OMP THREADPRIVATE(rtetaSTD)     
    237251c
    238252      REAL PVteta(klon,nbteta)
     
    241255cMI Amip2 PV a theta constante
    242256
    243       INTEGER klevp1, klevm1
    244       PARAMETER(klevp1=klev+1,klevm1=klev-1)
    245 #include "raddim.h"
    246 c
    247       REAL swdn0(klon,klevp1), swdn(klon,klevp1)
    248       REAL swup0(klon,klevp1), swup(klon,klevp1)
    249       SAVE swdn0 , swdn, swup0, swup
    250 c
    251       REAL SWdn200clr(klon), SWdn200(klon)
    252       REAL SWup200clr(klon), SWup200(klon)
    253       SAVE SWdn200clr, SWdn200, SWup200clr, SWup200
    254 c
    255       REAL lwdn0(klon,klevp1), lwdn(klon,klevp1)
    256       REAL lwup0(klon,klevp1), lwup(klon,klevp1)
    257       SAVE lwdn0 , lwdn, lwup0, lwup
    258 c
    259       REAL LWdn200clr(klon), LWdn200(klon)
    260       REAL LWup200clr(klon), LWup200(klon)
    261       SAVE LWdn200clr, LWdn200, LWup200clr, LWup200
    262 c
    263       REAL LWdnTOA(klon), LWdnTOAclr(klon)
    264       SAVE LWdnTOA, LWdnTOAclr
     257cym      INTEGER klevp1, klevm1
     258cym      PARAMETER(klevp1=klev+1,klevm1=klev-1)
     259cym#include "raddim.h"
     260c
     261
     262      REAL,allocatable,save :: swdn0(:,:), swdn(:,:)
     263      REAL,allocatable,save :: swup0(:,:), swup(:,:)
     264c$OMP THREADPRIVATE(swdn0 , swdn, swup0, swup)
     265cym      SAVE swdn0 , swdn, swup0, swup
     266c
     267      REAL,allocatable,save :: SWdn200clr(:), SWdn200(:)
     268      REAL,allocatable,save :: SWup200clr(:), SWup200(:)
     269c$OMP THREADPRIVATE(SWdn200clr, SWdn200, SWup200clr, SWup200)
     270cym      SAVE SWdn200clr, SWdn200, SWup200clr, SWup200
     271c
     272      REAL,allocatable,save :: lwdn0(:,:), lwdn(:,:)
     273      REAL,allocatable,save :: lwup0(:,:), lwup(:,:)
     274c$OMP THREADPRIVATE(lwdn0 , lwdn, lwup0, lwup)
     275cym      SAVE lwdn0 , lwdn, lwup0, lwup
     276c
     277      REAL,allocatable,save :: LWdn200clr(:), LWdn200(:)
     278      REAL,allocatable,save :: LWup200clr(:), LWup200(:)
     279c$OMP THREADPRIVATE(LWdn200clr, LWdn200, LWup200clr, LWup200)
     280cym      SAVE LWdn200clr, LWdn200, LWup200clr, LWup200
     281c
     282      REAL,allocatable,save :: LWdnTOA(:), LWdnTOAclr(:)
     283c$OMP THREADPRIVATE(LWdnTOA, LWdnTOAclr)
     284cym      SAVE LWdnTOA, LWdnTOAclr
    265285c
    266286cIM Amip2
     
    273293     .60000., 50000., 40000., 30000., 25000., 20000.,
    274294     .15000., 10000., 7000., 5000., 3000., 2000., 1000./
     295      SAVE rlevstd
     296c$OMP THREADPRIVATE(rlevSTD)
    275297      CHARACTER*4 clevSTD(nlevSTD)
    276298      DATA clevSTD/'1000','925 ','850 ','700 ','600 ',
    277299     .'500 ','400 ','300 ','250 ','200 ','150 ','100 ',
    278300     .'70  ','50  ','30  ','20  ','10  '/
     301      SAVE clevSTD
     302c$OMP THREADPRIVATE(clevSTD)
    279303c
    280304      CHARACTER*3 bb2
     
    290314      PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
    291315c
    292       REAL tsumSTD(klon,nlevSTD,nout)
    293       REAL usumSTD(klon,nlevSTD,nout), vsumSTD(klon,nlevSTD,nout)
    294       REAL wsumSTD(klon,nlevSTD,nout), phisumSTD(klon,nlevSTD,nout)
    295       REAL qsumSTD(klon,nlevSTD,nout), rhsumSTD(klon,nlevSTD,nout)
    296 c
    297       SAVE tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD,
    298      .     qsumSTD, rhsumSTD
     316      REAL,SAVE,ALLOCATABLE :: tsumSTD(:,:,:)
     317      REAL,SAVE,ALLOCATABLE :: usumSTD(:,:,:), vsumSTD(:,:,:)
     318      REAL,SAVE,ALLOCATABLE :: wsumSTD(:,:,:), phisumSTD(:,:,:)
     319      REAL,SAVE,ALLOCATABLE :: qsumSTD(:,:,:), rhsumSTD(:,:,:)
     320c
     321cym      SAVE tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD,
     322cym     .     qsumSTD, rhsumSTD
     323c$OMP THREADPRIVATE(tsumSTD, usumSTD, vsumSTD, wsumSTD, phisumSTD)
     324c$OMP THREADPRIVATE(qsumSTD, rhsumSTD)
    299325c
    300326      logical oknondef(klon,nlevSTD,nout)
    301       real tnondef(klon,nlevSTD,nout)
    302       save tnondef
     327      real,SAVE,ALLOCATABLE :: tnondef(:,:,:)
     328c$OMP THREADPRIVATE(tnondef)
     329cym      save tnondef
    303330c
    304331c les produits uvSTD, vqSTD, .., T2STD sont calcules
     
    311338      real wqSTD(klon,nlevSTD)
    312339c
    313       real uvsumSTD(klon,nlevSTD,nout)
    314       real vqsumSTD(klon,nlevSTD,nout)
    315       real vTsumSTD(klon,nlevSTD,nout)
    316       real wqsumSTD(klon,nlevSTD,nout)
     340      real,save,allocatable :: uvsumSTD(:,:,:)
     341      real,save,allocatable :: vqsumSTD(:,:,:)
     342      real,save,allocatable :: vTsumSTD(:,:,:)
     343      real,save,allocatable :: wqsumSTD(:,:,:)
    317344c
    318345      real vphiSTD(klon,nlevSTD)
     
    322349      real T2STD(klon,nlevSTD)
    323350c
    324       real vphisumSTD(klon,nlevSTD,nout)
    325       real wTsumSTD(klon,nlevSTD,nout)
    326       real u2sumSTD(klon,nlevSTD,nout)
    327       real v2sumSTD(klon,nlevSTD,nout)
    328       real T2sumSTD(klon,nlevSTD,nout)
    329 c
    330       SAVE uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD
    331       SAVE vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD
     351      real,save,allocatable :: vphisumSTD(:,:,:)
     352      real,save,allocatable :: wTsumSTD(:,:,:)
     353      real,save,allocatable :: u2sumSTD(:,:,:)
     354      real,save,allocatable :: v2sumSTD(:,:,:)
     355      real,save,allocatable :: T2sumSTD(:,:,:)
     356c
     357cym      SAVE uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD
     358cym      SAVE vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD
     359c$OMP THREADPRIVATE(uvsumSTD, vqsumSTD, vTsumSTD, wqsumSTD)
     360c$OMP THREADPRIVATE(vphisumSTD, wTsumSTD, u2sumSTD, v2sumSTD, T2sumSTD)
     361
    332362cMI Amip2
    333363c
     
    347377      REAL cldt_s(klon),cldq_s(klon) !nuage total, eau liquide integree
    348378
    349       INTEGER kp1
     379      INTEGER linv, kp1
    350380c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
    351381c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
     
    361391cv3.4
    362392      INTEGER debug, debugcol
    363       INTEGER npoints
    364       PARAMETER(npoints=klon)
     393cym      INTEGER npoints
     394cym      PARAMETER(npoints=klon)
    365395c
    366396      INTEGER sunlit(klon) !sunlit=1 if day; sunlit=0 if night
     
    382412      DATA ifreq_isccp/3/
    383413      SAVE ifreq_isccp
     414c$OMP THREADPRIVATE(ifreq_isccp)
    384415      CHARACTER*5 typinout(napisccp)
    385416      DATA typinout/'i3od'/
     417      SAVE typinout
     418c$OMP THREADPRIVATE(typinout)
    386419cIM verif boxptop BEG
    387420      CHARACTER*1 verticaxe(napisccp)
    388421      DATA verticaxe/'1'/
     422      SAVE verticaxe
     423c$OMP THREADPRIVATE(verticaxe)
    389424cIM verif boxptop END
    390425      INTEGER nvlev(napisccp)
     
    392427      REAL t1, aa
    393428      REAL seed_re(klon,napisccp)
    394       INTEGER seed_old(klon,napisccp)
    395       SAVE seed_old
    396       INTEGER iphy(iim,jjmp1)
     429      INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:)
     430cym      SAVE seed_old
     431c$OMP THREADPRIVATE(seed_old)
     432cym !!!! A voir plus tard
     433cym      INTEGER iphy(iim,jjmp1)
    397434cIM parametres ISCCP END
    398435c
    399436c ncol = nb. de sous-colonnes pour chaque maille du GCM
    400437c ncolmx = No. max. de sous-colonnes pour chaque maille du GCM
    401       INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp)
     438c      INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp)
     439      INTEGER,SAVE :: ncol(napisccp)
     440      INTEGER ncolmx, seed(klon,napisccp)
    402441      REAL nbsunlit(nregISCtot,klon,napisccp)  !nbsunlit : moyenne de sunlit
    403442      PARAMETER(ncolmx=1500)
     
    407446cIM verif boxptop END
    408447c
    409       REAL tautab(0:255)
    410       INTEGER invtau(-20:45000)
     448      REAL,SAVE :: tautab_omp(0:255),tautab(0:255)
     449      INTEGER,SAVE :: invtau_omp(-20:45000),invtau(-20:45000)
     450c$OMP THREADPRIVATE(tautab,invtau)
    411451      REAL emsfc_lw
    412452      PARAMETER(emsfc_lw=0.99)
     
    456496      INTEGER iw, iwmax
    457497      REAL wmin, pas_w
     498c     PARAMETER(wmin=-100.,pas_w=10.,iwmax=30)
     499cIM 051005     PARAMETER(wmin=-200.,pas_w=10.,iwmax=40)
    458500      PARAMETER(wmin=-100.,pas_w=10.,iwmax=20)
    459501      REAL o500(klon)
     
    465507
    466508      INTEGER linv
    467       INTEGER pct_ocean(klon,nbregdyn)
    468       SAVE pct_ocean
     509      INTEGER,ALLOCATABLE,SAVE :: pct_ocean(:,:)
     510c$OMP THREADPRIVATE(pct_ocean)
     511cym      SAVE pct_ocean
    469512 
    470513c sorties ISCCP
     
    472515      integer nid_isccp
    473516      save nid_isccp       
     517c$OMP THREADPRIVATE(nid_isccp)
     518
     519c     data ok_isccp,ecrit_isccp/.true.,0.125/     
     520c     data ok_isccp,ecrit_isccp/.true.,1./     
     521cIM 190504     data ok_isccp/.true./     
     522cIM 190504 #else
     523cIM 190504     data ok_isccp/.false./
     524cIM 190504 #endif
    474525
    475526      REAL zx_tau(kmaxm1), zx_pc(lmaxm1), zx_o500(iwmax)
    476527      DATA zx_tau/0.0, 0.3, 1.3, 3.6, 9.4, 23., 60./
     528      SAVE zx_tau
     529cIM bad 151205     DATA zx_pc/50., 180., 310., 440., 560., 680., 800./
    477530      DATA zx_pc/180., 310., 440., 560., 680., 800., 1000./
    478 
     531      SAVE zx_pc
     532c$OMP THREADPRIVATE(zx_tau,zx_pc)
    479533c cldtopres pression au sommet des nuages
    480534      REAL cldtopres(lmaxm1), cldtopres3(lmax3)
    481535      DATA cldtopres/180., 310., 440., 560., 680., 800., 1000./
    482536      DATA cldtopres3/440., 680., 1000./
     537      SAVE cldtopres,cldtopres3
     538c$OMP THREADPRIVATE(cldtopres,cldtopres3)
     539cIM 051005 BEG
    483540      REAL tmp_his1_3d(iwmax,kmaxm1,lmaxm1,nbregdyn,napisccp)
    484541      REAL tmp_his2_3d(iwmax,kmaxm1,lmaxm1,nbregdyn,napisccp)
     
    492549      CHARACTER *3 pclev(lmaxm1)
    493550      DATA pclev/'pc1','pc2','pc3','pc4','pc5','pc6','pc7'/
     551      SAVE taulev,pclev
     552c$OMP THREADPRIVATE(taulev,pclev)
    494553c
    495554c cnameisccp
     
    545604     .                'pc= 680-800hPa, tau> 60.',
    546605     .                'pc= 800-1000hPa, tau> 60.'/
     606       SAVE cnameisccp
     607c$OMP THREADPRIVATE(cnameisccp)
    547608c
    548609c     REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7)
     
    558619      integer nid_hf, nid_hf3d
    559620      save ok_hf, nid_hf, nid_hf3d
    560 
     621c$OMP THREADPRIVATE(ok_hf, nid_hf, nid_hf3d)
    561622c  QUESTION : noms de variables ?
    562623
     
    566627      data ok_hf/.false./
    567628#endif
    568 
    569629      INTEGER        longcles
    570630      PARAMETER    ( longcles = 20 )
     
    575635      REAL xjour
    576636      SAVE xjour
     637c$OMP THREADPRIVATE(xjour)
    577638c
    578639c
     
    581642      REAL dtime
    582643      SAVE dtime                  ! pas temporel de la physique
     644c$OMP THREADPRIVATE(dtime)
    583645c
    584646      INTEGER radpas
    585647      SAVE radpas                 ! frequence d'appel rayonnement
    586 c
    587       REAL radsol(klon)
    588       SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
    589 c
    590       REAL rlat(klon)
    591       SAVE rlat                   ! latitude pour chaque point
    592 c
    593       REAL rlon(klon)
    594       SAVE rlon                   ! longitude pour chaque point
    595 c
    596       REAL rlonPOS(klon)
    597       SAVE rlonPOS                ! longitudes > 0. pour chaque point
     648c$OMP THREADPRIVATE(radpas)
     649c
     650      REAL,allocatable,save :: radsol(:)
     651c$OMP THREADPRIVATE(radsol)
     652cym      SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
     653c
     654      REAL,allocatable,save :: rlat(:)
     655c$OMP THREADPRIVATE(rlat)
     656cym      SAVE rlat                   ! latitude pour chaque point
     657c
     658      REAL,allocatable,save :: rlon(:)
     659c$OMP THREADPRIVATE(rlon)
     660cym      SAVE rlon                   ! longitude pour chaque point
     661
     662      REAL,SAVE,ALLOCATABLE :: rlonPOS(:)
     663c$OMP THREADPRIVATE(rlonPOS)   
     664cym      SAVE rlonPOS                ! longitudes > 0. pour chaque point
    598665c
    599666cc      INTEGER iflag_con
     
    602669      INTEGER itap
    603670      SAVE itap                   ! compteur pour la physique
     671c$OMP THREADPRIVATE(itap)
    604672c
    605673      REAL co2_ppm_etat0
     
    609677      real slp(klon) ! sea level pressure
    610678
    611       REAL ftsol(klon,nbsrf)
    612       SAVE ftsol                  ! temperature du sol
     679      REAL,allocatable,save :: ftsol(:,:)
     680c$OMP THREADPRIVATE(ftsol)
     681cym      SAVE ftsol                  ! temperature du sol
     682
    613683cIM
    614       REAL newsst(klon) !temperature de l'ocean
    615       SAVE newsst
    616 c
    617       REAL ftsoil(klon,nsoilmx,nbsrf)
    618       SAVE ftsoil                 ! temperature dans le sol
    619 c
    620       REAL fevap(klon,nbsrf)
    621       SAVE fevap                 ! evaporation
    622       REAL fluxlat(klon,nbsrf)
    623       SAVE fluxlat
    624 c
    625       REAL deltat(klon)
    626       SAVE deltat                 ! ecart avec la SST de reference
    627 c
    628       REAL fqsurf(klon,nbsrf)
    629       SAVE fqsurf                 ! humidite de l'air au contact de la surface
    630 c
    631       REAL qsol(klon)
    632       SAVE qsol                  ! hauteur d'eau dans le sol
    633 c
    634       REAL fsnow(klon,nbsrf)
    635       SAVE fsnow                  ! epaisseur neigeuse
    636 c
    637       REAL falbe(klon,nbsrf)
    638       SAVE falbe                  ! albedo par type de surface
    639       REAL falblw(klon,nbsrf)
    640       SAVE falblw                 ! albedo par type de surface
     684      REAL,SAVE,ALLOCATABLE :: newsst(:) !temperature de l'ocean
     685c$OMP THREADPRIVATE(newsst)
     686cym     SAVE newsst
     687c
     688      REAL,allocatable,save :: ftsoil(:,:,:)
     689c$OMP THREADPRIVATE(ftsoil)
     690cym      SAVE ftsoil                 ! temperature dans le sol
     691c
     692      REAL,allocatable,save :: fevap(:,:)
     693c$OMP THREADPRIVATE(fevap)
     694cym      SAVE fevap                 ! evaporation
     695      REAL,allocatable,save :: fluxlat(:,:)
     696c$OMP THREADPRIVATE(fluxlat)
     697cym      SAVE fluxlat
     698c
     699      REAL,allocatable,save :: deltat(:)
     700c$OMP THREADPRIVATE(deltat)
     701cym      SAVE deltat                 ! ecart avec la SST de reference
     702c
     703      REAL,allocatable,save :: fqsurf(:,:)
     704c$OMP THREADPRIVATE(fqsurf)
     705cym      SAVE fqsurf                 ! humidite de l'air au contact de la surface
     706c
     707      REAL,allocatable,save :: qsol(:)
     708c$OMP THREADPRIVATE(qsol)
     709cym      SAVE qsol                  ! hauteur d'eau dans le sol
     710c
     711      REAL,allocatable,save :: fsnow(:,:)
     712c$OMP THREADPRIVATE(fsnow)
     713cym      SAVE fsnow                  ! epaisseur neigeuse
     714c
     715      REAL,allocatable,save :: falbe(:,:)
     716c$OMP THREADPRIVATE(falbe)
     717cym      SAVE falbe                  ! albedo par type de surface
     718      REAL,allocatable,save :: falblw(:,:)
     719c$OMP THREADPRIVATE(falblw)     
     720cym      SAVE falblw                 ! albedo par type de surface
    641721
    642722c
     
    644724c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
    645725c
    646       REAL zmea(klon)
    647       SAVE zmea                   ! orographie moyenne
    648 c
    649       REAL zstd(klon)
    650       SAVE zstd                   ! deviation standard de l'OESM
    651 c
    652       REAL zsig(klon)
    653       SAVE zsig                   ! pente de l'OESM
    654 c
    655       REAL zgam(klon)
    656       save zgam                   ! anisotropie de l'OESM
    657 c
    658       REAL zthe(klon)
    659       SAVE zthe                   ! orientation de l'OESM
    660 c
    661       REAL zpic(klon)
    662       SAVE zpic                   ! Maximum de l'OESM
    663 c
    664       REAL zval(klon)
    665       SAVE zval                   ! Minimum de l'OESM
    666 c
    667       REAL rugoro(klon)
    668       SAVE rugoro                 ! longueur de rugosite de l'OESM
     726      REAL,allocatable,save :: zmea(:)
     727c$OMP THREADPRIVATE(zmea)
     728cym      SAVE zmea                   ! orographie moyenne
     729c
     730      REAL,allocatable,save :: zstd(:)
     731c$OMP THREADPRIVATE(zstd)
     732cym      SAVE zstd                   ! deviation standard de l'OESM
     733c
     734      REAL,allocatable,save :: zsig(:)
     735c$OMP THREADPRIVATE(zsig)
     736cym      SAVE zsig                   ! pente de l'OESM
     737c
     738      REAL,allocatable,save :: zgam(:)
     739c$OMP THREADPRIVATE(zgam)
     740cym      save zgam                   ! anisotropie de l'OESM
     741c
     742      REAL,allocatable,save :: zthe(:)
     743c$OMP THREADPRIVATE(zthe)     
     744cym      SAVE zthe                   ! orientation de l'OESM
     745c
     746      REAL,allocatable,save :: zpic(:)
     747c$OMP THREADPRIVATE(zpic)
     748cym      SAVE zpic                   ! Maximum de l'OESM
     749c
     750      REAL,allocatable,save :: zval(:)
     751c$OMP THREADPRIVATE(zval)
     752cym      SAVE zval                   ! Minimum de l'OESM
     753c
     754      REAL,allocatable,save :: rugoro(:)
     755c$OMP THREADPRIVATE(rugoro)
     756cym      SAVE rugoro                 ! longueur de rugosite de l'OESM
    669757c
    670758cIM 141004     REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon)
    671759      REAL zulow(klon),zvlow(klon)
    672760c
    673       REAL zuthe(klon),zvthe(klon)
    674       SAVE zuthe
    675       SAVE zvthe
     761      REAL,allocatable,save :: zuthe(:),zvthe(:)
     762c$OMP THREADPRIVATE(zuthe,zvthe)
     763cym      SAVE zuthe
     764cym      SAVE zvthe
    676765      INTEGER igwd,idx(klon),itest(klon)
    677766c
    678       REAL agesno(klon,nbsrf)
    679       SAVE agesno                 ! age de la neige
    680 c
    681       REAL alb_neig(klon)
    682       SAVE alb_neig               ! albedo de la neige
    683 c
    684       REAL run_off_lic_0(klon)
    685       SAVE run_off_lic_0
     767      REAL,allocatable,save :: agesno(:,:)
     768c$OMP THREADPRIVATE(agesno)
     769cym      SAVE agesno                 ! age de la neige
     770c
     771      REAL,allocatable,save :: alb_neig(:)
     772c$OMP THREADPRIVATE(alb_neig)
     773cym      SAVE alb_neig               ! albedo de la neige
     774c
     775      REAL,allocatable,save :: run_off_lic_0(:)
     776c$OMP THREADPRIVATE(run_off_lic_0)
     777cym      SAVE run_off_lic_0
    686778cKE43
    687779c Variables liees a la convection de K. Emanuel (sb):
    688780c
    689       REAL ema_workcbmf(klon)   ! cloud base mass flux
    690       SAVE ema_workcbmf
    691 
    692       REAL ema_cbmf(klon)       ! cloud base mass flux
    693       SAVE ema_cbmf
    694 
    695       REAL ema_pcb(klon)        ! cloud base pressure
    696       SAVE ema_pcb
    697 
    698       REAL ema_pct(klon)        ! cloud top pressure
    699       SAVE ema_pct
     781      REAL,allocatable,save :: ema_workcbmf(:)   ! cloud base mass flux
     782c$OMP THREADPRIVATE(ema_workcbmf)
     783cym      SAVE ema_workcbmf
     784
     785      REAL,allocatable,save :: ema_cbmf(:)       ! cloud base mass flux
     786c$OMP THREADPRIVATE(ema_cbmf)
     787cym      SAVE ema_cbmf
     788
     789      REAL,allocatable,save :: ema_pcb(:)        ! cloud base pressure
     790c$OMP THREADPRIVATE(ema_pcb)
     791cym      SAVE ema_pcb
     792
     793      REAL,allocatable,save :: ema_pct(:)        ! cloud top pressure
     794c$OMP THREADPRIVATE(ema_pct)
     795cym      SAVE ema_pct
    700796
    701797      REAL bas, top             ! cloud base and top levels
    702798      SAVE bas
    703799      SAVE top
    704 
    705       REAL Ma(klon,klev)        ! undilute upward mass flux
    706       SAVE Ma
    707       REAL qcondc(klon,klev)    ! in-cld water content from convect
    708       SAVE qcondc
    709       REAL ema_work1(klon, klev), ema_work2(klon, klev)
    710       SAVE ema_work1, ema_work2
     800c$OMP THREADPRIVATE(bas, top)
     801
     802      REAL,allocatable,save :: Ma(:,:)        ! undilute upward mass flux
     803c$OMP THREADPRIVATE(Ma)
     804cym      SAVE Ma
     805      REAL,allocatable,save :: qcondc(:,:)    ! in-cld water content from convect
     806c$OMP THREADPRIVATE(qcondc)
     807cym      SAVE qcondc
     808      REAL,allocatable,save :: ema_work1(:, :), ema_work2(:, :)
     809c$OMP THREADPRIVATE(ema_work1,ema_work2)
     810cym      SAVE ema_work1, ema_work2
    711811      REAL wdn(klon), tdn(klon), qdn(klon)
    712812
    713       REAL wd(klon) ! sb
    714       SAVE wd       ! sb
     813      REAL,allocatable,save :: wd(:) ! sb
     814c$OMP THREADPRIVATE(wd)
     815cym      SAVE wd       ! sb
    715816
    716817c Variables locales pour la couche limite (al1):
     
    730831      REAL yu1(klon)            ! vents dans la premiere couche U
    731832      REAL yv1(klon)            ! vents dans la premiere couche V
    732       REAL ffonte(klon,nbsrf)    !Flux thermique utilise pour fondre la neige
    733       REAL fqcalving(klon,nbsrf) !Flux d'eau "perdue" par la surface
     833      REAL,SAVE,ALLOCATABLE :: ffonte(:,:)    !Flux thermique utilise pour fondre la neige
     834c$OMP THREADPRIVATE(ffonte)
     835      REAL,SAVE,ALLOCATABLE :: fqcalving(:,:) !Flux d'eau "perdu" par la surface
     836c$OMP THREADPRIVATE(fqcalving)
     837      REAL,SAVE,ALLOCATABLE :: fqfonte(:,:)  !Quantite d'eau de fonte des glaciers
     838c$OMP THREADPRIVATE(fqfonte)
    734839c                               !et necessaire pour limiter la
    735840c                               !hauteur de neige, en kg/m2/s
    736       REAL zxffonte(klon), zxfqcalving(klon)
    737 
    738 c$$$      LOGICAL offline           ! Controle du stockage ds "physique"
    739 c$$$      PARAMETER (offline=.false.)
    740 c$$$      INTEGER physid
    741       REAL pfrac_impa(klon,klev)! Produits des coefs lessivage impaction
    742       save pfrac_impa
    743       REAL pfrac_nucl(klon,klev)! Produits des coefs lessivage nucleation
    744       save pfrac_nucl
    745       REAL pfrac_1nucl(klon,klev)! Produits des coefs lessi nucl (alpha = 1)
    746       save pfrac_1nucl
     841      REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)
     842
     843c@$$      LOGICAL offline           ! Controle du stockage ds "physique"
     844c@$$      PARAMETER (offline=.false.)
     845c@$$      INTEGER physid
     846      REAL,allocatable,save :: pfrac_impa(:,:)! Produits des coefs lessivage impaction
     847c$OMP THREADPRIVATE(pfrac_impa)
     848cym      save pfrac_impa
     849      REAL,allocatable,save :: pfrac_nucl(:,:)! Produits des coefs lessivage nucleation
     850c$OMP THREADPRIVATE(pfrac_nucl)
     851cym      save pfrac_nucl
     852      REAL,allocatable,save :: pfrac_1nucl(:,:)! Produits des coefs lessi nucl (alpha = 1)
     853c$OMP THREADPRIVATE(pfrac_1nucl)
     854cym      save pfrac_1nucl
    747855      REAL frac_impa(klon,klev) ! fractions d'aerosols lessivees (impaction)
    748856      REAL frac_nucl(klon,klev) ! idem (nucleation)
     
    753861
    754862cAA
    755       REAL rain_fall(klon) ! pluie
    756       REAL snow_fall(klon) ! neige
    757       save snow_fall, rain_fall
     863      REAL,allocatable,save :: rain_fall(:) ! pluie
     864c$OMP THREADPRIVATE(rain_fall)
     865      REAL,allocatable,save :: snow_fall(:) ! neige
     866c$OMP THREADPRIVATE(snow_fall)
     867cym      save snow_fall, rain_fall
     868
    758869cIM cf FH pour Tiedtke 080604
    759870      REAL rain_tiedtke(klon),snow_tiedtke(klon)
    760871c
    761       REAL total_rain(klon), nday_rain(klon)
    762       save nday_rain
    763 c
     872
     873      REAL,allocatable,save :: total_rain(:), nday_rain(:)
     874c$OMP THREADPRIVATE(total_rain,nday_rain)
     875cym      save total_rain, nday_rain
     876cIM 050204 END
    764877      REAL evap(klon), devap(klon) ! evaporation et sa derivee
    765878      REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
    766       REAL dlw(klon)    ! derivee infra rouge
     879      REAL,allocatable,save :: dlw(:)    ! derivee infra rouge
     880c$OMP THREADPRIVATE(dlw)
    767881cym
    768       SAVE dlw
     882cym      SAVE dlw
    769883cym
    770884      REAL bils(klon) ! bilan de chaleur au sol
     
    773887      REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque
    774888C                             ! type de sous-surface et pondere par la fraction
    775       REAL fder(klon) ! Derive de flux (sensible et latente)
    776       save fder
     889      REAL,allocatable,save :: fder(:) ! Derive de flux (sensible et latente)
     890c$OMP THREADPRIVATE(fder)
     891cym      save fder
    777892      REAL ve(klon) ! integr. verticale du transport meri. de l'energie
    778893      REAL vq(klon) ! integr. verticale du transport meri. de l'eau
     
    780895      REAL uq(klon) ! integr. verticale du transport zonal de l'eau
    781896c
    782       REAL frugs(klon,nbsrf) ! longueur de rugosite
    783       save frugs
     897      REAL,allocatable,save :: frugs(:,:) ! longueur de rugosite
     898c$OMP THREADPRIVATE(frugs)
     899cym      save frugs
    784900      REAL zxrugs(klon) ! longueur de rugosite
    785901c
     
    790906      INTEGER lmt_pas
    791907      SAVE lmt_pas                ! frequence de mise a jour
    792       REAL pctsrf(klon,nbsrf)
     908c$OMP THREADPRIVATE(lmt_pas)
     909      REAL,allocatable,save :: pctsrf(:,:)
     910c$OMP THREADPRIVATE(pctsrf)
    793911cIM
    794912      REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE
    795       REAL paire_ter(klon)        !surfaces terre
    796 c
    797       SAVE pctsrf                 ! sous-fraction du sol
    798       REAL albsol(klon)
    799       SAVE albsol                 ! albedo du sol total
    800       REAL albsollw(klon)
    801       SAVE albsollw                 ! albedo du sol total
    802 
    803       REAL wo(klon,klev)
    804       SAVE wo                     ! ozone
     913
     914cym      REAL paire_ter(klon)        !surfaces terre
     915      REAL,allocatable,save ::  paire_ter(:)        !surfaces terre
     916c$OMP THREADPRIVATE(paire_ter)
     917   
     918cIM
     919cym      SAVE pctsrf                 ! sous-fraction du sol
     920      REAL,allocatable,save :: albsol(:)
     921c$OMP THREADPRIVATE(albsol)
     922cym      SAVE albsol                 ! albedo du sol total
     923      REAL,allocatable,save :: albsollw(:)
     924c$OMP THREADPRIVATE(albsollw)     
     925cym      SAVE albsollw                 ! albedo du sol total
     926
     927      REAL,allocatable,save :: wo(:,:)
     928c$OMP THREADPRIVATE(wo)
     929cym     SAVE wo                     ! ozone
     930
    805931cIM sorties
    806932      REAL un_jour
     
    849975c Variables locales
    850976c
    851       real clwcon(klon,klev),rnebcon(klon,klev)
    852       real clwcon0(klon,klev),rnebcon0(klon,klev)
    853 cIM cf. AM 081204 BEG
    854       real clwcon0th(klon,klev),rnebcon0th(klon,klev)
    855 cIM cf. AM 081204 END
    856       save rnebcon, clwcon
    857 
     977      real,allocatable,save :: clwcon(:,:),rnebcon(:,:)
     978c$OMP THREADPRIVATE(clwcon,rnebcon)
     979      real,allocatable,save :: clwcon0(:,:),rnebcon0(:,:)
     980cym      save rnebcon, clwcon
     981c$OMP THREADPRIVATE(clwcon0,rnebcon0)
    858982      REAL rhcl(klon,klev)    ! humiditi relative ciel clair
    859983      REAL dialiq(klon,klev)  ! eau liquide nuageuse
     
    875999      REAL zxfluxv(klon, klev)
    8761000CXXX
    877       REAL heat(klon,klev)    ! chauffage solaire
    878       REAL heat0(klon,klev)   ! chauffage solaire ciel clair
    879       REAL cool(klon,klev)    ! refroidissement infrarouge
    880       REAL cool0(klon,klev)   ! refroidissement infrarouge ciel clair
    881       REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon)
    882       real sollwdown(klon)    ! downward LW flux at surface
     1001      REAL,allocatable,save :: heat(:,:)    ! chauffage solaire
     1002c$OMP THREADPRIVATE(heat)
     1003      REAL,allocatable,save :: heat0(:,:)   ! chauffage solaire ciel clair
     1004c$OMP THREADPRIVATE(heat0)
     1005      REAL,allocatable,save :: cool(:,:)    ! refroidissement infrarouge
     1006c$OMP THREADPRIVATE(cool)
     1007      REAL,allocatable,save :: cool0(:,:)   ! refroidissement infrarouge ciel clair
     1008c$OMP THREADPRIVATE(cool0)
     1009      REAL,allocatable,save :: topsw(:), toplw(:), solsw(:), sollw(:)
     1010c$OMP THREADPRIVATE(topsw,toplw,solsw,sollw)
     1011      real,allocatable,save :: sollwdown(:)    ! downward LW flux at surface
     1012c$OMP THREADPRIVATE(sollwdown)
    8831013cIM BEG
    884       real sollwdownclr(klon)    ! downward CS LW flux at surface
    885       real toplwdown(klon)       ! downward CS LW flux at TOA
    886       real toplwdownclr(klon)    ! downward CS LW flux at TOA
     1014      real,allocatable,save :: sollwdownclr(:)    ! downward CS LW flux at surface
     1015c$OMP THREADPRIVATE(sollwdownclr)
     1016      real,allocatable,save :: toplwdown(:)       ! downward CS LW flux at TOA
     1017c$OMP THREADPRIVATE(toplwdown)
     1018      real,allocatable,save :: toplwdownclr(:)    ! downward CS LW flux at TOA
     1019c$OMP THREADPRIVATE(toplwdownclr)
    8871020cIM END
    888       REAL topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
    889       REAL albpla(klon)
     1021      REAL,allocatable,save :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
     1022c$OMP THREADPRIVATE( topsw0,toplw0,solsw0,sollw0)
     1023      REAL,allocatable,save :: albpla(:)
     1024c$OMP THREADPRIVATE(albpla)
    8901025      REAL fsollw(klon, nbsrf)   ! bilan flux IR pour chaque sous surface
    8911026      REAL fsolsw(klon, nbsrf)   ! flux solaire absorb. pour chaque sous surface
    8921027c Le rayonnement n'est pas calcule tous les pas, il faut donc
    8931028c                      sauvegarder les sorties du rayonnement
    894       SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
    895       SAVE  sollwdownclr, toplwdown, toplwdownclr
    896       SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
     1029cym      SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
     1030cym      SAVE  sollwdownclr, toplwdown, toplwdownclr
     1031cym      SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
    8971032c
    8981033      INTEGER itaprad
    8991034      SAVE itaprad
     1035c$OMP THREADPRIVATE(itaprad)
    9001036c
    9011037      REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s)
     
    9251061c
    9261062      REAL zphi(klon,klev)
    927       REAL zx_relief(iim,jjmp1)
    928       REAL zx_aire(iim,jjmp1)
     1063cym A voir plus tard !!
     1064cym      REAL zx_relief(iim,jjmp1)
     1065cym      REAL zx_aire(iim,jjmp1)
    9291066c
    9301067cIM cf. AM Variables locales pour la CLA (hbtm2)
    9311068c
    932       REAL pblh(klon, nbsrf)           ! Hauteur de couche limite
    933       REAL plcl(klon, nbsrf)           ! Niveau de condensation de la CLA
    934       REAL capCL(klon, nbsrf)          ! CAPE de couche limite
    935       REAL oliqCL(klon, nbsrf)          ! eau_liqu integree de couche limite
    936       REAL cteiCL(klon, nbsrf)          ! cloud top instab. crit. couche limite
    937       REAL pblt(klon, nbsrf)          ! T a la Hauteur de couche limite
    938       REAL therm(klon, nbsrf)
    939       REAL trmb1(klon, nbsrf)          ! deep_cape
    940       REAL trmb2(klon, nbsrf)          ! inhibition
    941       REAL trmb3(klon, nbsrf)          ! Point Omega
     1069      REAL,SAVE,ALLOCATABLE :: pblh(:, :)           ! Hauteur de couche limite
     1070c$OMP THREADPRIVATE(pblh)
     1071      REAL,SAVE,ALLOCATABLE :: plcl(:, :)           ! Niveau de condensation de la CLA
     1072c$OMP THREADPRIVATE(plcl)
     1073      REAL,SAVE,ALLOCATABLE :: capCL(:, :)          ! CAPE de couche limite
     1074c$OMP THREADPRIVATE(capCL)
     1075      REAL,SAVE,ALLOCATABLE :: oliqCL(:, :)          ! eau_liqu integree de couche limite
     1076c$OMP THREADPRIVATE(oliqCL)
     1077      REAL,SAVE,ALLOCATABLE :: cteiCL(:, :)          ! cloud top instab. crit. couche limite
     1078c$OMP THREADPRIVATE(cteiCL)
     1079      REAL,SAVE,ALLOCATABLE :: pblt(:, :)          ! T a la Hauteur de couche limite
     1080c$OMP THREADPRIVATE(pblt)
     1081      REAL,SAVE,ALLOCATABLE :: therm(:, :)
     1082c$OMP THREADPRIVATE(therm)
     1083      REAL,SAVE,ALLOCATABLE :: trmb1(:, :)          ! deep_cape
     1084c$OMP THREADPRIVATE(trmb1)
     1085      REAL,SAVE,ALLOCATABLE :: trmb2(:, :)          ! inhibition
     1086c$OMP THREADPRIVATE(trmb2)
     1087      REAL,SAVE,ALLOCATABLE :: trmb3(:, :)          ! Point Omega
     1088c$OMP THREADPRIVATE(trmb3)
    9421089c Grdeurs de sorties
    9431090      REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)
     
    9521099      REAL dnwd0(klon,klev)     ! unsaturated downdraft mass flux
    9531100      REAL tvp(klon,klev)       ! virtual temp of lifted parcel
    954       REAL cape(klon)           ! CAPE
    955       SAVE cape
     1101      REAL,allocatable,save :: cape(:)           ! CAPE
     1102c$OMP THREADPRIVATE(cape)
     1103cym      SAVE cape
    9561104      CHARACTER*40 capemaxcels  !max(CAPE)
    9571105
    958       REAL pbase(klon)          ! cloud base pressure
    959       SAVE pbase
    960       REAL bbase(klon)          ! cloud base buoyancy
    961       SAVE bbase
     1106      REAL,allocatable,save :: pbase(:)          ! cloud base pressure
     1107c$OMP THREADPRIVATE(pbase)
     1108cym      SAVE pbase
     1109      REAL,allocatable,save :: bbase(:)          ! cloud base buoyancy
     1110c$OMP THREADPRIVATE(bbase)
     1111cym      SAVE bbase
    9621112      REAL rflag(klon)          ! flag fonctionnement de convect
    9631113      INTEGER iflagctrl(klon)          ! flag fonctionnement de convect
     
    9821132c vdf: couche limite (Vertical DiFfusion)
    9831133      REAL d_t_con(klon,klev),d_q_con(klon,klev)
    984       REAL d_u_con(klon,klev),d_v_con(klon,klev)
     1134      REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
     1135c$OMP THREADPRIVATE(d_u_con,d_v_con)
    9851136      REAL d_t_lsc(klon,klev),d_q_lsc(klon,klev),d_ql_lsc(klon,klev)
    9861137      REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev)
     
    9921143*********************************************************
    9931144*     declarations
    994       real zqasc(klon,klev)
    995       save zqasc
     1145      real,save,allocatable :: zqasc(:,:)
     1146c$OMP THREADPRIVATE(zqasc)
     1147cym      save zqasc
    9961148     
    9971149*********************************************************
     
    10051157      REAL prfl(klon,klev+1), psfl(klon,klev+1)
    10061158c
    1007       INTEGER ibas_con(klon), itop_con(klon)
     1159      INTEGER,allocatable,save :: ibas_con(:), itop_con(:)
     1160c$OMP THREADPRIVATE(ibas_con,itop_con)
    10081161cym
    1009       SAVE ibas_con,itop_con
     1162cym      SAVE ibas_con,itop_con
    10101163cym
    1011       REAL rain_con(klon), rain_lsc(klon)
    1012       REAL snow_con(klon), snow_lsc(klon)
     1164      REAL,SAVE,ALLOCATABLE :: rain_con(:)
     1165c$OMP THREADPRIVATE(rain_con)
     1166      REAL rain_lsc(klon)
     1167      REAL,SAVE,ALLOCATABLE :: snow_con(:)
     1168c$OMP THREADPRIVATE(snow_con)
     1169      REAL snow_lsc(klon)
    10131170      REAL d_ts(klon,nbsrf)
    10141171c
     
    10221179      REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif
    10231180
    1024       REAL ratqs(klon,klev),ratqss(klon,klev),ratqsc(klon,klev)
     1181      REAL,allocatable,save :: ratqs(:,:)
     1182c$OMP THREADPRIVATE(ratqs)
     1183      REAL ratqss(klon,klev),ratqsc(klon,klev)
    10251184      real ratqsbas,ratqshaut
    1026       save ratqsbas,ratqshaut, ratqs
     1185cym      save ratqsbas,ratqshaut, ratqs
     1186      save ratqsbas,ratqshaut
     1187c$OMP THREADPRIVATE(ratqsbas,ratqshaut)
    10271188      real zpt_conv(klon,klev)
    10281189
     
    10321193      logical ok_newmicro
    10331194      save ok_newmicro
     1195c$OMP THREADPRIVATE(ok_newmicro)
    10341196      save fact_cldcon,facttemps
     1197c$OMP THREADPRIVATE(fact_cldcon,facttemps)
    10351198      real facteur
    10361199
    10371200      integer iflag_cldcon
    10381201      save iflag_cldcon
    1039 
     1202c$OMP THREADPRIVATE(iflag_cldcon)
    10401203      logical ptconv(klon,klev)
    10411204cIM cf. AM 081204 BEG
     
    10511214      integer imin_ins,imax_ins,jmin_ins,jmax_ins
    10521215      save imin_ins,imax_ins,jmin_ins,jmax_ins
     1216c$OMP THREADPRIVATE(imin_ins,imax_ins,jmin_ins,jmax_ins)
    10531217c      real lonmin_ins,lonmax_ins,latmin_ins
    10541218c     s  ,latmax_ins
     
    10871251      REAL tabcntr0( length       )
    10881252c
     1253
    10891254      INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev)
    10901255cIM
     
    11021267      INTEGER ij, imp1jmp1
    11031268      PARAMETER(imp1jmp1=(iim+1)*jjmp1)
     1269cym A voir plus tard
    11041270      REAL zx_tmp(imp1jmp1), airedyn(iim+1,jjmp1)
    11051271      REAL padyn(iim+1,jjmp1,klev+1)
     
    11111277cIM
    11121278      REAL airetot, pi
    1113       REAL zm_wo(jjmp1, klev)
     1279cym A voir plus tard
     1280cym      REAL zm_wo(jjmp1, klev)
    11141281cIM AMIP2 END
    11151282c
    11161283      REAL zx_tmp_fi2d(klon)      ! variable temporaire grille physique
    11171284      REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
    1118 #ifdef histmthNMC
    1119       REAL zx_tmp_NC(iim,jjmp1,nlevSTD)
     1285c#ifdef histmthNMC
     1286cym   A voir plus tard !!!!
     1287cym      REAL zx_tmp_NC(iim,jjmp1,nlevSTD)
    11201288      REAL zx_tmp_fiNC(klon,nlevSTD)
    1121 #endif
     1289c#endif
    11221290      REAL*8 zx_tmp2_fi3d(klon,klev) ! variable temporaire pour champs 3D
    11231291      REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev)
     
    11281296      SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri
    11291297      SAVE nid_ctesGCM
     1298c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins, nid_nmc)
     1299c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM)
    11301300c
    11311301cIM 280405 BEG
    11321302      INTEGER nid_bilKPins, nid_bilKPave
    11331303      SAVE nid_bilKPins, nid_bilKPave
     1304c$OMP THREADPRIVATE(nid_bilKPins, nid_bilKPave)
    11341305c
    11351306      REAL ve_lay(klon,klev) ! transport meri. de l'energie a chaque niveau vert.
     
    11461317      REAL zout_isccp(napisccp)
    11471318      SAVE zcals, zcalh, zoutj, zout_isccp
     1319c$OMP THREADPRIVATE(zcals, zcalh, zoutj, zout_isccp)
    11481320
    11491321      real zjulian
    11501322      save zjulian
     1323c$OMP THREADPRIVATE(zjulian)
    11511324
    11521325      character*20 modname
     
    11721345      SAVE      h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
    11731346     $        , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
     1347c$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot,
     1348c$OMP+              h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
    11741349      REAL      d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
    11751350      REAL      d_h_vcol_phy
    11761351      REAL      fs_bound, fq_bound
    11771352      SAVE      d_h_vcol_phy
     1353c$OMP THREADPRIVATE(d_h_vcol_phy)
    11781354      REAL      zero_v(klon)
    11791355      CHARACTER*15 ztit
    1180 
     1356      INTEGER   ip_ebil  ! PRINT level for energy conserv. diag.
     1357      SAVE      ip_ebil
     1358      DATA      ip_ebil/0/
     1359c$OMP THREADPRIVATE(ip_ebil)
     1360      INTEGER   if_ebil ! level for energy conserv. dignostics
     1361      SAVE      if_ebil
     1362c$OMP THREADPRIVATE(if_ebil)
    11811363c+jld ec_conser
    11821364      REAL d_t_ec(klon,klev)    ! tendance du a la conersion Ec -> E thermique
     
    11841366c-jld ec_conser
    11851367cIM: t2m, q2m, u10m, v10m et t2mincels, t2maxcels
    1186       REAL t2m(klon,nbsrf), q2m(klon,nbsrf)   !temperature, humidite a 2m
    1187       REAL u10m(klon,nbsrf), v10m(klon,nbsrf) !vents a 10m
     1368      REAL,SAVE,ALLOCATABLE :: t2m(:,:), q2m(:,:)   !temperature, humidite a 2m
     1369c$OMP THREADPRIVATE(t2m,q2m)
     1370      REAL,SAVE,ALLOCATABLE :: u10m(:,:), v10m(:,:) !vents a 10m
     1371c$OMP THREADPRIVATE(u10m,v10m)
    11881372      REAL zt2m(klon), zq2m(klon)             !temp., hum. 2m moyenne s/ 1 maille
    11891373      REAL zu10m(klon), zv10m(klon)           !vents a 10m moyennes s/1 maille
     
    11921376cjq   Aerosol effects (Johannes Quaas, 27/11/2003)
    11931377      REAL sulfate(klon, klev) ! SO4 aerosol concentration [ug/m3]
    1194       REAL sulfate_pi(klon, klev) ! SO4 aerosol concentration [ug/m3] (pre-industrial value)
    1195       SAVE sulfate_pi
     1378      REAL,allocatable,save :: sulfate_pi(:,:) ! SO4 aerosol concentration [ug/m3] (pre-industrial value)
     1379c$OMP THREADPRIVATE(sulfate_pi)
     1380cym      SAVE sulfate_pi
    11961381
    11971382      REAL cldtaupi(klon,klev)  ! Cloud optical thickness for pre-industrial (pi) aerosols
     
    12031388
    12041389      ! Aerosol optical properties
    1205       REAL tau_ae(klon,klev,2), piz_ae(klon,klev,2)
    1206       REAL cg_ae(klon,klev,2)
    1207 
    1208       REAL topswad(klon), solswad(klon) ! Aerosol direct effect.
     1390      REAL,SAVE,ALLOCATABLE :: tau_ae(:,:,:), piz_ae(:,:,:)
     1391c$OMP THREADPRIVATE(tau_ae,piz_ae)
     1392      REAL,SAVE,ALLOCATABLE :: cg_ae(:,:,:)
     1393c$OMP THREADPRIVATE(cg_ae)
     1394
     1395      REAL,SAVE,ALLOCATABLE :: topswad(:), solswad(:) ! Aerosol direct effect.
     1396c$OMP THREADPRIVATE(topswad,solswad)
    12091397      ! ok_ade=T -ADE=topswad-topsw
    12101398
    1211       REAL topswai(klon), solswai(klon) ! Aerosol indirect effect.
     1399      REAL,SAVE,ALLOCATABLE :: topswai(:), solswai(:) ! Aerosol indirect effect.
     1400c$OMP THREADPRIVATE(topswai,solswai)
    12121401      ! ok_aie=T ->
    12131402      !        ok_ade=T -AIE=topswai-topswad
     
    12211410cym
    12221411      SAVE ok_ade, ok_aie, bl95_b0, bl95_b1
    1223 cym
    1224 c Anne
    1225          SAVE u10m
    1226          SAVE v10m
    1227          SAVE t2m
    1228          SAVE q2m
    1229          SAVE ffonte
    1230          SAVE fqcalving
    1231          SAVE piz_ae
    1232          SAVE tau_ae
    1233          SAVE cg_ae
    1234          SAVE rain_con
    1235          SAVE snow_con
    1236          SAVE topswai
    1237          SAVE topswad
    1238          SAVE solswai
    1239          SAVE solswad
    1240          SAVE d_u_con
    1241          SAVE d_v_con
    1242          SAVE rnebcon0
    1243          SAVE clwcon0
    1244          SAVE paire_ter
    1245 c        SAVE nhistoW
    1246 c        SAVE histoW
    1247 c SAVE anne 20/09/2005
    1248          SAVE pblh
    1249          SAVE plcl
    1250          SAVE capCL
    1251          SAVE oliqCL
    1252          SAVE cteiCL
    1253          SAVE pblt
    1254          SAVE therm
    1255          SAVE trmb1
    1256          SAVE trmb2
    1257          SAVE trmb3
    1258 
    1259 c fin Anne
    1260 cjq-end
     1412c$OMP THREADPRIVATE(ok_ade, ok_aie, bl95_b0, bl95_b1)
     1413
    12611414c
    12621415c Declaration des constantes et des fonctions thermodynamiques
    12631416c
     1417      REAL Field_tmp(klon2,klevp1)
     1418      LOGICAL,SAVE :: first=.true.
     1419c$OMP THREADPRIVATE(first)
    12641420#include "YOMCST.h"
    12651421#include "YOETHF.h"
     
    12731429c
    12741430c======================================================================
    1275       modname = 'physiq'
     1431
     1432cym => necessaire pour iflag_con != 2   
     1433      pmfd(:,:) = 0.
     1434      pen_u(:,:) = 0.
     1435      pen_d(:,:) = 0.
     1436      pde_d(:,:) = 0.
     1437      pde_u(:,:) = 0.
     1438      aam=0.
     1439      torsfc=0.
     1440cym => pour le couple ocean => revoir dans clmain/intersurf
     1441      fluxg(:)=0.
     1442      fluxo(:)=0.     
     1443
     1444      if (first) then
     1445     
     1446      allocate( t_ancien(klon,klev), q_ancien(klon,klev))
     1447      allocate( q2(klon,klev+1,nbsrf))
     1448      allocate( swdn0(klon,klevp1), swdn(klon,klevp1))
     1449      allocate( swup0(klon,klevp1), swup(klon,klevp1))
     1450      allocate( SWdn200clr(klon), SWdn200(klon))
     1451      allocate( SWup200clr(klon), SWup200(klon))
     1452      allocate( lwdn0(klon,klevp1), lwdn(klon,klevp1))
     1453      allocate( lwup0(klon,klevp1), lwup(klon,klevp1))
     1454      allocate( LWdn200clr(klon), LWdn200(klon))
     1455      allocate( LWup200clr(klon), LWup200(klon))
     1456      allocate( LWdnTOA(klon), LWdnTOAclr(klon))
     1457      allocate( radsol(klon))
     1458      allocate( rlat(klon))
     1459      allocate( rlon(klon))
     1460      allocate( ftsol(klon,nbsrf))
     1461      allocate( ftsoil(klon,nsoilmx,nbsrf))
     1462      allocate( fevap(klon,nbsrf))
     1463      allocate( fluxlat(klon,nbsrf))
     1464      allocate( deltat(klon))
     1465      allocate( fqsurf(klon,nbsrf))
     1466      allocate( qsol(klon))
     1467      allocate( fsnow(klon,nbsrf))
     1468      allocate( falbe(klon,nbsrf))
     1469      allocate( falblw(klon,nbsrf))
     1470      allocate( zmea(klon))
     1471      allocate( zstd(klon))
     1472      allocate( zsig(klon))
     1473      allocate( zgam(klon))
     1474      allocate( zthe(klon))
     1475      allocate( zpic(klon))
     1476      allocate( zval(klon))
     1477      allocate( rugoro(klon))
     1478      allocate( zuthe(klon),zvthe(klon))
     1479      allocate( agesno(klon,nbsrf))
     1480      allocate( alb_neig(klon))
     1481      allocate( run_off_lic_0(klon))
     1482      allocate( ema_workcbmf(klon))   
     1483      allocate( ema_cbmf(klon))
     1484      allocate( ema_pcb(klon))
     1485      allocate( ema_pct(klon)) 
     1486      allocate( Ma(klon,klev) )
     1487      allocate( qcondc(klon,klev)) 
     1488      allocate( ema_work1(klon, klev), ema_work2(klon, klev))
     1489      allocate( wd(klon) )
     1490      allocate( pfrac_impa(klon,klev))
     1491      allocate( pfrac_nucl(klon,klev))
     1492      allocate( pfrac_1nucl(klon,klev))
     1493      allocate( rain_fall(klon) )
     1494      allocate( snow_fall(klon) )
     1495      allocate( total_rain(klon), nday_rain(klon))
     1496      allocate( dlw(klon)   )
     1497      allocate( fder(klon) )
     1498      allocate( frugs(klon,nbsrf) )
     1499      allocate( pctsrf(klon,nbsrf))
     1500      allocate( albsol(klon))
     1501      allocate( albsollw(klon))
     1502      allocate( wo(klon,klev))
     1503      allocate( clwcon(klon,klev),rnebcon(klon,klev))
     1504      allocate( heat(klon,klev)    )
     1505      allocate( heat0(klon,klev)  )
     1506      allocate( cool(klon,klev)    )
     1507      allocate( cool0(klon,klev)   )
     1508      allocate( topsw(klon), toplw(klon), solsw(klon), sollw(klon))
     1509      allocate( sollwdown(klon)    )
     1510      allocate( sollwdownclr(klon)  )
     1511      allocate( toplwdown(klon)      )
     1512      allocate( toplwdownclr(klon)   )
     1513      allocate( topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon))
     1514      allocate( albpla(klon))
     1515      allocate( cape(klon)   )       
     1516      allocate( pbase(klon)   )     
     1517      allocate( bbase(klon)    )     
     1518      allocate( ibas_con(klon), itop_con(klon))
     1519      allocate( ratqs(klon,klev))
     1520      allocate( sulfate_pi(klon, klev))
     1521      allocate( paire_ter(klon))
     1522      allocate(tsumSTD(klon,nlevSTD,nout))
     1523      allocate(usumSTD(klon,nlevSTD,nout))
     1524      allocate(vsumSTD(klon,nlevSTD,nout))
     1525      allocate(wsumSTD(klon,nlevSTD,nout))
     1526      allocate(phisumSTD(klon,nlevSTD,nout))
     1527      allocate(qsumSTD(klon,nlevSTD,nout))
     1528      allocate(rhsumSTD(klon,nlevSTD,nout))
     1529      allocate(uvsumSTD(klon,nlevSTD,nout))
     1530      allocate(vqsumSTD(klon,nlevSTD,nout))
     1531      allocate(vTsumSTD(klon,nlevSTD,nout))
     1532      allocate(wqsumSTD(klon,nlevSTD,nout))
     1533      allocate( vphisumSTD(klon,nlevSTD,nout))
     1534      allocate( wTsumSTD(klon,nlevSTD,nout))
     1535      allocate( u2sumSTD(klon,nlevSTD,nout))
     1536      allocate( v2sumSTD(klon,nlevSTD,nout))
     1537      allocate( T2sumSTD(klon,nlevSTD,nout))
     1538      allocate( seed_old(klon,napisccp))
     1539      allocate( pct_ocean(klon,nbregdyn))
     1540      allocate( rlonPOS(klon))
     1541      allocate( newsst(klon))
     1542      allocate( zqasc(klon,klev))
     1543      allocate( therm(klon, nbsrf))
     1544      allocate( rain_con(klon))
     1545      allocate( pblt(klon, nbsrf))
     1546      allocate( t2m(klon,nbsrf), q2m(klon,nbsrf) ) 
     1547      allocate( u10m(klon,nbsrf), v10m(klon,nbsrf))
     1548      allocate( topswad(klon), solswad(klon))
     1549      allocate( topswai(klon), solswai(klon) )
     1550      allocate( ffonte(klon,nbsrf))
     1551      allocate( fqcalving(klon,nbsrf))
     1552      allocate( fqfonte(klon,nbsrf))
     1553      allocate( pblh(klon, nbsrf))
     1554      allocate( plcl(klon, nbsrf)) 
     1555      allocate( capCL(klon, nbsrf))   
     1556      allocate( oliqCL(klon, nbsrf))       
     1557      allocate( cteiCL(klon, nbsrf))       
     1558      allocate( trmb1(klon, nbsrf))   
     1559      allocate( trmb2(klon, nbsrf))     
     1560      allocate( trmb3(klon, nbsrf))
     1561      allocate( clwcon0(klon,klev),rnebcon0(klon,klev))
     1562      allocate( tau_ae(klon,klev,2), piz_ae(klon,klev,2))
     1563      allocate( cg_ae(klon,klev,2))
     1564      allocate( snow_con(klon))
     1565      allocate( tnondef(klon,nlevSTD,nout))
     1566      allocate( d_u_con(klon,klev),d_v_con(klon,klev))           
     1567     
     1568     
     1569        paire_ter(:)=0.   
     1570        clwcon(:,:)=0.
     1571        rnebcon(:,:)=0.
     1572        ratqs(:,:)=0.
     1573        run_off_lic_0(:)=0.
     1574        sollw(:)=0.
     1575        ema_work1(:,:)=0.
     1576        ema_work2(:,:)=0.
     1577cym Attention pbase pas initialise dans concvl !!!!
     1578        pbase(:)=0
     1579       
     1580        first=.false.
     1581      endif
     1582
     1583                 
     1584       modname = 'physiq'
    12761585cIM
    12771586      IF (ip_ebil_phy.ge.1) THEN
     
    13051614         ffonte(:,:)=0.
    13061615         fqcalving(:,:)=0.
     1616         fqfonte(:,:)=0.
    13071617         piz_ae(:,:,:)=0.
    13081618         tau_ae(:,:,:)=0.
     
    13781688     .       run_off_lic_0)
    13791689
     1690       DO i=1,klon
     1691         IF ( abs( pctsrf(i, is_ter) + pctsrf(i, is_lic) +
     1692     $       pctsrf(i, is_oce) + pctsrf(i, is_sic)  - 1.) .GT. EPSFRA)
     1693     $       THEN
     1694             WRITE(*,*) 'physiq : pb sous surface au point ', i,
     1695     $           pctsrf(i, 1 : nbsrf)
     1696         ENDIF
     1697      ENDDO
     1698 
    13801699c   ATTENTION : il faudra a terme relire q2 dans l'etat initial
    13811700         q2(:,:,:)=1.e-8
     
    15831902#endif
    15841903
     1904c#include "ini_histday_seri.h"
    15851905#include "ini_histday_seri.h"
    15861906
     
    16061926c
    16071927#ifdef INCA
     1928           call VTe(VTphysiq)
     1929           call VTb(VTinca)
    16081930           iii = MOD(NINT(xjour),360)
    16091931           calday = FLOAT(iii) + gmtime
     
    16121934           WRITE(lunout,*) 'Appel CHEMINI ...'
    16131935#endif
    1614            CALL chemini( rpi,
     1936           CALL chemini(
    16151937     $                   rg,
    16161938     $                   ra,
     
    16281950           WRITE(lunout,*) 'OK.'
    16291951#endif
     1952      call VTe(VTinca)
     1953      call VTb(VTphysiq)
    16301954#endif
    16311955c
     
    18652189       DO nsrf = 1, nbsrf
    18662190       DO i = 1, klon
    1867 c$$$        fsollw(i,nsrf) = sollwdown(i) - RSIGMA*ftsol(i,nsrf)**4
    1868 c$$$        fsollw(i,nsrf) = sollw(i)
     2191c@$$        fsollw(i,nsrf) = sollwdown(i) - RSIGMA*ftsol(i,nsrf)**4
     2192c@$$        fsollw(i,nsrf) = sollw(i)
    18692193         fsollw(i,nsrf) = sollw(i)
    18702194     $      + 4.0*RSIGMA*ztsol(i)**3 * (ztsol(i)-ftsol(i,nsrf))
     
    18722196       ENDDO
    18732197       ENDDO
    1874 
     2198     
     2199cYM   !!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2200cYM         Attention verrue
     2201cYM    ---> A supprimer plus tard       
     2202cYM         pour etre integre dans
     2203cYM         ORCHIDEE       
     2204      DO i = 1, klon
     2205        sollwdown(i)=sollw(i)+RSIGMA*ztsol(i)**4
     2206      ENDDO
     2207cYM  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!     
     2208     
    18752209      fder = dlw
    18762210
     2211      if (mydebug) then
     2212        call writefield_phy('u_seri',u_seri,llm)
     2213        call writefield_phy('v_seri',v_seri,llm)
     2214        call writefield_phy('t_seri',t_seri,llm)
     2215        call writefield_phy('q_seri',q_seri,llm)
     2216      endif
     2217 
    18772218      IF (check) THEN
    18782219       amn=MIN(tslab(1),1000.)
     
    19062247     s            pblh,capCL,oliqCL,cteiCL,pblT,
    19072248     s            therm,trmb1,trmb2,trmb3,plcl,
    1908      s            fqcalving, ffonte, run_off_lic_0,
     2249     s            fqcalving, fqfonte,ffonte, run_off_lic_0,
    19092250cIM "slab" ocean
    19102251     s            fluxo, fluxg, tslab, seaice)
     
    19482289      ENDDO
    19492290      ENDDO
     2291
     2292      if (mydebug) then
     2293        call writefield_phy('u_seri',u_seri,llm)
     2294        call writefield_phy('v_seri',v_seri,llm)
     2295        call writefield_phy('t_seri',t_seri,llm)
     2296        call writefield_phy('q_seri',q_seri,llm)
     2297      endif
     2298
     2299
    19502300cIM
    19512301      IF (ip_ebil_phy.ge.2) THEN
     
    19752325         zxffonte(i) = 0.0
    19762326         zxfqcalving(i) = 0.0
     2327         zxfqfonte(i) = 0.0
    19772328cIM cf. AM 081204 BEG
    19782329c
     
    20162367            zxfqcalving(i) = zxfqcalving(i) +
    20172368     .                      fqcalving(i,nsrf)*pctsrf(i,nsrf)
     2369            zxfqfonte(i) = zxfqfonte(i) +
     2370     .                      fqfonte(i,nsrf)*pctsrf(i,nsrf)
    20182371cIM cf. AM 081204 BEG
    20192372            s_pblh(i) = s_pblh(i) + pblh(i,nsrf)*pctsrf(i,nsrf)
     
    20542407           ffonte(i,nsrf) = zxffonte(i)
    20552408           fqcalving(i,nsrf) = zxfqcalving(i)
     2409           fqfonte(i,nsrf) = zxfqfonte(i)
    20562410           pblh(i,nsrf)=s_pblh(i)
    20572411           plcl(i,nsrf)=s_lcl(i)
     
    21682522          ENDIF ! ok_cvl
    21692523
     2524c
     2525c Correction precip
     2526          rain_con = rain_con * cvl_corr
     2527          snow_con = snow_con * cvl_corr
     2528c
     2529
    21702530           IF (.NOT. ok_gust) THEN
    21712531           do i = 1, klon
     
    22292589        ENDDO
    22302590      ENDDO
     2591
     2592      if (mydebug) then
     2593        call writefield_phy('u_seri',u_seri,llm)
     2594        call writefield_phy('v_seri',v_seri,llm)
     2595        call writefield_phy('t_seri',t_seri,llm)
     2596        call writefield_phy('q_seri',q_seri,llm)
     2597      endif
     2598
    22312599cIM
    22322600      IF (ip_ebil_phy.ge.2) THEN
     
    24292797     s      , fs_bound, fq_bound )
    24302798      END IF
     2799
     2800      if (mydebug) then
     2801        call writefield_phy('u_seri',u_seri,llm)
     2802        call writefield_phy('v_seri',v_seri,llm)
     2803        call writefield_phy('t_seri',t_seri,llm)
     2804        call writefield_phy('q_seri',q_seri,llm)
     2805      endif
     2806
    24312807c
    24322808c-------------------------------------------------------------------
     
    24772853      ELSE IF (iflag_cldcon.eq.3) THEN
    24782854c  On prend pour les nuages convectifs le max du calcul de la
    2479 c  convection et du calcul du pas de temps précédent diminué d'un facteur
     2855c  convection et du calcul du pas de temps precedent diminue d'un facteur
    24802856c  facttemps
    24812857c      facttemps=pdtphys/1.e4
     
    24912867         enddo
    24922868      enddo
     2869
     2870c
     2871cjq - introduce the aerosol direct and first indirect radiative forcings
     2872cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
     2873      IF (ok_ade.OR.ok_aie) THEN
     2874         ! Get sulfate aerosol distribution
     2875         CALL readsulfate(rjourvrai, debut, sulfate)
     2876         CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
     2877
     2878         ! Calculate aerosol optical properties (Olivier Boucher)
     2879         CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
     2880     .        tau_ae, piz_ae, cg_ae, aerindex)
     2881cym
     2882      ELSE
     2883        tau_ae(:,:,:)=0.0
     2884        piz_ae(:,:,:)=0.0
     2885        cg_ae(:,:,:)=0.0
     2886cym     
     2887      ENDIF
    24932888
    24942889c
     
    26073002     . EXP((Lheat *qsat2m(i))/(RCPD*zt2m(i)))
    26083003      ENDDO
    2609 c
    2610 cjq - introduce the aerosol direct and first indirect radiative forcings
    2611 cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    2612       IF (ok_ade.OR.ok_aie) THEN
    2613          ! Get sulfate aerosol distribution
    2614          CALL readsulfate(rjourvrai, debut, sulfate)
    2615          CALL readsulfate_preind(rjourvrai, debut, sulfate_pi)
    2616 
    2617          ! Calculate aerosol optical properties (Olivier Boucher)
    2618          CALL aeropt(pplay, paprs, t_seri, sulfate, rhcl,
    2619      .        tau_ae, piz_ae, cg_ae, aerindex)
    2620 cym
    2621       ELSE
    2622         tau_ae(:,:,:)=0.0
    2623         piz_ae(:,:,:)=0.0
    2624         cg_ae(:,:,:)=0.0
    2625 cym     
    2626       ENDIF
     3004
    26273005
    26283006#ifdef INCA
     3007      call VTe(VTphysiq)
     3008      call VTb(VTinca)
    26293009           calday = FLOAT(julien) + gmtime
    26303010
    26313011#ifdef INCA_AER
    2632       call AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs,
    2633      &   prfl,psfl,pctsrf(1,3),airephy,xjour,rlat,rlon)
     3012      call AEROSOL_METEO_CALC(calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs
     3013     &   ,prfl,psfl,pctsrf,airephy,xjour,rlat,rlon,u10m,v10m)
    26343014#endif
    26353015
     
    26843064           WRITE(lunout,*)'OK.'
    26853065#endif
     3066      call VTe(VTinca)
     3067      call VTb(VTphysiq)
    26863068#endif
    26873069c     
     
    27223104     .               + falblw(i,is_sic) * pctsrf(i,is_sic)
    27233105      ENDDO
     3106
     3107      if (mydebug) then
     3108        call writefield_phy('u_seri',u_seri,llm)
     3109        call writefield_phy('v_seri',v_seri,llm)
     3110        call writefield_phy('t_seri',t_seri,llm)
     3111        call writefield_phy('q_seri',q_seri,llm)
     3112      endif
     3113     
    27243114      CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    27253115     e            (dist, rmu0, fract,
     
    27503140      ENDDO
    27513141      ENDDO
     3142c
     3143      if (mydebug) then
     3144        call writefield_phy('u_seri',u_seri,llm)
     3145        call writefield_phy('v_seri',v_seri,llm)
     3146        call writefield_phy('t_seri',t_seri,llm)
     3147        call writefield_phy('q_seri',q_seri,llm)
     3148      endif
     3149 
    27523150cIM
    27533151      IF (ip_ebil_phy.ge.2) THEN
     
    28373235      ENDIF ! fin de test sur ok_orodr
    28383236c
     3237      if (mydebug) then
     3238        call writefield_phy('u_seri',u_seri,llm)
     3239        call writefield_phy('v_seri',v_seri,llm)
     3240        call writefield_phy('t_seri',t_seri,llm)
     3241        call writefield_phy('q_seri',q_seri,llm)
     3242      endif
     3243     
    28393244      IF (ok_orolf) THEN
    28403245c
     
    28723277C STRESS NECESSAIRES: TOUTE LA PHYSIQUE
    28733278
     3279      if (mydebug) then
     3280        call writefield_phy('u_seri',u_seri,llm)
     3281        call writefield_phy('v_seri',v_seri,llm)
     3282        call writefield_phy('t_seri',t_seri,llm)
     3283        call writefield_phy('q_seri',q_seri,llm)
     3284      endif
     3285
    28743286      DO i = 1, klon
    28753287        zustrph(i)=0.
     
    28873299cIM calcul composantes axiales du moment angulaire et couple des montagnes
    28883300c
    2889       CALL aaam_bud (27,klon,klev,rjourvrai,gmtime,
    2890      C               ra,rg,romega,
    2891      C               rlat,rlon,pphis,
    2892      C               zustrdr,zustrli,zustrph,
    2893      C               zvstrdr,zvstrli,zvstrph,
    2894      C               paprs,u,v,
    2895      C               aam, torsfc)
     3301      IF (monocpu) THEN
     3302     
     3303        CALL aaam_bud (27,klon,klev,rjourvrai,gmtime,
     3304     C                 ra,rg,romega,
     3305     C                 rlat,rlon,pphis,
     3306     C                 zustrdr,zustrli,zustrph,
     3307     C                 zvstrdr,zvstrli,zvstrph,
     3308     C                 paprs,u,v,
     3309     C                 aam, torsfc)
     3310       ENDIF
    28963311cIM cf. FLott END
    28973312cIM
     
    30583473c
    30593474#ifdef INCA
     3475      call VTe(VTphysiq)
     3476      call VTb(VTinca)
    30603477#ifdef INCAINFO
    30613478           WRITE(lunout,*)'Appel CHEMHOOK_END ...'
     
    30683485     $                        nbtr,
    30693486     $                        paprs,
    3070 #ifdef INCA_CH4
    30713487     $                        q_seri,
    3072 #endif
    30733488     $                        annee_ref,
    30743489     $                        day_ini,
     3490     $                        airephy,     
    30753491#ifdef INCA_AER
    30763492     $                        xjour,
    30773493     $                        pphi,
    30783494     $                        pphis,
    3079      $                        zx_rh,
    3080      $                        qx(1,1,1))
     3495     $                        zx_rh)
    30813496#else
    30823497     $                        xjour)
     
    30853500           WRITE(lunout,*)'OK.'
    30863501#endif
     3502      call VTe(VTinca)
     3503      call VTb(VTphysiq)
    30873504#endif
    30883505
     
    30913508c Convertir les incrementations en tendances
    30923509c
     3510      if (mydebug) then
     3511        call writefield_phy('u_seri',u_seri,llm)
     3512        call writefield_phy('v_seri',v_seri,llm)
     3513        call writefield_phy('t_seri',t_seri,llm)
     3514        call writefield_phy('q_seri',q_seri,llm)
     3515      endif
     3516
    30933517      DO k = 1, klev
    30943518      DO i = 1, klon
Note: See TracChangeset for help on using the changeset viewer.