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).

File:
1 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, &
Note: See TracChangeset for help on using the changeset viewer.