Skip to content
Snippets Groups Projects
Commit b1268737 authored by RIETTE Sébastien's avatar RIETTE Sébastien
Browse files

Sébastien 24/11/2021 Merge AROME->COMMON fast_rg

parent 63951894
No related branches found
No related tags found
No related merge requests found
!MNH_LIC Copyright 1994-2020 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1. !MNH_LIC for details. version 1.
...@@ -28,16 +28,23 @@ SUBROUTINE ICE4_FAST_RG(KPROMA,KSIZE, LDSOFT, PCOMPUTE, KRR, & ...@@ -28,16 +28,23 @@ SUBROUTINE ICE4_FAST_RG(KPROMA,KSIZE, LDSOFT, PCOMPUTE, KRR, &
!! MODIFICATIONS !! MODIFICATIONS
!! ------------- !! -------------
!! !!
! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
! P. Wautelet 29/05/2019: remove PACK/UNPACK intrinsics (to get more performance and better OpenACC support)
!! R. El Khatib 24-Aug-2021 Optimizations !! R. El Khatib 24-Aug-2021 Optimizations
! !
! !
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE MODD_CST USE MODD_CST, ONLY: XALPI, XALPW, XBETAI, XBETAW, XGAMW, XCI, XCL, XCPV, XESTT, XGAMI, &
USE MODD_RAIN_ICE_PARAM & XLMTT, XLVTT, XMD, XMV, XRV, XTT, XEPSILO
USE MODD_RAIN_ICE_DESCR USE MODD_PARAM_ICE, ONLY: LCRFLIMIT, LEVLIMIT, LNULLWETG, LWETGPOST
USE MODD_PARAM_ICE, ONLY : LEVLIMIT, LNULLWETG, LWETGPOST, LCRFLIMIT USE MODD_RAIN_ICE_DESCR, ONLY: XBS, XCEXVT, XCXG, XCXS, XDG, XRTMIN
USE MODD_RAIN_ICE_PARAM, ONLY: NDRYLBDAG, NDRYLBDAR, NDRYLBDAS, X0DEPG, X1DEPG, XCOLEXIG, XCOLEXSG, XCOLIG, &
& XCOLSG, XDRYINTP1G, XDRYINTP1R, XDRYINTP1S, XDRYINTP2G, XDRYINTP2R, XDRYINTP2S, &
& XEX0DEPG, XEX1DEPG, XEXICFRR, XEXRCFRI, XFCDRYG, XFIDRYG, XFRDRYG, &
& XFSDRYG, XICFRR, XKER_RDRYG, XKER_SDRYG, XLBRDRYG1, XLBRDRYG2, XLBRDRYG3, &
& XLBSDRYG1, XLBSDRYG2, XLBSDRYG3, XRCFRI
USE PARKIND1, ONLY : JPRB USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK USE YOMHOOK , ONLY : LHOOK, DR_HOOK
! !
...@@ -73,16 +80,16 @@ REAL, DIMENSION(KSIZE), INTENT(OUT) :: PWETG ! 1. where graupel grows ...@@ -73,16 +80,16 @@ REAL, DIMENSION(KSIZE), INTENT(OUT) :: PWETG ! 1. where graupel grows
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRICFRRG ! Rain contact freezing REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRICFRRG ! Rain contact freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRRCFRIG ! Rain contact freezing REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRRCFRIG ! Rain contact freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRICFRR ! Rain contact freezing REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRICFRR ! Rain contact freezing
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRCWETG ! Graupel wet growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRCWETG ! Graupel wet growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRIWETG ! Graupel wet growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRIWETG ! Graupel wet growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRRWETG ! Graupel wet growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRRWETG ! Graupel wet growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRSWETG ! Graupel wet growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRSWETG ! Graupel wet growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRCDRYG ! Graupel dry growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRCDRYG ! Graupel dry growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRIDRYG ! Graupel dry growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRIDRYG ! Graupel dry growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRRDRYG ! Graupel dry growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRRDRYG ! Graupel dry growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRSDRYG ! Graupel dry growth REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRSDRYG ! Graupel dry growth
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRWETGH ! Conversion of graupel into hail REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRWETGH ! Conversion of graupel into hail
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRWETGH_MR ! Conversion of graupel into hail, mr change REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRWETGH_MR ! Conversion of graupel into hail, mr change
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRGMLTR ! Melting of the graupel REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRGMLTR ! Melting of the graupel
REAL, DIMENSION(KPROMA, 8), INTENT(INOUT) :: PRG_TEND ! Individual tendencies REAL, DIMENSION(KPROMA, 8), INTENT(INOUT) :: PRG_TEND ! Individual tendencies
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_TH REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_TH
...@@ -97,7 +104,10 @@ REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RH ...@@ -97,7 +104,10 @@ REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RH
! !
!* 0.2 declaration of local variables !* 0.2 declaration of local variables
! !
INTEGER, PARAMETER :: IRCDRYG=1, IRIDRYG=2, IRIWETG=3, IRSDRYG=4, IRSWETG=5, IRRDRYG=6, &
& IFREEZ1=7, IFREEZ2=8
LOGICAL, DIMENSION(KSIZE) :: GDRY LOGICAL, DIMENSION(KSIZE) :: GDRY
INTEGER, DIMENSION(KSIZE) :: I1
REAL, DIMENSION(KSIZE) :: ZDRY, ZDRYG, ZMASK REAL, DIMENSION(KSIZE) :: ZDRY, ZDRYG, ZMASK
INTEGER :: IGDRY INTEGER :: IGDRY
REAL, DIMENSION(KSIZE) :: ZVEC1, ZVEC2, ZVEC3 REAL, DIMENSION(KSIZE) :: ZVEC1, ZVEC2, ZVEC3
...@@ -106,14 +116,6 @@ REAL, DIMENSION(KSIZE) :: ZZW, & ...@@ -106,14 +116,6 @@ REAL, DIMENSION(KSIZE) :: ZZW, &
ZRDRYG_INIT, & !Initial dry growth rate of the graupeln ZRDRYG_INIT, & !Initial dry growth rate of the graupeln
ZRWETG_INIT !Initial wet growth rate of the graupeln ZRWETG_INIT !Initial wet growth rate of the graupeln
INTEGER :: JJ, JL INTEGER :: JJ, JL
INTEGER, PARAMETER :: IRCDRYG=1
INTEGER, PARAMETER :: IRIDRYG=2
INTEGER, PARAMETER :: IRIWETG=3
INTEGER, PARAMETER :: IRSDRYG=4
INTEGER, PARAMETER :: IRSWETG=5
INTEGER, PARAMETER :: IRRDRYG=6
INTEGER, PARAMETER :: IFREEZ1=7
INTEGER, PARAMETER :: IFREEZ2=8
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
...@@ -209,10 +211,18 @@ ELSE ...@@ -209,10 +211,18 @@ ELSE
ENDIF ENDIF
! Wet and dry collection of rs on graupel (6.2.1) ! Wet and dry collection of rs on graupel (6.2.1)
DO JL=1, KSIZE IGDRY = 0
ZDRY(JL)=MAX(0., -SIGN(1., XRTMIN(5)-PRST(JL))) * & ! WHERE(PRST(:)>XRTMIN(5)) DO JJ = 1, KSIZE
&MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JL))) * & ! WHERE(PRGT(:)>XRTMIN(6)) ZDRY(JJ)=MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & ! WHERE(PRST(:)>XRTMIN(5))
&PCOMPUTE(JL) &MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JJ))) * & ! WHERE(PRGT(:)>XRTMIN(6))
&PCOMPUTE(JJ)
IF (ZDRY(JJ)>0) THEN
IGDRY = IGDRY + 1
I1(IGDRY) = JJ
GDRY(JJ) = .TRUE.
ELSE
GDRY(JJ) = .FALSE.
END IF
ENDDO ENDDO
IF(LDSOFT) THEN IF(LDSOFT) THEN
DO JL=1, KSIZE DO JL=1, KSIZE
...@@ -222,28 +232,28 @@ IF(LDSOFT) THEN ...@@ -222,28 +232,28 @@ IF(LDSOFT) THEN
ELSE ELSE
PRG_TEND(:, IRSDRYG)=0. PRG_TEND(:, IRSDRYG)=0.
PRG_TEND(:, IRSWETG)=0. PRG_TEND(:, IRSWETG)=0.
GDRY(:)=ZDRY(:)==1.
IGDRY=COUNT(GDRY(:))
IF(IGDRY>0)THEN IF(IGDRY>0)THEN
! !
!* 6.2.3 select the (PLBDAG,PLBDAS) couplet !* 6.2.3 select the (PLBDAG,PLBDAS) couplet
! !
ZVEC1(1:IGDRY)=PACK(PLBDAG(:), MASK=GDRY(:)) DO JJ = 1, IGDRY
ZVEC2(1:IGDRY)=PACK(PLBDAS(:), MASK=GDRY(:)) ZVEC1(JJ) = PLBDAG(I1(JJ))
ZVEC2(JJ) = PLBDAS(I1(JJ))
END DO
! !
!* 6.2.4 find the next lower indice for the PLBDAG and for the PLBDAS !* 6.2.4 find the next lower indice for the PLBDAG and for the PLBDAS
! in the geometrical set of (Lbda_g,Lbda_s) couplet use to ! in the geometrical set of (Lbda_g,Lbda_s) couplet use to
! tabulate the SDRYG-kernel ! tabulate the SDRYG-kernel
! !
ZVEC1(1:IGDRY)=MAX(1.00001, MIN(FLOAT(NDRYLBDAG)-0.00001, & ZVEC1(1:IGDRY)=MAX(1.00001, MIN(REAL(NDRYLBDAG)-0.00001, &
XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY) ) IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY) )
ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY)) ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY))
! !
ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAS)-0.00001, & ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAS)-0.00001, &
XDRYINTP1S*LOG(ZVEC2(1:IGDRY))+XDRYINTP2S)) XDRYINTP1S*LOG(ZVEC2(1:IGDRY))+XDRYINTP2S))
IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY)) IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY))
ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY)) ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY))
! !
!* 6.2.5 perform the bilinear interpolation of the normalized !* 6.2.5 perform the bilinear interpolation of the normalized
! SDRYG-kernel ! SDRYG-kernel
...@@ -256,7 +266,10 @@ ELSE ...@@ -256,7 +266,10 @@ ELSE
- XKER_SDRYG(IVEC1(JJ) ,IVEC2(JJ) )*(ZVEC2(JJ) - 1.0) ) & - XKER_SDRYG(IVEC1(JJ) ,IVEC2(JJ) )*(ZVEC2(JJ) - 1.0) ) &
*(ZVEC1(JJ) - 1.0) *(ZVEC1(JJ) - 1.0)
END DO END DO
ZZW(:)=UNPACK(VECTOR=ZVEC3(1:IGDRY), MASK=GDRY(:), FIELD=0.0) ZZW(:) = 0.
DO JJ = 1, IGDRY
ZZW(I1(JJ)) = ZVEC3(JJ)
END DO
! !
WHERE(GDRY(1:KSIZE)) WHERE(GDRY(1:KSIZE))
PRG_TEND(1:KSIZE, IRSWETG)=XFSDRYG*ZZW(1:KSIZE) & ! RSDRYG PRG_TEND(1:KSIZE, IRSWETG)=XFSDRYG*ZZW(1:KSIZE) & ! RSDRYG
...@@ -273,40 +286,48 @@ ENDIF ...@@ -273,40 +286,48 @@ ENDIF
! !
!* 6.2.6 accretion of raindrops on the graupeln !* 6.2.6 accretion of raindrops on the graupeln
! !
DO JL=1, KSIZE IGDRY = 0
ZDRY(JL)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JL))) * & ! WHERE(PRRT(:)>XRTMIN(3)) DO JJ = 1, KSIZE
&MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JL))) * & ! WHERE(PRGT(:)>XRTMIN(6)) ZDRY(JJ)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JJ))) * & ! WHERE(PRRT(:)>XRTMIN(3))
&PCOMPUTE(JL) &MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JJ))) * & ! WHERE(PRGT(:)>XRTMIN(6))
&PCOMPUTE(JJ)
IF (ZDRY(JJ)>0) THEN
IGDRY = IGDRY + 1
I1(IGDRY) = JJ
GDRY(JJ) = .TRUE.
ELSE
GDRY(JJ) = .FALSE.
ENDIF
ENDDO ENDDO
IF(LDSOFT) THEN IF(LDSOFT) THEN
DO JL=1, KSIZE DO JL=1, KSIZE
PRG_TEND(JL, IRRDRYG)=ZDRY(JL) * PRG_TEND(JL, IRRDRYG) PRG_TEND(JL, IRRDRYG)=ZDRY(JL) * PRG_TEND(JL, IRRDRYG)
ENDDO ENDDO
ELSE ELSE
GDRY(:)=ZDRY(:)==1.
PRG_TEND(:, IRRDRYG)=0. PRG_TEND(:, IRRDRYG)=0.
IGDRY=COUNT(GDRY(:))
! !
IF(IGDRY>0) THEN IF(IGDRY>0) THEN
! !
!* 6.2.8 select the (PLBDAG,PLBDAR) couplet !* 6.2.8 select the (PLBDAG,PLBDAR) couplet
! !
ZVEC1(1:IGDRY)=PACK(PLBDAG(:), MASK=GDRY(:)) DO JJ = 1, IGDRY
ZVEC2(1:IGDRY)=PACK(PLBDAR(:), MASK=GDRY(:)) ZVEC1(JJ) = PLBDAG(I1(JJ))
ZVEC2(JJ) = PLBDAR(I1(JJ))
ENDDO
! !
!* 6.2.9 find the next lower indice for the PLBDAG and for the PLBDAR !* 6.2.9 find the next lower indice for the PLBDAG and for the PLBDAR
! in the geometrical set of (Lbda_g,Lbda_r) couplet use to ! in the geometrical set of (Lbda_g,Lbda_r) couplet use to
! tabulate the RDRYG-kernel ! tabulate the RDRYG-kernel
! !
ZVEC1(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAG)-0.00001, & ZVEC1(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAG)-0.00001, &
XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G)) XDRYINTP1G*LOG(ZVEC1(1:IGDRY))+XDRYINTP2G))
IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY)) IVEC1(1:IGDRY)=INT(ZVEC1(1:IGDRY))
ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-FLOAT(IVEC1(1:IGDRY)) ZVEC1(1:IGDRY)=ZVEC1(1:IGDRY)-REAL(IVEC1(1:IGDRY))
! !
ZVEC2(1:IGDRY)=MAX(1.00001, MIN( FLOAT(NDRYLBDAR)-0.00001, & ZVEC2(1:IGDRY)=MAX(1.00001, MIN( REAL(NDRYLBDAR)-0.00001, &
XDRYINTP1R*LOG(ZVEC2(1:IGDRY))+XDRYINTP2R)) XDRYINTP1R*LOG(ZVEC2(1:IGDRY))+XDRYINTP2R))
IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY)) IVEC2(1:IGDRY)=INT(ZVEC2(1:IGDRY))
ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-FLOAT(IVEC2(1:IGDRY)) ZVEC2(1:IGDRY)=ZVEC2(1:IGDRY)-REAL(IVEC2(1:IGDRY))
! !
!* 6.2.10 perform the bilinear interpolation of the normalized !* 6.2.10 perform the bilinear interpolation of the normalized
! RDRYG-kernel ! RDRYG-kernel
...@@ -319,7 +340,10 @@ ELSE ...@@ -319,7 +340,10 @@ ELSE
- XKER_RDRYG(IVEC1(JJ) ,IVEC2(JJ) )*(ZVEC2(JJ) - 1.0) ) & - XKER_RDRYG(IVEC1(JJ) ,IVEC2(JJ) )*(ZVEC2(JJ) - 1.0) ) &
*(ZVEC1(JJ) - 1.0) *(ZVEC1(JJ) - 1.0)
END DO END DO
ZZW(:)=UNPACK(VECTOR=ZVEC3(1:IGDRY), MASK=GDRY, FIELD=0.) ZZW(:) = 0.
DO JJ = 1, IGDRY
ZZW(I1(JJ)) = ZVEC3(JJ)
END DO
! !
WHERE(GDRY(1:KSIZE)) WHERE(GDRY(1:KSIZE))
PRG_TEND(1:KSIZE, IRRDRYG) = XFRDRYG*ZZW(1:KSIZE) & ! RRDRYG PRG_TEND(1:KSIZE, IRRDRYG) = XFRDRYG*ZZW(1:KSIZE) & ! RRDRYG
...@@ -399,7 +423,11 @@ ENDIF ...@@ -399,7 +423,11 @@ ENDIF
DO JL=1, KSIZE DO JL=1, KSIZE
ZDRYG(JL) = ZMASK(JL) * & ! ZDRYG(JL) = ZMASK(JL) * & !
& MAX(0., -SIGN(1., PT(JL)-XTT)) * & ! WHERE(PT(:)<XTT) & MAX(0., -SIGN(1., PT(JL)-XTT)) * & ! WHERE(PT(:)<XTT)
#ifdef REPRO48
& MAX(0., -SIGN(1., -ZRDRYG_INIT(JL))) * & ! WHERE(ZRDRYG_INIT(:)>0.) & MAX(0., -SIGN(1., -ZRDRYG_INIT(JL))) * & ! WHERE(ZRDRYG_INIT(:)>0.)
#else
& MAX(0., -SIGN(1., 1.E-20-ZRDRYG_INIT(JL))) * & ! WHERE(ZRDRYG_INIT(:)>0.)
#endif
& MAX(0., -SIGN(1., MAX(0., ZRDRYG_INIT(JL)-PRG_TEND(JL, IRIDRYG)-PRG_TEND(JL, IRSDRYG)) - & & MAX(0., -SIGN(1., MAX(0., ZRDRYG_INIT(JL)-PRG_TEND(JL, IRIDRYG)-PRG_TEND(JL, IRSDRYG)) - &
&MAX(0., ZRWETG_INIT(JL)-PRG_TEND(JL, IRIWETG)-PRG_TEND(JL, IRSWETG)))) &MAX(0., ZRWETG_INIT(JL)-PRG_TEND(JL, IRIWETG)-PRG_TEND(JL, IRSWETG))))
ENDDO ENDDO
......
...@@ -71,7 +71,11 @@ IF (LHOOK) CALL DR_HOOK('ICE4_FAST_RI',0,ZHOOK_HANDLE) ...@@ -71,7 +71,11 @@ IF (LHOOK) CALL DR_HOOK('ICE4_FAST_RI',0,ZHOOK_HANDLE)
! !
DO JL=1, KSIZE DO JL=1, KSIZE
LMASK = PSSI(JL)>0. .AND. PRCT(JL)>XRTMIN(2) .AND. & LMASK = PSSI(JL)>0. .AND. PRCT(JL)>XRTMIN(2) .AND. &
#ifdef REPRO48
& PRIT(JL)>XRTMIN(4) .AND. PCIT(JL)>0. .AND. & & PRIT(JL)>XRTMIN(4) .AND. PCIT(JL)>0. .AND. &
#else
& PRIT(JL)>XRTMIN(4) .AND. PCIT(JL)>1.E-20 .AND. &
#endif
& PCOMPUTE(JL)==1 & PCOMPUTE(JL)==1
IF(LMASK) THEN IF(LMASK) THEN
IF(.NOT. LDSOFT) THEN IF(.NOT. LDSOFT) THEN
......
...@@ -272,7 +272,7 @@ ENDDO ...@@ -272,7 +272,7 @@ ENDDO
!* 5.2 rain accretion onto the aggregates !* 5.2 rain accretion onto the aggregates
! !
IGACC = 0 IGACC = 0
DO JJ = 1, SIZE(GACC) DO JJ = 1, KSIZE
ZACC(JJ)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JJ))) * & !WHERE(PRRT(:)>XRTMIN(3)) ZACC(JJ)=MAX(0., -SIGN(1., XRTMIN(3)-PRRT(JJ))) * & !WHERE(PRRT(:)>XRTMIN(3))
&MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & !WHERE(PRST(:)>XRTMIN(5)) &MAX(0., -SIGN(1., XRTMIN(5)-PRST(JJ))) * & !WHERE(PRST(:)>XRTMIN(5))
&PCOMPUTE(JJ) &PCOMPUTE(JJ)
......
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment