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

Sébastien 25/11/2021 Merge MNH->COMMON ice4_rainfr_vert

parent bf9d8ecd
No related branches found
No related tags found
No related merge requests found
...@@ -36,3 +36,5 @@ phyex/micro/modi_ice4_fast_rs.F90 ...@@ -36,3 +36,5 @@ phyex/micro/modi_ice4_fast_rs.F90
phyex/micro/modi_ice4_slow.F90 phyex/micro/modi_ice4_slow.F90
phyex/micro/ice4_tendencies.F90 phyex/micro/ice4_tendencies.F90
phyex/micro/modi_ice4_tendencies.F90 phyex/micro/modi_ice4_tendencies.F90
phyex/micro/modi_ice4_rainfr_vert.F90
phyex/micro/ice4_rainfr_vert.F90
SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR)
!!
!!** PURPOSE
!! -------
!! Computes the rain fraction
!!
!! AUTHOR
!! ------
!! S. Riette from the plitting of rain_ice source code (nov. 2014)
!!
!! MODIFICATIONS
!! -------------
!!
!
!
!* 0. DECLARATIONS
! ------------
!
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
INTEGER, INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL
REAL, DIMENSION(KIT,KJT,KKT), INTENT(OUT) :: PPRFR !Precipitation fraction
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRR !Rain field
!
!* 0.2 declaration of local variables
!
REAL(KIND=JPRB) :: ZHOOK_HANDLE
INTEGER :: JI, JJ, JK
!
!-------------------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('ICE4_RAINFR_VERT',0,ZHOOK_HANDLE)
!
!-------------------------------------------------------------------------------
DO JI = KIB,KIE
DO JJ = KJB, KJE
PPRFR(JI,JJ,KKE)=0.
DO JK=KKE-KKL, KKB, -KKL
IF (PRR(JI,JJ,JK) .GT. XRTMIN(3)) THEN
PPRFR(JI,JJ,JK)=MAX(PPRFR(JI,JJ,JK),PPRFR(JI,JJ,JK+KKL))
IF (PPRFR(JI,JJ,JK)==0) THEN
PPRFR(JI,JJ,JK)=1.
END IF
ELSE
PPRFR(JI,JJ,JK)=0.
END IF
END DO
END DO
END DO
!
IF (LHOOK) CALL DR_HOOK('ICE4_RAINFR_VERT',1,ZHOOK_HANDLE)
!
END SUBROUTINE ICE4_RAINFR_VERT
SUBROUTINE ICE4_SLOW(KSIZE, LDSOFT, PCOMPUTE, PRHODREF, PT, &
&PSSI, PLVFACT, PLSFACT, &
&PRVT, PRCT, PRIT, PRST, PRGT, &
&PLBDAS, PLBDAG, &
&PAI, PCJ, &
&PRCHONI, PRVDEPS, PRIAGGS, PRIAUTS, PRVDEPG, &
&PA_TH, PA_RV, PA_RC, PA_RI, PA_RS, PA_RG)
!!
!!** PURPOSE
!! -------
!! Computes the slow process
!!
!! AUTHOR
!! ------
!! S. Riette from the splitting of rain_ice source code (nov. 2014)
!!
!! MODIFICATIONS
!! -------------
!!
!
!
!* 0. DECLARATIONS
! ------------
!
USE MODD_CST
USE MODD_RAIN_ICE_PARAM
USE MODD_RAIN_ICE_DESCR
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
INTEGER, INTENT(IN) :: KSIZE
LOGICAL, INTENT(IN) :: LDSOFT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCOMPUTE
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRHODREF ! Reference density
REAL, DIMENSION(KSIZE), INTENT(IN) :: PT ! Temperature
REAL, DIMENSION(KSIZE), INTENT(IN) :: PSSI ! Supersaturation over ice
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLVFACT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLSFACT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRVT
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRCT ! Cloud water m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRIT ! Pristine ice m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRST ! Snow/aggregate m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PRGT ! Graupel/hail m.r. at t
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLBDAS ! Slope parameter of the aggregate distribution
REAL, DIMENSION(KSIZE), INTENT(IN) :: PLBDAG ! Slope parameter of the graupel distribution
REAL, DIMENSION(KSIZE), INTENT(IN) :: PAI ! Thermodynamical function
REAL, DIMENSION(KSIZE), INTENT(IN) :: PCJ ! Function to compute the ventilation coefficient
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRCHONI ! Homogeneous nucleation
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRVDEPS ! Deposition on r_s
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRIAGGS ! Aggregation on r_s
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRIAUTS ! Autoconversion of r_i for r_s production
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PRVDEPG ! Deposition on r_g
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_TH
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_RV
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_RC
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_RI
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_RS
REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PA_RG
!
!* 0.2 declaration of local variables
!
REAL, DIMENSION(KSIZE) :: ZCRIAUTI
REAL :: ZTIMAUTIC
REAL(KIND=JPRB) :: ZHOOK_HANDLE
REAL, DIMENSION(KSIZE) :: ZMASK
INTEGER :: JL
!-------------------------------------------------------------------------------
!
IF (LHOOK) CALL DR_HOOK('ICE4_SLOW', 0, ZHOOK_HANDLE)
!
!-------------------------------------------------------------------------------
!
!
!* 3.2 compute the homogeneous nucleation source: RCHONI
!
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., PT(JL)-(XTT-35.0))) * & ! PT(:)<XTT-35.0
&MAX(0., -SIGN(1., XRTMIN(2)-PRCT(JL))) * & ! PRCT(:)>XRTMIN(2)
&PCOMPUTE(JL)
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
PRCHONI(JL) = PRCHONI(JL) * ZMASK(JL)
ENDDO
ELSE
PRCHONI(:) = 0.
WHERE(ZMASK(:)==1.)
PRCHONI(:) = XHON*PRHODREF(:)*PRCT(:) &
*EXP( XALPHA3*(PT(:)-XTT)-XBETA3 )
ENDWHERE
ENDIF
DO JL=1, KSIZE
PA_RI(JL) = PA_RI(JL) + PRCHONI(JL)
PA_RC(JL) = PA_RC(JL) - PRCHONI(JL)
PA_TH(JL) = PA_TH(JL) + PRCHONI(JL)*(PLSFACT(JL)-PLVFACT(JL))
ENDDO
!
!* 3.4 compute the deposition, aggregation and autoconversion sources
!
!
!* 3.4.2 compute the riming-conversion of r_c for r_i production: RCAUTI
!
! ZZW(:) = 0.0
! ZTIMAUTIC = SQRT( XTIMAUTI*XTIMAUTC )
! WHERE ( (PRCT(:)>0.0) .AND. (PRIT(:)>0.0) .AND. (PRCS(:)>0.0) )
! ZZW(:) = MIN( PRCS(:),ZTIMAUTIC * MAX( SQRT( PRIT(:)*PRCT(:) ),0.0 ) )
! PRIS(:) = PRIS(:) + ZZW(:)
! PRCS(:) = PRCS(:) - ZZW(:)
! PTHS(:) = PTHS(:) + ZZW(:)*(PLSFACT(:)-PLVFACT(:)) ! f(L_f*(RCAUTI))
! END WHERE
!
!* 3.4.3 compute the deposition on r_s: RVDEPS
!
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(1)-PRVT(JL))) * & !PRVT(:)>XRTMIN(1)
&MAX(0., -SIGN(1., XRTMIN(5)-PRST(JL))) * & !PRST(:)>XRTMIN(5)
&PCOMPUTE(JL)
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
PRVDEPS(JL)=PRVDEPS(JL)*ZMASK(JL)
ENDDO
ELSE
PRVDEPS(:) = 0.
WHERE(ZMASK(:)==1.)
PRVDEPS(:) = ( PSSI(:)/(PRHODREF(:)*PAI(:)) ) * &
( X0DEPS*PLBDAS(:)**XEX0DEPS + X1DEPS*PCJ(:)*PLBDAS(:)**XEX1DEPS )
END WHERE
ENDIF
DO JL=1, KSIZE
PA_RS(JL) = PA_RS(JL) + PRVDEPS(JL)
PA_RV(JL) = PA_RV(JL) - PRVDEPS(JL)
PA_TH(JL) = PA_TH(JL) + PRVDEPS(JL)*PLSFACT(JL)
ENDDO
!
!* 3.4.4 compute the aggregation on r_s: RIAGGS
!
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PRIT(JL))) * & ! PRIT(:)>XRTMIN(4)
&MAX(0., -SIGN(1., XRTMIN(5)-PRST(JL))) * & ! PRST(:)>XRTMIN(5)
&PCOMPUTE(JL)
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
PRIAGGS(JL)=PRIAGGS(JL) * ZMASK(JL)
ENDDO
ELSE
PRIAGGS(:) = 0.
WHERE(ZMASK(:)==1)
PRIAGGS(:) = XFIAGGS * EXP( XCOLEXIS*(PT(:)-XTT) ) &
* PRIT(:) &
* PLBDAS(:)**XEXIAGGS &
* PRHODREF(:)**(-XCEXVT)
END WHERE
ENDIF
DO JL=1, KSIZE
PA_RS(JL) = PA_RS(JL) + PRIAGGS(JL)
PA_RI(JL) = PA_RI(JL) - PRIAGGS(JL)
ENDDO
!
!* 3.4.5 compute the autoconversion of r_i for r_s production: RIAUTS
!
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(4)-PRIT(JL))) * & ! PRIT(:)>XRTMIN(4)
&PCOMPUTE(JL)
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
PRIAUTS(JL) = PRIAUTS(JL) * ZMASK(JL)
ENDDO
ELSE
PRIAUTS(:) = 0.
!ZCRIAUTI(:)=MIN(XCRIAUTI,10**(0.06*(PT(:)-XTT)-3.5))
ZCRIAUTI(:)=MIN(XCRIAUTI,10**(XACRIAUTI*(PT(:)-XTT)+XBCRIAUTI))
WHERE(ZMASK(:)==1.)
PRIAUTS(:) = XTIMAUTI * EXP( XTEXAUTI*(PT(:)-XTT) ) &
* MAX( PRIT(:)-ZCRIAUTI(:),0.0 )
END WHERE
ENDIF
DO JL=1, KSIZE
PA_RS(JL) = PA_RS(JL) + PRIAUTS(JL)
PA_RI(JL) = PA_RI(JL) - PRIAUTS(JL)
ENDDO
!
!* 3.4.6 compute the deposition on r_g: RVDEPG
!
!
DO JL=1, KSIZE
ZMASK(JL)=MAX(0., -SIGN(1., XRTMIN(1)-PRVT(JL))) * & ! PRVT(:)>XRTMIN(1)
&MAX(0., -SIGN(1., XRTMIN(6)-PRGT(JL))) * & ! PRGT(:)>XRTMIN(6)
&PCOMPUTE(JL)
ENDDO
IF(LDSOFT) THEN
DO JL=1, KSIZE
PRVDEPG(JL) = PRVDEPG(JL) * ZMASK(JL)
ENDDO
ELSE
PRVDEPG(:) = 0.
WHERE(ZMASK(:)==1.)
PRVDEPG(:) = ( PSSI(:)/(PRHODREF(:)*PAI(:)) ) * &
( X0DEPG*PLBDAG(:)**XEX0DEPG + X1DEPG*PCJ(:)*PLBDAG(:)**XEX1DEPG )
END WHERE
ENDIF
DO JL=1, KSIZE
PA_RG(JL) = PA_RG(JL) + PRVDEPG(JL)
PA_RV(JL) = PA_RV(JL) - PRVDEPG(JL)
PA_TH(JL) = PA_TH(JL) + PRVDEPG(JL)*PLSFACT(JL)
ENDDO
!
IF (LHOOK) CALL DR_HOOK('ICE4_SLOW', 1, ZHOOK_HANDLE)
!
END SUBROUTINE ICE4_SLOW
...@@ -46,7 +46,7 @@ USE MODI_ICE4_RRHONG ...@@ -46,7 +46,7 @@ USE MODI_ICE4_RRHONG
USE MODI_ICE4_RIMLTC USE MODI_ICE4_RIMLTC
USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD USE MODE_ICE4_RSRIMCG_OLD, ONLY: ICE4_RSRIMCG_OLD
USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF USE MODE_ICE4_COMPUTE_PDF, ONLY: ICE4_COMPUTE_PDF
USE MODI_ICE4_RAINFR_VERT USE MODE_ICE4_RAINFR_VERT, ONLY: ICE4_RAINFR_VERT
USE MODE_ICE4_SLOW, ONLY: ICE4_SLOW USE MODE_ICE4_SLOW, ONLY: ICE4_SLOW
USE MODE_ICE4_WARM, ONLY: ICE4_WARM USE MODE_ICE4_WARM, ONLY: ICE4_WARM
USE MODE_ICE4_FAST_RS, ONLY: ICE4_FAST_RS USE MODE_ICE4_FAST_RS, ONLY: ICE4_FAST_RS
...@@ -176,7 +176,7 @@ REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & ...@@ -176,7 +176,7 @@ REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, &
& ZRGSI, ZRGSI_MR & ZRGSI, ZRGSI_MR
REAL, DIMENSION(KSIZE) :: PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI REAL, DIMENSION(KSIZE) :: PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI
CHARACTER(len=80) :: HSUBG_AUCV_RI='NONE' CHARACTER(len=80) :: HSUBG_AUCV_RI='NONE'
REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D, ZRST3D, ZRGT3D, ZRHT3D
INTEGER :: JL INTEGER :: JL
REAL, DIMENSION(KSIZE) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise REAL, DIMENSION(KSIZE) :: ZWETG ! 1. if graupel growths in wet mode, 0. otherwise
REAL(KIND=JPRB) :: ZHOOK_HANDLE REAL(KIND=JPRB) :: ZHOOK_HANDLE
...@@ -304,7 +304,11 @@ IF(KSIZE>0) THEN ...@@ -304,7 +304,11 @@ IF(KSIZE>0) THEN
!Diagnostic of precipitation fraction !Diagnostic of precipitation fraction
PRAINFR(:,:,:)=UNPACK(ZRF(:), MASK=LDMICRO(:,:,:), FIELD=PRAINFR(:,:,:)) PRAINFR(:,:,:)=UNPACK(ZRF(:), MASK=LDMICRO(:,:,:), FIELD=PRAINFR(:,:,:))
ZRRT3D(:,:,:)=PRRT3D(:,:,:)-UNPACK(PRRHONG_MR(:), MASK=LDMICRO(:,:,:), FIELD=0.) ZRRT3D(:,:,:)=PRRT3D(:,:,:)-UNPACK(PRRHONG_MR(:), MASK=LDMICRO(:,:,:), FIELD=0.)
CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PRAINFR(:,:,:), ZRRT3D(:,:,:)) ZRST3D(:,:,:)=0. !need phasing
ZRGT3D(:,:,:)=0. !need phasing
IF (KRR==7) ZRHT3D(:,:,:)=0. !need phasing
CALL ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PRAINFR(:,:,:),
&ZRRT3D(:,:,:), ZRST3D(:,:,:), ZRGT3D(:,:,:), ZRHT3D(:,:,:))
DO JL=1,KSIZE DO JL=1,KSIZE
ZRF(JL)=PRAINFR(K1(JL), K2(JL), K3(JL)) ZRF(JL)=PRAINFR(K1(JL), K2(JL), K3(JL))
END DO END DO
......
...@@ -81,6 +81,7 @@ REAL, DIMENSION(KPROMA), INTENT(IN) :: PEXN ...@@ -81,6 +81,7 @@ REAL, DIMENSION(KPROMA), INTENT(IN) :: PEXN
REAL, DIMENSION(KPROMA), INTENT(IN) :: PRHODREF REAL, DIMENSION(KPROMA), INTENT(IN) :: PRHODREF
REAL, DIMENSION(KPROMA), INTENT(IN) :: PLVFACT REAL, DIMENSION(KPROMA), INTENT(IN) :: PLVFACT
REAL, DIMENSION(KPROMA), INTENT(IN) :: PLSFACT REAL, DIMENSION(KPROMA), INTENT(IN) :: PLSFACT
INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K1 INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K1
INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K2 INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K2
INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K3 INTEGER, DIMENSION(KPROMA), INTENT(IN) :: K3
...@@ -90,6 +91,13 @@ REAL, DIMENSION(KPROMA), INTENT(IN) :: PSIGMA_RC ...@@ -90,6 +91,13 @@ REAL, DIMENSION(KPROMA), INTENT(IN) :: PSIGMA_RC
REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PCIT REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PCIT
REAL, DIMENSION(KPROMA), INTENT(IN) :: PT REAL, DIMENSION(KPROMA), INTENT(IN) :: PT
REAL, DIMENSION(KPROMA,0:KRR), INTENT(IN) :: PVART REAL, DIMENSION(KPROMA,0:KRR), INTENT(IN) :: PVART
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRRT3D REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRRT3D
REAL, DIMENSION(KPROMA), INTENT(OUT) :: PRVHENI_MR REAL, DIMENSION(KPROMA), INTENT(OUT) :: PRVHENI_MR
REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PRRHONG_MR REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PRRHONG_MR
...@@ -143,7 +151,21 @@ REAL, DIMENSION(KPROMA, 8), INTENT(INOUT) :: PRG_TEND ...@@ -143,7 +151,21 @@ REAL, DIMENSION(KPROMA, 8), INTENT(INOUT) :: PRG_TEND
REAL, DIMENSION(KPROMA, 10), INTENT(INOUT) :: PRH_TEND REAL, DIMENSION(KPROMA, 10), INTENT(INOUT) :: PRH_TEND
REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PSSI REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PSSI
REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT) :: PA REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT) :: PA
REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT) :: PB REAL, DIMENSION(KPROMA,0:KRR), INTENT(OUT) :: PB
REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_HCF REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_HCF
REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_LCF REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_LCF
REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_HRC REAL, DIMENSION(KPROMA), INTENT(OUT) :: PHLC_HRC
...@@ -309,6 +331,10 @@ CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_PR_PDF,& ...@@ -309,6 +331,10 @@ CALL ICE4_COMPUTE_PDF(KSIZE, HSUBG_AUCV_RC, HSUBG_PR_PDF,&
PRHODREF, ZVART(:,IRC), PCF, PSIGMA_RC,& PRHODREF, ZVART(:,IRC), PCF, PSIGMA_RC,&
PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, ZRAINFR) PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, ZRAINFR)
! ZRAINFR is computed above, then overwritten below :-( .REK. ! ZRAINFR is computed above, then overwritten below :-( .REK.
j ai des doutes sur le codage de Ryad, normalement zrainfr sert à remplir prainfr qui remplit à son tour zrainfr
LLRFR=HSUBG_RC_RR_ACCR=='PRFR' LLRFR=HSUBG_RC_RR_ACCR=='PRFR'
IF (LLRFR) THEN IF (LLRFR) THEN
!Diagnostic of precipitation fraction !Diagnostic of precipitation fraction
......
...@@ -3,19 +3,9 @@ ...@@ -3,19 +3,9 @@
!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.
!----------------------------------------------------------------- !-----------------------------------------------------------------
MODULE MODI_ICE4_RAINFR_VERT MODULE MODE_ICE4_RAINFR_VERT
INTERFACE
SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR, PRS, PRG, PRH)
IMPLICIT NONE IMPLICIT NONE
INTEGER, INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL CONTAINS
REAL, DIMENSION(KIT,KJT,KKT), INTENT(INOUT) :: PPRFR !Precipitation fraction
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRR !Rain field
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRS !Snow field
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRG !Graupel field
REAL, DIMENSION(KIT,KJT,KKT), OPTIONAL,INTENT(IN) :: PRH !Hail field
END SUBROUTINE ICE4_RAINFR_VERT
END INTERFACE
END MODULE MODI_ICE4_RAINFR_VERT
SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR, PRS, PRG, PRH) SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PPRFR, PRR, PRS, PRG, PRH)
!! !!
!!** PURPOSE !!** PURPOSE
...@@ -35,6 +25,8 @@ SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PP ...@@ -35,6 +25,8 @@ SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PP
!* 0. DECLARATIONS !* 0. DECLARATIONS
! ------------ ! ------------
! !
USE PARKIND1, ONLY : JPRB
USE YOMHOOK , ONLY : LHOOK, DR_HOOK
USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN
! !
IMPLICIT NONE IMPLICIT NONE
...@@ -50,10 +42,12 @@ REAL, DIMENSION(KIT,KJT,KKT), OPTIONAL, INTENT(IN) :: PRH !Hail field ...@@ -50,10 +42,12 @@ REAL, DIMENSION(KIT,KJT,KKT), OPTIONAL, INTENT(IN) :: PRH !Hail field
! !
!* 0.2 declaration of local variables !* 0.2 declaration of local variables
! !
REAL(KIND=JPRB) :: ZHOOK_HANDLE
INTEGER :: JI, JJ, JK INTEGER :: JI, JJ, JK
LOGICAL :: MASK LOGICAL :: MASK
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
IF (LHOOK) CALL DR_HOOK('ICE4_RAINFR_VERT',0,ZHOOK_HANDLE)
! !
!------------------------------------------------------------------------------- !-------------------------------------------------------------------------------
DO JI = KIB,KIE DO JI = KIB,KIE
...@@ -79,5 +73,7 @@ DO JI = KIB,KIE ...@@ -79,5 +73,7 @@ DO JI = KIB,KIE
END DO END DO
END DO END DO
! !
IF (LHOOK) CALL DR_HOOK('ICE4_RAINFR_VERT',1,ZHOOK_HANDLE)
! !
END SUBROUTINE ICE4_RAINFR_VERT END SUBROUTINE ICE4_RAINFR_VERT
END MODULE MODE_ICE4_RAINFR_VERT
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