Ignore:
Timestamp:
Jun 11, 2014, 3:46:46 PM (10 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes r1997:2055 into testing branch

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/phylmd/concvl.F90

    r1999 r2056  
    1 SUBROUTINE concvl(iflag_clos, dtime, paprs, pplay, t, q, t_wake, q_wake, &
    2     s_wake, u, v, tra, ntra, ale, alp, sig1, w01, d_t, d_q, d_u, d_v, d_tra, &
    3     rain, snow, kbas, ktop, sigd, cbmf, plcl, plfc, wbeff, upwd, dnwd, &
    4     dnwdbis, ma, mip, vprecip, cape, cin, tvp, tconv, iflag, pbase, bbase, &
    5     dtvpdt1, dtvpdq1, dplcldt, dplcldr, qcondc, wd, pmflxr, pmflxs, & ! RomP
    6                                                                       ! >>>
    7   ! !     .             da,phi,mp,dd_t,dd_q,lalim_conv,wght_th)
    8     da, phi, mp, phi2, d1a, dam, sij, clw, elij, & ! RomP
    9     dd_t, dd_q, lalim_conv, wght_th, & ! RomP
    10     evap, ep, epmlmmm, eplamm, &   ! RomP
    11     wdtraina, wdtrainm) ! RomP
    12   ! RomP <<<
    13   ! **************************************************************
    14   ! *
    15   ! CONCVL                                                      *
    16   ! *
    17   ! *
    18   ! written by   : Sandrine Bony-Lena, 17/05/2003, 11.16.04    *
    19   ! modified by :                                               *
    20   ! **************************************************************
     1SUBROUTINE concvl(iflag_clos, &
     2                  dtime, paprs, pplay, &
     3                  t, q, t_wake, q_wake, s_wake, u, v, tra, ntra, &
     4                  Ale, Alp, sig1, w01, &
     5                  d_t, d_q, d_u, d_v, d_tra, &
     6                  rain, snow, kbas, ktop, sigd, &
     7                  cbmf, plcl, plfc, wbeff, upwd, dnwd, dnwdbis, &
     8                  Ma, mip, Vprecip, &
     9                  cape, cin, tvp, Tconv, iflag, &
     10                  pbase, bbase, dtvpdt1, dtvpdq1, dplcldt, dplcldr, &
     11                  qcondc, wd, pmflxr, pmflxs, &
     12!RomP >>>
     13!!     .             da,phi,mp,dd_t,dd_q,lalim_conv,wght_th)
     14                  da, phi, mp, phi2, d1a, dam, sij, clw, elij, &     ! RomP
     15                  dd_t, dd_q, lalim_conv, wght_th, &                 ! RomP
     16                  evap, ep, epmlmMm, eplaMm, &                       ! RomP
     17                  wdtrainA, wdtrainM, wght)                          ! RomP+RL
     18!RomP <<<
     19! **************************************************************
     20! *
     21! CONCVL                                                      *
     22! *
     23! *
     24! written by   : Sandrine Bony-Lena, 17/05/2003, 11.16.04    *
     25! modified by :                                               *
     26! **************************************************************
    2127
    2228
     
    2430  USE infotrac, ONLY: nbtr
    2531  IMPLICIT NONE
    26   ! ======================================================================
    27   ! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ???
    28   ! Objet: schema de convection de Emanuel (1991) interface
    29   ! ======================================================================
    30   ! Arguments:
    31   ! dtime--input-R-pas d'integration (s)
    32   ! s-------input-R-la valeur "s" pour chaque couche
    33   ! sigs----input-R-la valeur "sigma" de chaque couche
    34   ! sig-----input-R-la valeur de "sigma" pour chaque niveau
    35   ! psolpa--input-R-la pression au sol (en Pa)
    36   ! pskapa--input-R-exponentiel kappa de psolpa
    37   ! h-------input-R-enthalpie potentielle (Cp*T/P**kappa)
    38   ! q-------input-R-vapeur d'eau (en kg/kg)
    39 
    40   ! work*: input et output: deux variables de travail,
    41   ! on peut les mettre a 0 au debut
    42   ! ALE-----input-R-energie disponible pour soulevement
    43   ! ALP-----input-R-puissance disponible pour soulevement
    44 
    45   ! d_h-----output-R-increment de l'enthalpie potentielle (h)
    46   ! d_q-----output-R-increment de la vapeur d'eau
    47   ! rain----output-R-la pluie (mm/s)
    48   ! snow----output-R-la neige (mm/s)
    49   ! upwd----output-R-saturated updraft mass flux (kg/m**2/s)
    50   ! dnwd----output-R-saturated downdraft mass flux (kg/m**2/s)
    51   ! dnwd0---output-R-unsaturated downdraft mass flux (kg/m**2/s)
    52   ! Ma------output-R-adiabatic ascent mass flux (kg/m2/s)
    53   ! mip-----output-R-mass flux shed by adiabatic ascent (kg/m2/s)
    54   ! Vprecip-output-R-vertical profile of precipitations (kg/m2/s)
    55   ! Tconv---output-R-environment temperature seen by convective scheme (K)
    56   ! Cape----output-R-CAPE (J/kg)
    57   ! Cin ----output-R-CIN  (J/kg)
    58   ! Tvp-----output-R-Temperature virtuelle d'une parcelle soulevee
    59   ! adiabatiquement a partir du niveau 1 (K)
    60   ! deltapb-output-R-distance entre LCL et base de la colonne (<0 ; Pa)
    61   ! Ice_flag-input-L-TRUE->prise en compte de la thermodynamique de la glace
    62   ! dd_t-----output-R-increment de la temperature du aux descentes
    63   ! precipitantes
    64   ! dd_q-----output-R-increment de la vapeur d'eau du aux desc precip
    65   ! ======================================================================
     32! ======================================================================
     33! Auteur(s): S. Bony-Lena (LMD/CNRS) date: ???
     34! Objet: schema de convection de Emanuel (1991) interface
     35! ======================================================================
     36! Arguments:
     37! dtime--input-R-pas d'integration (s)
     38! s-------input-R-la vAleur "s" pour chaque couche
     39! sigs----input-R-la vAleur "sigma" de chaque couche
     40! sig-----input-R-la vAleur de "sigma" pour chaque niveau
     41! psolpa--input-R-la pression au sol (en Pa)
     42! pskapa--input-R-exponentiel kappa de psolpa
     43! h-------input-R-enthAlpie potentielle (Cp*T/P**kappa)
     44! q-------input-R-vapeur d'eau (en kg/kg)
     45
     46! work*: input et output: deux variables de travail,
     47! on peut les mettre a 0 au debut
     48! ALE--------input-R-energie disponible pour soulevement
     49! ALP--------input-R-puissance disponible pour soulevement
     50
     51! d_h--------output-R-increment de l'enthAlpie potentielle (h)
     52! d_q--------output-R-increment de la vapeur d'eau
     53! rain-------output-R-la pluie (mm/s)
     54! snow-------output-R-la neige (mm/s)
     55! upwd-------output-R-saturated updraft mass flux (kg/m**2/s)
     56! dnwd-------output-R-saturated downdraft mass flux (kg/m**2/s)
     57! dnwd0------output-R-unsaturated downdraft mass flux (kg/m**2/s)
     58! Ma---------output-R-adiabatic ascent mass flux (kg/m2/s)
     59! mip--------output-R-mass flux shed by adiabatic ascent (kg/m2/s)
     60! Vprecip----output-R-vertical profile of precipitations (kg/m2/s)
     61! Tconv------output-R-environment temperature seen by convective scheme (K)
     62! Cape-------output-R-CAPE (J/kg)
     63! Cin -------output-R-CIN  (J/kg)
     64! Tvp--------output-R-Temperature virtuelle d'une parcelle soulevee
     65! adiabatiquement a partir du niveau 1 (K)
     66! deltapb----output-R-distance entre LCL et base de la colonne (<0 ; Pa)
     67! Ice_flag---input-L-TRUE->prise en compte de la thermodynamique de la glace
     68! dd_t-------output-R-increment de la temperature du aux descentes precipitantes
     69! dd_q-------output-R-increment de la vapeur d'eau du aux desc precip
     70! lalim_conv-
     71! wght_th----
     72! evap-------output-R
     73! ep---------output-R
     74! epmlmMm----output-R
     75! eplaMm-----output-R
     76! wdtrainA---output-R
     77! wdtrainM---output-R
     78! wght-------output-R
     79! ======================================================================
    6680
    6781
     
    7993  REAL sig1(klon, klev), w01(klon, klev), ptop2(klon)
    8094  REAL pmflxr(klon, klev+1), pmflxs(klon, klev+1)
    81   REAL ale(klon), alp(klon)
     95  REAL Ale(klon), Alp(klon)
    8296
    8397  REAL d_t(klon, klev), d_q(klon, klev), d_u(klon, klev), d_v(klon, klev)
     
    90104  REAL upwd(klon, klev), dnwd(klon, klev), dnwdbis(klon, klev)
    91105
    92   ! !       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)     !jyg
    93   REAL ma(klon, klev), mip(klon, klev), vprecip(klon, klev+1) !jyg
     106!!       REAL Ma(klon,klev), mip(klon,klev),Vprecip(klon,klev)     !jyg
     107  REAL Ma(klon, klev), mip(klon, klev), Vprecip(klon, klev+1)      !jyg
     108  REAL wght(klon, klev)                                            !RL
    94109
    95110  REAL da(klon, klev), phi(klon, klev, klev), mp(klon, klev)
    96   ! RomP >>>
     111! RomP >>>
    97112  REAL phi2(klon, klev, klev)
    98113  REAL d1a(klon, klev), dam(klon, klev)
    99114  REAL sij(klon, klev, klev), clw(klon, klev), elij(klon, klev, klev)
    100   REAL wdtraina(klon, klev), wdtrainm(klon, klev)
     115  REAL wdtrainA(klon, klev), wdtrainM(klon, klev)
    101116  REAL evap(klon, klev), ep(klon, klev)
    102   REAL epmlmmm(klon, klev, klev), eplamm(klon, klev)
    103   ! RomP <<<
     117  REAL epmlmMm(klon, klev, klev), eplaMm(klon, klev)
     118! RomP <<<
    104119  REAL cape(klon), cin(klon), tvp(klon, klev)
    105   REAL tconv(klon, klev)
    106 
    107   ! CR:test: on passe lentr et alim_star des thermiques
     120  REAL Tconv(klon, klev)
     121
     122!CR:test: on passe lentr et alim_star des thermiques
    108123  INTEGER lalim_conv(klon)
    109124  REAL wght_th(klon, klev)
     
    111126  REAL em_sig2feed ! sigma at upper bound of feeding layer
    112127  REAL em_wght(klev) ! weight density determining the feeding mixture
    113   ! on enleve le save
    114   ! SAVE em_sig1feed,em_sig2feed,em_wght
     128!on enleve le save
     129! SAVE em_sig1feed,em_sig2feed,em_wght
    115130
    116131  INTEGER iflag(klon)
     
    127142  REAL zx_t, zdelta, zx_qs, zcor
    128143
    129   ! INTEGER iflag_mix
    130   ! SAVE iflag_mix
     144 INTEGER iflag_mix
     145 SAVE iflag_mix
    131146  INTEGER noff, minorig
    132147  INTEGER i, k, itra
    133148  REAL qs(klon, klev), qs_wake(klon, klev)
    134149  REAL cbmf(klon), plcl(klon), plfc(klon), wbeff(klon)
    135   ! LF       SAVE cbmf
    136   ! IM/JYG      REAL, SAVE, ALLOCATABLE :: cbmf(:)
    137   ! cc$OMP THREADPRIVATE(cbmf)!
     150!LF          SAVE cbmf
     151!IM/JYG      REAL, SAVE, ALLOCATABLE :: cbmf(:)
     152!!!$OMP THREADPRIVATE(cbmf)!
    138153  REAL cbmflast(klon)
    139154  INTEGER ifrst
    140155  SAVE ifrst
    141156  DATA ifrst/0/
    142   !$OMP THREADPRIVATE(ifrst)
    143 
    144 
    145   ! Variables supplementaires liees au bilan d'energie
    146   ! Real paire(klon)
    147   ! LF      Real ql(klon,klev)
    148   ! Save paire
    149   ! LF      Save ql
    150   ! LF      Real t1(klon,klev),q1(klon,klev)
    151   ! LF      Save t1,q1
    152   ! Data paire /1./
     157!$OMP THREADPRIVATE(ifrst)
     158
     159
     160! Variables supplementaires liees au bilan d'energie
     161! Real paire(klon)
     162!LF      Real ql(klon,klev)
     163! Save paire
     164!LF      Save ql
     165!LF      Real t1(klon,klev),q1(klon,klev)
     166!LF      Save t1,q1
     167! Data paire /1./
    153168  REAL, SAVE, ALLOCATABLE :: ql(:, :), q1(:, :), t1(:, :)
    154   !$OMP THREADPRIVATE(ql, q1, t1)
    155 
    156   ! Variables liees au bilan d'energie et d'enthalpi
     169!$OMP THREADPRIVATE(ql, q1, t1)
     170
     171! Variables liees au bilan d'energie et d'enthAlpi
    157172  REAL ztsol(klon)
    158   REAL h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, h_qs_tot, qw_tot, ql_tot, &
    159     qs_tot, ec_tot
    160   SAVE h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, h_qs_tot, qw_tot, ql_tot, &
    161     qs_tot, ec_tot
    162   !$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot)
    163   !$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
    164   REAL d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
    165   REAL d_h_vcol_phy
    166   REAL fs_bound, fq_bound
    167   SAVE d_h_vcol_phy
    168   !$OMP THREADPRIVATE(d_h_vcol_phy)
    169   REAL zero_v(klon)
     173  REAL        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
     174              h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
     175  SAVE        h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot, &
     176              h_qs_tot, qw_tot, ql_tot, qs_tot, ec_tot
     177!$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot)
     178!$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
     179  REAL        d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
     180  REAL        d_h_vcol_phy
     181  REAL        fs_bound, fq_bound
     182  SAVE        d_h_vcol_phy
     183!$OMP THREADPRIVATE(d_h_vcol_phy)
     184  REAL        zero_v(klon)
    170185  CHARACTER *15 ztit
    171   INTEGER ip_ebil ! PRINT level for energy conserv. diag.
    172   SAVE ip_ebil
    173   DATA ip_ebil/2/
    174   !$OMP THREADPRIVATE(ip_ebil)
    175   INTEGER if_ebil ! level for energy conserv. dignostics
    176   SAVE if_ebil
    177   DATA if_ebil/2/
    178   !$OMP THREADPRIVATE(if_ebil)
    179   ! +jld ec_conser
     186  INTEGER     ip_ebil ! PRINT level for energy conserv. diag.
     187  SAVE        ip_ebil
     188  DATA        ip_ebil/2/
     189!$OMP THREADPRIVATE(ip_ebil)
     190  INTEGER     if_ebil ! level for energy conserv. dignostics
     191  SAVE        if_ebil
     192  DATA        if_ebil/2/
     193!$OMP THREADPRIVATE(if_ebil)
     194!+jld ec_conser
    180195  REAL d_t_ec(klon, klev) ! tendance du a la conersion Ec -> E thermique
    181196  REAL zrcpd
    182   ! -jld ec_conser
    183   ! LF
     197!-jld ec_conser
     198!LF
    184199  INTEGER nloc
    185   LOGICAL, SAVE :: first = .TRUE.
    186   !$OMP THREADPRIVATE(first)
    187   INTEGER, SAVE :: itap, igout
    188   !$OMP THREADPRIVATE(itap, igout)
     200  LOGICAL, SAVE            :: first = .TRUE.
     201!$OMP THREADPRIVATE(first)
     202  INTEGER, SAVE            :: itap, igout
     203!$OMP THREADPRIVATE(itap, igout)
    189204
    190205  include "YOMCST.h"
     
    195210
    196211  IF (first) THEN
    197     ! Allocate some variables LF 04/2008
    198 
    199     ! IM/JYG allocate(cbmf(klon))
     212! Allocate some variables LF 04/2008
     213
     214!IM/JYG allocate(cbmf(klon))
    200215    ALLOCATE (ql(klon,klev))
    201216    ALLOCATE (t1(klon,klev))
     
    204219    igout = klon/2 + 1/klon
    205220  END IF
    206   ! Incrementer le compteur de la physique
     221! Incrementer le compteur de la physique
    207222  itap = itap + 1
    208223
    209   ! Copy T into Tconv
     224! Copy T into Tconv
    210225  DO k = 1, klev
    211226    DO i = 1, klon
    212       tconv(i, k) = t(i, k)
     227      Tconv(i, k) = t(i, k)
    213228    END DO
    214229  END DO
     
    224239  END IF
    225240
    226   ! ym
     241! ym
    227242  snow(:) = 0
    228243
    229   ! IF (ifrst .EQ. 0) THEN
    230   ! ifrst = 1
     244! IF (ifrst .EQ. 0) THEN
     245! ifrst = 1
    231246  IF (first) THEN
    232247    first = .FALSE.
    233248
    234     ! ===========================================================================
    235     ! READ IN PARAMETERS FOR THE CLOSURE AND THE MIXING DISTRIBUTION
    236     ! ===========================================================================
     249! ===========================================================================
     250! READ IN PARAMETERS FOR THE CLOSURE AND THE MIXING DISTRIBUTION
     251! ===========================================================================
    237252
    238253    IF (iflag_con==3) THEN
    239       ! CALL cv3_inicp()
     254!      CALL cv3_inicp()
    240255      CALL cv3_inip()
    241256    END IF
    242257
    243     ! ===========================================================================
    244     ! READ IN PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS
    245     ! ===========================================================================
    246 
    247     ! c$$$         open (56,file='supcrit.data')
    248     ! c$$$         read (56,*) Supcrit1, Supcrit2
    249     ! c$$$         close (56)
    250 
    251     IF (prt_level>=10) WRITE (lunout, *) 'supcrit1, supcrit2', supcrit1, &
    252       supcrit2
    253 
    254     ! ===========================================================================
    255     ! Initialisation pour les bilans d'eau et d'energie
    256     ! ===========================================================================
     258! ===========================================================================
     259! READ IN PARAMETERS FOR CONVECTIVE INHIBITION BY TROPOS. DRYNESS
     260! ===========================================================================
     261
     262! c$$$         open (56,file='supcrit.data')
     263! c$$$         read (56,*) Supcrit1, Supcrit2
     264! c$$$         close (56)
     265
     266    IF (prt_level>=10) WRITE (lunout, *) 'supcrit1, supcrit2', supcrit1, supcrit2
     267
     268! ===========================================================================
     269! Initialisation pour les bilans d'eau et d'energie
     270! ===========================================================================
    257271    IF (if_ebil>=1) d_h_vcol_phy = 0.
    258272
    259273    DO i = 1, klon
    260274      cbmf(i) = 0.
    261       ! !          plcl(i) = 0.
     275!!          plcl(i) = 0.
    262276      sigd(i) = 0.
    263277    END DO
    264278  END IF !(ifrst .EQ. 0)
    265279
    266   ! Initialisation a chaque pas de temps
     280! Initialisation a chaque pas de temps
    267281  plfc(:) = 0.
    268282  wbeff(:) = 100.
     
    284298
    285299
    286   ! Feeding layer
     300! Feeding layer
    287301
    288302  em_sig1feed = 1.
    289303  em_sig2feed = 0.97
    290   ! em_sig2feed = 0.8
    291   ! Relative Weight densities
     304! em_sig2feed = 0.8
     305! Relative Weight densities
    292306  DO k = 1, klev
    293307    em_wght(k) = 1.
    294308  END DO
    295   ! CRtest: couche alim des tehrmiques ponderee par a*
    296   ! DO i = 1, klon
    297   ! do k=1,lalim_conv(i)
    298   ! em_wght(k)=wght_th(i,k)
    299   ! print*,'em_wght=',em_wght(k),wght_th(i,k)
    300   ! end do
    301   ! END DO
     309!CRtest: couche alim des tehrmiques ponderee par a*
     310! DO i = 1, klon
     311! do k=1,lalim_conv(i)
     312! em_wght(k)=wght_th(i,k)
     313! print*,'em_wght=',em_wght(k),wght_th(i,k)
     314! end do
     315! END DO
    302316
    303317  IF (iflag_con==4) THEN
     
    318332      END DO
    319333    END DO
    320   ELSE ! iflag_con=3 (modif de puristes qui fait la diffce pour la
    321     ! convergence numerique)
     334  ELSE ! iflag_con=3 (modif de puristes qui fait la diffce pour la convergence numerique)
    322335    DO k = 1, klev
    323336      DO i = 1, klon
     
    342355  END IF ! iflag_con
    343356
    344   ! ------------------------------------------------------------------
    345 
    346   ! Main driver for convection:
    347   ! iflag_con=3 -> nvlle version de KE (JYG)
    348   ! iflag_con = 30  -> equivalent to convect3
    349   ! iflag_con = 4  -> equivalent to convect1/2
     357! ------------------------------------------------------------------
     358
     359! Main driver for convection:
     360!                  iflag_con=3 -> nvlle version de KE (JYG)
     361!                   iflag_con = 30  -> equivAlent to convect3
     362!                   iflag_con = 4  -> equivAlent to convect1/2
    350363
    351364
    352365  IF (iflag_con==30) THEN
    353366
    354     ! print *, '-> cv_driver'      !jyg
    355     CALL cv_driver(klon, klev, klevp1, ntra, iflag_con, t, q, qs, u, v, tra, &
    356       em_p, em_ph, iflag, d_t, d_q, d_u, d_v, d_tra, rain, vprecip, cbmf, &
    357       sig1, w01, &                 !jyg
    358       kbas, ktop, dtime, ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, da, phi, &
    359       mp, phi2, d1a, dam, sij, clw, elij, & !RomP
    360       evap, ep, epmlmmm, eplamm, & !RomP
    361       wdtraina, wdtrainm) !RomP
    362     ! print *, 'cv_driver ->'      !jyg
    363 
    364     DO i = 1, klon
    365       cbmf(i) = ma(i, kbas(i))
    366     END DO
     367! print *, '-> cv_driver'      !jyg
     368    CALL cv_driver(klon, klev, klevp1, ntra, iflag_con, &
     369                   t, q, qs, u, v, tra, &
     370                   em_p, em_ph, iflag, &
     371                   d_t, d_q, d_u, d_v, d_tra, rain, &
     372                   Vprecip, cbmf, sig1, w01, & !jyg
     373                   kbas, ktop, &
     374                   dtime, Ma, upwd, dnwd, dnwdbis, qcondc, wd, cape, &
     375                   da, phi, mp, phi2, d1a, dam, sij, clw, elij, &       !RomP
     376                   evap, ep, epmlmMm, eplaMm, &                         !RomP
     377                   wdtrainA, wdtrainM)                                  !RomP
     378!           print *, 'cv_driver ->'      !jyg
     379
     380    DO i = 1, klon
     381      cbmf(i) = Ma(i, kbas(i))
     382    END DO
     383
     384!RL
     385    wght(:, :) = 0.
     386    DO i = 1, klon
     387      wght(i, 1) = 1.
     388    END DO
     389!RL
    367390
    368391  ELSE
    369392
    370     ! LF   necessary for gathered fields
     393!LF   necessary for gathered fields
    371394    nloc = klon
    372     CALL cva_driver(klon, klev, klev+1, ntra, nloc, iflag_con, iflag_mix, &
    373       iflag_ice_thermo, iflag_clos, dtime, t, q, qs, t_wake, q_wake, qs_wake, &
    374       s_wake, u, v, tra, em_p, em_ph, ale, alp, em_sig1feed, em_sig2feed, &
    375       em_wght, iflag, d_t, d_q, d_u, d_v, d_tra, rain, kbas, ktop, cbmf, &
    376       plcl, plfc, wbeff, sig1, w01, ptop2, sigd, ma, mip, vprecip, upwd, &
    377       dnwd, dnwdbis, qcondc, wd, cape, cin, tvp, dd_t, dd_q, plim1, plim2, &
    378       asupmax, supmax0, asupmaxmin, lalim_conv, & ! AC!+!RomP+jyg
    379       da, phi, mp, phi2, d1a, dam, sij, clw, elij, & ! RomP
    380       evap, ep, epmlmmm, eplamm, & ! RomP
    381       wdtraina, wdtrainm) ! RomP
    382     ! AC!+!RomP+jyg
     395    CALL cva_driver(klon, klev, klev+1, ntra, nloc, &
     396                    iflag_con, iflag_mix, iflag_ice_thermo, &
     397                    iflag_clos, ok_conserv_q, dtime, &
     398                    t, q, qs, t_wake, q_wake, qs_wake, s_wake, u, v, tra, &
     399                    em_p, em_ph, &
     400                    Ale, Alp, &
     401                    em_sig1feed, em_sig2feed, em_wght, &
     402                    iflag, d_t, d_q, d_u, d_v, d_tra, rain, kbas, ktop, &
     403                    cbmf, plcl, plfc, wbeff, sig1, w01, ptop2, sigd, &
     404                    Ma, mip, Vprecip, upwd, dnwd, dnwdbis, qcondc, wd, &
     405                    cape, cin, tvp, &
     406                    dd_t, dd_q, plim1, plim2, asupmax, supmax0, &
     407                    asupmaxmin, lalim_conv, &
     408!AC!+!RomP+jyg
     409!!                   da,phi,mp,phi2,d1a,dam,sij,clw,elij, &               ! RomP
     410!!                   evap,ep,epmlmMm,eplaMm,                              ! RomP
     411                    da, phi, mp, phi2, d1a, dam, sij, wght, &           ! RomP+RL
     412                    clw, elij, evap, ep, epmlmMm, eplaMm, &             ! RomP+RL
     413                    wdtrainA, wdtrainM)                                 ! RomP
     414!AC!+!RomP+jyg
    383415  END IF
    384   ! ------------------------------------------------------------------
    385   IF (prt_level>=10) WRITE (lunout, *) ' cva_driver -> cbmf,plcl,plfc,wbeff ' &
    386     , cbmf(1), plcl(1), plfc(1), wbeff(1)
     416! ------------------------------------------------------------------
     417  IF (prt_level>=10) WRITE (lunout, *) ' cva_driver -> cbmf,plcl,plfc,wbeff ', &
     418                                        cbmf(1), plcl(1), plfc(1), wbeff(1)
    387419
    388420  DO i = 1, klon
     
    404436      DO k = 1, klev
    405437        DO i = 1, klon
    406           d_tra(i, k, itra) = dtime*d_tra(i, k, itra)
     438!RL!            d_tra(i,k,itra) =dtime*d_tra(i,k,itra)
     439          d_tra(i, k, itra) = 0.
    407440        END DO
    408441      END DO
     
    410443  END IF
    411444
    412   ! !AC!
     445!!AC!
    413446  IF (iflag_con==3) THEN
    414447    DO itra = 1, ntra
    415448      DO k = 1, klev
    416449        DO i = 1, klon
    417           d_tra(i, k, itra) = dtime*d_tra(i, k, itra)
     450!RL!            d_tra(i,k,itra) =dtime*d_tra(i,k,itra)
     451          d_tra(i, k, itra) = 0.
    418452        END DO
    419453      END DO
    420454    END DO
    421455  END IF
    422   ! !AC!
     456!!AC!
    423457
    424458  DO k = 1, klev
     
    428462    END DO
    429463  END DO
    430   ! !jyg
    431   ! --Separation neige/pluie (pour diagnostics)       !jyg
    432   DO k = 1, klev !jyg
    433     DO i = 1, klon !jyg
    434       IF (t1(i,k)<rtt) THEN !jyg
    435         pmflxs(i, k) = vprecip(i, k) !jyg
    436       ELSE !jyg
    437         pmflxr(i, k) = vprecip(i, k) !jyg
    438       END IF !jyg
    439     END DO !jyg
    440   END DO !jyg
    441 
    442   ! c      IF (if_ebil.ge.2) THEN
    443   ! c        ztit='after convect'
    444   ! c        CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime
    445   ! c     e      , t1,q1,ql,qs,u,v,paprs,pplay
    446   ! c     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    447   ! c         call diagphy(paire,ztit,ip_ebil
    448   ! c     e      , zero_v, zero_v, zero_v, zero_v, zero_v
    449   ! c     e      , zero_v, rain, zero_v, ztsol
    450   ! c     e      , d_h_vcol, d_qt, d_ec
    451   ! c     s      , fs_bound, fq_bound )
    452   ! c      END IF
    453 
    454 
    455   ! les traceurs ne sont pas mis dans cette version de convect4:
     464!                                                  !jyg
     465! --Separation neige/pluie (pour diagnostics)       !jyg
     466  DO k = 1, klev                                    !jyg
     467    DO i = 1, klon                                  !jyg
     468      IF (t1(i,k)<rtt) THEN                         !jyg
     469        pmflxs(i, k) = Vprecip(i, k)                !jyg
     470      ELSE                                          !jyg
     471        pmflxr(i, k) = Vprecip(i, k)                !jyg
     472      END IF                                        !jyg
     473    END DO                                          !jyg
     474  END DO                                            !jyg
     475
     476! c      IF (if_ebil.ge.2) THEN
     477! c        ztit='after convect'
     478! c        CALL diagetpq(paire,ztit,ip_ebil,2,2,dtime
     479! c     e      , t1,q1,ql,qs,u,v,paprs,pplay
     480! c     s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     481! c         call diagphy(paire,ztit,ip_ebil
     482! c     e      , zero_v, zero_v, zero_v, zero_v, zero_v
     483! c     e      , zero_v, rain, zero_v, ztsol
     484! c     e      , d_h_vcol, d_qt, d_ec
     485! c     s      , fs_bound, fq_bound )
     486! c      END IF
     487
     488
     489! les traceurs ne sont pas mis dans cette version de convect4:
    456490  IF (iflag_con==4) THEN
    457491    DO itra = 1, ntra
     
    463497    END DO
    464498  END IF
    465   ! print*, 'concvl->: dd_t,dd_q ',dd_t(1,1),dd_q(1,1)
     499! print*, 'concvl->: dd_t,dd_q ',dd_t(1,1),dd_q(1,1)
    466500
    467501  DO k = 1, klev
     
    478512  IF (prt_level>=20) THEN
    479513    DO k = 1, klev
    480       ! print*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout
    481       ! .,k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k),
    482       ! .d_q_con(igout,k),dql0(igout,k)
    483       ! print*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q'
    484       ! .,itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout),
    485       ! . t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k)
    486       ! print*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip'
    487       ! .,itap,rain_con(igout),snow_con(igout),ema_work1(igout,k),
    488       ! .ema_work2(igout,k),Vprecip(igout,k), mip(igout,k)
    489       ! print*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv '
    490       ! .,itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout),
    491       ! .tvp(igout,k),Tconv(igout,k)
    492       ! print*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc'
    493       ! .,itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout),
    494       ! .dplcldr(igout),qcondc(igout,k)
    495       ! print*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1'
    496       ! .,itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k)
    497       ! .,pmflxs(igout,k+1)
    498       ! print*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth',
    499       ! .itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k),
    500       ! . fqd(igout,k),lalim_conv(igout),wght_th(igout,k)
     514! print*,'physiq apres_add_con i k it d_u d_v d_t d_q qdl0',igout, &
     515!         k,itap,d_u_con(igout,k) ,d_v_con(igout,k), d_t_con(igout,k), &
     516!         d_q_con(igout,k),dql0(igout,k)
     517! print*,'phys apres_add_con itap Ma cin ALE ALP wak t q undi t q', &
     518!         itap,Ma(igout,k),cin(igout),ALE(igout), ALP(igout), &
     519!        t_wake(igout,k),q_wake(igout,k),t_undi(igout,k),q_undi(igout,k)
     520! print*,'phy apres_add_con itap CON rain snow EMA wk1 wk2 Vpp mip', &
     521!         itap,rain_con(igout),snow_con(igout),ema_work1(igout,k), &
     522!         ema_work2(igout,k),Vprecip(igout,k), mip(igout,k)
     523! print*,'phy apres_add_con itap upwd dnwd dnwd0 cape tvp Tconv ', &
     524!         itap,upwd(igout,k),dnwd(igout,k),dnwd0(igout,k),cape(igout), &
     525!         tvp(igout,k),Tconv(igout,k)
     526! print*,'phy apres_add_con itap dtvpdt dtvdq dplcl dplcldr qcondc', &
     527!         itap,dtvpdt1(igout,k),dtvpdq1(igout,k),dplcldt(igout), &
     528!         dplcldr(igout),qcondc(igout,k)
     529! print*,'phy apres_add_con itap wd pmflxr Kpmflxr Kp1 Kpmflxs Kp1', &
     530!         itap,wd(igout),pmflxr(igout,k),pmflxr(igout,k+1),pmflxs(igout,k), &
     531!         pmflxs(igout,k+1)
     532! print*,'phy apres_add_con itap da phi mp ftd fqd lalim wgth', &
     533!         itap,da(igout,k),phi(igout,k,k),mp(igout,k),ftd(igout,k), &
     534!        fqd(igout,k),lalim_conv(igout),wght_th(igout,k)
    501535    END DO
    502536  END IF !(prt_level.EQ.20) THEN
Note: See TracChangeset for help on using the changeset viewer.