Ignore:
Timestamp:
May 10, 2019, 12:17:35 PM (5 years ago)
Author:
jyg
Message:

Implementation of the ejection of liquid precipitation from the adiabatic ascents.
New flags:
+cvflag_prec_eject: logical

n -> old code, y -> new code

+ejectliq: real; possible values 0. & 1.

  1. -> no liquid precipitation is ejected
  2. -> all liquid precipitation is ejected

+ejectice: real; any value between 0. and 1.

fraction of solid precipitation ejected at each level

Note that the adiabatic ascent mass flux decrease due to precipitation ejection is not taken into account.

Attempts to do it led to water conservation violation.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/cv3_routines.F90

    r3492 r3496  
    3535
    3636  include "cv3param.h"
     37  include "cvflag.h"
    3738  include "conema3.h"
    3839
     
    125126     tlcrit=-55.0
    126127     CALL getin_p('tlcrit',tlcrit)
     128     ejectliq=0.
     129     CALL getin_p('ejectliq',ejectliq)
     130     ejectice=0.
     131     CALL getin_p('ejectice',ejectice)
     132     cvflag_prec_eject = .FALSE.
     133     CALL getin_p('cvflag_prec_eject',cvflag_prec_eject)
    127134     qsat_depends_on_qt = .FALSE.
    128135     CALL getin_p('qsat_depends_on_qt',qsat_depends_on_qt)
     136     adiab_ascent_mass_flux_depends_on_ejectliq = .FALSE.
     137     CALL getin_p('adiab_ascent_mass_flux_depends_on_ejectliq',adiab_ascent_mass_flux_depends_on_ejectliq)
    129138
    130139    WRITE (*, *) 't_top_max=', t_top_max
     
    172181
    173182  include "cv3param.h"
     183  include "cvflag.h"
    174184
    175185!inputs:
     
    292302  USE mod_phys_lmdz_transfert_para, ONLY : bcast
    293303  USE add_phys_tend_mod, ONLY: fl_cor_ebil
     304  USE print_control_mod, ONLY: prt_level
    294305  IMPLICIT NONE
    295306
     
    519530    END DO
    520531  ENDIF
     532  IF (prt_level .GE. 10) THEN
     533    print *,'cv3_feed : iflag(1), pfeed(1), plcl(1), wghti(1,k) ', &
     534                        iflag(1), pfeed(1), plcl(1), (wghti(1,k),k=1,10)
     535  ENDIF
    521536
    522537! -------------------------------------------------------------------
     
    11081123                         tnk, qnk, gznk, hnk, t, q, qs, gz, &
    11091124                         p, ph, h, tv, lv, lf, pbase, buoybase, plcl, &
    1110                          inb, tp, tvp, clw, hp, ep, sigp, buoy, frac)
     1125                         inb, tp, tvp, clw, hp, ep, sigp, buoy, &
     1126                         frac_a, frac_s, qpreca, qta)
    11111127  USE print_control_mod, ONLY: prt_level
    11121128  IMPLICIT NONE
     
    11561172  REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: ep, sigp, hp
    11571173  REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: buoy
    1158   REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: frac   ! ice fraction
     1174  REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: frac_a, frac_s
     1175  REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: qpreca
     1176  REAL, DIMENSION (nloc, nd), INTENT (OUT)           :: qta
    11591177
    11601178!local variables:
     
    11621180  REAL smallestreal
    11631181  REAL tg, qg, dqgdT, ahg, alv, alf, s, tc, es, esi, denom, rg, tca, elacrit
     1182  REAL                                               :: phinu2p
    11641183  REAL als
    11651184  REAL                                               :: qsat_new, snew
    11661185  REAL, DIMENSION (nloc,nd)                          :: qi
     1186  REAL, DIMENSION (nloc,nd)                          :: ha    ! moist static energy of adiabatic ascents
     1187                                                              ! taking into account precip ejection
     1188  REAL, DIMENSION (nloc,nd)                          :: hla   ! liquid water static energy of adiabatic ascents
     1189                                                              ! taking into account precip ejection
     1190  REAL, DIMENSION (nloc,nd)                          :: qcld  ! specific cloud water
    11671191  REAL, DIMENSION (nloc,nd)                          :: qhsat    ! specific humidity at saturation
    11681192  REAL, DIMENSION (nloc,nd)                          :: dqhsatdT ! dqhsat/dT
     1193  REAL, DIMENSION (nloc,nd)                          :: frac  ! ice fraction function of envt temperature
     1194  REAL, DIMENSION (nloc,nd)                          :: qps   ! specific solid precipitation
     1195  REAL, DIMENSION (nloc,nd)                          :: qpl   ! specific liquid precipitation
    11691196  REAL, DIMENSION (nloc)                             :: ah0, cape, capem, byp
    11701197  LOGICAL, DIMENSION (nloc)                          :: lcape
    11711198  INTEGER, DIMENSION (nloc)                          :: iposit
     1199  REAL                                               :: denomm1
    11721200  REAL                                               :: by, defrac, pden, tbis
    11731201  REAL                                               :: fracg
     
    11961224  END DO
    11971225
     1226
    11981227! =====================================================================
    11991228! --- FIND THE REST OF THE LIFTED PARCEL TEMPERATURES
     
    12111240             qnk(i)*(lv0-clmcpv*(tnk(i)-273.15)) + gznk(i)
    12121241  END DO
     1242!
     1243!  Ice fraction
     1244!
     1245  IF (cvflag_ice) THEN
     1246    DO k = minorig, nl
     1247      DO i = 1, ncum
     1248          frac(i, k) = (Tx - t(i,k))/(Tx - Tm)
     1249          frac(i, k) = min(max(frac(i,k),0.0), 1.0)
     1250      END DO
     1251    END DO
     1252! Below cloud base, set ice fraction to cloud base value
     1253    DO k = 1, nl
     1254      DO i = 1, ncum
     1255        IF (k<icb(i)) THEN
     1256          frac(i,k) = frac(i,icb(i))
     1257        END IF
     1258      END DO
     1259    END DO
     1260  ELSE
     1261    DO k = 1, nl
     1262      DO i = 1, ncum
     1263          frac(i,k) = 0.
     1264      END DO
     1265    END DO
     1266  ENDIF ! (cvflag_ice)
     1267
    12131268
    12141269  DO k = minorig, nl
    12151270    DO i = 1,ncum
     1271      ha(i,k) = ah0(i)
     1272      hla(i,k) = hnk(i)
     1273      qta(i,k) = qnk(i)
     1274      qpreca(i,k) = 0.
     1275      frac_a(i,k) = 0.
     1276      frac_s(i,k) = frac(i,k)
     1277      qpl(i,k) = 0.
     1278      qps(i,k) = 0.
    12161279      qhsat(i,k) = qs(i,k)
     1280      qcld(i,k) = max(qta(i,k)-qhsat(i,k),0.)
     1281      IF (k <= icb(i)+1) THEN
     1282        qhsat(i,k) = qnk(i)-clw(i,k)
     1283        qcld(i,k) = clw(i,k)
     1284      ENDIF
    12171285    ENDDO
    12181286  ENDDO
     
    13471415!----------------------------------------------------------------------------
    13481416!
    1349 !  Ice fraction
    1350 !
    1351     DO k = minorig + 1, nl
    1352       DO i = 1, ncum
    1353           frac(i, k) = (Tx - t(i,k))/(Tx - Tm)
    1354           frac(i, k) = min(max(frac(i,k),0.0), 1.0)
    1355       END DO
    1356     END DO
    1357 ! Below cloud base, set ice fraction to cloud base value
    1358     DO k = 1, nl
    1359       DO i = 1, ncum
    1360         IF (k<icb(i)) THEN
    1361           frac(i,k) = frac(i,icb(i))
    1362         END IF
    1363       END DO
    1364     END DO
    1365 
    13661417    DO k = minorig + 1, nl
    13671418      DO i = 1,ncum
     
    13761427          IF (k>=(icbs(i)+1)) THEN                                ! convect3
    13771428            tg = tp(i, k)
    1378             IF (tg .gt. Tx) THEN
     1429            IF (tg .gt. Tx .OR. .NOT.cvflag_ice) THEN
    13791430              es = 6.112*exp(17.67*(tg - 273.15)/(tg + 243.5 - 273.15))
    13801431              qg = eps*es/(p(i,k)-es*(1.-eps))
     
    13861437            ENDIF
    13871438            IF (qsat_depends_on_qt) THEN
    1388               dqgdT = dqgdT*(1.-qnk(i))/(1.-qg)**2
    1389               qg = qg*(1.-qnk(i))/(1.-qg)           
     1439              dqgdT = dqgdT*(1.-qta(i,k-1))/(1.-qg)**2
     1440              qg = qg*(1.-qta(i,k-1))/(1.-qg)           
    13901441            ENDIF
    1391             ahg = (cpd + (cl-cpd)*qnk(i))*tg + lv(i,k)*qg - &
    1392                   lf(i,k)*frac(i,k)*(qnk(i) - qg) + gz(i,k)
     1442            ahg = (cpd + (cl-cpd)*qta(i,k-1))*tg + lv(i,k)*qg - &
     1443                  lf(i,k)*frac(i,k)*(qta(i,k-1) - qg) + gz(i,k)
    13931444            Tp(i,k) = tg + (ah0(i) - ahg)/ &
    1394                     (cpd + (cl-cpd)*qnk(i) + (lv(i,k)+frac(i,k)*lf(i,k))*dqgdT)
     1445                    (cpd + (cl-cpd)*qta(i,k-1) + (lv(i,k)+frac(i,k)*lf(i,k))*dqgdT)
    13951446!!   print *,'undilute2 iterations k, Tp(i,k), ah0(i), ahg ', &
    13961447!!                                 k, Tp(i,k), ah0(i), ahg
     
    14011452        IF (k>=(icbs(i)+1)) THEN                                ! convect3
    14021453          tg = tp(i, k)
    1403           IF (tg .gt. Tx) THEN
     1454          IF (tg .gt. Tx .OR. .NOT.cvflag_ice) THEN
    14041455            es = 6.112*exp(17.67*(tg - 273.15)/(tg + 243.5 - 273.15))
    14051456            qg = eps*es/(p(i,k)-es*(1.-eps))
     
    14081459            qg = eps*esi/(p(i,k)-esi*(1.-eps))
    14091460          ENDIF
    1410             IF (qsat_depends_on_qt) THEN
    1411               qg = qg*(1.-qnk(i))/(1.-qg)           
    1412             ENDIF
    1413           clw(i, k) = qnk(i) - qg
     1461          IF (qsat_depends_on_qt) THEN
     1462            qg = qg*(1.-qta(i,k-1))/(1.-qg)           
     1463          ENDIF
     1464          qhsat(i,k) = qg
     1465        END IF ! (k>=(icbs(i)+1))
     1466      END DO ! i = 1, ncum
     1467      DO i = 1, ncum
     1468        IF (k>=(icbs(i)+1)) THEN                                ! convect3
     1469          clw(i, k) = qta(i,k-1) - qhsat(i,k)
    14141470          clw(i, k) = max(0.0, clw(i,k))
    1415           tvp(i, k) = max(0., tp(i,k)*(1.+qg/eps-qnk(i)))
     1471          tvp(i, k) = max(0., tp(i,k)*(1.+qhsat(i,k)/eps-qta(i,k-1)))
    14161472! print*,tvp(i,k),'tvp'
    14171473          IF (clw(i,k)<1.E-11) THEN
     
    14211477        END IF ! (k>=(icbs(i)+1))
    14221478      END DO ! i = 1, ncum
     1479!
     1480      IF (cvflag_prec_eject) THEN
     1481        DO i = 1, ncum
     1482          IF (k>=(icbs(i)+1)) THEN                                ! convect3
     1483!  Specific precipitation (liquid and solid) and ice content
     1484!  before ejection of precipitation                                                     !!jygprl
     1485            elacrit = elcrit*min(max(1.-(tp(i,k)-T0)/Tlcrit, 0.), 1.)                   !!jygprl
     1486!!!!            qcld(i,k) = min(clw(i,k), elacrit)                                          !!jygprl
     1487            qcld(i,k) = min(clw(i,k), elacrit*(1.-qta(i,k-1))/(1.-elacrit))             !!jygprl
     1488            phinu2p = qhsat(i,k-1) + qcld(i,k-1) - (qhsat(i,k) + qcld(i,k))                     !!jygprl
     1489            qpl(i,k) = qpl(i,k-1) + (1.-frac(i,k))*phinu2p                            !!jygprl
     1490            qps(i,k) = qps(i,k-1) + frac(i,k)     *phinu2p                            !!jygprl
     1491            qi(i,k) = (1.-ejectliq)*clw(i,k)*frac(i,k) + &                            !!jygprl
     1492                     ejectliq*(qps(i,k-1) + frac(i,k)*(phinu2p+qcld(i,k)))            !!jygprl
     1493!!
     1494!  =====================================================================================
     1495!  Ejection of precipitation from adiabatic ascents if requested (cvflag_prec_eject=True):
     1496!  Compute the steps of total water (qta), of moist static energy (ha), of specific
     1497!  precipitation (qpl and qps) and of specific cloud water (qcld) associated with precipitation
     1498!   ejection.
     1499!  =====================================================================================
     1500
     1501!   Verif
     1502            qpreca(i,k) = ejectliq*qpl(i,k) + ejectice*qps(i,k)                                   !!jygprl
     1503            frac_a(i,k) = ejectice*qps(i,k)/max(qpreca(i,k),smallestreal)                         !!jygprl
     1504            frac_s(i,k) = (1.-ejectliq)*frac(i,k) + &                                             !!jygprl
     1505               ejectliq*(1. - (qpl(i,k)+(1.-frac(i,k))*qcld(i,k))/max(clw(i,k),smallestreal))     !!jygprl
     1506!         
     1507            denomm1 = 1./(1. - qpreca(i,k))
     1508!         
     1509            qta(i,k) = qta(i,k-1) - &
     1510                      qpreca(i,k)*(1.-qta(i,k-1))*denomm1
     1511            ha(i,k)  = ha(i,k-1) + &
     1512                      ( qpreca(i,k)*(-(1.-qta(i,k-1))*(cl-cpd)*tp(i,k) + &
     1513                                  lv(i,k)*qhsat(i,k) - lf(i,k)*(frac_s(i,k)*qcld(i,k)+qps(i,k))) + &
     1514                        lf(i,k)*ejectice*qps(i,k))*denomm1
     1515            hla(i,k) = hla(i,k-1) + &
     1516                      ( qpreca(i,k)*(-(1.-qta(i,k-1))*(cpv-cpd)*tp(i,k) - &
     1517                                  lv(i,k)*((1.-frac_s(i,k))*qcld(i,k)+qpl(i,k)) - &
     1518                                  (lv(i,k)+lf(i,k))*(frac_s(i,k)*qcld(i,k)+qps(i,k))) + &
     1519                        lv(i,k)*ejectliq*qpl(i,k) + (lv(i,k)+lf(i,k))*ejectice*qps(i,k))*denomm1
     1520            qpl(i,k) = qpl(i,k)*(1.-ejectliq)*denomm1
     1521            qps(i,k) = qps(i,k)*(1.-ejectice)*denomm1
     1522            qcld(i,k) = qcld(i,k)*denomm1
     1523            qhsat(i,k) = qhsat(i,k)*(1.-qta(i,k))/(1.-qta(i,k-1))
     1524         END IF ! (k>=(icbs(i)+1))
     1525        END DO ! i = 1, ncum
     1526      ENDIF  ! (cvflag_prec_eject)
     1527!
    14231528    END DO ! k = minorig + 1, nl
    14241529!
    14251530!----------------------------------------------------------------------------
    14261531!
    1427   ELSE ! (icvflag_Tpa == 2) ELSE IF(icvflag_Tpa == 1)
     1532  ELSE IF (icvflag_Tpa == 0) THEN! (icvflag_Tpa == 2) ELSE IF(icvflag_Tpa == 1)
    14281533!
    14291534!----------------------------------------------------------------------------
     
    15871692!----------------------------------------------------------------------------
    15881693!
    1589   ENDIF ! (icvflag_Tpa == 2) ELSEIF (icvflag_Tpa == 1) ELSE
     1694  ENDIF ! (icvflag_Tpa == 2) ELSEIF (icvflag_Tpa == 1) ELSE (icvflag_Tpa == 0)
    15901695!
    15911696!----------------------------------------------------------------------------
     
    18721977  IF (cvflag_ice) THEN
    18731978!
     1979  IF (cvflag_prec_eject) THEN
     1980!!    DO k = minorig + 1, nl
     1981!!      DO i = 1, ncum
     1982!!        IF ((k>=icb(i)) .AND. (k<=inb(i))) THEN
     1983!!          frac_s(i,k) = qi(i,k)/max(clw(i,k),smallestreal)   
     1984!!          frac_s(i,k) = 1. - (qpl(i,k)+(1.-frac_s(i,k))*qcld(i,k))/max(clw(i,k),smallestreal)   
     1985!!        END IF
     1986!!      END DO
     1987!!    END DO
     1988  ELSE    ! (cvflag_prec_eject)
    18741989    DO k = minorig + 1, nl
    18751990      DO i = 1, ncum
     
    18771992!jyg< frac computation moved to beginning of cv3_undilute2.
    18781993!     kept here for compatibility test with CMip6 version
    1879           frac(i, k) = 1. - (t(i,k)-243.15)/(263.15-243.15)
    1880           frac(i, k) = min(max(frac(i,k),0.0), 1.0)
    1881           hp(i, k) = hnk(i) + (lv(i,k)+(cpd-cpv)*t(i,k)+frac(i,k)*lf(i,k))* &
    1882                               ep(i, k)*clw(i, k)
     1994          frac_s(i, k) = 1. - (t(i,k)-243.15)/(263.15-243.15)
     1995          frac_s(i, k) = min(max(frac_s(i,k),0.0), 1.0)
    18831996        END IF
    18841997      END DO
    18851998    END DO
    1886 ! Below cloud base, set ice fraction to cloud base value
    1887 !!    DO k = 1, nl
    1888 !!      DO i = 1, ncum
    1889 !!        IF (k<icb(i)) THEN
    1890 !!          frac(i,k) = frac(i,icb(i))
    1891 !!        END IF
    1892 !!      END DO
    1893 !!    END DO
     1999  ENDIF  ! (cvflag_prec_eject) ELSE
     2000    DO k = minorig + 1, nl
     2001      DO i = 1, ncum
     2002        IF ((k>=icb(i)) .AND. (k<=inb(i))) THEN
     2003!!          hp(i, k) = hnk(i) + (lv(i,k)+(cpd-cpv)*t(i,k)+frac_s(i,k)*lf(i,k))* &     !!jygprl
     2004!!                              ep(i, k)*clw(i, k)                                    !!jygprl
     2005          hp(i, k) = hla(i,k-1) + (lv(i,k)+(cpd-cpv)*t(i,k)+frac_s(i,k)*lf(i,k))* &   !!jygprl
     2006                              ep(i, k)*clw(i, k)                                      !!jygprl
     2007        END IF
     2008      END DO
     2009    END DO
    18942010!
    18952011  ELSE   ! (cvflag_ice)
     
    25762692SUBROUTINE cv3_unsat(nloc, ncum, nd, na, ntra, icb, inb, iflag, &
    25772693                     t, rr, rs, gz, u, v, tra, p, ph, &
    2578                      th, tv, lv, lf, cpn, ep, sigp, clw, &
     2694                     th, tv, lv, lf, cpn, ep, sigp, clw, frac_s, qpreca, frac_a, qta , &                       !!jygprl
    25792695                     m, ment, elij, delt, plcl, coef_clos, &
    25802696                     mp, rp, up, vp, trap, wt, water, evap, fondue, ice, &
    25812697                     faci, b, sigd, &
    2582                      wdtrainA, wdtrainM)                                      ! RomP
     2698                     wdtrainA, wdtrainS, wdtrainM)                                      ! RomP
    25832699  USE print_control_mod, ONLY: prt_level, lunout
    25842700  IMPLICIT NONE
     
    25982714  REAL, DIMENSION (nloc, na), INTENT (IN)            :: gz
    25992715  REAL, DIMENSION (nloc, nd), INTENT (IN)            :: u, v
    2600   REAL tra(nloc, nd, ntra)
    2601   REAL p(nloc, nd), ph(nloc, nd+1)
    2602   REAL, DIMENSION (nloc, na), INTENT (IN)            :: ep, sigp, clw
     2716  REAL, DIMENSION (nloc, nd, ntra), INTENT(IN)       :: tra
     2717  REAL, DIMENSION (nloc, nd), INTENT (IN)            :: p
     2718  REAL, DIMENSION (nloc, nd+1), INTENT (IN)          :: ph
     2719  REAL, DIMENSION (nloc, na), INTENT (IN)            :: ep, sigp, clw   !adiab ascent shedding
     2720  REAL, DIMENSION (nloc, na), INTENT (IN)            :: frac_s          !ice fraction in adiab ascent shedding !!jygprl
     2721  REAL, DIMENSION (nloc, na), INTENT (IN)            :: qpreca          !adiab ascent precip                   !!jygprl
     2722  REAL, DIMENSION (nloc, na), INTENT (IN)            :: frac_a          !ice fraction in adiab ascent precip   !!jygprl
     2723  REAL, DIMENSION (nloc, na), INTENT (IN)            :: qta             !adiab ascent specific total water     !!jygprl
    26032724  REAL, DIMENSION (nloc, na), INTENT (IN)            :: th, tv, lv, cpn
    26042725  REAL, DIMENSION (nloc, na), INTENT (IN)            :: lf
     
    26132734  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: mp, rp, up, vp
    26142735  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: water, evap, wt
    2615   REAL, DIMENSION (nloc, na), INTENT (OUT)           :: ice, fondue, faci
     2736  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: ice, fondue
     2737  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: faci            ! ice fraction in precipitation
    26162738  REAL, DIMENSION (nloc, na, ntra), INTENT (OUT)     :: trap
    26172739  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: b
     
    26212743! Distinction des wdtrain
    26222744! Pa = wdtrainA     Pm = wdtrainM
    2623   REAL, DIMENSION (nloc, na), INTENT (OUT)           :: wdtrainA, wdtrainM
     2745  REAL, DIMENSION (nloc, na), INTENT (OUT)           :: wdtrainA, wdtrainS, wdtrainM
    26242746
    26252747!local variables
    26262748  INTEGER i, j, k, il, num1, ndp1
     2749  REAL smallestreal
    26272750  REAL tinv, delti, coef
    26282751  REAL awat, afac, afac1, afac2, bfac
     
    26312754  REAL ampmax, thaw
    26322755  REAL tevap(nloc)
    2633   REAL lvcp(nloc, na), lfcp(nloc, na)
    2634   REAL h(nloc, na), hm(nloc, na)
    2635   REAL frac(nloc, na)
    2636   REAL fraci(nloc, na), prec(nloc, na)
     2756  REAL, DIMENSION (nloc, na)      :: lvcp, lfcp
     2757  REAL, DIMENSION (nloc, na)      :: h, hm
     2758  REAL, DIMENSION (nloc, na)      :: ma
     2759  REAL, DIMENSION (nloc, na)      :: frac          ! ice fraction in precipitation source
     2760  REAL, DIMENSION (nloc, na)      :: fraci         ! provisionnal ice fraction in precipitation
     2761  REAL, DIMENSION (nloc, na)      :: prec
    26372762  REAL wdtrain(nloc)
    26382763  LOGICAL lwork(nloc), mplus(nloc)
     
    26412766! ------------------------------------------------------
    26422767IF (prt_level .GE. 10) print *,' ->cv3_unsat, iflag(1) ', iflag(1)
     2768
     2769smallestreal=tiny(smallestreal)
    26432770
    26442771! =============================
     
    26602787!! RomP >>>
    26612788wdtrainA(:,:) = 0.
     2789wdtrainS(:,:) = 0.
    26622790wdtrainM(:,:) = 0.
    26632791!! RomP <<<
     
    27152843  END DO
    27162844
     2845!
     2846! Get adiabatic ascent mass flux
     2847!
     2848!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2849  IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN
     2850!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2851!!! Warning : this option leads to water conservation violation
     2852!!!           Expert only
     2853!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2854    DO il = 1, ncum
     2855      ma(il, nlp) = 0.
     2856      ma(il, 1)   = 0.
     2857    END DO
     2858
     2859  DO i = nl, 2, -1
     2860      DO il = 1, ncum
     2861        ma(il, i) = ma(il, i+1)*(1.-qta(il,i))/(1.-qta(il,i-1)) + m(il, i)
     2862      END DO
     2863  END DO
     2864!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2865  ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq)
     2866!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2867    DO il = 1, ncum
     2868      ma(il, nlp) = 0.
     2869      ma(il, 1)   = 0.
     2870    END DO
     2871
     2872  DO i = nl, 2, -1
     2873      DO il = 1, ncum
     2874        ma(il, i) = ma(il, i+1) + m(il, i)
     2875      END DO
     2876  END DO
     2877
     2878  ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE
     2879!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    27172880
    27182881! ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     
    27392902! ***              calculate detrained precipitation             ***
    27402903
    2741     DO il = 1, ncum
    2742       IF (i<=inb(il) .AND. lwork(il)) THEN
    2743         IF (cvflag_grav) THEN
    2744           wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)
    2745           wdtrainA(il, i) = wdtrain(il)/grav                        !   Pa   RomP
    2746         ELSE
    2747           wdtrain(il) = 10.0*ep(il, i)*m(il, i)*clw(il, i)
    2748           wdtrainA(il, i) = wdtrain(il)/10.                         !   Pa   RomP
    2749         END IF
    2750       END IF
    2751     END DO
     2904
     2905    DO il = 1, ncum                                                   
     2906      IF (i<=inb(il) .AND. lwork(il)) THEN                           
     2907        wdtrain(il) = grav*ep(il, i)*m(il, i)*clw(il, i)           
     2908        wdtrainS(il, i) = wdtrain(il)/grav                                            !   Ps   jyg
     2909!!        wdtrainA(il, i) = wdtrain(il)/grav                                          !   Ps   RomP
     2910      END IF                                                         
     2911    END DO                                                           
    27522912
    27532913    IF (i>1) THEN
     
    27572917            awat = elij(il, j, i) - (1.-ep(il,i))*clw(il, i)
    27582918            awat = max(awat, 0.0)
    2759             IF (cvflag_grav) THEN
    2760               wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
    2761               wdtrainM(il, i) = wdtrain(il)/grav - wdtrainA(il, i)  !   Pm  RomP
    2762             ELSE
    2763               wdtrain(il) = wdtrain(il) + 10.0*awat*ment(il, j, i)
    2764               wdtrainM(il, i) = wdtrain(il)/10. - wdtrainA(il, i)   !   Pm  RomP
    2765             END IF
     2919            wdtrain(il) = wdtrain(il) + grav*awat*ment(il, j, i)
     2920            wdtrainM(il, i) = wdtrain(il)/grav - wdtrainS(il, i)    !   Pm  jyg
     2921!!            wdtrainM(il, i) = wdtrain(il)/grav - wdtrainA(il, i)  !   Pm  RomP
    27662922          END IF
    27672923        END DO
     
    27692925    END IF
    27702926
     2927    IF (cvflag_prec_eject) THEN
     2928!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2929      IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN
     2930!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2931!!! Warning : this option leads to water conservation violation
     2932!!!           Expert only
     2933!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2934          IF ( i > 1) THEN
     2935            DO il = 1, ncum
     2936              IF (i<=inb(il) .AND. lwork(il)) THEN
     2937                wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))/(1. - qta(il, i-1))    !   Pa   jygprl
     2938                wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
     2939              END IF
     2940            END DO
     2941          ENDIF  ! ( i > 1)
     2942!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2943      ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq)
     2944!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2945          IF ( i > 1) THEN
     2946            DO il = 1, ncum
     2947              IF (i<=inb(il) .AND. lwork(il)) THEN
     2948                wdtrainA(il,i) = ma(il, i+1)*(qta(il, i-1)-qta(il,i))                        !   Pa   jygprl
     2949                wdtrain(il) = wdtrain(il) + grav*wdtrainA(il,i)
     2950              END IF
     2951            END DO
     2952          ENDIF  ! ( i > 1)
     2953
     2954      ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE
     2955!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     2956    ENDIF  ! (cvflag_prec_eject)
     2957
    27712958
    27722959! ***    find rain water and evaporation using provisional   ***
     
    27742961
    27752962
     2963    IF (cvflag_ice) THEN                                                                                !!jygprl
     2964      DO il = 1, ncum                                                                                   !!jygprl
     2965        IF (i<=inb(il) .AND. lwork(il)) THEN                                                            !!jygprl
     2966          frac(il, i) = (frac_a(il,i)*wdtrainA(il,i)+frac_s(il,i)*(wdtrainS(il,i)+wdtrainM(il,i))) / &  !!jygprl
     2967                        max(wdtrainA(il,i)+wdtrainS(il,i)+wdtrainM(il,i),smallestreal)                  !!jygprl
     2968          fraci(il, i) = frac(il, i)                                                                    !!jygprl
     2969        END IF                                                                                          !!jygprl
     2970      END DO                                                                                            !!jygprl
     2971    END IF                                                                                              !!jygprl
     2972
    27762973    DO il = 1, ncum
    27772974      IF (i<=inb(il) .AND. lwork(il)) THEN
     
    27792976        wt(il, i) = 45.0
    27802977
    2781         IF (cvflag_ice) THEN
    2782           frac(il, inb(il)) = 1. - (t(il,inb(il))-243.15)/(263.15-243.15)
    2783           frac(il, inb(il)) = min(max(frac(il,inb(il)),0.), 1.)
    2784           fraci(il, inb(il)) = frac(il, inb(il))
    2785         ELSE
    2786           CONTINUE
    2787         END IF
    27882978
    27892979        IF (i<inb(il)) THEN
     
    28022992          rp(il, i) = 0.5*(rp(il,i)+rr(il,i))
    28032993        END IF
    2804         fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
    2805         fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
     2994!!        fraci(il, i) = 1. - (t(il,i)-243.15)/(263.15-243.15)
     2995!!        fraci(il, i) = min(max(fraci(il,i),0.0), 1.0)
    28062996        rp(il, i) = max(rp(il,i), 0.0)
    28072997        rp(il, i) = amin1(rp(il,i), rs(il,i))
     
    32303420                     t, rr, t_wake, rr_wake, s_wake, u, v, tra, &
    32313421                     gz, p, ph, h, hp, lv, lf, cpn, th, th_wake, &
    3232                      ep, clw, m, tp, mp, rp, up, vp, trap, &
     3422                     ep, clw, qpreca, m, tp, mp, rp, up, vp, trap, &
    32333423                     wt, water, ice, evap, fondue, faci, b, sigd, &
    32343424                     ment, qent, hent, iflag_mix, uent, vent, &
     
    32403430!!                     tls, tps,                             ! useless . jyg
    32413431                     qcondc, wd, &
    3242                      ftd, fqd, qnk, qtc, sigt, tau_cld_cv, coefw_cld_cv)
     3432                     ftd, fqd, qta, qtc, sigt, tau_cld_cv, coefw_cld_cv)
    32433433
    32443434    USE print_control_mod, ONLY: lunout, prt_level
     
    32803470      REAL, DIMENSION (nloc, na, na, ntra), INTENT (IN)  :: traent
    32813471      REAL, DIMENSION (nloc, nd), INTENT (IN)            :: tv, tvp, wghti
    3282       REAL,INTENT(IN)                                    :: tau_cld_cv, coefw_cld_cv
     3472      REAL, DIMENSION (nloc, nd), INTENT (IN)            :: qta
     3473      REAL, DIMENSION (nloc, na),INTENT(IN)              :: qpreca
     3474      REAL, INTENT(IN)                                   :: tau_cld_cv, coefw_cld_cv
    32833475!
    32843476!input/output:
     
    33093501      REAL                                               :: ax, bx, cx, dx, ex
    33103502      REAL                                               :: cpinv, rdcp, dpinv
     3503      REAL                                               :: sigaq
    33113504      REAL, DIMENSION (nloc)                             ::  awat
    33123505      REAL, DIMENSION (nloc, nd)                         :: lvcp, lfcp              ! , mke ! unused . jyg
     
    33263519      REAL, DIMENSION (nloc)                             :: sument
    33273520      REAL, DIMENSION (nloc, nd)                         :: sigment, qtment             ! cld
    3328       REAL, DIMENSION (nloc)                             :: qnk
    33293521      REAL sumdq !jyg
    33303522!
     
    34373629  END DO
    34383630
     3631! - Adiabatic ascent mass flux "ma" and cloud base mass flux "cbmf"
     3632!-----------------------------------------------------------------
     3633!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3634  IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN
     3635!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3636!!! Warning : this option leads to water conservation violation
     3637!!!           Expert only
     3638!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3639  DO il = 1, ncum
     3640    ma(il, nlp) = 0.
     3641    ma(il, 1)   = 0.
     3642  END DO
     3643  DO k = nl, 2, -1
     3644    DO il = 1, ncum
     3645      ma(il, k) = ma(il, k+1)*(1.-qta(il, k))/(1.-qta(il, k-1)) + m(il, k)
     3646      cbmf(il) = max(cbmf(il), ma(il,k))
     3647    END DO
     3648  END DO
     3649  DO k = 2,nl
     3650    DO il = 1, ncum
     3651      IF (k <icb(il)) THEN
     3652        ma(il, k) = ma(il, k-1) + wghti(il,k-1)*cbmf(il)
     3653      ENDIF
     3654    END DO
     3655  END DO
     3656!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3657  ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq)
     3658!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3659!! Line kept for compatibility with earlier versions
    34393660  DO k = 2, nl
    34403661    DO il = 1, ncum
     
    34453666  END DO
    34463667
     3668  DO il = 1, ncum
     3669    ma(il, nlp) = 0.
     3670    ma(il, 1)   = 0.
     3671  END DO
     3672  DO k = nl, 2, -1
     3673    DO il = 1, ncum
     3674      ma(il, k) = ma(il, k+1) + m(il, k)
     3675    END DO
     3676  END DO
     3677  DO k = 2,nl
     3678    DO il = 1, ncum
     3679      IF (k <icb(il)) THEN
     3680        ma(il, k) = ma(il, k-1) + wghti(il,k-1)*cbmf(il)
     3681      ENDIF
     3682    END DO
     3683  END DO
     3684
     3685  ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE
     3686!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3687!
    34473688!    print*,'cv3_yield avant ft'
    34483689! am is the part of cbmf taken from the first level
     
    35813822!***    Compute convective mass fluxes upwd and dnwd      ***
    35823823
     3824!
     3825! =================================================
     3826!              upward fluxes                      |
     3827! ------------------------------------------------
     3828!
    35833829upwd(:,:) = 0.
    35843830up_to(:,:) = 0.
    35853831up_from(:,:) = 0.
    3586 dnwd(:,:) = 0.
    3587 dn_to(:,:) = 0.
    3588 dn_from(:,:) = 0.
    3589 !
    3590 ! =================================================
    3591 !              upward fluxes                      |
    3592 ! ------------------------------------------------
     3832!
     3833!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3834  IF (adiab_ascent_mass_flux_depends_on_ejectliq) THEN
     3835!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3836!! The decrease of the adiabatic ascent mass flux due to ejection of precipitation
     3837!! is taken into account.
     3838!! WARNING : in the present version, taking into account the mass-flux decrease due to
     3839!! precipitation ejection leads to water conservation violation.
     3840!
     3841! - Upward mass flux of mixed draughts
     3842!---------------------------------------
     3843DO i = 2, nl
     3844  DO j = 1, i-1
     3845    DO il = 1, ncum
     3846      IF (i<=inb(il)) THEN
     3847        up_to(il,i) = up_to(il,i) + ment(il,j,i)
     3848      ENDIF
     3849    ENDDO
     3850  ENDDO
     3851ENDDO
     3852!
     3853DO j = 3, nl
     3854  DO i = 2, j-1
     3855    DO il = 1, ncum
     3856      IF (j<=inb(il)) THEN
     3857        up_from(il,i) = up_from(il,i) + ment(il,i,j)
     3858      ENDIF
     3859    ENDDO
     3860  ENDDO
     3861ENDDO
     3862!
     3863! The difference between upwd(il,i) and upwd(il,i-1) is due to updrafts ending in layer
     3864!(i-1) (theses drafts cross interface (i-1) but not interface(i)) and to updrafts starting
     3865!from layer (i-1) (theses drafts cross interface (i) but not interface(i-1)):
     3866!
     3867DO i = 2, nlp
     3868  DO il = 1, ncum
     3869    IF (i<=inb(il)+1) THEN
     3870      upwd(il,i) = max(0., upwd(il,i-1) - up_to(il,i-1) + up_from(il,i-1))
     3871    ENDIF
     3872  ENDDO
     3873ENDDO
     3874!
     3875! - Total upward mass flux
     3876!---------------------------
     3877DO i = 2, nlp
     3878  DO il = 1, ncum
     3879    IF (i<=inb(il)+1) THEN
     3880      upwd(il,i) = upwd(il,i) + ma(il,i)
     3881    ENDIF
     3882  ENDDO
     3883ENDDO
     3884!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3885  ELSE ! (adiab_ascent_mass_flux_depends_on_ejectliq)
     3886!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3887!! The decrease of the adiabatic ascent mass flux due to ejection of precipitation
     3888!! is not taken into account.
     3889!
     3890! - Upward mass flux
     3891!-------------------
    35933892DO i = 2, nl
    35943893  DO il = 1, ncum
     
    36133912  ENDDO
    36143913ENDDO
    3615 !!DO i = 2, nl
    3616 !!  DO j = i+1, nl          !! Permuter les boucles i et j
     3914!
    36173915DO j = 3, nl
    36183916  DO i = 2, j-1
     
    36363934  ENDDO
    36373935ENDDO
     3936
     3937
     3938  ENDIF ! (adiab_ascent_mass_flux_depends_on_ejectliq) ELSE
     3939!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     3940
    36383941!
    36393942! =================================================
    36403943!              downward fluxes                    |
    36413944! ------------------------------------------------
     3945dnwd(:,:) = 0.
     3946dn_to(:,:) = 0.
     3947dn_from(:,:) = 0.
    36423948DO i = 1, nl
    36433949  DO j = i+1, nl
     
    36503956ENDDO
    36513957!
    3652 !!DO i = 2, nl
    3653 !!  DO j = 1, i-1          !! Permuter les boucles i et j
    36543958DO j = 1, nl
    36553959  DO i = j+1, nl
     
    44234727!!!!
    44244728!!!!      ENDDO
     4729
     4730!!  DO i = 1, nlp
     4731!!    DO il = 1, ncum
     4732!!      ma(il, i) = 0
     4733!!    END DO
     4734!!  END DO
     4735!!
     4736!!  DO i = 1, nl
     4737!!    DO j = i, nl
     4738!!      DO il = 1, ncum
     4739!!        ma(il, i) = ma(il, i) + m(il, j)
     4740!!      END DO
     4741!!    END DO
     4742!!  END DO
     4743
     4744!jyg<  (loops stop at nl)
     4745!!  DO i = nl + 1, nd
     4746!!    DO il = 1, ncum
     4747!!      ma(il, i) = 0.
     4748!!    END DO
     4749!!  END DO
     4750!>jyg
     4751
     4752!!  DO i = 1, nl
     4753!!    DO il = 1, ncum
     4754!!      IF (i<=(icb(il)-1)) THEN
     4755!!        ma(il, i) = 0
     4756!!      END IF
     4757!!    END DO
     4758!!  END DO
     4759
    44254760!-----------------------------------------------------------
    44264761        ENDIF !(.NOT.ok_optim_yield)                      !|
     
    44474782!>jyg
    44484783
    4449   DO i = 1, nlp
    4450     DO il = 1, ncum
    4451       ma(il, i) = 0
    4452     END DO
    4453   END DO
    4454 
    4455   DO i = 1, nl
    4456     DO j = i, nl
    4457       DO il = 1, ncum
    4458         ma(il, i) = ma(il, i) + m(il, j)
    4459       END DO
    4460     END DO
    4461   END DO
    4462 
    4463 !jyg<  (loops stop at nl)
    4464 !!  DO i = nl + 1, nd
    4465 !!    DO il = 1, ncum
    4466 !!      ma(il, i) = 0.
    4467 !!    END DO
    4468 !!  END DO
    4469 !>jyg
    4470 
    4471   DO i = 1, nl
    4472     DO il = 1, ncum
    4473       IF (i<=(icb(il)-1)) THEN
    4474         ma(il, i) = 0
    4475       END IF
    4476     END DO
    4477   END DO
    44784784
    44794785! cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     
    45624868! 14/01/15 AJ delta n'a rien à faire là...                                                 
    45634869    DO il = 1, ncum                                                  ! cld
    4564       IF (wa(il,i)>0.0 .AND. iflag(il)<=1) &                         ! cld
     4870!!      IF (wa(il,i)>0.0 .AND. iflag(il)<=1) &                         ! cld
     4871!!        siga(il, i) = mac(il, i)/(coefw_cld_cv*wa(il, i)) &          ! cld
     4872!!        *rrd*tvp(il, i)/p(il, i)/100.                                ! cld
     4873!!
     4874!!      siga(il, i) = min(siga(il,i), 1.0)                             ! cld
     4875      sigaq = 0.
     4876      IF (wa(il,i)>0.0 .AND. iflag(il)<=1)  THEN                     ! cld
    45654877        siga(il, i) = mac(il, i)/(coefw_cld_cv*wa(il, i)) &          ! cld
    4566         *rrd*tvp(il, i)/p(il, i)/100.                                ! cld
    4567 
    4568       siga(il, i) = min(siga(il,i), 1.0)                             ! cld
     4878                     *rrd*tvp(il, i)/p(il, i)/100.                   ! cld
     4879        siga(il, i) = min(siga(il,i), 1.0)                           ! cld
     4880        sigaq = siga(il,i)*qta(il,i-1)                               ! cld
     4881      ENDIF
    45694882
    45704883! IM cf. FH
     
    45784891        sigment(il,i)=sument(il)*tau_cld_cv/(ph(il,i)-ph(il,i+1))    ! cld
    45794892        sigment(il, i) = min(1.e-4+sigment(il,i), 1.0 - siga(il,i))  ! cld
    4580         qtc(il, i) = (siga(il,i)*qnk(il)+sigment(il,i)*qtment(il,i)) & ! cld
     4893!!        qtc(il, i) = (siga(il,i)*qta(il,i-1)+sigment(il,i)*qtment(il,i)) & ! cld
     4894        qtc(il, i) = (sigaq+sigment(il,i)*qtment(il,i)) & ! cld
    45814895                     /(siga(il,i)+sigment(il,i))                     ! cld
    45824896        sigt(il,i) = sigment(il, i) + siga(il, i)
    45834897
    4584 !        qtc(il, i) = siga(il,i)*qnk(il)+(1.-siga(il,i))*qtment(il,i) ! cld
     4898!        qtc(il, i) = siga(il,i)*qta(il,i-1)+(1.-siga(il,i))*qtment(il,i) ! cld
    45854899!     print*,'BIGAUSSIAN CONV',siga(il,i),sigment(il,i),qtc(il,i) 
    45864900               
     
    48715185      do k=1,nl
    48725186        do i=1,ncum
    4873           hp(i,k)=h(i,k)
    4874         enddo
     5187          hp(i,k)=h(i,k)
     5188        enddo
    48755189      enddo
    48765190
Note: See TracChangeset for help on using the changeset viewer.