Changeset 4803


Ignore:
Timestamp:
Feb 5, 2024, 10:16:07 PM (3 months ago)
Author:
evignon
Message:

implementation sous flag des premiers changements
concernant le traitement des precipitations grande echelle
dans le cadre de l'atelier nuages
Audran, Lea, Niels, Gwendal et Etienne

Location:
LMDZ6/trunk
Files:
2 added
10 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/DefLists/field_def_lmdz.xml

    r4774 r4803  
    643643        <field id="rneblsvol" long_name="LS Cloud fraction by volume"    unit="-" />
    644644        <field id="pfraclr" long_name="LS precip fraction clear-sky part"    unit="-" />               
    645         <field id="pfracld" long_name="LS precip fraction cloudy part"    unit="-" />   
     645        <field id="pfracld" long_name="LS precip fraction cloudy part"    unit="-" /> 
     646        <field id="dqreva" long_name="LS rain tendency evaporation"    unit="kg/m2/s" />
     647        <field id="dqrauto" long_name="LS rain tendency autoconversion"    unit="kg/m2/s" />
     648        <field id="dqrcol" long_name="LS rain tendency collection"    unit="kg/m2/s" />
     649        <field id="dqrmelt" long_name="LS rain tendency melting"    unit="kg/m2/s" />
     650        <field id="dqrfreez" long_name="LS rain tendency freezing"    unit="kg/m2/s" />
     651        <field id="dqssub" long_name="LS snow tendency sublimation"    unit="kg/m2/s" />
     652        <field id="dqsauto" long_name="LS snow tendency autoconversion"    unit="kg/m2/s" />
     653        <field id="dqsagg" long_name="LS snow tendency aggregation"    unit="kg/m2/s" />
     654        <field id="dqsmelt" long_name="LS snow tendency melting"    unit="kg/m2/s" />
     655        <field id="dqsfreez" long_name="LS snow tendency freezing"    unit="kg/m2/s" />
     656        <field id="dqsrim" long_name="LS snow tendency riming"    unit="kg/m2/s" />
    646657        <field id="rhum"    long_name="Relative humidity"    unit="-" />
    647658        <field id="rhl" long_name="Relative humidity wrt liquid" unit="%" />
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp.F90

    r4686 r4803  
    1818     qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss,   &
    1919     Tcontr, qcontr, qcontr2, fcontrN, fcontrP,         &
    20       cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
     20     cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
     21     dqreva,dqssub,dqrauto,dqrcol,dqrmelt,dqrfreez,dqsauto, &
     22     dqsagg,dqsrim,dqsmelt,dqsfreez)
    2123
    2224!++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
    9698USE lmdz_lscp_tools, ONLY : fallice_velocity, distance_to_cloud_top
    9799USE ice_sursat_mod, ONLY : ice_sursat
     100USE lmdz_lscp_poprecip, ONLY : poprecip_evapsub, poprecip_postcld
    98101
    99102! Use du module lmdz_lscp_ini contenant les constantes
     
    106109USE lmdz_lscp_ini, ONLY : iflag_autoconversion, ffallv_con, ffallv_lsc
    107110USE lmdz_lscp_ini, ONLY : RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG
     111USE lmdz_lscp_ini, ONLY : ok_poprecip
    108112
    109113IMPLICIT NONE
     
    197201  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: cloudth_sigmaenv ! std of saturation deficit in environment
    198202
     203  ! for POPRECIP
     204
     205  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqreva         !-- rain tendendy due to evaporation [kg/kg/s]
     206  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqssub         !-- snow tendency due to sublimation [kg/kg/s]
     207  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqrcol         !-- rain tendendy due to collection by rain of liquid cloud droplets [kg/kg/s]
     208  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqsagg         !-- snow tendency due to collection of lcoud ice by aggregation [kg/kg/s]
     209  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqrauto        !-- rain tendency due to autoconversion of cloud liquid [kg/kg/s]
     210  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqsauto        !-- snow tendency due to autoconversion of cloud ice [kg/kg/s]
     211  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqsrim         !-- snow tendency due to riming [kg/kg/s]
     212  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqsmelt        !-- snow tendency due to melting [kg/kg/s]
     213  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqrmelt        !-- rain tendency due to melting [kg/kg/s]
     214  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqsfreez       !-- snow tendency due to freezing [kg/kg/s]
     215  REAL, DIMENSION(klon,klev),      INTENT(OUT)  :: dqrfreez       !-- rain tendency due to freezing [kg/kg/s]
    199216
    200217
     
    243260  REAL :: zfrac_lessi
    244261  REAL, DIMENSION(klon) :: zprec_cond
    245   REAL, DIMENSION(klon) :: zmair
     262  REAL :: zmair
    246263  REAL :: zcpair, zcpeau
    247264  REAL, DIMENSION(klon) :: zlh_solid
     265  REAL, DIMENSION(klon) :: ztupnew
    248266  REAL :: zm_solid         ! for liquid -> solid conversion
    249267  REAL, DIMENSION(klon) :: zrflclr, zrflcld
     
    266284  INTEGER ncoreczq
    267285  INTEGER, DIMENSION(klon,klev) :: mpc_bl_points
     286  LOGICAL iftop
    268287
    269288  LOGICAL, DIMENSION(klon) :: lognormale
     
    339358distcltop1D(:)=0.0
    340359temp_cltop1D(:) = 0.0
     360ztupnew(:)=0.0
    341361!--ice supersaturation
    342362gamma_ss(:,:) = 1.0
     
    350370distcltop(:,:)=0.
    351371temp_cltop(:,:)=0.
     372!-- poprecip
     373dqreva(:,:)=0.0
     374dqrauto(:,:)=0.0
     375dqrmelt(:,:)=0.0
     376dqrfreez(:,:)=0.0
     377dqrcol(:,:)=0.0
     378dqssub(:,:)=0.0
     379dqsauto(:,:)=0.0
     380dqsrim(:,:)=0.0
     381dqsagg(:,:)=0.0
     382dqsfreez(:,:)=0.0
     383dqsmelt(:,:)=0.0
     384
     385
     386
    352387
    353388!c_iso: variable initialisation for iso
     
    361396
    362397DO k = klev, 1, -1
     398
     399    IF (k.LE.klev-1) THEN
     400       iftop=.false.
     401    ELSE
     402       iftop=.true.
     403    ENDIF
    363404
    364405    ! Initialisation temperature and specific humidity
     
    366407        zt(i)=temp(i,k)
    367408        zq(i)=qt(i,k)
     409        IF (.not. iftop) THEN
     410           ztupnew(i)=temp(i,k+1)+d_t(i,k+1)
     411        ENDIF
    368412        !c_iso init of iso
    369413    ENDDO
    370    
     414   
     415    !================================================================
     416    ! Flag for the new and more microphysical treatment of precipitation from Atelier Nuage (R)
     417    IF (ok_poprecip) THEN
     418
     419            CALL poprecip_evapsub(klon, dtime, iftop, paprs(:,k), paprs(:,k+1), pplay(:,k), &
     420                              zt, ztupnew, zq, zmqc, znebprecipclr, znebprecipcld, &
     421                              zrfl, zrflclr, zrflcld, &
     422                              zifl, ziflclr, ziflcld, &
     423                              dqreva(:,k),dqssub(:,k) &
     424                             )
     425
     426    !================================================================
     427    ELSE
     428
    371429    ! --------------------------------------------------------------------
    372     ! P0> Thermalization of precipitation falling from the overlying layer
     430    ! P1> Thermalization of precipitation falling from the overlying layer
    373431    ! --------------------------------------------------------------------
    374432    ! Computes air temperature variation due to enthalpy transported by
     
    385443    ! ---------------------------------------------------------------------
    386444   
    387     IF (k.LE.klev-1) THEN
     445    IF (iftop) THEN
     446
     447        DO i = 1, klon
     448            zmqc(i) = 0.
     449        ENDDO
     450
     451    ELSE
    388452
    389453        DO i = 1, klon
    390454 
    391             zmair(i)=(paprs(i,k)-paprs(i,k+1))/RG
     455            zmair=(paprs(i,k)-paprs(i,k+1))/RG
    392456            ! no condensed water so cp=cp(vapor+dry air)
    393457            ! RVTMP2=rcpv/rcpd-1
     
    398462            ! layer's air so that precipitation at the ground has the
    399463            ! same temperature as the lowermost layer
    400             zmqc(i) = (zrfl(i)+zifl(i))*dtime/zmair(i)
     464            zmqc(i) = (zrfl(i)+zifl(i))*dtime/zmair
    401465            ! t(i,k+1)+d_t(i,k+1): new temperature of the overlying layer
    402             zt(i) = ( (temp(i,k+1)+d_t(i,k+1))*zmqc(i)*zcpeau + zcpair*zt(i) ) &
     466            zt(i) = ( ztupnew(i)*zmqc(i)*zcpeau + zcpair*zt(i) ) &
    403467             / (zcpair + zmqc(i)*zcpeau)
    404468
    405         ENDDO
    406  
    407     ELSE
    408  
    409         DO i = 1, klon
    410             zmair(i)=(paprs(i,k)-paprs(i,k+1))/RG
    411             zmqc(i) = 0.
    412469        ENDDO
    413470 
     
    415472
    416473    ! --------------------------------------------------------------------
    417     ! P1> Precipitation evaporation/sublimation
     474    ! P2> Precipitation evaporation/sublimation/melting
    418475    ! --------------------------------------------------------------------
    419     ! A part of the precipitation coming from above is evaporated/sublimated.
     476    ! A part of the precipitation coming from above is evaporated/sublimated/melted.
    420477    ! --------------------------------------------------------------------
    421 
     478   
    422479    IF (iflag_evap_prec.GE.1) THEN
    423480
     
    506563                ! redistribute zqev0 conserving the ratio liquid/ice
    507564
    508                 ! todoan: check the consistency of this formula
    509565                IF (zqevt+zqevti.GT.zqev0) THEN
    510566                    zqev=zqev0*zqevt/(zqevt+zqevti)
     
    524580
    525581                ! vapor, temperature, precip fluxes update
     582                ! vapor is updated after evaporation/sublimation (it is increased)
    526583                zq(i) = zq(i) - (zrfln(i)+zifln(i)-zrfl(i)-zifl(i)) &
    527584                * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime
     585                ! zmqc is the total condensed water in the precip flux (it is decreased)
    528586                zmqc(i) = zmqc(i) + (zrfln(i)+zifln(i)-zrfl(i)-zifl(i)) &
    529587                * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime
     588                ! air and precip temperature (i.e., gridbox temperature)
     589                ! is updated due to latent heat cooling
    530590                zt(i) = zt(i) + (zrfln(i)-zrfl(i))        &
    531591                * (RG/(paprs(i,k)-paprs(i,k+1)))*dtime    &
     
    579639                ! c_iso: melting of isotopic precipi with zmelt (no fractionation)
    580640
    581                 ! Latent heat of melting with precipitation thermalization
     641                ! Latent heat of melting because of precipitation melting
     642                ! NB: the air + precip temperature is simultaneously updated
    582643                zt(i)=zt(i)-zifl(i)*zmelt*(RG*dtime)/(paprs(i,k)-paprs(i,k+1)) &
    583644                *RLMLT/RCPD/(1.0+RVTMP2*(zq(i)+zmqc(i)))
     
    590651            ENDIF ! (zrfl(i)+zifl(i).GT.0.)
    591652
    592         ENDDO
     653        ENDDO ! loop on klon
    593654
    594655    ENDIF ! (iflag_evap_prec>=1)
     656
     657    ENDIF ! (ok_poprecip)
    595658
    596659    ! --------------------------------------------------------------------
     
    647710
    648711
    649 
    650 
    651 
    652712                ELSEIF (iflag_cloudth_vert.GE.3 .AND. iflag_cloudth_vert.LE.5) THEN
    653713
     
    861921
    862922        ! Partition function in stratiform clouds (will be overwritten in boundary-layer MPCs)
    863         CALL icefrac_lscp(klon,zt(:),iflag_ice_thermo,distcltop1D(:),temp_cltop1D(:),zfice(:), dzfice(:))
     923        CALL icefrac_lscp(klon,zt,iflag_ice_thermo,distcltop1D,temp_cltop1D,zfice, dzfice)
    864924
    865925
     
    918978    ! ----------------------------------------------------------------
    919979
     980    !================================================================
     981    IF (ok_poprecip) THEN
     982
     983      DO i = 1, klon
     984        zoliql(i) = zcond(i) * ( 1. - zfice(i) )
     985        zoliqi(i) = zcond(i) * zfice(i)
     986      ENDDO
     987
     988      CALL poprecip_postcld(klon, dtime, paprs(:,k), paprs(:,k+1), pplay(:,k), &
     989                            ctot_vol(:,k), ptconv(:,k), &
     990                            zt, zq, zoliql, zoliqi, zfice, &
     991                            rneb(:,k), znebprecipclr, znebprecipcld, &
     992                            zrfl, zrflclr, zrflcld, &
     993                            zifl, ziflclr, ziflcld, &
     994                            dqrauto(:,k),dqrcol(:,k),dqrmelt(:,k),dqrfreez(:,k), &
     995                            dqsauto(:,k),dqsagg(:,k),dqsrim(:,k),dqsmelt(:,k),dqsfreez(:,k) &
     996                            )
     997
     998      DO i = 1, klon
     999        zoliq(i) = zoliql(i) + zoliqi(i)
     1000        IF ( zoliq(i) .GT. 0. ) THEN
     1001                zfice(i) = zoliqi(i)/zoliq(i)
     1002        ELSE 
     1003                zfice(i) = 0.0
     1004        ENDIF
     1005        ! when poprecip activated, radiation does not see any precipitation content
     1006        radocond(i,k) = zoliq(i)
     1007        radocondl(i,k)= radocond(i,k)*(1.-zfice(i))
     1008        radocondi(i,k)= radocond(i,k)*zfice(i)
     1009      ENDDO
     1010
     1011    !================================================================
     1012    ELSE
     1013
    9201014    ! LTP:
    9211015    IF (iflag_evap_prec .GE. 4) THEN
     
    9821076            zneb(i)  = MAX(rneb(i,k),seuil_neb)
    9831077            radocond(i,k) = zoliq(i)/REAL(niter_lscp+1)
    984             radicefrac(i,k) = zfice(i)
    9851078            radocondi(i,k)=zoliq(i)*zfice(i)/REAL(niter_lscp+1)
    9861079            radocondl(i,k)=zoliq(i)*(1.-zfice(i))/REAL(niter_lscp+1)
     
    11951288        ENDDO
    11961289
    1197 
    11981290    ENDIF
     1291
     1292    ENDIF ! ok_poprecip
    11991293
    12001294    ! End of precipitation formation
    12011295    ! --------------------------------
    12021296
    1203     ! Outputs:
    1204     ! Precipitation fluxes at layer interfaces
    1205     ! + precipitation fractions +
    1206     ! temperature and water species tendencies
    1207     DO i = 1, klon
    1208         psfl(i,k)=zifl(i)
    1209         prfl(i,k)=zrfl(i)
    1210         pfraclr(i,k)=znebprecipclr(i)
    1211         pfracld(i,k)=znebprecipcld(i)
    1212         d_ql(i,k) = (1-zfice(i))*zoliq(i)
    1213         d_qi(i,k) = zfice(i)*zoliq(i)
    1214         d_q(i,k) = zq(i) - qt(i,k)
    1215         ! c_iso: same for isotopes
    1216         d_t(i,k) = zt(i) - temp(i,k)
    1217     ENDDO
     1297
     1298    ! Calculation of cloud condensates amount seen by radiative scheme
     1299    !-----------------------------------------------------------------
    12181300
    12191301    ! Calculation of the concentration of condensates seen by the radiation scheme
    12201302    ! for liquid phase, we take radocondl
    12211303    ! for ice phase, we take radocondi if we neglect snowfall, otherwise (ok_radocond_snow=true)
    1222     ! we recaulate radocondi to account for contributions from the precipitation flux
    1223 
    1224     IF ((ok_radocond_snow) .AND. (k .LT. klev)) THEN
     1304    ! we recalculate radocondi to account for contributions from the precipitation flux
     1305    ! TODO: for the moment, we deactivate this option when ok_poprecip=.true.
     1306
     1307    IF ((ok_radocond_snow) .AND. (k .LT. klev) .AND. (.NOT. ok_poprecip)) THEN
    12251308        ! for the solid phase (crystals + snowflakes)
    12261309        ! we recalculate radocondi by summing
     
    13191402   CALL calc_qsat_ecmwf(klon,Tbef(:),qzero(:),pplay(:,k),RTT,2,.false.,qsats(:,k),zdqs(:))
    13201403
     1404
     1405
     1406    ! Outputs:
     1407    !-------------------------------
     1408    ! Precipitation fluxes at layer interfaces
     1409    ! + precipitation fractions +
     1410    ! temperature and water species tendencies
     1411    DO i = 1, klon
     1412        psfl(i,k)=zifl(i)
     1413        prfl(i,k)=zrfl(i)
     1414        pfraclr(i,k)=znebprecipclr(i)
     1415        pfracld(i,k)=znebprecipcld(i)
     1416        d_ql(i,k) = (1-zfice(i))*zoliq(i)
     1417        d_qi(i,k) = zfice(i)*zoliq(i)
     1418        d_q(i,k) = zq(i) - qt(i,k)
     1419        ! c_iso: same for isotopes
     1420        d_t(i,k) = zt(i) - temp(i,k)
     1421    ENDDO
     1422
     1423
    13211424ENDDO
    13221425
    1323 !======================================================================
    1324 !                      END OF VERTICAL LOOP
    1325 !======================================================================
    13261426
    13271427  ! Rain or snow at the surface (depending on the first layer temperature)
  • LMDZ6/trunk/libf/phylmd/lmdz_lscp_ini.F90

    r4666 r4803  
    99  !$OMP THREADPRIVATE(RCPD, RLSTT, RLVTT, RLMLT, RVTMP2, RTT, RD, RG)
    1010
    11   REAL, SAVE :: seuil_neb=0.001                 ! cloud fraction threshold: a cloud really exists when exceeded
     11  REAL, SAVE, PROTECTED :: seuil_neb=0.001      ! cloud fraction threshold: a cloud really exists when exceeded
    1212  !$OMP THREADPRIVATE(seuil_neb)
    1313
     
    1515  !$OMP THREADPRIVATE(lunout,prt_level)
    1616
    17   INTEGER, SAVE :: niter_lscp=5                 ! number of iterations to calculate autoconversion to precipitation
     17  INTEGER, SAVE, PROTECTED :: niter_lscp=5      ! number of iterations to calculate autoconversion to precipitation
    1818  !$OMP THREADPRIVATE(niter_lscp)
    1919
    20   INTEGER,SAVE :: iflag_evap_prec=1            ! precipitation evaporation flag. 0: nothing, 1: "old way",
     20  INTEGER, SAVE, PROTECTED :: iflag_evap_prec=1 ! precipitation evaporation flag. 0: nothing, 1: "old way",
    2121                                                ! 2: Max cloud fraction above to calculate the max of reevaporation
    2222                                                ! >=4: LTP'method i.e. evaporation in the clear-sky fraction of the mesh only
     
    2525  !$OMP THREADPRIVATE(iflag_evap_prec)
    2626
    27   REAL t_coup                                   ! temperature threshold which determines the phase
    28   PARAMETER (t_coup=234.0)                      ! for which the saturation vapor pressure is calculated
    29 
    30   REAL DDT0                                     ! iteration parameter
    31   PARAMETER (DDT0=.01)
    32 
    33   REAL ztfondue                                 ! parameter to calculate melting fraction of precipitation
    34   PARAMETER (ztfondue=278.15)
    35 
    36   REAL temp_nowater                             ! temperature below which liquid water no longer exists
    37   PARAMETER (temp_nowater=233.15)
    38 
    39   REAL, SAVE    :: rain_int_min=0.001           ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction
    40   !$OMP THREADPRIVATE(rain_int_min)
    41 
    42   REAL, SAVE :: a_tr_sca(4)                     ! Variables for tracers temporary: alpha parameter for scavenging, 4 possible scavenging processes
     27  REAL, SAVE, PROTECTED :: t_coup=234.0         ! temperature threshold which determines the phase
     28                                                ! for which the saturation vapor pressure is calculated
     29  !$OMP THREADPRIVATE(t_coup)
     30  REAL, SAVE, PROTECTED :: DDT0=0.01            ! iteration parameter
     31  !$OMP THREADPRIVATE(DDT0)
     32
     33  REAL, SAVE, PROTECTED :: ztfondue=278.15      ! parameter to calculate melting fraction of precipitation
     34  !$OMP THREADPRIVATE(ztfondue)
     35
     36  REAL, SAVE, PROTECTED :: temp_nowater=233.15  ! temperature below which liquid water no longer exists
     37  !$OMP THREADPRIVATE(temp_nowater)
     38
     39  REAL, SAVE, PROTECTED :: a_tr_sca(4)          ! Variables for tracers temporary: alpha parameter for scavenging, 4 possible scavenging processes
    4340  !$OMP THREADPRIVATE(a_tr_sca)
    4441 
    45   INTEGER, SAVE ::  iflag_mpc_bl=0              ! flag to activate boundary layer mixed phase cloud param
     42  INTEGER, SAVE, PROTECTED ::  iflag_mpc_bl=0   ! flag to activate boundary layer mixed phase cloud param
    4643  !$OMP THREADPRIVATE(iflag_mpc_bl)
    4744 
    48   LOGICAL, SAVE :: ok_radocond_snow=.false.      ! take into account the mass of ice precip in the cloud ice content seen by radiation
     45  LOGICAL, SAVE, PROTECTED :: ok_radocond_snow=.false. ! take into account the mass of ice precip in the cloud ice content seen by radiation
    4946  !$OMP THREADPRIVATE(ok_radocond_snow)
    5047
    51   REAL, SAVE :: t_glace_min=258.0                ! lower-bound temperature parameter for cloud phase determination
     48  REAL, SAVE, PROTECTED :: t_glace_min=258.0    ! lower-bound temperature parameter for cloud phase determination
    5249  !$OMP THREADPRIVATE(t_glace_min)
    5350
    54   REAL, SAVE :: t_glace_max=273.15               ! upper-bound temperature parameter for cloud phase determination
     51  REAL, SAVE, PROTECTED :: t_glace_max=273.15   ! upper-bound temperature parameter for cloud phase determination
    5552  !$OMP THREADPRIVATE(t_glace_max)
    5653
    57   REAL, SAVE :: exposant_glace=1.0               ! parameter for cloud phase determination
     54  REAL, SAVE, PROTECTED :: exposant_glace=1.0   ! parameter for cloud phase determination
    5855  !$OMP THREADPRIVATE(exposant_glace)
    5956
    60   INTEGER, SAVE :: iflag_vice=0                  ! which expression for ice crystall fall velocity
     57  INTEGER, SAVE, PROTECTED :: iflag_vice=0      ! which expression for ice crystall fall velocity
    6158  !$OMP THREADPRIVATE(iflag_vice)
    6259
    63   INTEGER, SAVE :: iflag_t_glace=0               ! which expression for cloud phase partitioning
     60  INTEGER, SAVE, PROTECTED :: iflag_t_glace=0   ! which expression for cloud phase partitioning
    6461  !$OMP THREADPRIVATE(iflag_t_glace)
    6562
    66   INTEGER, SAVE :: iflag_cloudth_vert=0          ! option for determining cloud fraction and content in convective boundary layers
     63  INTEGER, SAVE, PROTECTED :: iflag_cloudth_vert=0         ! option for determining cloud fraction and content in convective boundary layers
    6764  !$OMP THREADPRIVATE(iflag_cloudth_vert)
    6865
    69   INTEGER, SAVE :: iflag_gammasat=0              ! which threshold for homogeneous nucleation below -40oC
     66  INTEGER, SAVE, PROTECTED :: iflag_gammasat=0             ! which threshold for homogeneous nucleation below -40oC
    7067  !$OMP THREADPRIVATE(iflag_gammasat)
    7168
    72   INTEGER, SAVE :: iflag_rain_incloud_vol=0      ! use of volume cloud fraction for rain autoconversion
     69  INTEGER, SAVE, PROTECTED :: iflag_rain_incloud_vol=0     ! use of volume cloud fraction for rain autoconversion
    7370  !$OMP THREADPRIVATE(iflag_rain_incloud_vol)
    7471
    75   INTEGER, SAVE :: iflag_bergeron=0              ! bergeron effect for liquid precipitation treatment 
     72  INTEGER, SAVE, PROTECTED :: iflag_bergeron=0             ! bergeron effect for liquid precipitation treatment 
    7673  !$OMP THREADPRIVATE(iflag_bergeron)
    7774
    78   INTEGER, SAVE :: iflag_fisrtilp_qsat=0         ! qsat adjustment (iterative) during autoconversion
     75  INTEGER, SAVE, PROTECTED :: iflag_fisrtilp_qsat=0        ! qsat adjustment (iterative) during autoconversion
    7976  !$OMP THREADPRIVATE(iflag_fisrtilp_qsat)
    8077
    81   INTEGER, SAVE :: iflag_pdf=0                   ! type of subgrid scale qtot pdf
     78  INTEGER, SAVE, PROTECTED :: iflag_pdf=0                  ! type of subgrid scale qtot pdf
    8279  !$OMP THREADPRIVATE(iflag_pdf)
    8380
    84   INTEGER, SAVE :: iflag_autoconversion=0        ! autoconversion option
     81  INTEGER, SAVE, PROTECTED :: iflag_autoconversion=0       ! autoconversion option
    8582  !$OMP THREADPRIVATE(iflag_autoconversion)
    8683
    87   LOGICAL, SAVE :: reevap_ice=.false.            ! no liquid precip for T< threshold
     84  LOGICAL, SAVE, PROTECTED :: reevap_ice=.false.           ! no liquid precip for T< threshold
    8885  !$OMP THREADPRIVATE(reevap_ice)
    8986
    90   REAL, SAVE :: cld_lc_lsc=2.6e-4                ! liquid autoconversion coefficient, stratiform rain
     87  REAL, SAVE, PROTECTED :: cld_lc_lsc=2.6e-4               ! liquid autoconversion coefficient, stratiform rain
    9188  !$OMP THREADPRIVATE(cld_lc_lsc)
    9289
    93   REAL, SAVE :: cld_lc_con=2.6e-4                ! liquid autoconversion coefficient, convective rain
     90  REAL, SAVE, PROTECTED :: cld_lc_con=2.6e-4                ! liquid autoconversion coefficient, convective rain
    9491  !$OMP THREADPRIVATE(cld_lc_con)
    9592
    96   REAL, SAVE :: cld_tau_lsc=3600.                ! liquid autoconversion timescale, stratiform rain
     93  REAL, SAVE, PROTECTED :: cld_tau_lsc=3600.                ! liquid autoconversion timescale, stratiform rain
    9794  !$OMP THREADPRIVATE(cld_tau_lsc)
    9895
    99   REAL, SAVE :: cld_tau_con=3600.                ! liquid autoconversion timescale, convective rain
     96  REAL, SAVE, PROTECTED :: cld_tau_con=3600.                ! liquid autoconversion timescale, convective rain
    10097  !$OMP THREADPRIVATE(cld_tau_con)
    10198
    102   REAL, SAVE :: cld_expo_lsc=2.                  ! liquid autoconversion threshold exponent, stratiform rain
     99  REAL, SAVE, PROTECTED :: cld_expo_lsc=2.                  ! liquid autoconversion threshold exponent, stratiform rain
    103100  !$OMP THREADPRIVATE(cld_expo_lsc)
    104101
    105   REAL, SAVE :: cld_expo_con=2.                  ! liquid autoconversion threshold exponent, convective rain
     102  REAL, SAVE, PROTECTED :: cld_expo_con=2.                  ! liquid autoconversion threshold exponent, convective rain
    106103  !$OMP THREADPRIVATE(cld_expo_con)
    107104
    108   REAL, SAVE :: ffallv_lsc=1.                    ! tuning coefficient crystal fall velocity, stratiform
     105  REAL, SAVE, PROTECTED :: ffallv_lsc=1.                    ! tuning coefficient crystal fall velocity, stratiform
    109106  !$OMP THREADPRIVATE(ffallv_lsc)
    110107
    111   REAL, SAVE :: ffallv_con=1.                    ! tuning coefficient crystal fall velocity, convective
     108  REAL, SAVE, PROTECTED :: ffallv_con=1.                    ! tuning coefficient crystal fall velocity, convective
    112109  !$OMP THREADPRIVATE(ffallv_con)
    113110
    114   REAL, SAVE :: coef_eva=2e-5                    ! tuning coefficient liquid precip evaporation
     111  REAL, SAVE, PROTECTED :: coef_eva=2e-5                    ! tuning coefficient liquid precip evaporation
    115112  !$OMP THREADPRIVATE(coef_eva)
    116113
    117   REAL, SAVE :: coef_eva_i                       ! tuning coefficient ice precip sublimation
     114  REAL, SAVE, PROTECTED :: coef_eva_i                       ! tuning coefficient ice precip sublimation
    118115  !$OMP THREADPRIVATE(coef_eva_i)
    119116
    120   REAL cice_velo                                 ! factor in the ice fall velocity formulation
    121   PARAMETER (cice_velo=1.645)
    122 
    123   REAL dice_velo                                 ! exponent in the ice fall velocity formulation
    124   PARAMETER (dice_velo=0.16)
    125 
    126   REAL, SAVE :: dist_liq=300.                    ! typical deph of cloud-top liquid layer in mpcs
     117  REAL, SAVE, PROTECTED :: expo_eva=0.5                     ! tuning coefficient liquid precip evaporation
     118  !$OMP THREADPRIVATE(expo_eva)
     119
     120  REAL, SAVE, PROTECTED :: expo_eva_i                       ! tuning coefficient ice precip sublimation
     121  !$OMP THREADPRIVATE(expo_eva_i)
     122
     123  REAL, SAVE, PROTECTED :: cice_velo=1.645                  ! factor in the ice fall velocity formulation
     124  !$OMP THREADPRIVATE(cice_velo)
     125
     126  REAL, SAVE, PROTECTED ::  dice_velo=0.16                  ! exponent in the ice fall velocity formulation
     127  !$OMP THREADPRIVATE(dice_velo)
     128
     129  REAL, SAVE, PROTECTED :: dist_liq=300.                    ! typical deph of cloud-top liquid layer in mpcs
    127130  !$OMP THREADPRIVATE(dist_liq)
    128131
    129   REAL, SAVE    :: tresh_cl=0.0                  ! cloud fraction threshold for cloud top search
     132  REAL, SAVE, PROTECTED    :: tresh_cl=0.0                  ! cloud fraction threshold for cloud top search
    130133  !$OMP THREADPRIVATE(tresh_cl)
    131134
     135  !--Parameters for poprecip
     136  LOGICAL, SAVE, PROTECTED :: ok_poprecip=.FALSE.           ! use the processes-oriented formulation of precipitations
     137  !$OMP THREADPRIVATE(ok_poprecip)
     138
     139  REAL, SAVE, PROTECTED :: rain_int_min=0.001               ! Minimum local rain intensity [mm/s] before the decrease in associated precipitation fraction
     140  !$OMP THREADPRIVATE(rain_int_min)
     141
     142  REAL, SAVE, PROTECTED :: thresh_precip_frac=1.E-6         ! precipitation fraction threshold TODO [-]
     143  !$OMP THREADPRIVATE(thresh_precip_frac)
     144
     145  REAL, SAVE, PROTECTED :: gamma_col=1.                     ! A COMMENTER TODO [-]
     146  !$OMP THREADPRIVATE(gamma_col)
     147
     148  REAL, SAVE, PROTECTED :: gamma_agg=1.                     ! A COMMENTER TODO [-]
     149  !$OMP THREADPRIVATE(gamma_agg)
     150
     151  REAL, SAVE, PROTECTED :: gamma_rim=1.                     ! A COMMENTER TODO [-]
     152  !$OMP THREADPRIVATE(gamma_rim)
     153
     154  REAL, SAVE, PROTECTED :: rho_rain=1000.                    ! A COMMENTER TODO [kg/m3]
     155  !$OMP THREADPRIVATE(rho_rain)
     156
     157  REAL, SAVE, PROTECTED :: rho_snow=500.                   ! A COMMENTER TODO [kg/m3]
     158  !$OMP THREADPRIVATE(rho_snow)
     159
     160  REAL, SAVE, PROTECTED :: r_rain=100.E-6                   ! A COMMENTER TODO [m]
     161  !$OMP THREADPRIVATE(r_rain)
     162
     163  REAL, SAVE, PROTECTED :: r_snow=100.E-6                    ! A COMMENTER TODO [m]
     164  !$OMP THREADPRIVATE(r_snow)
     165
     166  REAL, SAVE, PROTECTED :: Eff_rain_liq=1.0                  ! A COMMENTER TODO [-]
     167  !$OMP THREADPRIVATE(Eff_rain_liq)
     168
     169  REAL, SAVE, PROTECTED :: Eff_snow_ice=0.5                ! A COMMENTER TODO [-]
     170  !$OMP THREADPRIVATE(Eff_snow_ice)
     171
     172  REAL, SAVE, PROTECTED :: Eff_snow_liq=1.0              ! A COMMENTER TODO [-]
     173  !$OMP THREADPRIVATE(Eff_snow_liq)
     174
     175  REAL, SAVE, PROTECTED :: tau_auto_snow_min=1800.          ! A COMMENTER TODO [s]
     176  !$OMP THREADPRIVATE(tau_auto_snow_min)
     177
     178  REAL, SAVE, PROTECTED :: tau_auto_snow_max=7200.          ! A COMMENTER TODO [s]
     179  !$OMP THREADPRIVATE(tau_auto_snow_max)
     180
     181  REAL, SAVE, PROTECTED :: eps=1.E-10                       ! A COMMENTER TODO [-]
     182  !$OMP THREADPRIVATE(eps)
     183  !--End of the parameters for poprecip
     184
    132185! Two parameters used for lmdz_lscp_old only
    133   INTEGER, SAVE :: iflag_oldbug_fisrtilp=0, fl_cor_ebil
     186  INTEGER, SAVE, PROTECTED :: iflag_oldbug_fisrtilp=0, fl_cor_ebil
    134187  !$OMP THREADPRIVATE(iflag_oldbug_fisrtilp,fl_cor_ebil)
    135188
     
    173226    CALL getin_p('iflag_evap_prec',iflag_evap_prec)
    174227    CALL getin_p('seuil_neb',seuil_neb)
    175     CALL getin_p('rain_int_min',rain_int_min)
    176228    CALL getin_p('iflag_mpc_bl',iflag_mpc_bl)
    177229    CALL getin_p('ok_radocond_snow',ok_radocond_snow)
     
    199251    coef_eva_i=coef_eva
    200252    CALL getin_p('coef_eva_i',coef_eva_i)
     253    CALL getin_p('expo_eva',expo_eva)
     254    expo_eva_i=expo_eva
     255    CALL getin_p('expo_eva_i',expo_eva_i)
    201256    CALL getin_p('iflag_autoconversion',iflag_autoconversion)
    202257    CALL getin_p('dist_liq',dist_liq)
    203258    CALL getin_p('tresh_cl',tresh_cl)
    204259    CALL getin_p('iflag_oldbug_fisrtilp',iflag_oldbug_fisrtilp)
    205 
     260    CALL getin_p('ok_poprecip',ok_poprecip)
     261    CALL getin_p('rain_int_min',rain_int_min)
     262    CALL getin_p('gamma_agg',gamma_agg)
     263    CALL getin_p('gamma_col',gamma_col)
    206264
    207265
     
    210268    WRITE(lunout,*) 'lscp_ini, iflag_evap_prec:', iflag_evap_prec
    211269    WRITE(lunout,*) 'lscp_ini, seuil_neb:', seuil_neb
    212     WRITE(lunout,*) 'lscp_ini, rain_int_min:', rain_int_min
    213270    WRITE(lunout,*) 'lscp_ini, iflag_mpc_bl:', iflag_mpc_bl
    214271    WRITE(lunout,*) 'lscp_ini, ok_radocond_snow:', ok_radocond_snow
     
    235292    WRITE(lunout,*) 'lscp_ini, coef_eva', coef_eva
    236293    WRITE(lunout,*) 'lscp_ini, coef_eva_i', coef_eva_i
     294    WRITE(lunout,*) 'lscp_ini, expo_eva', expo_eva
     295    WRITE(lunout,*) 'lscp_ini, expo_eva_i', expo_eva_i
    237296    WRITE(lunout,*) 'lscp_ini, iflag_autoconversion', iflag_autoconversion
    238297    WRITE(lunout,*) 'lscp_ini, dist_liq', dist_liq
     
    240299    WRITE(lunout,*) 'lscp_ini, iflag_oldbug_fisrtilp', iflag_oldbug_fisrtilp
    241300    WRITE(lunout,*) 'lscp_ini, fl_cor_ebil', fl_cor_ebil
     301    WRITE(lunout,*) 'lscp_ini, ok_poprecip', ok_poprecip
     302    WRITE(lunout,*) 'lscp_ini, rain_int_min:', rain_int_min
     303    WRITE(lunout,*) 'lscp_ini, gamma_agg:', gamma_agg
     304    WRITE(lunout,*) 'lscp_ini, gamma_col:', gamma_col
    242305
    243306
     
    262325
    263326
     327    ! check consistency between the use of the processes-oriented precipitation formulations
     328    ! and other options
     329   
     330    IF (ok_poprecip) THEN
     331        IF ((iflag_evap_prec .LT. 4) .OR. (niter_lscp .GT. 1)) THEN
     332           abort_message = 'in lscp, ok_poprecip=y requires iflag_evap_prec >= 4 and niter_lscp=1'
     333           CALL abort_physic (modname,abort_message,1)
     334        ENDIF
     335    ENDIF
     336
     337
    264338    !AA Temporary initialisation
    265339    a_tr_sca(1) = -0.5
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r4753 r4803  
    538538
    539539
     540!--POPRECIP variables
     541      REAL, SAVE, ALLOCATABLE :: dqreva(:,:)
     542      !$OMP THREADPRIVATE(dqreva)
     543      REAL, SAVE, ALLOCATABLE :: dqrauto(:,:)
     544      !$OMP THREADPRIVATE(dqrauto)
     545      REAL, SAVE, ALLOCATABLE :: dqrcol(:,:)
     546      !$OMP THREADPRIVATE(dqrcol)
     547      REAL, SAVE, ALLOCATABLE :: dqrmelt(:,:)
     548      !$OMP THREADPRIVATE(dqrmelt)
     549       REAL, SAVE, ALLOCATABLE :: dqrfreez(:,:)
     550      !$OMP THREADPRIVATE(dqrfreez)
     551      REAL, SAVE, ALLOCATABLE :: dqssub(:,:)
     552      !$OMP THREADPRIVATE(dqssub)
     553      REAL, SAVE, ALLOCATABLE :: dqsauto(:,:)
     554      !$OMP THREADPRIVATE(dqsauto)
     555      REAL, SAVE, ALLOCATABLE :: dqsagg(:,:)
     556      !$OMP THREADPRIVATE(dqsagg)
     557      REAL, SAVE, ALLOCATABLE :: dqsrim(:,:)
     558      !$OMP THREADPRIVATE(dqsrim)
     559      REAL, SAVE, ALLOCATABLE :: dqsmelt(:,:)
     560      !$OMP THREADPRIVATE(dqsmelt)
     561      REAL, SAVE, ALLOCATABLE :: dqsfreez(:,:)
     562      !$OMP THREADPRIVATE(dqsfreez)
     563
     564
     565     
     566
     567
    540568#ifdef CPP_StratAer
    541569!
     
    928956      ALLOCATE(zqsatl(klon,klev), zqsats(klon,klev))
    929957      ALLOCATE(Tcontr(klon,klev), qcontr(klon,klev), qcontr2(klon,klev), fcontrN(klon,klev), fcontrP(klon,klev))
     958
     959!--POPRECIP variables
     960      ALLOCATE(dqreva(klon,klev),dqssub(klon,klev))
     961      ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev))
     962      ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev))
    930963
    931964#ifdef CPP_StratAer
     
    12391272      DEALLOCATE(Tcontr, qcontr, qcontr2, fcontrN, fcontrP)
    12401273
     1274!--POPRECIP variables
     1275      DEALLOCATE(dqreva,dqssub)
     1276      DEALLOCATE(dqrauto,dqrcol,dqrmelt,dqrfreez)
     1277      DEALLOCATE(dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez)
     1278
    12411279#ifdef CPP_StratAer
    12421280! variables for strat. aerosol CK
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r4773 r4803  
    15561556  TYPE(ctrl_out), SAVE :: o_pfracld = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    15571557    'pfracld', 'LS precipitation fraction cloudy part', '-', (/ ('', i=1, 10) /))
     1558  TYPE(ctrl_out), SAVE :: o_dqreva = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1559    'dqreva', 'LS rain tendency due to evaporation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1560   TYPE(ctrl_out), SAVE :: o_dqrauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1561    'dqrauto', 'LS rain tendency due to autoconversion', 'kg/m2/s', (/ ('', i=1, 10) /))
     1562  TYPE(ctrl_out), SAVE :: o_dqrcol = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1563    'dqrcol', 'LS rain tendency due to collection', 'kg/m2/s', (/ ('', i=1, 10) /))
     1564  TYPE(ctrl_out), SAVE :: o_dqrmelt = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1565    'dqrmelt', 'LS rain tendency due to melting', 'kg/m2/s', (/ ('', i=1, 10) /))
     1566  TYPE(ctrl_out), SAVE :: o_dqrfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1567    'dqrfreez', 'LS rain tendency due to freezing', 'kg/m2/s', (/ ('', i=1, 10) /))
     1568  TYPE(ctrl_out), SAVE :: o_dqssub = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1569    'dqssub', 'LS snow tendency due to sublimation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1570  TYPE(ctrl_out), SAVE :: o_dqsauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1571    'dqsauto', 'LS snow tendency due to autoconversion', 'kg/m2/s', (/ ('', i=1, 10) /))
     1572  TYPE(ctrl_out), SAVE :: o_dqsagg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1573    'dqsagg', 'LS snow tendency due to aggragation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1574  TYPE(ctrl_out), SAVE :: o_dqsrim = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1575    'dqsrim', 'LS snow tendency due to riming', 'kg/m2/s', (/ ('', i=1, 10) /))
     1576  TYPE(ctrl_out), SAVE :: o_dqsmelt = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1577    'dqsmelt', 'LS snow tendency due to melting', 'kg/m2/s', (/ ('', i=1, 10) /))
     1578  TYPE(ctrl_out), SAVE :: o_dqsfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1579    'dqsfreez', 'LS snow tendency due to freezing', 'kg/m2/s', (/ ('', i=1, 10) /))
    15581580  TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11, 11/), &
    15591581    'rhum', 'Relative humidity', '-', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r4773 r4803  
    141141         o_rnebls, o_rneblsvol, o_rhum, o_rhl, o_rhi, o_ozone, o_ozone_light, &
    142142         o_pfraclr, o_pfracld, &
     143         o_dqreva, o_dqrauto, o_dqrcol, o_dqrmelt, o_dqrfreez, &
     144         o_dqssub, o_dqsauto, o_dqsagg, o_dqsrim, o_dqsmelt, o_dqsfreez, &
    143145         o_duphy, o_dtphy, o_dqphy, o_dqphy2d, o_dqlphy, o_dqlphy2d, &
    144146         o_dqsphy, o_dqsphy2d, o_dqbsphy, o_dqbsphy2d, o_albe_srf, o_z0m_srf, o_z0h_srf, &
     
    255257
    256258    USE ice_sursat_mod, ONLY: flight_m, flight_h2o
    257    
     259    USE lmdz_lscp_ini, ONLY: ok_poprecip
     260
    258261    USE phys_output_ctrlout_mod, ONLY: o_heat_volc, o_cool_volc !NL
    259262    USE phys_state_var_mod, ONLY: heat_volc, cool_volc !NL
     
    357360         zphi, u_seri, v_seri, omega, cldfra, &
    358361         rneb, rnebjn, rneblsvol, zx_rh, zx_rhl, zx_rhi, &
    359          pfraclr, pfracld, d_t_dyn,  &
     362         pfraclr, pfracld,  &
     363         dqreva, dqssub, &
     364         dqrauto,dqrcol,dqrmelt,dqrfreez, &
     365         dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, &
     366         d_t_dyn,  &
    360367         d_q_dyn,  d_ql_dyn, d_qs_dyn, d_qbs_dyn,  &
    361368         d_q_dyn2d,  d_ql_dyn2d, d_qs_dyn2d, d_qbs_dyn2d, &
     
    19421949           CALL histwrite_phy(o_pfraclr, pfraclr)
    19431950           CALL histwrite_phy(o_pfracld, pfracld)
     1951           IF (ok_poprecip) THEN
     1952           CALL histwrite_phy(o_dqreva, dqreva)
     1953           CALL histwrite_phy(o_dqrauto, dqrauto)
     1954           CALL histwrite_phy(o_dqrcol, dqrcol)
     1955           CALL histwrite_phy(o_dqrmelt, dqrmelt)
     1956           CALL histwrite_phy(o_dqrfreez, dqrfreez)
     1957           CALL histwrite_phy(o_dqssub, dqssub)
     1958           CALL histwrite_phy(o_dqsauto, dqsauto)
     1959           CALL histwrite_phy(o_dqsagg, dqsagg)
     1960           CALL histwrite_phy(o_dqsmelt, dqsmelt)
     1961           CALL histwrite_phy(o_dqsfreez, dqsfreez)
     1962           CALL histwrite_phy(o_dqsrim, dqsrim)
     1963           ENDIF
    19441964       ENDIF
    19451965
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r4790 r4803  
    195195       east_gwstress,west_gwstress, &
    196196       d_q_ch4, &
     197       ! proprecip
     198       dqreva, dqssub, &
     199       dqrauto,dqrcol,dqrmelt,dqrfreez, &
     200       dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, &
    197201       !  Special RRTM
    198202       ZLWFT0_i,ZSWFT0_i,ZFLDN0,  &
     
    38873891         qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, &
    38883892         Tcontr, qcontr, qcontr2, fcontrN, fcontrP , &
    3889          cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
     3893         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
     3894         dqreva,dqssub,dqrauto,dqrcol,dqrmelt,dqrfreez,dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez)
    38903895
    38913896
  • LMDZ6/trunk/libf/phylmdiso/phys_local_var_mod.F90

    r4753 r4803  
    639639      !$OMP THREADPRIVATE(fcontrP)
    640640
     641!--POPRECIP variables
     642      REAL, SAVE, ALLOCATABLE :: dqreva(:,:)
     643      !$OMP THREADPRIVATE(dqreva)
     644      REAL, SAVE, ALLOCATABLE :: dqrauto(:,:)
     645      !$OMP THREADPRIVATE(dqrauto)
     646      REAL, SAVE, ALLOCATABLE :: dqrcol(:,:)
     647      !$OMP THREADPRIVATE(dqrcol)
     648      REAL, SAVE, ALLOCATABLE :: dqrmelt(:,:)
     649      !$OMP THREADPRIVATE(dqrmelt)
     650       REAL, SAVE, ALLOCATABLE :: dqrfreez(:,:)
     651      !$OMP THREADPRIVATE(dqrfreez)
     652      REAL, SAVE, ALLOCATABLE :: dqssub(:,:)
     653      !$OMP THREADPRIVATE(dqssub)
     654      REAL, SAVE, ALLOCATABLE :: dqsauto(:,:)
     655      !$OMP THREADPRIVATE(dqsauto)
     656      REAL, SAVE, ALLOCATABLE :: dqsagg(:,:)
     657      !$OMP THREADPRIVATE(dqsagg)
     658      REAL, SAVE, ALLOCATABLE :: dqsrim(:,:)
     659      !$OMP THREADPRIVATE(dqsrim)
     660      REAL, SAVE, ALLOCATABLE :: dqsmelt(:,:)
     661      !$OMP THREADPRIVATE(dqsmelt)
     662      REAL, SAVE, ALLOCATABLE :: dqsfreez(:,:)
     663      !$OMP THREADPRIVATE(dqsfreez)
     664
     665
     666
     667
     668
    641669#ifdef CPP_StratAer
    642670!
     
    10851113      ALLOCATE(zqsatl(klon,klev), zqsats(klon,klev))
    10861114      ALLOCATE(Tcontr(klon,klev), qcontr(klon,klev), qcontr2(klon,klev), fcontrN(klon,klev), fcontrP(klon,klev))
     1115
     1116!--POPRECIP variables
     1117      ALLOCATE(dqreva(klon,klev),dqssub(klon,klev))
     1118      ALLOCATE(dqrauto(klon,klev), dqrcol(klon,klev), dqrmelt(klon,klev), dqrfreez(klon,klev))
     1119      ALLOCATE(dqsauto(klon,klev), dqsagg(klon,klev), dqsrim(klon,klev), dqsmelt(klon,klev), dqsfreez(klon,klev))
    10871120
    10881121#ifdef CPP_StratAer
     
    14441477      DEALLOCATE(Tcontr, qcontr, qcontr2, fcontrN, fcontrP)
    14451478
     1479!--POPRECIP variables
     1480      DEALLOCATE(dqreva,dqssub)
     1481      DEALLOCATE(dqrauto,dqrcol,dqrmelt,dqrfreez)
     1482      DEALLOCATE(dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez)
     1483
    14461484#ifdef CPP_StratAer
    14471485! variables for strat. aerosol CK
  • LMDZ6/trunk/libf/phylmdiso/phys_output_ctrlout_mod.F90

    r4576 r4803  
    14771477  TYPE(ctrl_out), SAVE :: o_pfracld = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    14781478    'pfracld', 'LS precipitation fraction cloudy part', '-', (/ ('', i=1, 10) /))
     1479  TYPE(ctrl_out), SAVE :: o_dqreva = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1480    'dqreva', 'LS rain tendency due to evaporation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1481   TYPE(ctrl_out), SAVE :: o_dqrauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1482    'dqrauto', 'LS rain tendency due to autoconversion', 'kg/m2/s', (/ ('', i=1, 10) /))
     1483  TYPE(ctrl_out), SAVE :: o_dqrcol = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1484    'dqrcol', 'LS rain tendency due to collection', 'kg/m2/s', (/ ('', i=1, 10) /))
     1485  TYPE(ctrl_out), SAVE :: o_dqrmelt = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1486    'dqrmelt', 'LS rain tendency due to melting', 'kg/m2/s', (/ ('', i=1, 10) /))
     1487  TYPE(ctrl_out), SAVE :: o_dqrfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1488    'dqrfreez', 'LS rain tendency due to freezing', 'kg/m2/s', (/ ('', i=1, 10) /))
     1489  TYPE(ctrl_out), SAVE :: o_dqssub = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1490    'dqssub', 'LS snow tendency due to sublimation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1491  TYPE(ctrl_out), SAVE :: o_dqsauto = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1492    'dqsauto', 'LS snow tendency due to autoconversion', 'kg/m2/s', (/ ('', i=1, 10) /))
     1493  TYPE(ctrl_out), SAVE :: o_dqsagg = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1494    'dqsagg', 'LS snow tendency due to aggragation', 'kg/m2/s', (/ ('', i=1, 10) /))
     1495  TYPE(ctrl_out), SAVE :: o_dqsrim = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1496    'dqsrim', 'LS snow tendency due to riming', 'kg/m2/s', (/ ('', i=1, 10) /))
     1497  TYPE(ctrl_out), SAVE :: o_dqsmelt = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1498    'dqsmelt', 'LS snow tendency due to melting', 'kg/m2/s', (/ ('', i=1, 10) /))
     1499  TYPE(ctrl_out), SAVE :: o_dqsfreez = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     1500    'dqsfreez', 'LS snow tendency due to freezing', 'kg/m2/s', (/ ('', i=1, 10) /))
    14791501  TYPE(ctrl_out), SAVE :: o_rhum = ctrl_out((/ 2, 5, 10, 10, 10, 10, 11, 11, 11, 11/), &
    14801502    'rhum', 'Relative humidity', '-', (/ ('', i=1, 10) /))
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r4792 r4803  
    229229       east_gwstress,west_gwstress, &
    230230       d_q_ch4, &
     231       ! proprecip
     232       dqreva, dqssub, &
     233       dqrauto,dqrcol,dqrmelt,dqrfreez, &
     234       dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez, &
    231235       !  Special RRTM
    232236       ZLWFT0_i,ZSWFT0_i,ZFLDN0,  &
     
    48764880    CALL lscp(klon,klev,phys_tstep,missing_val,paprs,pplay, &
    48774881         t_seri, q_seri,ptconv,ratqs, &
    4878          d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, rneb_seri, &
     4882         d_t_lsc, d_q_lsc, d_ql_lsc, d_qi_lsc, rneb, rneblsvol, rneb_seri, & 
    48794883         pfraclr,pfracld, &
    48804884         radocond, picefra, rain_lsc, snow_lsc, &
     
    48854889         qclr, qcld, qss, qvc, rnebclr, rnebss, gamma_ss, &
    48864890         Tcontr, qcontr, qcontr2, fcontrN, fcontrP , &
    4887          cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv)
     4891         cloudth_sth,cloudth_senv,cloudth_sigmath,cloudth_sigmaenv, &
     4892         dqreva,dqssub,dqrauto,dqrcol,dqrmelt,dqrfreez,dqsauto,dqsagg,dqsrim,dqsmelt,dqsfreez)
    48884893
    48894894
Note: See TracChangeset for help on using the changeset viewer.