Ignore:
Timestamp:
May 4, 2005, 5:11:29 PM (19 years ago)
Author:
Laurent Fairhead
Message:

Modifications faites à la physique pour la rendre parallele YM
Une branche de travail LMDZ4_par_0 a été créée provisoirement afin de tester
les modifs pleinement avant leurs inclusions dans le tronc principal
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4_par_0/libf/phylmd/physiq.F

    r633 r634  
    1515      USE ioipsl
    1616      USE histcom
     17      USE comgeomphy
     18      USE write_field
     19      USE write_field_p
     20      USE dimphy
     21      USE iophy
     22c$$$      USE misc_mod, mydebug=>debug
     23#ifdef CPP_PARALLEL
     24      USE vampir
     25#endif
    1726#ifdef INCA
    1827      USE chemshut
     
    3544c   CLEFS CPP POUR LES IO
    3645c   =====================
    37 #define histhf
     46c#define histhf
    3847#define histday
    3948#define histmth
    40 #define histins
     49c#define histins
    4150c#define histISCCP
    42 #define histREGDYN
    43 #define histmthNMC
     51c#define histREGDYN
     52c#define histmthNMC
    4453c======================================================================
    4554c    modif   ( P. Le Van ,  12/10/98 )
     
    7786      integer jjmp1
    7887      parameter (jjmp1=jjm+1-1/jjm)
    79 #include "dimphy.h"
     88      integer iip1
     89      parameter (iip1=iim+1)
     90cym#include "dimphy.h"
    8091#include "regdim.h"
    8192#include "indicesol.h"
     
    8596#include "logic.h"
    8697#include "temps.h"
    87 #include "comgeomphy.h"
     98cym#include "comgeomphy.h"
    8899#include "advtrac.h"
    89100#include "iniprint.h"
     
    161172      REAL fm_therm(klon,klev+1)
    162173      REAL entr_therm(klon,klev)
    163       real q2(klon,klev+1,nbsrf)
    164       save q2
     174      real,allocatable,save :: q2(:,:,:)
     175cym      save q2
    165176c======================================================================
    166177c
     
    194205      REAL qx(klon,klev,nqmax)
    195206
    196       REAL t_ancien(klon,klev), q_ancien(klon,klev)
    197       SAVE t_ancien, q_ancien
     207      REAL,allocatable,save :: t_ancien(:,:), q_ancien(:,:)
     208cym      SAVE t_ancien, q_ancien
    198209      LOGICAL ancien_ok
    199210      SAVE ancien_ok
     
    214225      real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
    215226
    216       INTEGER klevp1, klevm1
    217       PARAMETER(klevp1=klev+1,klevm1=klev-1)
    218 #include "raddim.h"
     227cym      INTEGER klevp1, klevm1
     228cym      PARAMETER(klevp1=klev+1,klevm1=klev-1)
     229cym#include "raddim.h"
    219230c
    220231cIM 080304   REAL swdn0(klon,2), swdn(klon,2), swup0(klon,2), swup(klon,2)
    221       REAL swdn0(klon,klevp1), swdn(klon,klevp1)
    222       REAL swup0(klon,klevp1), swup(klon,klevp1)
    223       SAVE swdn0 , swdn, swup0, swup
    224 c
    225       REAL SWdn200clr(klon), SWdn200(klon)
    226       REAL SWup200clr(klon), SWup200(klon)
    227       SAVE SWdn200clr, SWdn200, SWup200clr, SWup200
    228 c
    229       REAL lwdn0(klon,klevp1), lwdn(klon,klevp1)
    230       REAL lwup0(klon,klevp1), lwup(klon,klevp1)
    231       SAVE lwdn0 , lwdn, lwup0, lwup
    232 c
    233       REAL LWdn200clr(klon), LWdn200(klon)
    234       REAL LWup200clr(klon), LWup200(klon)
    235       SAVE LWdn200clr, LWdn200, LWup200clr, LWup200
    236 c
    237       REAL LWdnTOA(klon), LWdnTOAclr(klon)
    238       SAVE LWdnTOA, LWdnTOAclr
     232      REAL,allocatable,save :: swdn0(:,:), swdn(:,:)
     233      REAL,allocatable,save :: swup0(:,:), swup(:,:)
     234cym      SAVE swdn0 , swdn, swup0, swup
     235c
     236      REAL,allocatable,save :: SWdn200clr(:), SWdn200(:)
     237      REAL,allocatable,save :: SWup200clr(:), SWup200(:)
     238cym      SAVE SWdn200clr, SWdn200, SWup200clr, SWup200
     239c
     240      REAL,allocatable,save :: lwdn0(:,:), lwdn(:,:)
     241      REAL,allocatable,save :: lwup0(:,:), lwup(:,:)
     242cym      SAVE lwdn0 , lwdn, lwup0, lwup
     243c
     244      REAL,allocatable,save :: LWdn200clr(:), LWdn200(:)
     245      REAL,allocatable,save :: LWup200clr(:), LWup200(:)
     246cym      SAVE LWdn200clr, LWdn200, LWup200clr, LWup200
     247c
     248      REAL,allocatable,save :: LWdnTOA(:), LWdnTOAclr(:)
     249cym      SAVE LWdnTOA, LWdnTOAclr
    239250c
    240251c vents meridien et zonal a un niveau de pression
     
    296307cv3.4
    297308      INTEGER debug, debugcol
    298       INTEGER npoints
    299       PARAMETER(npoints=klon)
     309cym      INTEGER npoints
     310cym      PARAMETER(npoints=klon)
    300311c
    301312      INTEGER sunlit(klon) !sunlit=1 if day; sunlit=0 if night
     
    457468      SAVE radpas                 ! frequence d'appel rayonnement
    458469c
    459       REAL radsol(klon)
    460       SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
    461 c
    462       REAL rlat(klon)
    463       SAVE rlat                   ! latitude pour chaque point
    464 c
    465       REAL rlon(klon)
    466       SAVE rlon                   ! longitude pour chaque point
     470      REAL,allocatable,save :: radsol(:)
     471cym      SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
     472c
     473      REAL,allocatable,save :: rlat(:)
     474cym      SAVE rlat                   ! latitude pour chaque point
     475c
     476      REAL,allocatable,save :: rlon(:)
     477cym      SAVE rlon                   ! longitude pour chaque point
    467478c
    468479cc      INTEGER iflag_con
     
    478489      real slp(klon) ! sea level pressure
    479490
    480       REAL ftsol(klon,nbsrf)
    481       SAVE ftsol                  ! temperature du sol
    482 c
    483       REAL ftsoil(klon,nsoilmx,nbsrf)
    484       SAVE ftsoil                 ! temperature dans le sol
    485 c
    486       REAL fevap(klon,nbsrf)
    487       SAVE fevap                 ! evaporation
    488       REAL fluxlat(klon,nbsrf)
    489       SAVE fluxlat
    490 c
    491       REAL deltat(klon)
    492       SAVE deltat                 ! ecart avec la SST de reference
    493 c
    494       REAL fqsurf(klon,nbsrf)
    495       SAVE fqsurf                 ! humidite de l'air au contact de la surface
    496 c
    497       REAL qsol(klon)
    498       SAVE qsol                  ! hauteur d'eau dans le sol
    499 c
    500       REAL fsnow(klon,nbsrf)
    501       SAVE fsnow                  ! epaisseur neigeuse
    502 c
    503       REAL falbe(klon,nbsrf)
    504       SAVE falbe                  ! albedo par type de surface
    505       REAL falblw(klon,nbsrf)
    506       SAVE falblw                 ! albedo par type de surface
     491      REAL,allocatable,save :: ftsol(:,:)
     492cym      SAVE ftsol                  ! temperature du sol
     493c
     494      REAL,allocatable,save :: ftsoil(:,:,:)
     495cym      SAVE ftsoil                 ! temperature dans le sol
     496c
     497      REAL,allocatable,save :: fevap(:,:)
     498cym      SAVE fevap                 ! evaporation
     499      REAL,allocatable,save :: fluxlat(:,:)
     500cym      SAVE fluxlat
     501c
     502      REAL,allocatable,save :: deltat(:)
     503cym      SAVE deltat                 ! ecart avec la SST de reference
     504c
     505      REAL,allocatable,save :: fqsurf(:,:)
     506cym      SAVE fqsurf                 ! humidite de l'air au contact de la surface
     507c
     508      REAL,allocatable,save :: qsol(:)
     509cym      SAVE qsol                  ! hauteur d'eau dans le sol
     510c
     511      REAL,allocatable,save :: fsnow(:,:)
     512cym      SAVE fsnow                  ! epaisseur neigeuse
     513c
     514      REAL,allocatable,save :: falbe(:,:)
     515cym      SAVE falbe                  ! albedo par type de surface
     516      REAL,allocatable,save :: falblw(:,:)
     517cym      SAVE falblw                 ! albedo par type de surface
    507518
    508519c
     
    510521c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
    511522c
    512       REAL zmea(klon)
    513       SAVE zmea                   ! orographie moyenne
    514 c
    515       REAL zstd(klon)
    516       SAVE zstd                   ! deviation standard de l'OESM
    517 c
    518       REAL zsig(klon)
    519       SAVE zsig                   ! pente de l'OESM
    520 c
    521       REAL zgam(klon)
    522       save zgam                   ! anisotropie de l'OESM
    523 c
    524       REAL zthe(klon)
    525       SAVE zthe                   ! orientation de l'OESM
    526 c
    527       REAL zpic(klon)
    528       SAVE zpic                   ! Maximum de l'OESM
    529 c
    530       REAL zval(klon)
    531       SAVE zval                   ! Minimum de l'OESM
    532 c
    533       REAL rugoro(klon)
    534       SAVE rugoro                 ! longueur de rugosite de l'OESM
     523      REAL,allocatable,save :: zmea(:)
     524cym      SAVE zmea                   ! orographie moyenne
     525c
     526      REAL,allocatable,save :: zstd(:)
     527cym      SAVE zstd                   ! deviation standard de l'OESM
     528c
     529      REAL,allocatable,save :: zsig(:)
     530cym      SAVE zsig                   ! pente de l'OESM
     531c
     532      REAL,allocatable,save :: zgam(:)
     533cym      save zgam                   ! anisotropie de l'OESM
     534c
     535      REAL,allocatable,save :: zthe(:)
     536cym      SAVE zthe                   ! orientation de l'OESM
     537c
     538      REAL,allocatable,save :: zpic(:)
     539cym      SAVE zpic                   ! Maximum de l'OESM
     540c
     541      REAL,allocatable,save :: zval(:)
     542cym      SAVE zval                   ! Minimum de l'OESM
     543c
     544      REAL,allocatable,save :: rugoro(:)
     545cym      SAVE rugoro                 ! longueur de rugosite de l'OESM
    535546c
    536547      REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon)
    537548c
    538       REAL zuthe(klon),zvthe(klon)
    539       SAVE zuthe
    540       SAVE zvthe
     549      REAL,allocatable,save :: zuthe(:),zvthe(:)
     550cym      SAVE zuthe
     551cym      SAVE zvthe
    541552      INTEGER igwd,idx(klon),itest(klon)
    542553c
    543       REAL agesno(klon,nbsrf)
    544       SAVE agesno                 ! age de la neige
    545 c
    546       REAL alb_neig(klon)
    547       SAVE alb_neig               ! albedo de la neige
    548 c
    549       REAL run_off_lic_0(klon)
    550       SAVE run_off_lic_0
     554      REAL,allocatable,save :: agesno(:,:)
     555cym      SAVE agesno                 ! age de la neige
     556c
     557      REAL,allocatable,save :: alb_neig(:)
     558cym      SAVE alb_neig               ! albedo de la neige
     559c
     560      REAL,allocatable,save :: run_off_lic_0(:)
     561cym      SAVE run_off_lic_0
    551562cKE43
    552563c Variables liees a la convection de K. Emanuel (sb):
    553564c
    554       REAL ema_workcbmf(klon)   ! cloud base mass flux
    555       SAVE ema_workcbmf
    556 
    557       REAL ema_cbmf(klon)       ! cloud base mass flux
    558       SAVE ema_cbmf
    559 
    560       REAL ema_pcb(klon)        ! cloud base pressure
    561       SAVE ema_pcb
    562 
    563       REAL ema_pct(klon)        ! cloud top pressure
    564       SAVE ema_pct
     565      REAL,allocatable,save :: ema_workcbmf(:)   ! cloud base mass flux
     566cym      SAVE ema_workcbmf
     567
     568      REAL,allocatable,save :: ema_cbmf(:)       ! cloud base mass flux
     569cym      SAVE ema_cbmf
     570
     571      REAL,allocatable,save :: ema_pcb(:)        ! cloud base pressure
     572cym      SAVE ema_pcb
     573
     574      REAL,allocatable,save :: ema_pct(:)        ! cloud top pressure
     575cym      SAVE ema_pct
    565576
    566577      REAL bas, top             ! cloud base and top levels
     
    568579      SAVE top
    569580
    570       REAL Ma(klon,klev)        ! undilute upward mass flux
    571       SAVE Ma
    572       REAL qcondc(klon,klev)    ! in-cld water content from convect
    573       SAVE qcondc
    574       REAL ema_work1(klon, klev), ema_work2(klon, klev)
    575       SAVE ema_work1, ema_work2
     581      REAL,allocatable,save :: Ma(:,:)        ! undilute upward mass flux
     582cym      SAVE Ma
     583      REAL,allocatable,save :: qcondc(:,:)    ! in-cld water content from convect
     584cym      SAVE qcondc
     585      REAL,allocatable,save :: ema_work1(:, :), ema_work2(:, :)
     586cym      SAVE ema_work1, ema_work2
    576587      REAL wdn(klon), tdn(klon), qdn(klon)
    577588
    578       REAL wd(klon) ! sb
    579       SAVE wd       ! sb
     589      REAL,allocatable,save :: wd(:) ! sb
     590cym      SAVE wd       ! sb
    580591
    581592c Variables locales pour la couche limite (al1):
     
    604615c$$$      PARAMETER (offline=.false.)
    605616c$$$      INTEGER physid
    606       REAL pfrac_impa(klon,klev)! Produits des coefs lessivage impaction
    607       save pfrac_impa
    608       REAL pfrac_nucl(klon,klev)! Produits des coefs lessivage nucleation
    609       save pfrac_nucl
    610       REAL pfrac_1nucl(klon,klev)! Produits des coefs lessi nucl (alpha = 1)
    611       save pfrac_1nucl
     617      REAL,allocatable,save :: pfrac_impa(:,:)! Produits des coefs lessivage impaction
     618cym      save pfrac_impa
     619      REAL,allocatable,save :: pfrac_nucl(:,:)! Produits des coefs lessivage nucleation
     620cym      save pfrac_nucl
     621      REAL,allocatable,save :: pfrac_1nucl(:,:)! Produits des coefs lessi nucl (alpha = 1)
     622cym      save pfrac_1nucl
    612623      REAL frac_impa(klon,klev) ! fractions d'aerosols lessivees (impaction)
    613624      REAL frac_nucl(klon,klev) ! idem (nucleation)
     
    618629
    619630cAA
    620       REAL rain_fall(klon) ! pluie
    621       REAL snow_fall(klon) ! neige
    622       save snow_fall, rain_fall
     631      REAL,allocatable,save :: rain_fall(:) ! pluie
     632      REAL,allocatable,save :: snow_fall(:) ! neige
     633cym      save snow_fall, rain_fall
    623634cIM 050204 BEG
    624       REAL total_rain(klon), nday_rain(klon)
    625       save total_rain, nday_rain
     635      REAL,allocatable,save :: total_rain(:), nday_rain(:)
     636cym      save total_rain, nday_rain
    626637cIM 050204 END
    627638      REAL evap(klon), devap(klon) ! evaporation et sa derivee
    628639      REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
    629       REAL dlw(klon)    ! derivee infra rouge
     640      REAL,allocatable,save :: dlw(:)    ! derivee infra rouge
    630641cym
    631       SAVE dlw
     642cym      SAVE dlw
    632643cym
    633644      REAL bils(klon) ! bilan de chaleur au sol
    634645      REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque
    635646C                             ! type de sous-surface et pondere par la fraction
    636       REAL fder(klon) ! Derive de flux (sensible et latente)
    637       save fder
     647      REAL,allocatable,save :: fder(:) ! Derive de flux (sensible et latente)
     648cym      save fder
    638649      REAL ve(klon) ! integr. verticale du transport meri. de l'energie
    639650      REAL vq(klon) ! integr. verticale du transport meri. de l'eau
     
    641652      REAL uq(klon) ! integr. verticale du transport zonal de l'eau
    642653c
    643       REAL frugs(klon,nbsrf) ! longueur de rugosite
    644       save frugs
     654      REAL,allocatable,save :: frugs(:,:) ! longueur de rugosite
     655cym      save frugs
    645656      REAL zxrugs(klon) ! longueur de rugosite
    646657c
    647658c Conditions aux limites
    648659c
     660      INTEGER :: iii
    649661      INTEGER julien
    650662c
    651663      INTEGER lmt_pas
    652664      SAVE lmt_pas                ! frequence de mise a jour
    653       REAL pctsrf(klon,nbsrf)
     665      REAL,allocatable,save :: pctsrf(:,:)
    654666cIM
    655667      REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE
    656       REAL paire_ter(klon)        !surfaces terre
     668cym      REAL paire_ter(klon)        !surfaces terre
     669      REAL,allocatable,save ::  paire_ter(:)        !surfaces terre
     670   
    657671cIM
    658       SAVE pctsrf                 ! sous-fraction du sol
    659       REAL albsol(klon)
    660       SAVE albsol                 ! albedo du sol total
    661       REAL albsollw(klon)
    662       SAVE albsollw                 ! albedo du sol total
    663 
    664       REAL wo(klon,klev)
    665       SAVE wo                     ! ozone
     672cym      SAVE pctsrf                 ! sous-fraction du sol
     673      REAL,allocatable,save :: albsol(:)
     674cym      SAVE albsol                 ! albedo du sol total
     675      REAL,allocatable,save :: albsollw(:)
     676cym      SAVE albsollw                 ! albedo du sol total
     677
     678      REAL,allocatable,save :: wo(:,:)
     679cym     SAVE wo                     ! ozone
    666680c======================================================================
    667681c
     
    702716c Variables locales
    703717c
    704       real clwcon(klon,klev),rnebcon(klon,klev)
     718      real,allocatable,save :: clwcon(:,:),rnebcon(:,:)
    705719      real clwcon0(klon,klev),rnebcon0(klon,klev)
    706       save rnebcon, clwcon
     720cym      save rnebcon, clwcon
    707721
    708722      REAL rhcl(klon,klev)    ! humiditi relative ciel clair
     
    725739      REAL zxfluxv(klon, klev)
    726740CXXX
    727       REAL heat(klon,klev)    ! chauffage solaire
    728       REAL heat0(klon,klev)   ! chauffage solaire ciel clair
    729       REAL cool(klon,klev)    ! refroidissement infrarouge
    730       REAL cool0(klon,klev)   ! refroidissement infrarouge ciel clair
    731       REAL topsw(klon), toplw(klon), solsw(klon), sollw(klon)
    732       real sollwdown(klon)    ! downward LW flux at surface
     741      REAL,allocatable,save :: heat(:,:)    ! chauffage solaire
     742      REAL,allocatable,save :: heat0(:,:)   ! chauffage solaire ciel clair
     743      REAL,allocatable,save :: cool(:,:)    ! refroidissement infrarouge
     744      REAL,allocatable,save :: cool0(:,:)   ! refroidissement infrarouge ciel clair
     745      REAL,allocatable,save :: topsw(:), toplw(:), solsw(:), sollw(:)
     746      real,allocatable,save :: sollwdown(:)    ! downward LW flux at surface
    733747cIM BEG
    734       real sollwdownclr(klon)    ! downward CS LW flux at surface
    735       real toplwdown(klon)       ! downward CS LW flux at TOA
    736       real toplwdownclr(klon)    ! downward CS LW flux at TOA
     748      real,allocatable,save :: sollwdownclr(:)    ! downward CS LW flux at surface
     749      real,allocatable,save :: toplwdown(:)       ! downward CS LW flux at TOA
     750      real,allocatable,save :: toplwdownclr(:)    ! downward CS LW flux at TOA
    737751cIM END
    738       REAL topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon)
    739       REAL albpla(klon)
     752      REAL,allocatable,save :: topsw0(:),toplw0(:),solsw0(:),sollw0(:)
     753      REAL,allocatable,save :: albpla(:)
    740754      REAL fsollw(klon, nbsrf)   ! bilan flux IR pour chaque sous surface
    741755      REAL fsolsw(klon, nbsrf)   ! flux solaire absorb. pour chaque sous surface
    742756c Le rayonnement n'est pas calcule tous les pas, il faut donc
    743757c                      sauvegarder les sorties du rayonnement
    744       SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
    745       SAVE  sollwdownclr, toplwdown, toplwdownclr
    746       SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
     758cym      SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
     759cym      SAVE  sollwdownclr, toplwdown, toplwdownclr
     760cym      SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
    747761c
    748762      INTEGER itaprad
     
    785799      REAL dnwd0(klon,klev)     ! unsaturated downdraft mass flux
    786800      REAL tvp(klon,klev)       ! virtual temp of lifted parcel
    787       REAL cape(klon)           ! CAPE
    788       SAVE cape
     801      REAL,allocatable,save :: cape(:)           ! CAPE
     802cym      SAVE cape
    789803      CHARACTER*40 capemaxcels  !max(CAPE)
    790804
    791       REAL pbase(klon)          ! cloud base pressure
    792       SAVE pbase
    793       REAL bbase(klon)          ! cloud base buoyancy
    794       SAVE bbase
     805      REAL,allocatable,save :: pbase(:)          ! cloud base pressure
     806cym      SAVE pbase
     807      REAL,allocatable,save :: bbase(:)          ! cloud base buoyancy
     808cym      SAVE bbase
    795809      REAL rflag(klon)          ! flag fonctionnement de convect
    796810      INTEGER iflagctrl(klon)          ! flag fonctionnement de convect
     
    829843      REAL prfl(klon,klev+1), psfl(klon,klev+1)
    830844c
    831       INTEGER ibas_con(klon), itop_con(klon)
     845      INTEGER,allocatable,save :: ibas_con(:), itop_con(:)
    832846cym
    833       SAVE ibas_con,itop_con
     847cym      SAVE ibas_con,itop_con
    834848cym
    835849      REAL rain_con(klon), rain_lsc(klon)
     
    846860      REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif
    847861
    848       REAL ratqs(klon,klev),ratqss(klon,klev),ratqsc(klon,klev)
     862      REAL,allocatable,save :: ratqs(:,:)
     863      REAL ratqss(klon,klev),ratqsc(klon,klev)
    849864      real ratqsbas,ratqshaut
    850       save ratqsbas,ratqshaut, ratqs
     865cym      save ratqsbas,ratqshaut, ratqs
     866      save ratqsbas,ratqshaut
    851867      real zpt_conv(klon,klev)
    852868
     
    956972cjq   Aerosol effects (Johannes Quaas, 27/11/2003)
    957973      REAL sulfate(klon, klev) ! SO4 aerosol concentration [ug/m3]
    958       REAL sulfate_pi(klon, klev) ! SO4 aerosol concentration [ug/m3] (pre-industrial value)
    959       SAVE sulfate_pi
     974      REAL,allocatable,save :: sulfate_pi(:,:) ! SO4 aerosol concentration [ug/m3] (pre-industrial value)
     975cym      SAVE sulfate_pi
    960976
    961977      REAL cldtaupi(klon,klev)  ! Cloud optical thickness for pre-industrial (pi) aerosols
     
    9901006c Declaration des constantes et des fonctions thermodynamiques
    9911007c
     1008      LOGICAL :: first=.true.
    9921009#include "YOMCST.h"
    9931010#include "YOETHF.h"
    9941011#include "FCTTRE.h"
     1012
     1013      REAL Field_tmp(klon2,klevp1)
     1014     
     1015      if (first) then
     1016     
     1017      allocate( t_ancien(klon,klev), q_ancien(klon,klev))
     1018      allocate( q2(klon,klev+1,nbsrf))
     1019      allocate( swdn0(klon,klevp1), swdn(klon,klevp1))
     1020      allocate( swup0(klon,klevp1), swup(klon,klevp1))
     1021      allocate( SWdn200clr(klon), SWdn200(klon))
     1022      allocate( SWup200clr(klon), SWup200(klon))
     1023      allocate( lwdn0(klon,klevp1), lwdn(klon,klevp1))
     1024      allocate( lwup0(klon,klevp1), lwup(klon,klevp1))
     1025      allocate( LWdn200clr(klon), LWdn200(klon))
     1026      allocate( LWup200clr(klon), LWup200(klon))
     1027      allocate( LWdnTOA(klon), LWdnTOAclr(klon))
     1028      allocate( radsol(klon))
     1029      allocate( rlat(klon))
     1030      allocate( rlon(klon))
     1031      allocate( ftsol(klon,nbsrf))
     1032      allocate( ftsoil(klon,nsoilmx,nbsrf))
     1033      allocate( fevap(klon,nbsrf))
     1034      allocate( fluxlat(klon,nbsrf))
     1035      allocate( deltat(klon))
     1036      allocate( fqsurf(klon,nbsrf))
     1037      allocate( qsol(klon))
     1038      allocate( fsnow(klon,nbsrf))
     1039      allocate( falbe(klon,nbsrf))
     1040      allocate( falblw(klon,nbsrf))
     1041      allocate( zmea(klon))
     1042      allocate( zstd(klon))
     1043      allocate( zsig(klon))
     1044      allocate( zgam(klon))
     1045      allocate( zthe(klon))
     1046      allocate( zpic(klon))
     1047      allocate( zval(klon))
     1048      allocate( rugoro(klon))
     1049      allocate( zuthe(klon),zvthe(klon))
     1050      allocate( agesno(klon,nbsrf))
     1051      allocate( alb_neig(klon))
     1052      allocate( run_off_lic_0(klon))
     1053      allocate( ema_workcbmf(klon))   
     1054      allocate( ema_cbmf(klon))
     1055      allocate( ema_pcb(klon))
     1056      allocate( ema_pct(klon)) 
     1057      allocate( Ma(klon,klev) )
     1058      allocate( qcondc(klon,klev)) 
     1059      allocate( ema_work1(klon, klev), ema_work2(klon, klev))
     1060      allocate( wd(klon) )
     1061      allocate( pfrac_impa(klon,klev))
     1062      allocate( pfrac_nucl(klon,klev))
     1063      allocate( pfrac_1nucl(klon,klev))
     1064      allocate( rain_fall(klon) )
     1065      allocate( snow_fall(klon) )
     1066      allocate( total_rain(klon), nday_rain(klon))
     1067      allocate( dlw(klon)   )
     1068      allocate( fder(klon) )
     1069      allocate( frugs(klon,nbsrf) )
     1070      allocate( pctsrf(klon,nbsrf))
     1071      allocate( albsol(klon))
     1072      allocate( albsollw(klon))
     1073      allocate( wo(klon,klev))
     1074      allocate( clwcon(klon,klev),rnebcon(klon,klev))
     1075      allocate( heat(klon,klev)    )
     1076      allocate( heat0(klon,klev)  )
     1077      allocate( cool(klon,klev)    )
     1078      allocate( cool0(klon,klev)   )
     1079      allocate( topsw(klon), toplw(klon), solsw(klon), sollw(klon))
     1080      allocate( sollwdown(klon)    )
     1081      allocate( sollwdownclr(klon)  )
     1082      allocate( toplwdown(klon)      )
     1083      allocate( toplwdownclr(klon)   )
     1084      allocate( topsw0(klon), toplw0(klon), solsw0(klon), sollw0(klon))
     1085      allocate( albpla(klon))
     1086      allocate( cape(klon)   )       
     1087      allocate( pbase(klon)   )     
     1088      allocate( bbase(klon)    )     
     1089      allocate( ibas_con(klon), itop_con(klon))
     1090      allocate( ratqs(klon,klev))
     1091      allocate( sulfate_pi(klon, klev))
     1092      allocate( paire_ter(klon))
     1093     
     1094        paire_ter(:)=0.   
     1095        clwcon(:,:)=0.
     1096        rnebcon(:,:)=0.
     1097        ratqs(:,:)=0.
     1098        run_off_lic_0(:)=0.
     1099        sollw(:)=0.
     1100        ema_work1(:,:)=0.
     1101        ema_work2(:,:)=0.
     1102       
     1103        first=.false.
     1104      endif
    9951105c======================================================================
    9961106!rv
     
    11641274          DO i = 1, klon
    11651275           ibas_con(i) = 1
    1166            itop_con(i) = 1
     1276           itop_con(i) = klev+1
    11671277          ENDDO
    11681278cIM15/11/02 rajout initialisation ibas_con,itop_con cf. SB =>END
     
    12921402c
    12931403#ifdef INCA
     1404           call VTe(VTphysiq)
     1405           call VTb(VTinca)
    12941406           iii = MOD(NINT(xjour),360)
    12951407           calday = FLOAT(iii) + gmtime
     
    13141426           WRITE(lunout,*) 'OK.'
    13151427#endif
     1428      call VTe(VTinca)
     1429      call VTb(VTphysiq)
    13161430#endif
    13171431c
     
    15381652      fder = dlw
    15391653
    1540 
     1654c$$$      if (mydebug) then
     1655c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     1656c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     1657c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     1658c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     1659c$$$      endif
     1660 
    15411661      CALL clmain(dtime,itap,date0,pctsrf,pctsrf_new,
    15421662     e            t_seri,q_seri,u_seri,v_seri,
     
    15961716      ENDDO
    15971717      ENDDO
     1718
     1719c$$$      if (mydebug) then
     1720c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     1721c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     1722c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     1723c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     1724c$$$      endif
     1725
    15981726c
    15991727      IF (if_ebil.ge.2) THEN
     
    18331961        ENDDO
    18341962      ENDDO
     1963
     1964c$$$      if (mydebug) then
     1965c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     1966c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     1967c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     1968c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     1969c$$$      endif
    18351970c
    18361971      IF (if_ebil.ge.2) THEN
     
    20332168     s      , fs_bound, fq_bound )
    20342169      END IF
     2170
     2171c$$$      if (mydebug) then
     2172c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     2173c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     2174c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     2175c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     2176c$$$      endif
     2177
    20352178c
    20362179c-------------------------------------------------------------------
     
    22522395     &     boxptop)
    22532396
    2254 
     2397     
     2398      if (monocpu) then
     2399     
    22552400c passage de la grille (klon,7,7) a (iim,jjmp1,7,7)
    22562401      DO l=1, lmaxm1
     
    23012446       ENDDO
    23022447      ENDDO
     2448     
     2449      endif ! monocpu
    23032450c
    23042451      ENDIF !ok_isccp
     
    23802527
    23812528#ifdef INCA
     2529      call VTe(VTphysiq)
     2530      call VTb(VTinca)
    23822531           calday = FLOAT(julien) + gmtime
    23832532
     
    24332582           WRITE(lunout,*)'OK.'
    24342583#endif
     2584      call VTe(VTinca)
     2585      call VTb(VTphysiq)
    24352586#endif
    24362587c     
     
    24712622     .               + falblw(i,is_sic) * pctsrf(i,is_sic)
    24722623      ENDDO
     2624
     2625c$$$      if (mydebug) then
     2626c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     2627c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     2628c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     2629c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     2630c$$$      endif
     2631     
    24732632      CALL radlwsw ! nouveau rayonnement (compatible Arpege-IFS)
    24742633     e            (dist, rmu0, fract,
     
    25002659      ENDDO
    25012660c
     2661c$$$      if (mydebug) then
     2662c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     2663c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     2664c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     2665c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     2666c$$$      endif
     2667     
    25022668      IF (if_ebil.ge.2) THEN
    25032669        ztit='after rad'
     
    25852751      ENDIF ! fin de test sur ok_orodr
    25862752c
     2753c$$$      if (mydebug) then
     2754c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     2755c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     2756c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     2757c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     2758c$$$      endif
     2759     
    25872760      IF (ok_orolf) THEN
    25882761c
     
    26172790      ENDIF ! fin de test sur ok_orolf
    26182791c
     2792
     2793c$$$      if (mydebug) then
     2794c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     2795c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     2796c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     2797c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     2798c$$$      endif
     2799
    26192800      IF (if_ebil.ge.2) THEN
    26202801        ztit='after orography'
     
    28523033c Convertir les incrementations en tendances
    28533034c
     3035c$$$      if (mydebug) then
     3036c$$$        call WriteField_phy_p('u_seri',u_seri,llm)
     3037c$$$        call WriteField_phy_p('v_seri',v_seri,llm)
     3038c$$$        call WriteField_phy_p('t_seri',t_seri,llm)
     3039c$$$    call WriteField_phy_p('q_seri',q_seri,llm)
     3040c$$$      endif
     3041
    28543042      DO k = 1, klev
    28553043      DO i = 1, klon
     
    29183106
    29193107#ifdef INCA
     3108      call VTe(VTphysiq)
     3109      call VTb(VTinca)
    29203110#ifdef INCAINFO
    29213111           WRITE(lunout,*)'Appel CHEMHOOK_END ...'
     
    29453135           WRITE(lunout,*)'OK.'
    29463136#endif
     3137      call VTe(VTinca)
     3138      call VTb(VTphysiq)
    29473139#endif
    29483140
Note: See TracChangeset for help on using the changeset viewer.