Ignore:
Timestamp:
Apr 14, 2017, 1:25:26 PM (7 years ago)
Author:
jyg
Message:

Some cleaning in concvl and cva_driver:
(i) arguments of concvl have now their INTENT
attribute;
(ii) dimensions in cva_diver are now given by
the arguments (dimphy is no longer used).

Location:
LMDZ5/trunk/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/concvl.F90

    r2824 r2853  
    1313!RomP >>>
    1414!!     .             da,phi,mp,dd_t,dd_q,lalim_conv,wght_th)
    15                   da, phi, mp, phi2, d1a, dam, sij, clw, elij, &     ! RomP
     15                  da, phi, mp, phii, d1a, dam, sij, clw, elij, &     ! RomP
    1616                  dd_t, dd_q, lalim_conv, wght_th, &                 ! RomP
    1717                  evap, ep, epmlmMm, eplaMm, &                       ! RomP
     
    8787  include "clesphys.h"
    8888
    89   INTEGER iflag_clos
    90 
    91   REAL dtime, paprs(klon, klev+1), pplay(klon, klev)
    92   INTEGER k_upper_cv
    93   REAL t(klon, klev), q(klon, klev), u(klon, klev), v(klon, klev)
    94   REAL t_wake(klon, klev), q_wake(klon, klev)
    95   REAL s_wake(klon)
    96   REAL tra(klon, klev, nbtr)
    97   INTEGER ntra
    98   REAL sig1(klon, klev), w01(klon, klev), ptop2(klon)
    99   REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
    100   REAL Ale(klon), Alp(klon)
    101 
    102   REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, klev)
    103   REAL dd_t(klon, klev), dd_q(klon, klev)
    104   REAL d_tra(klon, klev, nbtr)
    105   REAL rain(klon), snow(klon)
    106 
    107   INTEGER kbas(klon), ktop(klon)
    108   REAL em_ph(klon, klev+1), em_p(klon, klev)
    109   REAL upwd(klon, klev), dnwd(klon, klev), dnwdbis(klon, klev)
    110 
    111 !!       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)     !jyg
    112   REAL Ma(klon, klev), mip(klon, klev), Vprecip(klon, klev+1)      !jyg
    113   REAL Vprecipi(klon, klev+1)                                      !jyg
    114   REAL wght(klon, klev)                                            !RL
    115 
    116   REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
     89  INTEGER, INTENT(IN)                           :: iflag_clos
     90  REAL, INTENT(IN)                              :: dtime
     91  REAL, DIMENSION(klon,klev),   INTENT(IN)      :: pplay
     92  REAL, DIMENSION(klon,klev+1), INTENT(IN)      :: paprs
     93  INTEGER,                      INTENT(IN)      :: k_upper_cv
     94  REAL, DIMENSION(klon,klev),   INTENT(IN)      :: t, q, u, v
     95  REAL, DIMENSION(klon,klev),   INTENT(IN)      :: t_wake, q_wake
     96  REAL, DIMENSION(klon),        INTENT(IN)      :: s_wake
     97  REAL, DIMENSION(klon,klev, nbtr),INTENT(IN)   :: tra
     98  INTEGER,                      INTENT(IN)      :: ntra
     99  REAL, DIMENSION(klon),        INTENT(IN)      :: Ale, Alp
     100!CR:test: on passe lentr et alim_star des thermiques
     101  INTEGER, DIMENSION(klon),     INTENT(IN)      :: lalim_conv
     102  REAL, DIMENSION(klon,klev),   INTENT(IN)      :: wght_th
     103
     104  REAL, DIMENSION(klon,klev),   INTENT(INOUT)   :: sig1, w01
     105
     106  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: d_t, d_q, d_u, d_v
     107  REAL, DIMENSION(klon,klev, nbtr),INTENT(OUT)  :: d_tra
     108  REAL, DIMENSION(klon),        INTENT(OUT)     :: rain, snow
     109
     110  INTEGER, DIMENSION(klon),     INTENT(OUT)     :: kbas, ktop
     111  REAL, DIMENSION(klon),        INTENT(OUT)     :: sigd
     112  REAL, DIMENSION(klon),        INTENT(OUT)     :: cbmf, plcl, plfc, wbeff
     113  REAL, DIMENSION(klon),        INTENT(OUT)     :: convoccur
     114  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: upwd, dnwd, dnwdbis
     115
     116!!       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)                    !jyg
     117  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: Ma, mip
     118  REAL, DIMENSION(klon,klev+1), INTENT(OUT)     :: Vprecip                        !jyg
     119  REAL, DIMENSION(klon),        INTENT(OUT)     :: cape, cin
     120  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: tvp
     121  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: Tconv
     122  INTEGER, DIMENSION(klon),     INTENT(OUT)     :: iflag
     123  REAL, DIMENSION(klon),        INTENT(OUT)     :: pbase, bbase
     124  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: dtvpdt1, dtvpdq1
     125  REAL, DIMENSION(klon),        INTENT(OUT)     :: dplcldt, dplcldr
     126  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: qcondc
     127  REAL, DIMENSION(klon),        INTENT(OUT)     :: wd
     128  REAL, DIMENSION(klon,klev+1), INTENT(OUT)     :: pmflxr, pmflxs
     129
     130  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: da, mp
     131  REAL, DIMENSION(klon,klev,klev),INTENT(OUT)   :: phi
    117132! RomP >>>
    118   REAL phi2(klon, klev, klev)
    119   REAL d1a(klon, klev), dam(klon, klev)
    120   REAL sij(klon, klev, klev), clw(klon, klev), elij(klon, klev, klev)
    121   REAL wdtrainA(klon, klev), wdtrainM(klon, klev)
    122   REAL evap(klon, klev), ep(klon, klev)
    123   REAL epmlmMm(klon, klev, klev), eplaMm(klon, klev)
     133  REAL, DIMENSION(klon,klev,klev),INTENT(OUT)   :: phii
     134  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: d1a, dam
     135  REAL, DIMENSION(klon,klev,klev),INTENT(OUT)   :: sij, elij
     136  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: clw
     137  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: dd_t, dd_q
     138  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: evap, ep
     139  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: eplaMm
     140  REAL, DIMENSION(klon,klev,klev), INTENT(OUT)  :: epmlmMm
     141  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: wdtrainA, wdtrainM
    124142! RomP <<<
    125   REAL cape(klon), cin(klon), tvp(klon, klev)
    126   REAL Tconv(klon, klev)
    127 
    128 !CR:test: on passe lentr et alim_star des thermiques
    129   INTEGER lalim_conv(klon)
    130   REAL wght_th(klon, klev)
    131   REAL em_sig1feed ! sigma at lower bound of feeding layer
    132   REAL em_sig2feed ! sigma at upper bound of feeding layer
    133   REAL em_wght(klev) ! weight density determining the feeding mixture
     143  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: wght                       !RL
     144  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: qtc
     145  REAL, DIMENSION(klon,klev),   INTENT(OUT)     :: sigt
     146  REAL,                         INTENT(OUT)     :: tau_cld_cv, coefw_cld_cv
     147  REAL, DIMENSION(klon),        INTENT(OUT)     :: epmax_diag                ! epmax_cape
     148
     149!
     150!  Local
     151!  ----
     152  REAL, DIMENSION(klon,klev)                    :: em_p
     153  REAL, DIMENSION(klon,klev+1)                  :: em_ph
     154  REAL                                          :: em_sig1feed ! sigma at lower bound of feeding layer
     155  REAL                                          :: em_sig2feed ! sigma at upper bound of feeding layer
     156  REAL, DIMENSION(klev)                         :: em_wght ! weight density determining the feeding mixture
     157  REAL, DIMENSION(klon,klev+1)                  :: Vprecipi                       !jyg
    134158!on enleve le save
    135159! SAVE em_sig1feed,em_sig2feed,em_wght
    136160
    137   INTEGER iflag(klon)
    138   REAL rflag(klon)
    139   REAL pbase(klon), bbase(klon)
    140   REAL dtvpdt1(klon, klev), dtvpdq1(klon, klev)
    141   REAL dplcldt(klon), dplcldr(klon)
    142   REAL qcondc(klon, klev)
    143   REAL qtc(klon, klev)
    144   REAL sigt(klon, klev)
    145   REAL wd(klon)
    146   REAL plim1(klon), plim2(klon), asupmax(klon, klev)
    147   REAL supmax0(klon), asupmaxmin(klon)
    148 
    149   REAL sigd(klon)
    150   REAL zx_t, zdelta, zx_qs, zcor
    151   REAL tau_cld_cv, coefw_cld_cv
    152   REAL epmax_diag(klon) ! epmax_cape
    153 
     161  REAL, DIMENSION(klon)                         :: rflag
     162  REAL, DIMENSION(klon)                         :: plim1, plim2
     163  REAL, DIMENSION(klon)                         :: ptop2
     164  REAL, DIMENSION(klon,klev)                    :: asupmax
     165  REAL, DIMENSION(klon)                         :: supmax0, asupmaxmin
     166  REAL                                          :: zx_t, zdelta, zx_qs, zcor
     167!
    154168!   INTEGER iflag_mix
    155169!   SAVE iflag_mix
    156   INTEGER noff, minorig
    157   INTEGER i, k, itra
    158   REAL qs(klon, klev), qs_wake(klon, klev)
    159   REAL cbmf(klon), plcl(klon), plfc(klon), wbeff(klon)
    160   REAL convoccur(klon)
     170  INTEGER                                       :: noff, minorig
     171  INTEGER                                       :: i,j, k, itra
     172  REAL, DIMENSION(klon,klev)                    :: qs, qs_wake
    161173!LF          SAVE cbmf
    162174!IM/JYG      REAL, SAVE, ALLOCATABLE :: cbmf(:)
    163175!!!$OMP THREADPRIVATE(cbmf)!
    164   REAL cbmflast(klon)
    165   INTEGER ifrst
    166   SAVE ifrst
    167   DATA ifrst/0/
    168 !$OMP THREADPRIVATE(ifrst)
     176  REAL, DIMENSION(klon)                         :: cbmflast
    169177
    170178
     
    259267  snow(:) = 0
    260268
    261 ! IF (ifrst .EQ. 0) THEN
    262 ! ifrst = 1
    263269  IF (first) THEN
    264270    first = .FALSE.
     
    293299      sigd(i) = 0.
    294300    END DO
    295   END IF !(ifrst .EQ. 0)
     301  END IF !(first)
    296302
    297303! Initialisation a chaque pas de temps
     
    393399                   kbas, ktop, &
    394400                   dtime, Ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, &
    395                    da, phi, mp, phi2, d1a, dam, sij, clw, elij, &       !RomP
     401                   da, phi, mp, phii, d1a, dam, sij, clw, elij, &       !RomP
    396402                   evap, ep, epmlmMm, eplaMm, &                         !RomP
    397403                   wdtrainA, wdtrainM, &                                !RomP
     
    428434                    asupmaxmin, lalim_conv, &
    429435!AC!+!RomP+jyg
    430 !!                   da,phi,mp,phi2,d1a,dam,sij,clw,elij, &               ! RomP
     436!!                   da,phi,mp,phii,d1a,dam,sij,clw,elij, &               ! RomP
    431437!!                   evap,ep,epmlmMm,eplaMm,                              ! RomP
    432                     da, phi, mp, phi2, d1a, dam, sij, wght, &           ! RomP+RL
     438                    da, phi, mp, phii, d1a, dam, sij, wght, &           ! RomP+RL
    433439                    clw, elij, evap, ep, epmlmMm, eplaMm, &             ! RomP+RL
    434440                    wdtrainA, wdtrainM, qtc, sigt, &
  • LMDZ5/trunk/libf/phylmd/cva_driver.F90

    r2761 r2853  
    3939! **************************************************************
    4040
    41   USE dimphy
    4241  USE print_control_mod, ONLY: prt_level, lunout
    4342  IMPLICIT NONE
     
    168167  INTEGER, INTENT (IN)                               :: ndp1
    169168  INTEGER, INTENT (IN)                               :: ntra
    170   INTEGER, INTENT(IN)                                :: nloc ! (nloc=klon)  pour l'instant
     169  INTEGER, INTENT(IN)                                :: nloc ! (nloc=len)  pour l'instant
    171170  INTEGER, INTENT (IN)                               :: k_upper
    172171  INTEGER, INTENT (IN)                               :: iflag_con
     
    219218  REAL, DIMENSION (len), INTENT (OUT)                :: ptop21
    220219  REAL, DIMENSION (len), INTENT (OUT)                :: sigd1
    221   REAL, DIMENSION (len, nd), INTENT (OUT)            :: ma1
    222   REAL, DIMENSION (len, nd), INTENT (OUT)            :: mip1
     220  REAL, DIMENSION (len, nd), INTENT (OUT)            :: ma1        ! adiab. asc. mass flux (staggered grid)
     221  REAL, DIMENSION (len, nd), INTENT (OUT)            :: mip1       ! mass flux shed from adiab. ascent (extensive)
    223222! real Vprecip1(len,nd)
    224   REAL, DIMENSION (len, ndp1), INTENT (OUT)          :: vprecip1
    225   REAL, DIMENSION (len, ndp1), INTENT (OUT)          :: vprecipi1
    226   REAL, DIMENSION (len, nd), INTENT (OUT)            :: upwd1
    227   REAL, DIMENSION (len, nd), INTENT (OUT)            :: dnwd1
    228   REAL, DIMENSION (len, nd), INTENT (OUT)            :: dnwd01
    229   REAL, DIMENSION (len, nd), INTENT (OUT)            :: qcondc1         ! cld
     223  REAL, DIMENSION (len, ndp1), INTENT (OUT)          :: vprecip1   ! tot precipitation flux (staggered grid)
     224  REAL, DIMENSION (len, ndp1), INTENT (OUT)          :: vprecipi1  ! ice precipitation flux (staggered grid)
     225  REAL, DIMENSION (len, nd), INTENT (OUT)            :: upwd1      ! upwd sat. mass flux (staggered grid)
     226  REAL, DIMENSION (len, nd), INTENT (OUT)            :: dnwd1      ! dnwd sat. mass flux (staggered grid)
     227  REAL, DIMENSION (len, nd), INTENT (OUT)            :: dnwd01     ! unsat. mass flux (staggered grid)
     228  REAL, DIMENSION (len, nd), INTENT (OUT)            :: qcondc1    ! max cloud condensate (intensive)  ! cld
    230229  REAL, DIMENSION (len), INTENT (OUT)                :: wd1             ! gust
    231230  REAL, DIMENSION (len), INTENT (OUT)                :: cape1
    232231  REAL, DIMENSION (len), INTENT (OUT)                :: cin1
    233   REAL, DIMENSION (len, nd), INTENT (OUT)            :: tvp1
     232  REAL, DIMENSION (len, nd), INTENT (OUT)            :: tvp1       ! Virt. temp. in the adiab. ascent
    234233
    235234!AC!
     
    237236!!      real da(len,nd),phi(len,nd,nd)
    238237!AC!
    239   REAL, DIMENSION (len, nd), INTENT (OUT)            :: ftd1
    240   REAL, DIMENSION (len, nd), INTENT (OUT)            :: fqd1
     238  REAL, DIMENSION (len, nd), INTENT (OUT)            :: ftd1       ! Temp. tendency due to the sole unsat. drafts
     239  REAL, DIMENSION (len, nd), INTENT (OUT)            :: fqd1       ! Moist. tendency due to the sole unsat. drafts
    241240  REAL, DIMENSION (len), INTENT (OUT)                :: Plim11
    242241  REAL, DIMENSION (len), INTENT (OUT)                :: Plim21
    243   REAL, DIMENSION (len, nd), INTENT (OUT)            :: asupmax1
     242  REAL, DIMENSION (len, nd), INTENT (OUT)            :: asupmax1   ! Highest mixing fraction of mixed updraughts
    244243  REAL, DIMENSION (len), INTENT (OUT)                :: supmax01
    245244  REAL, DIMENSION (len), INTENT (OUT)                :: asupmaxmin1
    246   REAL, DIMENSION (len, nd), INTENT (OUT)            :: qtc1            ! cld
    247   REAL, DIMENSION (len, nd), INTENT (OUT)            :: sigt1           ! cld
     245  REAL, DIMENSION (len, nd), INTENT (OUT)            :: qtc1    ! in cloud water content (intensive)   ! cld
     246  REAL, DIMENSION (len, nd), INTENT (OUT)            :: sigt1   ! fract. cloud area (intensive)        ! cld
    248247
    249248! RomP >>>
    250   REAL, DIMENSION (len, nd), INTENT (OUT)            :: wdtrainA1, wdtrainM1
    251   REAL, DIMENSION (len, nd), INTENT (OUT)            :: da1, mp1
    252   REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: phi1
    253   REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: epmlmMm1
    254   REAL, DIMENSION (len, nd), INTENT (OUT)            :: eplaMm1
    255   REAL, DIMENSION (len, nd), INTENT (OUT)            :: evap1, ep1
    256   REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: sigij1, elij1
    257   REAL, DIMENSION (len, nd), INTENT (OUT)            :: clw1
     249  REAL, DIMENSION (len, nd), INTENT (OUT)            :: wdtrainA1, wdtrainM1 ! precipitation sources (extensive)
     250  REAL, DIMENSION (len, nd), INTENT (OUT)            :: mp1  ! unsat. mass flux (staggered grid)
     251  REAL, DIMENSION (len, nd), INTENT (OUT)            :: da1  ! detrained mass flux of adiab. asc. air (extensive)
     252  REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: phi1 ! mass flux of envt. air in mixed draughts (extensive)
     253  REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: epmlmMm1  ! (extensive)
     254  REAL, DIMENSION (len, nd), INTENT (OUT)            :: eplaMm1   ! (extensive)
     255  REAL, DIMENSION (len, nd), INTENT (OUT)            :: evap1 ! evaporation rate in precip. downdraft. (intensive)
     256  REAL, DIMENSION (len, nd), INTENT (OUT)            :: ep1
     257  REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: sigij1 ! mass fraction of env. air in mixed draughts (intensive)
     258  REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: elij1! cond. water per unit mass of mixed draughts (intensive)
     259  REAL, DIMENSION (len, nd), INTENT (OUT)            :: clw1 ! cond. water per unit mass of the adiab. asc. (intensive)
    258260!JYG,RL
    259   REAL, DIMENSION (len, nd), INTENT (OUT)            :: wghti1      ! final weight of the feeding layers
     261  REAL, DIMENSION (len, nd), INTENT (OUT)            :: wghti1   ! final weight of the feeding layers (extensive)
    260262!JYG,RL
    261   REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: phi21
    262   REAL, DIMENSION (len, nd), INTENT (OUT)            :: d1a1, dam1
     263  REAL, DIMENSION (len, nd, nd), INTENT (OUT)        :: phi21    ! (extensive)
     264  REAL, DIMENSION (len, nd), INTENT (OUT)            :: d1a1     ! (extensive)
     265  REAL, DIMENSION (len, nd), INTENT (OUT)            :: dam1     ! (extensive)
    263266! RomP <<<
    264267  REAL, DIMENSION (len ), INTENT (OUT)               :: epmax_diag1     
     
    395398
    396399
    397   INTEGER i, k, n, il, j
     400  INTEGER i, k, il
    398401  INTEGER nword1, nword2, nword3, nword4
    399402  INTEGER icbmax
    400   INTEGER nk1(klon)
    401   INTEGER icb1(klon)
    402   INTEGER icbs1(klon)
     403  INTEGER nk1(len)
     404  INTEGER icb1(len)
     405  INTEGER icbs1(len)
    403406
    404407  LOGICAL ok_inhib ! True => possible inhibition of convection by dryness
     
    407410
    408411  REAL coef_convective(len)   ! = 1 for convective points, = 0 otherwise
    409   REAL tnk1(klon)
    410   REAL thnk1(klon)
    411   REAL qnk1(klon)
    412   REAL gznk1(klon)
    413   REAL pnk1(klon)
    414   REAL qsnk1(klon)
    415   REAL unk1(klon)
    416   REAL vnk1(klon)
    417   REAL cpnk1(klon)
    418   REAL hnk1(klon)
    419   REAL pbase1(klon)
    420   REAL buoybase1(klon)
    421 
    422   REAL lf1(klon, klev), lf1_wake(klon, klev)
    423   REAL lv1(klon, klev), lv1_wake(klon, klev)
    424   REAL cpn1(klon, klev), cpn1_wake(klon, klev)
    425   REAL tv1(klon, klev), tv1_wake(klon, klev)
    426   REAL gz1(klon, klev), gz1_wake(klon, klev)
    427   REAL hm1(klon, klev), hm1_wake(klon, klev)
    428   REAL h1(klon, klev), h1_wake(klon, klev)
    429   REAL tp1(klon, klev)
    430   REAL th1(klon, klev), th1_wake(klon, klev)
    431 
    432   REAL bid(klon, klev) ! dummy array
     412  REAL tnk1(len)
     413  REAL thnk1(len)
     414  REAL qnk1(len)
     415  REAL gznk1(len)
     416  REAL qsnk1(len)
     417  REAL unk1(len)
     418  REAL vnk1(len)
     419  REAL cpnk1(len)
     420  REAL hnk1(len)
     421  REAL pbase1(len)
     422  REAL buoybase1(len)
     423
     424  REAL lf1(len, nd), lf1_wake(len, nd)
     425  REAL lv1(len, nd), lv1_wake(len, nd)
     426  REAL cpn1(len, nd), cpn1_wake(len, nd)
     427  REAL tv1(len, nd), tv1_wake(len, nd)
     428  REAL gz1(len, nd), gz1_wake(len, nd)
     429  REAL hm1(len, nd)
     430  REAL h1(len, nd), h1_wake(len, nd)
     431  REAL tp1(len, nd)
     432  REAL th1(len, nd), th1_wake(len, nd)
     433
     434  REAL bid(len, nd) ! dummy array
    433435
    434436  INTEGER ncum
    435437
    436   INTEGER j1feed(klon)
    437   INTEGER j2feed(klon)
    438438  REAL p1feed1(len) ! pressure at lower bound of feeding layer
    439439  REAL p2feed1(len) ! pressure at upper bound of feeding layer
     
    450450!>jyg
    451451  INTEGER iflag(nloc), nk(nloc), icb(nloc)
    452   INTEGER nent(nloc, klev)
     452  INTEGER nent(nloc, nd)
    453453  INTEGER icbs(nloc)
    454454  INTEGER inb(nloc), inbis(nloc)
    455455
    456456  REAL cbmf(nloc), plcl(nloc), plfc(nloc), wbeff(nloc)
    457   REAL t(nloc, klev), q(nloc, klev), qs(nloc, klev)
    458   REAL t_wake(nloc, klev), q_wake(nloc, klev), qs_wake(nloc, klev)
     457  REAL t(nloc, nd), q(nloc, nd), qs(nloc, nd)
     458  REAL t_wake(nloc, nd), q_wake(nloc, nd), qs_wake(nloc, nd)
    459459  REAL s_wake(nloc)
    460   REAL u(nloc, klev), v(nloc, klev)
    461   REAL gz(nloc, klev), h(nloc, klev), hm(nloc, klev)
    462   REAL h_wake(nloc, klev), hm_wake(nloc, klev)
    463   REAL lv(nloc, klev), lf(nloc, klev), cpn(nloc, klev)
    464   REAL lv_wake(nloc, klev), lf_wake(nloc, klev), cpn_wake(nloc, klev)
    465   REAL p(nloc, klev), ph(nloc, klev+1), tv(nloc, klev), tp(nloc, klev)
    466   REAL tv_wake(nloc, klev)
    467   REAL clw(nloc, klev)
    468   REAL dph(nloc, klev)
    469   REAL pbase(nloc), buoybase(nloc), th(nloc, klev)
    470   REAL th_wake(nloc, klev)
    471   REAL tvp(nloc, klev)
    472   REAL sig(nloc, klev), w0(nloc, klev), ptop2(nloc)
    473   REAL hp(nloc, klev), ep(nloc, klev), sigp(nloc, klev)
    474   REAL buoy(nloc, klev)
     460  REAL u(nloc, nd), v(nloc, nd)
     461  REAL gz(nloc, nd), h(nloc, nd)
     462  REAL h_wake(nloc, nd)
     463  REAL lv(nloc, nd), lf(nloc, nd), cpn(nloc, nd)
     464  REAL lv_wake(nloc, nd), lf_wake(nloc, nd), cpn_wake(nloc, nd)
     465  REAL p(nloc, nd), ph(nloc, nd+1), tv(nloc, nd), tp(nloc, nd)
     466  REAL tv_wake(nloc, nd)
     467  REAL clw(nloc, nd)
     468  REAL dph(nloc, nd)
     469  REAL pbase(nloc), buoybase(nloc), th(nloc, nd)
     470  REAL th_wake(nloc, nd)
     471  REAL tvp(nloc, nd)
     472  REAL sig(nloc, nd), w0(nloc, nd), ptop2(nloc)
     473  REAL hp(nloc, nd), ep(nloc, nd), sigp(nloc, nd)
     474  REAL buoy(nloc, nd)
    475475  REAL cape(nloc)
    476476  REAL cin(nloc)
    477   REAL m(nloc, klev)
    478   REAL ment(nloc, klev, klev), sigij(nloc, klev, klev)
    479   REAL qent(nloc, klev, klev)
    480   REAL hent(nloc, klev, klev)
    481   REAL uent(nloc, klev, klev), vent(nloc, klev, klev)
    482   REAL ments(nloc, klev, klev), qents(nloc, klev, klev)
    483   REAL elij(nloc, klev, klev)
    484   REAL supmax(nloc, klev)
     477  REAL m(nloc, nd)
     478  REAL ment(nloc, nd, nd), sigij(nloc, nd, nd)
     479  REAL qent(nloc, nd, nd)
     480  REAL hent(nloc, nd, nd)
     481  REAL uent(nloc, nd, nd), vent(nloc, nd, nd)
     482  REAL ments(nloc, nd, nd), qents(nloc, nd, nd)
     483  REAL elij(nloc, nd, nd)
     484  REAL supmax(nloc, nd)
    485485  REAL Ale(nloc), Alp(nloc), coef_clos(nloc)
    486   REAL omega(nloc,klev)
     486  REAL omega(nloc,nd)
    487487  REAL sigd(nloc)
    488 ! real mp(nloc,klev), qp(nloc,klev), up(nloc,klev), vp(nloc,klev)
    489 ! real wt(nloc,klev), water(nloc,klev), evap(nloc,klev), ice(nloc,klev)
    490 ! real b(nloc,klev), sigd(nloc)
     488! real mp(nloc,nd), qp(nloc,nd), up(nloc,nd), vp(nloc,nd)
     489! real wt(nloc,nd), water(nloc,nd), evap(nloc,nd), ice(nloc,nd)
     490! real b(nloc,nd), sigd(nloc)
    491491! save mp,qp,up,vp,wt,water,evap,b
    492   REAL, SAVE, ALLOCATABLE :: mp(:, :), qp(:, :), up(:, :), vp(:, :)
    493   REAL, SAVE, ALLOCATABLE :: wt(:, :), water(:, :), evap(:, :)
    494   REAL, SAVE, ALLOCATABLE :: ice(:, :), fondue(:, :), b(:, :)
    495   REAL, SAVE, ALLOCATABLE :: frac(:, :), faci(:, :)
    496 !$OMP THREADPRIVATE(mp,qp,up,vp,wt,water,evap,ice,fondue,b,frac,faci)
    497   REAL ft(nloc, klev), fq(nloc, klev)
    498   REAL ftd(nloc, klev), fqd(nloc, klev)
    499   REAL fu(nloc, klev), fv(nloc, klev)
    500   REAL upwd(nloc, klev), dnwd(nloc, klev), dnwd0(nloc, klev)
    501   REAL ma(nloc, klev), mip(nloc, klev)
    502 !!  REAL tls(nloc, klev), tps(nloc, klev)                 ! unused . jyg
     492  REAL, DIMENSION(len,nd)     :: mp, qp, up, vp
     493  REAL, DIMENSION(len,nd)     :: wt, water, evap
     494  REAL, DIMENSION(len,nd)     :: ice, fondue, b
     495  REAL, DIMENSION(len,nd)     :: frac, faci
     496  REAL ft(nloc, nd), fq(nloc, nd)
     497  REAL ftd(nloc, nd), fqd(nloc, nd)
     498  REAL fu(nloc, nd), fv(nloc, nd)
     499  REAL upwd(nloc, nd), dnwd(nloc, nd), dnwd0(nloc, nd)
     500  REAL ma(nloc, nd), mip(nloc, nd)
     501!!  REAL tls(nloc, nd), tps(nloc, nd)                 ! unused . jyg
    503502  REAL qprime(nloc), tprime(nloc)
    504503  REAL precip(nloc)
    505 ! real Vprecip(nloc,klev)
    506   REAL vprecip(nloc, klev+1)
    507   REAL vprecipi(nloc, klev+1)
    508   REAL tra(nloc, klev, ntra), trap(nloc, klev, ntra)
    509   REAL ftra(nloc, klev, ntra), traent(nloc, klev, klev, ntra)
    510   REAL qcondc(nloc, klev)      ! cld
     504! real Vprecip(nloc,nd)
     505  REAL vprecip(nloc, nd+1)
     506  REAL vprecipi(nloc, nd+1)
     507  REAL tra(nloc, nd, ntra), trap(nloc, nd, ntra)
     508  REAL ftra(nloc, nd, ntra), traent(nloc, nd, nd, ntra)
     509  REAL qcondc(nloc, nd)      ! cld
    511510  REAL wd(nloc)                ! gust
    512511  REAL Plim1(nloc), plim2(nloc)
    513   REAL asupmax(nloc, klev)
     512  REAL asupmax(nloc, nd)
    514513  REAL supmax0(nloc)
    515514  REAL asupmaxmin(nloc)
     
    519518  REAL hnk(nloc), unk(nloc), vnk(nloc)
    520519
    521   REAL qtc(nloc, klev)         ! cld
    522   REAL sigt(nloc, klev)        ! cld
     520  REAL qtc(nloc, nd)         ! cld
     521  REAL sigt(nloc, nd)        ! cld
    523522 
    524523! RomP >>>
    525   REAL wdtrainA(nloc, klev), wdtrainM(nloc, klev)
     524  REAL wdtrainA(nloc, nd), wdtrainM(nloc, nd)
    526525  REAL da(len, nd), phi(len, nd, nd)
    527   REAL epmlmMm(nloc, klev, klev), eplaMm(nloc, klev)
     526  REAL epmlmMm(nloc, nd, nd), eplaMm(nloc, nd)
    528527  REAL phi2(len, nd, nd)
    529528  REAL d1a(len, nd), dam(len, nd)
     
    531530  REAL epmax_diag(nloc) ! epmax_cape
    532531
    533   LOGICAL, SAVE :: first = .TRUE.
    534 !$OMP THREADPRIVATE(first)
    535532  CHARACTER (LEN=20) :: modname = 'cva_driver'
    536533  CHARACTER (LEN=80) :: abort_message
     
    540537
    541538
    542 ! print *, 't1, t1_wake ',(k,t1(1,k),t1_wake(1,k),k=1,klev)
    543 ! print *, 'q1, q1_wake ',(k,q1(1,k),q1_wake(1,k),k=1,klev)
     539! print *, 't1, t1_wake ',(k,t1(1,k),t1_wake(1,k),k=1,nd)
     540! print *, 'q1, q1_wake ',(k,q1(1,k),q1_wake(1,k),k=1,nd)
    544541
    545542! -------------------------------------------------------------------
     
    547544! -------------------------------------------------------------------
    548545
    549   IF (first) THEN
    550     ALLOCATE (mp(nloc,klev), qp(nloc,klev), up(nloc,klev))
    551     ALLOCATE (vp(nloc,klev), wt(nloc,klev), water(nloc,klev))
    552     ALLOCATE (ice(nloc,klev), fondue(nloc,klev))
    553     ALLOCATE (evap(nloc,klev), b(nloc,klev))
    554     ALLOCATE (frac(nloc,klev), faci(nloc,klev))
    555     first = .FALSE.
    556   END IF
    557546! -- set simulation flags:
    558547! (common cvflag)
     
    736725! print*, 'IFLAG1 avant cv3_feed'
    737726! print*,'len,nd',len,nd
    738 ! write(*,'(64i1)') iflag1(2:klon-1)
     727! write(*,'(64i1)') iflag1(2:len-1)
    739728
    740729        if (prt_level >= 9) &
     
    749738! print*, 'IFLAG1 apres cv3_feed'
    750739! print*,'len,nd',len,nd
    751 ! write(*,'(64i1)') iflag1(2:klon-1)
     740! write(*,'(64i1)') iflag1(2:len-1)
    752741
    753742  IF (iflag_con==4) THEN
     
    799788! print*, 'IFLAG1 apres cv3_triger'
    800789! print*,'len,nd',len,nd
    801 ! write(*,'(64i1)') iflag1(2:klon-1)
     790! write(*,'(64i1)') iflag1(2:len-1)
    802791
    803792! call dump2d(iim,jjm-1,sig1(2)
     
    828817  END DO
    829818
    830 ! print*,'klon, ncum = ',len,ncum
     819! print*,'len, ncum = ',len,ncum
    831820
    832821  IF (ncum>0) THEN
     
    944933!      END IF
    945934      IF (iflag_mix>=1) THEN
    946         CALL zilch(supmax, nloc*klev)
     935        CALL zilch(supmax, nloc*nd)
    947936        if (prt_level >= 9) &
    948937             PRINT *, 'cva_driver -> cv3p_mixing'
     
    955944
    956945      ELSE
    957         CALL zilch(supmax, nloc*klev)
     946        CALL zilch(supmax, nloc*nd)
    958947      END IF
    959948    END IF
     
    10311020                        unk, vnk, hp, tv, tvp, ep, clw, m, sig, &
    10321021                        ment, qent, uent, vent, nent, sigij, elij, ments, qents, traent)
    1033         CALL zilch(hent, nloc*klev*klev)
     1022        CALL zilch(hent, nloc*nd*nd)
    10341023      ELSE
    10351024        CALL cv3_mixscale(nloc, ncum, nd, ment, m)
Note: See TracChangeset for help on using the changeset viewer.