diff --git a/src/MNH/condensation.f90 b/src/MNH/condensation.f90 index a62d7c515cf9494790db9a498b3b4cffe017e958..69dad2225cd1aac9b570dc525fd2c062bef80596 100644 --- a/src/MNH/condensation.f90 +++ b/src/MNH/condensation.f90 @@ -126,6 +126,9 @@ END MODULE MODI_CONDENSATION ! USE MODD_CST USE MODD_PARAMETERS +! +USE MODE_MPPDB +! USE MODI_COMPUTE_FRAC_ICE #ifdef MNH_BITREP USE MODI_BITREP @@ -214,8 +217,24 @@ REAL, DIMENSION(-22:11),PARAMETER :: ZSRC_1D =(/ & ! !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK3D(PPABS,"CONDENSATION beg:PPABS",PRECISION) + CALL MPPDB_CHECK3D(PZZ,"CONDENSATION beg:PZZ",PRECISION) + CALL MPPDB_CHECK3D(PRS,"CONDENSATION beg:PRS",PRECISION) + CALL MPPDB_CHECK3D(PRG,"CONDENSATION beg:PRG",PRECISION) + CALL MPPDB_CHECK3D(PSIGS,"CONDENSATION beg:PSIGS",PRECISION) + CALL MPPDB_CHECK3D(PMFCONV,"CONDENSATION beg:PMFCONV",PRECISION) + IF (PRESENT(PLV)) CALL MPPDB_CHECK3D(PLV,"CONDENSATION beg:PLV",PRECISION) + IF (PRESENT(PLS)) CALL MPPDB_CHECK3D(PLS,"CONDENSATION beg:PLS",PRECISION) + IF (PRESENT(PCPH)) CALL MPPDB_CHECK3D(PCPH,"CONDENSATION beg:PCPH",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PT,"CONDENSATION beg:PT",PRECISION) + CALL MPPDB_CHECK3D(PRV,"CONDENSATION beg:PRV",PRECISION) + CALL MPPDB_CHECK3D(PRC,"CONDENSATION beg:PRC",PRECISION) + CALL MPPDB_CHECK3D(PRI,"CONDENSATION beg:PRI",PRECISION) +END IF ! - IKTB=1+JPVEXT IKTE=KKU-JPVEXT ! @@ -468,5 +487,15 @@ DO JK=IKTB,IKTE END DO !$acc end kernels ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PT,"CONDENSATION end:PT",PRECISION) + CALL MPPDB_CHECK3D(PRV,"CONDENSATION end:PRV",PRECISION) + CALL MPPDB_CHECK3D(PRC,"CONDENSATION end:PRC",PRECISION) + CALL MPPDB_CHECK3D(PRI,"CONDENSATION end:PRI",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK3D(PCLDFR,"CONDENSATION end:PCLDFR",PRECISION) + CALL MPPDB_CHECK3D(PSIGRC,"CONDENSATION end:PSIGRC",PRECISION) +END IF ! END SUBROUTINE CONDENSATION diff --git a/src/MNH/ice4_compute_pdf.f90 b/src/MNH/ice4_compute_pdf.f90 index 1590d8af4019658dec0032177912bcd1fed46e6e..2cc1f35ee01622b8abd1417feb8699214b4ac7f6 100644 --- a/src/MNH/ice4_compute_pdf.f90 +++ b/src/MNH/ice4_compute_pdf.f90 @@ -55,6 +55,8 @@ USE MODE_MSG USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -85,6 +87,14 @@ REAL, DIMENSION(SIZE(PRHODREF)) :: ZRCRAUTC, & !RC value to begin rain form REAL :: ZCOEFFRCM !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_COMPUTE_PDF beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_COMPUTE_PDF beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PCF,"ICE4_COMPUTE_PDF beg:PCF",PRECISION) + CALL MPPDB_CHECK1D(PSIGMA_RC,"ICE4_COMPUTE_PDF beg:PSIGMA_RC",PRECISION) +END IF +! !Cloud water split between high and low content part is done according to autoconversion option ZRCRAUTC(:)=XCRIAUTC/PRHODREF(:) ! Autoconversion rc threshold IF(HSUBG_AUCV=='NONE') THEN @@ -282,4 +292,13 @@ ELSE CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_COMPUTE_PDF','wrong HSUBG_AUCV case') ENDIF ! +IF (MPPDB_INITIALIZED) THEN + !Check all OUT arrays + CALL MPPDB_CHECK1D(PHLC_HCF,"ICE4_COMPUTE_PDF end:PHLC_HCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LCF,"ICE4_COMPUTE_PDF end:PHLC_LCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_HRC,"ICE4_COMPUTE_PDF end:PHLC_HRC",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LRC,"ICE4_COMPUTE_PDF end:PHLC_LRC",PRECISION) + CALL MPPDB_CHECK1D(PRF,"ICE4_COMPUTE_PDF end:PRF",PRECISION) +END IF +! END SUBROUTINE ICE4_COMPUTE_PDF diff --git a/src/MNH/ice4_fast_rg.f90 b/src/MNH/ice4_fast_rg.f90 index ae67e65594e26f7d11f5c18f5464a429f039517b..c37a8cd88a163825dec691b975892fd636d6b894 100644 --- a/src/MNH/ice4_fast_rg.f90 +++ b/src/MNH/ice4_fast_rg.f90 @@ -105,6 +105,8 @@ USE MODD_PARAM_ICE, ONLY : LEVLIMIT, LNULLWETG, LWETGPOST, LCRFLIMIT USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -174,6 +176,46 @@ INTEGER :: JJ ! !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_FAST_RG beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_FAST_RG beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_FAST_RG beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_FAST_RG beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PPRES,"ICE4_FAST_RG beg:PPRES",PRECISION) + CALL MPPDB_CHECK1D(PDV,"ICE4_FAST_RG beg:PDV",PRECISION) + CALL MPPDB_CHECK1D(PKA,"ICE4_FAST_RG beg:PKA",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_FAST_RG beg:PCJ",PRECISION) + CALL MPPDB_CHECK1D(PCIT,"ICE4_FAST_RG beg:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PLBDAR,"ICE4_FAST_RG beg:PLBDAR",PRECISION) + CALL MPPDB_CHECK1D(PLBDAS,"ICE4_FAST_RG beg:PLBDAS",PRECISION) + CALL MPPDB_CHECK1D(PLBDAG,"ICE4_FAST_RG beg:PLBDAG",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_FAST_RG beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_FAST_RG beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_FAST_RG beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_FAST_RG beg:PRRT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_FAST_RG beg:PRIT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_FAST_RG beg:PRST",PRECISION) + CALL MPPDB_CHECK1D(PRGT,"ICE4_FAST_RG beg:PRGT",PRECISION) + CALL MPPDB_CHECK1D(PRGSI,"ICE4_FAST_RG beg:PRGSI",PRECISION) + CALL MPPDB_CHECK1D(PRGSI_MR,"ICE4_FAST_RG beg:PRGSI_MR",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRICFRRG,"ICE4_FAST_RG beg:PRICFRRG",PRECISION) + CALL MPPDB_CHECK1D(PRRCFRIG,"ICE4_FAST_RG beg:PRRCFRIG",PRECISION) + CALL MPPDB_CHECK1D(PRICFRR,"ICE4_FAST_RG beg:PRICFRR",PRECISION) + CALL MPPDB_CHECK1D(PRGMLTR,"ICE4_FAST_RG beg:PRGMLTR",PRECISION) + CALL MPPDB_CHECK2D(PRG_TEND,"ICE4_FAST_RG beg:PRG_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RG beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RG beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RG beg:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RG beg:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RG beg:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RG beg:PA_RG",PRECISION) + CALL MPPDB_CHECK1D(PA_RH,"ICE4_FAST_RG beg:PA_RH",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_FAST_RG beg:PB_RG",PRECISION) + CALL MPPDB_CHECK1D(PB_RH,"ICE4_FAST_RG beg:PB_RH",PRECISION) +END IF +! !* 6.1 rain contact freezing ! GMASK(:)=PRIT(:)>XRTMIN(4) .AND. PRRT(:)>XRTMIN(3) .AND. LDCOMPUTE(:) @@ -564,4 +606,34 @@ PA_RR(:) = PA_RR(:) + PRGMLTR(:) PA_RG(:) = PA_RG(:) - PRGMLTR(:) PA_TH(:) = PA_TH(:) - PRGMLTR(:)*(PLSFACT(:)-PLVFACT(:)) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRICFRRG,"ICE4_FAST_RG end:PRICFRRG",PRECISION) + CALL MPPDB_CHECK1D(PRRCFRIG,"ICE4_FAST_RG end:PRRCFRIG",PRECISION) + CALL MPPDB_CHECK1D(PRICFRR,"ICE4_FAST_RG end:PRICFRR",PRECISION) + CALL MPPDB_CHECK1D(PRGMLTR,"ICE4_FAST_RG end:PRGMLTR",PRECISION) + CALL MPPDB_CHECK2D(PRG_TEND,"ICE4_FAST_RG end:PRG_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RG end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RG end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RG end:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RG end:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RG end:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RG end:PA_RG",PRECISION) + CALL MPPDB_CHECK1D(PA_RH,"ICE4_FAST_RG end:PA_RH",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_FAST_RG end:PB_RG",PRECISION) + CALL MPPDB_CHECK1D(PB_RH,"ICE4_FAST_RG end:PB_RH",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D_LOG(LDWETG,"ICE4_FAST_RG end:LDWETG") + CALL MPPDB_CHECK1D(PRCWETG,"ICE4_FAST_RG end:PRCWETG",PRECISION) + CALL MPPDB_CHECK1D(PRIWETG,"ICE4_FAST_RG end:PRIWETG",PRECISION) + CALL MPPDB_CHECK1D(PRRWETG,"ICE4_FAST_RG end:PRRWETG",PRECISION) + CALL MPPDB_CHECK1D(PRSWETG,"ICE4_FAST_RG end:PRSWETG",PRECISION) + CALL MPPDB_CHECK1D(PRCDRYG,"ICE4_FAST_RG end:PRCDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRIDRYG,"ICE4_FAST_RG end:PRIDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRRDRYG,"ICE4_FAST_RG end:PRRDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRSDRYG,"ICE4_FAST_RG end:PRSDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRWETGH,"ICE4_FAST_RG end:PRWETGH",PRECISION) + CALL MPPDB_CHECK1D(PRWETGH_MR,"ICE4_FAST_RG end:PRWETGH_MR",PRECISION) +END IF +! END SUBROUTINE ICE4_FAST_RG diff --git a/src/MNH/ice4_fast_rh.f90 b/src/MNH/ice4_fast_rh.f90 index 0f090561e4615a5e9c79382d322ac97f236ba150..09d3860396d10a77b12c1a33001566c21a36a958 100644 --- a/src/MNH/ice4_fast_rh.f90 +++ b/src/MNH/ice4_fast_rh.f90 @@ -95,6 +95,8 @@ USE MODD_PARAM_ICE, ONLY : LEVLIMIT, LNULLWETH, LWETHPOST, LCONVHG USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -158,6 +160,40 @@ INTEGER :: JJ ! !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_FAST_RH beg:LDCOMPUTE") + CALL MPPDB_CHECK1D_LOG(LDWETG,"ICE4_FAST_RH beg:LDWETG") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_FAST_RH beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_FAST_RH beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_FAST_RH beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PPRES,"ICE4_FAST_RH beg:PPRES",PRECISION) + CALL MPPDB_CHECK1D(PDV,"ICE4_FAST_RH beg:PDV",PRECISION) + CALL MPPDB_CHECK1D(PKA,"ICE4_FAST_RH beg:PKA",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_FAST_RH beg:PCJ",PRECISION) + CALL MPPDB_CHECK1D(PLBDAS,"ICE4_FAST_RH beg:PLBDAS",PRECISION) + CALL MPPDB_CHECK1D(PLBDAG,"ICE4_FAST_RH beg:PLBDAG",PRECISION) + CALL MPPDB_CHECK1D(PLBDAR,"ICE4_FAST_RH beg:PLBDAR",PRECISION) + CALL MPPDB_CHECK1D(PLBDAH,"ICE4_FAST_RH beg:PLBDAH",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_FAST_RH beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_FAST_RH beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_FAST_RH beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_FAST_RH beg:PRRT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_FAST_RH beg:PRIT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_FAST_RH beg:PRST",PRECISION) + CALL MPPDB_CHECK1D(PRGT,"ICE4_FAST_RH beg:PRGT",PRECISION) + CALL MPPDB_CHECK1D(PRHT,"ICE4_FAST_RH beg:PRHT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRHMLTR,"ICE4_FAST_RH beg:PRHMLTR",PRECISION) + CALL MPPDB_CHECK2D(PRH_TEND,"ICE4_FAST_RH beg:PRH_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RH beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RH beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RH beg:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RH beg:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RH beg:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RH beg:PA_RG",PRECISION) + CALL MPPDB_CHECK1D(PA_RH,"ICE4_FAST_RH beg:PA_RH",PRECISION) +END IF ! !* 7.2 compute the Wet and Dry growth of hail ! @@ -580,5 +616,29 @@ PA_RR(:) = PA_RR(:) + PRHMLTR(:) PA_RH(:) = PA_RH(:) - PRHMLTR(:) PA_TH(:) = PA_TH(:) - PRHMLTR(:)*(PLSFACT(:)-PLVFACT(:)) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRHMLTR,"ICE4_FAST_RH end:PRHMLTR",PRECISION) + CALL MPPDB_CHECK2D(PRH_TEND,"ICE4_FAST_RH end:PRH_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RH end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RH end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RH end:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RH end:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RH end:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RH end:PA_RG",PRECISION) + CALL MPPDB_CHECK1D(PA_RH,"ICE4_FAST_RH end:PA_RH",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRCWETH,"ICE4_FAST_RH end:PRCWETH",PRECISION) + CALL MPPDB_CHECK1D(PRIWETH,"ICE4_FAST_RH end:PRIWETH",PRECISION) + CALL MPPDB_CHECK1D(PRSWETH,"ICE4_FAST_RH end:PRSWETH",PRECISION) + CALL MPPDB_CHECK1D(PRGWETH,"ICE4_FAST_RH end:PRGWETH",PRECISION) + CALL MPPDB_CHECK1D(PRRWETH,"ICE4_FAST_RH end:PRRWETH",PRECISION) + CALL MPPDB_CHECK1D(PRCDRYH,"ICE4_FAST_RH end:PRCDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRIDRYH,"ICE4_FAST_RH end:PRIDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRSDRYH,"ICE4_FAST_RH end:PRSDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRRDRYH,"ICE4_FAST_RH end:PRRDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRGDRYH,"ICE4_FAST_RH end:PRGDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRDRYHG,"ICE4_FAST_RH end:PRDRYHG",PRECISION) +END IF ! END SUBROUTINE ICE4_FAST_RH diff --git a/src/MNH/ice4_fast_ri.f90 b/src/MNH/ice4_fast_ri.f90 index d68a18efa750abbd2acc34100c93074797710d67..7cf9af5412a1a2826eb245062f7eec01c0206c18 100644 --- a/src/MNH/ice4_fast_ri.f90 +++ b/src/MNH/ice4_fast_ri.f90 @@ -74,6 +74,8 @@ USE MODD_RAIN_ICE_DESCR USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -102,7 +104,24 @@ LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GMASK ! !------------------------------------------------------------------------------- ! -!------------------------------------------------------------------------------- +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_FAST_RI beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_FAST_RI beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_FAST_RI beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_FAST_RI beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PAI,"ICE4_FAST_RI beg:PAI",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_FAST_RI beg:PCJ",PRECISION) + CALL MPPDB_CHECK1D(PCIT,"ICE4_FAST_RI beg:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PSSI,"ICE4_FAST_RI beg:PSSI",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_FAST_RI beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_FAST_RI beg:PRIT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCBERI,"ICE4_FAST_RI beg:PRCBERI",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RI beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RI beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RI beg:PA_RI",PRECISION) +END IF ! !* 7.2 Bergeron-Findeisen effect: RCBERI ! @@ -130,5 +149,12 @@ PA_RC(:) = PA_RC(:) - PRCBERI(:) PA_RI(:) = PA_RI(:) + PRCBERI(:) PA_TH(:) = PA_TH(:) + PRCBERI(:)*(PLSFACT(:)-PLVFACT(:)) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCBERI,"ICE4_FAST_RI end:PRCBERI",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RI end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RI end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_FAST_RI end:PA_RI",PRECISION) +END IF ! END SUBROUTINE ICE4_FAST_RI diff --git a/src/MNH/ice4_fast_rs.f90 b/src/MNH/ice4_fast_rs.f90 index b4eddd321e9f6e1d3fc2058a9fed6e3577a03279..a9ad33f5000bcfde3a233ab2fc3704d9943087d9 100644 --- a/src/MNH/ice4_fast_rs.f90 +++ b/src/MNH/ice4_fast_rs.f90 @@ -88,6 +88,8 @@ USE MODD_PARAM_ICE, ONLY : LEVLIMIT, CSNOWRIMING USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -137,6 +139,34 @@ REAL, DIMENSION(SIZE(PRHODREF)) :: ZZW, ZZW2, ZZW6, ZFREEZ_RATE INTEGER :: JJ !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_FAST_RS beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_FAST_RS beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_FAST_RS beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_FAST_RS beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PPRES,"ICE4_FAST_RS beg:PPRES",PRECISION) + CALL MPPDB_CHECK1D(PDV,"ICE4_FAST_RS beg:PDV",PRECISION) + CALL MPPDB_CHECK1D(PKA,"ICE4_FAST_RS beg:PKA",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_FAST_RS beg:PCJ",PRECISION) + CALL MPPDB_CHECK1D(PLBDAR,"ICE4_FAST_RS beg:PLBDAR",PRECISION) + CALL MPPDB_CHECK1D(PLBDAS,"ICE4_FAST_RS beg:PLBDAS",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_FAST_RS beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_FAST_RS beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_FAST_RS beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_FAST_RS beg:PRRT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_FAST_RS beg:PRST",PRECISION) + CALL MPPDB_CHECK1D(PRIAGGS,"ICE4_FAST_RS beg:PRIAGGS",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRSMLTG,"ICE4_FAST_RS beg:PRSMLTG",PRECISION) + CALL MPPDB_CHECK1D(PRCMLTSR,"ICE4_FAST_RS beg:PRCMLTSR",PRECISION) + CALL MPPDB_CHECK2D(PRS_TEND,"ICE4_FAST_RS beg:PRS_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RS beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RS beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RS beg:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RS beg:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RS beg:PA_RG",PRECISION) +END IF ! !* 5.0 maximum freezing rate ! @@ -510,6 +540,24 @@ PA_RS(:) = PA_RS(:) - PRSMLTG(:) PA_RG(:) = PA_RG(:) + PRSMLTG(:) PA_RC(:) = PA_RC(:) - PRCMLTSR(:) PA_RR(:) = PA_RR(:) + PRCMLTSR(:) - +! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRSMLTG,"ICE4_FAST_RS end:PRSMLTG",PRECISION) + CALL MPPDB_CHECK1D(PRCMLTSR,"ICE4_FAST_RS end:PRCMLTSR",PRECISION) + CALL MPPDB_CHECK2D(PRS_TEND,"ICE4_FAST_RS end:PRS_TEND",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_FAST_RS end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_FAST_RS end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_FAST_RS end:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_FAST_RS end:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_FAST_RS end:PA_RG",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRCRIMSS,"ICE4_FAST_RS end:PRCRIMSS",PRECISION) + CALL MPPDB_CHECK1D(PRCRIMSG,"ICE4_FAST_RS end:PRCRIMSG",PRECISION) + CALL MPPDB_CHECK1D(PRSRIMCG,"ICE4_FAST_RS end:PRSRIMCG",PRECISION) + CALL MPPDB_CHECK1D(PRRACCSS,"ICE4_FAST_RS end:PRRACCSS",PRECISION) + CALL MPPDB_CHECK1D(PRRACCSG,"ICE4_FAST_RS end:PRRACCSG",PRECISION) + CALL MPPDB_CHECK1D(PRSACCRG,"ICE4_FAST_RS end:PRSACCRG",PRECISION) +END IF ! END SUBROUTINE ICE4_FAST_RS diff --git a/src/MNH/ice4_nucleation.f90 b/src/MNH/ice4_nucleation.f90 index e09612e29834289fd35a3109ac75fe513ac67944..ad0c38d14b092c48f403a3c83a43e4f1155e7674 100644 --- a/src/MNH/ice4_nucleation.f90 +++ b/src/MNH/ice4_nucleation.f90 @@ -53,6 +53,8 @@ USE MODD_RAIN_ICE_PARAM USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN USE MODD_PARAM_ICE, ONLY : LFEEDBACKT ! +USE MODE_MPPDB +! #ifdef MNH_BITREP USE MODI_BITREP #endif @@ -85,7 +87,21 @@ REAL, DIMENSION(KSIZE) :: ZZW, & ! Work array ZUSW, & ! Undersaturation over water ZSSI ! Supersaturation over ice !------------------------------------------------------------------------------- -! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D(PTHT,"ICE4_NUCLEATION beg:PTHT",PRECISION) + CALL MPPDB_CHECK1D(PPABST,"ICE4_NUCLEATION beg:PPABST",PRECISION) + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_NUCLEATION beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PEXN,"ICE4_NUCLEATION beg:PEXN",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_NUCLEATION beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_NUCLEATION beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_NUCLEATION beg:PRVT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PCIT,"ICE4_NUCLEATION beg:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PB_TH,"ICE4_NUCLEATION beg:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RV,"ICE4_NUCLEATION beg:PB_RV",PRECISION) + CALL MPPDB_CHECK1D(PB_RI,"ICE4_NUCLEATION beg:PB_RI",PRECISION) +END IF ! PRVHENI_MR(:)=0. IF(.NOT. LDSOFT) THEN @@ -165,4 +181,14 @@ IF(.NOT. LDSOFT) THEN PB_TH(:)=PB_TH(:) + PRVHENI_MR(:)*PLSFACT(:) ENDIF ! +IF (MPPDB_INITIALIZED) THEN + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRVHENI_MR,"ICE4_NUCLEATION end:PRVHENI_MR",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PCIT,"ICE4_NUCLEATION end:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PB_TH,"ICE4_NUCLEATION end:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RV,"ICE4_NUCLEATION end:PB_RV",PRECISION) + CALL MPPDB_CHECK1D(PB_RI,"ICE4_NUCLEATION end:PB_RI",PRECISION) +END IF +! END SUBROUTINE ICE4_NUCLEATION diff --git a/src/MNH/ice4_nucleation_wrapper.f90 b/src/MNH/ice4_nucleation_wrapper.f90 index c13ff7c0419b1c054005fa9f9da2349b2024cd89..d23cfd23ef79955a19bc69bdcae5f0b9639523e6 100644 --- a/src/MNH/ice4_nucleation_wrapper.f90 +++ b/src/MNH/ice4_nucleation_wrapper.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2018 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 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. MODULE MODI_ICE4_NUCLEATION_WRAPPER INTERFACE @@ -46,6 +46,8 @@ SUBROUTINE ICE4_NUCLEATION_WRAPPER(KIT, KJT, KKT, LDMASK, & ! USE MODD_CST, ONLY : XTT ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -80,7 +82,19 @@ REAL, DIMENSION(:),ALLOCATABLE :: ZZT, & ! Temperature ZB_TH, ZB_RV, ZB_RI !------------------------------------------------------------------------------- ! -! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK3D_LOG(LDMASK,"ICE4_NUCLEATION_WRAPPER beg:LDMASK") + CALL MPPDB_CHECK3D(PTHT,"ICE4_NUCLEATION_WRAPPER beg:PTHT",PRECISION) + CALL MPPDB_CHECK3D(PPABST,"ICE4_NUCLEATION_WRAPPER beg:PPABST",PRECISION) + CALL MPPDB_CHECK3D(PRHODREF,"ICE4_NUCLEATION_WRAPPER beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK3D(PEXN,"ICE4_NUCLEATION_WRAPPER beg:PEXN",PRECISION) + CALL MPPDB_CHECK3D(PLSFACT,"ICE4_NUCLEATION_WRAPPER beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK3D(PT,"ICE4_NUCLEATION_WRAPPER beg:PT",PRECISION) + CALL MPPDB_CHECK3D(PRVT,"ICE4_NUCLEATION_WRAPPER beg:PRVT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"ICE4_NUCLEATION_WRAPPER beg:PCIT",PRECISION) +END IF ! ! optimization by looking for locations where ! the temperature is negative only !!! @@ -127,6 +141,13 @@ END IF DEALLOCATE(I1,I2,I3) DEALLOCATE(ZZT,ZPRES,ZRVT,ZCIT,ZTHT,ZRHODREF,ZEXN,ZLSFACT,ZRVHENI_MR,ZB_TH,ZB_RV,ZB_RI) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"ICE4_NUCLEATION_WRAPPER end:PCIT",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK3D(PRVHENI_MR,"ICE4_NUCLEATION_WRAPPER end:PRVHENI_MR",PRECISION) +END IF +! CONTAINS FUNCTION ICE4_NUCLEATION_COUNTJV(LTAB,KIT,KJT,KKT,KSIZE,I1,I2,I3) RESULT(IC) IMPLICIT NONE diff --git a/src/MNH/ice4_rainfr_vert.f90 b/src/MNH/ice4_rainfr_vert.f90 index 0448e36b0a80751f626dd3d903225c88d4788a7b..f67a05aa32a5e6ea77ad65313f05de2524264044 100644 --- a/src/MNH/ice4_rainfr_vert.f90 +++ b/src/MNH/ice4_rainfr_vert.f90 @@ -32,6 +32,8 @@ SUBROUTINE ICE4_RAINFR_VERT(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKT, KKL, PP ! USE MODD_RAIN_ICE_DESCR, ONLY : XRTMIN ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -46,7 +48,9 @@ INTEGER :: JI, JJ, JK ! !------------------------------------------------------------------------------- ! -!------------------------------------------------------------------------------- +!Check all IN arrays +CALL MPPDB_CHECK3D(PRR,"ICE4_RAINFR_VERT beg:PRR",PRECISION) +! DO JI = KIB,KIE DO JJ = KJB, KJE PPRFR(JI,JJ,KKE)=0. @@ -63,5 +67,7 @@ DO JI = KIB,KIE END DO END DO ! +!Check all OUT arrays +CALL MPPDB_CHECK3D(PPRFR,"ICE4_RAINFR_VERT beg:PPRFR",PRECISION) ! END SUBROUTINE ICE4_RAINFR_VERT diff --git a/src/MNH/ice4_rimltc.f90 b/src/MNH/ice4_rimltc.f90 index 17efc9b098840471fa7209b8a5b9afec6d33e9f4..47bf2588521e12745e48a9557eded0ef73ad8358 100644 --- a/src/MNH/ice4_rimltc.f90 +++ b/src/MNH/ice4_rimltc.f90 @@ -53,6 +53,8 @@ USE MODD_RAIN_ICE_PARAM USE MODD_RAIN_ICE_DESCR USE MODD_PARAM_ICE, ONLY : LFEEDBACKT ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -76,6 +78,19 @@ REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RI LOGICAL, DIMENSION(KSIZE) :: GMASK ! !------------------------------------------------------------------------------- +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D(PEXN,"ICE4_RIMLTC beg:PEXN",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_RIMLTC beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_RIMLTC beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_RIMLTC beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PTHT,"ICE4_RIMLTC beg:PTHT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_RIMLTC beg:PRIT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_TH,"ICE4_RIMLTC beg:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RC,"ICE4_RIMLTC beg:PB_RC",PRECISION) + CALL MPPDB_CHECK1D(PB_RI,"ICE4_RIMLTC beg:PB_RI",PRECISION) +END IF ! !* 7.1 cloud ice melting ! @@ -97,5 +112,13 @@ PB_RC(:) = PB_RC(:) + PRIMLTC_MR(:) PB_RI(:) = PB_RI(:) - PRIMLTC_MR(:) PB_TH(:) = PB_TH(:) - PRIMLTC_MR(:)*(PLSFACT(:)-PLVFACT(:)) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_TH,"ICE4_RIMLTC end:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RC,"ICE4_RIMLTC end:PB_RC",PRECISION) + CALL MPPDB_CHECK1D(PB_RI,"ICE4_RIMLTC end:PB_RI",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRIMLTC_MR,"ICE4_RIMLTC end:PRIMLTC_MR",PRECISION) +END IF ! END SUBROUTINE ICE4_RIMLTC diff --git a/src/MNH/ice4_rrhong.f90 b/src/MNH/ice4_rrhong.f90 index 7555a0fb52e948d8e68e98993cda2bf24481825f..04be4fe593f03cbe7744074722dcb42cbe005fde 100644 --- a/src/MNH/ice4_rrhong.f90 +++ b/src/MNH/ice4_rrhong.f90 @@ -53,6 +53,8 @@ USE MODD_RAIN_ICE_PARAM USE MODD_RAIN_ICE_DESCR USE MODD_PARAM_ICE, ONLY : LFEEDBACKT ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -76,6 +78,19 @@ REAL, DIMENSION(KSIZE), INTENT(INOUT) :: PB_RG LOGICAL, DIMENSION(SIZE(PRRT)) :: GMASK ! !------------------------------------------------------------------------------- +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D(PEXN,"ICE4_RRHONG beg:PEXN",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_RRHONG beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_RRHONG beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_RRHONG beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_RRHONG beg:PRRT",PRECISION) + CALL MPPDB_CHECK1D(PTHT,"ICE4_RRHONG beg:PTHT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_TH,"ICE4_RRHONG beg:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RR,"ICE4_RRHONG beg:PB_RR",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_RRHONG beg:PB_RG",PRECISION) +END IF ! !* 3.3 compute the spontaneous freezing source: RRHONG ! @@ -96,5 +111,13 @@ PB_RG(:) = PB_RG(:) + PRRHONG_MR(:) PB_RR(:) = PB_RR(:) - PRRHONG_MR(:) PB_TH(:) = PB_TH(:) + PRRHONG_MR(:)*(PLSFACT(:)-PLVFACT(:)) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_TH,"ICE4_RRHONG end:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RR,"ICE4_RRHONG end:PB_RR",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_RRHONG end:PB_RG",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRRHONG_MR,"ICE4_RRHONG end:PRRHONG_MR",PRECISION) +END IF ! END SUBROUTINE ICE4_RRHONG diff --git a/src/MNH/ice4_rsrimcg_old.f90 b/src/MNH/ice4_rsrimcg_old.f90 index 6cf3671cc3b69d1467365b7d9350ca9f78edd06d..5333ed3477ed42fd01723d55d90ef02604beed2a 100644 --- a/src/MNH/ice4_rsrimcg_old.f90 +++ b/src/MNH/ice4_rsrimcg_old.f90 @@ -55,6 +55,8 @@ USE MODD_PARAM_ICE, ONLY : CSNOWRIMING USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -81,6 +83,18 @@ REAL, DIMENSION(SIZE(PRHODREF)) :: ZZW, ZZW2, ZZW6 INTEGER :: JJ !------------------------------------------------------------------------------- ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_RSRIMCG_OLD beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_RSRIMCG_OLD beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLBDAS,"ICE4_RSRIMCG_OLD beg:PLBDAS",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_RSRIMCG_OLD beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_RSRIMCG_OLD beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_RSRIMCG_OLD beg:PRST",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_RS,"ICE4_RSRIMCG_OLD beg:PB_RS",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_RSRIMCG_OLD beg:PB_RG",PRECISION) +END IF ! !------------------------------------------------------------------------------- ! @@ -137,5 +151,12 @@ ENDIF PB_RS(:) = PB_RS(:) - PRSRIMCG_MR(:) PB_RG(:) = PB_RG(:) + PRSRIMCG_MR(:) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PB_RS,"ICE4_RSRIMCG_OLD end:PB_RS",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_RSRIMCG_OLD end:PB_RG",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRSRIMCG_MR,"ICE4_RSRIMCG_OLD end:PRSRIMCG_MR",PRECISION) +END IF ! END SUBROUTINE ICE4_RSRIMCG_OLD diff --git a/src/MNH/ice4_sedimentation_split.f90 b/src/MNH/ice4_sedimentation_split.f90 index d5f516f93e1b12bc7e93408c903c8ffee4ea6ae6..74967f73782e2bc1008d0ef73519f59a9d1094e8 100644 --- a/src/MNH/ice4_sedimentation_split.f90 +++ b/src/MNH/ice4_sedimentation_split.f90 @@ -160,6 +160,28 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2)) :: ZCONC_TMP ! Weighted co ! !------------------------------------------------------------------------------- ! +!Check all IN arrays +CALL MPPDB_CHECK3D(PDZZ,"ICE4_SEDIMENTATION_SPLIT beg:PDZZ",PRECISION) +CALL MPPDB_CHECK3D(PRHODREF,"ICE4_SEDIMENTATION_SPLIT beg:PRHODREF",PRECISION) +CALL MPPDB_CHECK3D(PPABST,"ICE4_SEDIMENTATION_SPLIT beg:PPABST",PRECISION) +CALL MPPDB_CHECK3D(PTHT,"ICE4_SEDIMENTATION_SPLIT beg:PTHT",PRECISION) +CALL MPPDB_CHECK3D(PRHODJ,"ICE4_SEDIMENTATION_SPLIT beg:PRHODJ",PRECISION) +CALL MPPDB_CHECK3D(PRCT,"ICE4_SEDIMENTATION_SPLIT beg:PRCT",PRECISION) +CALL MPPDB_CHECK3D(PRRT,"ICE4_SEDIMENTATION_SPLIT beg:PRRT",PRECISION) +CALL MPPDB_CHECK3D(PRIT,"ICE4_SEDIMENTATION_SPLIT beg:PRIT",PRECISION) +CALL MPPDB_CHECK3D(PRST,"ICE4_SEDIMENTATION_SPLIT beg:PRST",PRECISION) +CALL MPPDB_CHECK3D(PRGT,"ICE4_SEDIMENTATION_SPLIT beg:PRGT",PRECISION) +IF (PRESENT(PSEA)) CALL MPPDB_CHECK2D(PSEA,"ICE4_SEDIMENTATION_SPLIT beg:PSEA",PRECISION) +IF (PRESENT(PTOWN)) CALL MPPDB_CHECK2D(PTOWN,"ICE4_SEDIMENTATION_SPLIT beg:PTOWN",PRECISION) +IF (PRESENT(PRHT)) CALL MPPDB_CHECK3D(PRHT,"ICE4_SEDIMENTATION_SPLIT beg:PRHT",PRECISION) +!Check all INOUT arrays +CALL MPPDB_CHECK3D(PRCS,"ICE4_SEDIMENTATION_SPLIT beg:PRCS",PRECISION) +CALL MPPDB_CHECK3D(PRRS,"ICE4_SEDIMENTATION_SPLIT beg:PRRS",PRECISION) +CALL MPPDB_CHECK3D(PRIS,"ICE4_SEDIMENTATION_SPLIT beg:PRIS",PRECISION) +CALL MPPDB_CHECK3D(PRSS,"ICE4_SEDIMENTATION_SPLIT beg:PRSS",PRECISION) +CALL MPPDB_CHECK3D(PRGS,"ICE4_SEDIMENTATION_SPLIT beg:PRGS",PRECISION) +IF (PRESENT(PRHS)) CALL MPPDB_CHECK3D(PRHS,"ICE4_SEDIMENTATION_SPLIT beg:PRHS",PRECISION) +! IF (PRESENT(PFPR)) THEN GPRESENT_PFPR = .TRUE. ELSE @@ -329,6 +351,28 @@ ENDIF !PW:TODO: to remove when everything on GPU in rain_ice_red !$acc update self(PRCS,PRRS,PRIS,PRSS,PRGS,PRHS,PINPRC,PINDEP,PINPRR,PINPRI,PINPRS,PINPRG,PINPRH,PFPR) ! +!Check all INOUT arrays +CALL MPPDB_CHECK3D(PRCS,"ICE4_SEDIMENTATION_SPLIT end:PRCS",PRECISION) +CALL MPPDB_CHECK3D(PRRS,"ICE4_SEDIMENTATION_SPLIT end:PRRS",PRECISION) +CALL MPPDB_CHECK3D(PRIS,"ICE4_SEDIMENTATION_SPLIT end:PRIS",PRECISION) +CALL MPPDB_CHECK3D(PRSS,"ICE4_SEDIMENTATION_SPLIT end:PRSS",PRECISION) +CALL MPPDB_CHECK3D(PRGS,"ICE4_SEDIMENTATION_SPLIT end:PRGS",PRECISION) +IF (PRESENT(PRHS)) CALL MPPDB_CHECK3D(PRHS,"ICE4_SEDIMENTATION_SPLIT end:PRHS",PRECISION) +!Check all OUT arrays +CALL MPPDB_CHECK2D(PINPRC,"ICE4_SEDIMENTATION_SPLIT end:PINPRC",PRECISION) +CALL MPPDB_CHECK2D(PINDEP,"ICE4_SEDIMENTATION_SPLIT end:PINDEP",PRECISION) +CALL MPPDB_CHECK2D(PINPRR,"ICE4_SEDIMENTATION_SPLIT end:PINPRR",PRECISION) +CALL MPPDB_CHECK2D(PINPRI,"ICE4_SEDIMENTATION_SPLIT end:PINPRI",PRECISION) +CALL MPPDB_CHECK2D(PINPRS,"ICE4_SEDIMENTATION_SPLIT end:PINPRS",PRECISION) +CALL MPPDB_CHECK2D(PINPRG,"ICE4_SEDIMENTATION_SPLIT end:PINPRG",PRECISION) +IF (PRESENT(PINPRH)) CALL MPPDB_CHECK2D(PINPRH,"ICE4_SEDIMENTATION_SPLIT end:PINPRH",PRECISION) +IF (PRESENT(PFPR)) THEN + DO JK=1,SIZE(PFPR,4) + CALL MPPDB_CHECK3D(PFPR(:,:,:,JK),"ICE4_SEDIMENTATION_SPLIT end:PFPR(:,:,:,JK)",PRECISION) + END DO +END IF +! +! CONTAINS ! ! @@ -395,6 +439,26 @@ REAL, DIMENSION(SIZE(PRHODREF,1),SIZE(PRHODREF,2),0:SIZE(PRHODREF,3)+1) :: ZWSED !$acc& copyin(XCPD,XP00,XRD,XEXSEDG,XEXSEDH,XEXSEDR,XEXSEDS,XFSEDG,XFSEDH,XFSEDI,XFSEDR,XFSEDS,XRTMIN, & !$acc& XCC,XCEXVT,XDC,XLBEXC,XEXCSEDI) ! +!Check all IN arrays +CALL MPPDB_CHECK3D(PRHODREF,"INTERNAL_SEDIM_SPLI beg:PRHODREF",PRECISION) +CALL MPPDB_CHECK3D(POORHODZ,"INTERNAL_SEDIM_SPLI beg:POORHODZ",PRECISION) +CALL MPPDB_CHECK3D(PDZZ,"INTERNAL_SEDIM_SPLI beg:PDZZ",PRECISION) +CALL MPPDB_CHECK3D(PPABST,"INTERNAL_SEDIM_SPLI beg:PPABST",PRECISION) +CALL MPPDB_CHECK3D(PTHT,"INTERNAL_SEDIM_SPLI beg:PTHT",PRECISION) +CALL MPPDB_CHECK3D(PPRXS,"INTERNAL_SEDIM_SPLI beg:PPRXS",PRECISION) +IF (PRESENT(PRAY)) CALL MPPDB_CHECK3D(PRAY,"INTERNAL_SEDIM_SPLI beg:PRAY",PRECISION) +IF (PRESENT(PLBC)) CALL MPPDB_CHECK3D(PLBC,"INTERNAL_SEDIM_SPLI beg:PLBC",PRECISION) +IF (PRESENT(PFSEDC)) CALL MPPDB_CHECK3D(PFSEDC,"INTERNAL_SEDIM_SPLI beg:PFSEDC",PRECISION) +IF (PRESENT(PCONC3D)) CALL MPPDB_CHECK3D(PCONC3D,"INTERNAL_SEDIM_SPLI beg:PCONC3D",PRECISION) +!Check all INOUT arrays +CALL MPPDB_CHECK3D(PRXT,"INTERNAL_SEDIM_SPLI beg:PRXT",PRECISION) +CALL MPPDB_CHECK3D(PRXS,"INTERNAL_SEDIM_SPLI beg:PRXS",PRECISION) +IF (PRESENT(PFPR)) THEN + DO JI=1,KRR + CALL MPPDB_CHECK3D(PFPR(:,:,:,JI),"INTERNAL_SEDIM_SPLI beg:",PRECISION) + END DO +END IF +! !------------------------------------------------------------------------------- IF (KSPE<2 .OR. KSPE>7) CALL PRINT_MSG(NVERB_FATAL,'GEN','ICE4_SEDIMENTATION_SPLIT','invalid species (KSPE variable)') ! diff --git a/src/MNH/ice4_slow.f90 b/src/MNH/ice4_slow.f90 index a8ef382abb1b7f9e17e0a3cdcc7d3ac7fe693b7c..92713b432001e5194d1835323c15c1013a5346cd 100644 --- a/src/MNH/ice4_slow.f90 +++ b/src/MNH/ice4_slow.f90 @@ -75,6 +75,8 @@ USE MODD_RAIN_ICE_DESCR USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -115,9 +117,36 @@ REAL :: ZTIMAUTIC LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GMASK !------------------------------------------------------------------------------- ! -! -!------------------------------------------------------------------------------- -! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_SLOW beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_SLOW beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_SLOW beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PSSI,"ICE4_SLOW beg:PSSI",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_SLOW beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_SLOW beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_SLOW beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_SLOW beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_SLOW beg:PRIT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_SLOW beg:PRST",PRECISION) + CALL MPPDB_CHECK1D(PRGT,"ICE4_SLOW beg:PRGT",PRECISION) + CALL MPPDB_CHECK1D(PLBDAS,"ICE4_SLOW beg:PLBDAS",PRECISION) + CALL MPPDB_CHECK1D(PLBDAG,"ICE4_SLOW beg:PLBDAG",PRECISION) + CALL MPPDB_CHECK1D(PAI,"ICE4_SLOW beg:PAI",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_SLOW beg:PCJ",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCHONI,"ICE4_SLOW beg:PRCHONI",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPS,"ICE4_SLOW beg:PRVDEPS",PRECISION) + CALL MPPDB_CHECK1D(PRIAGGS,"ICE4_SLOW beg:PRIAGGS",PRECISION) + CALL MPPDB_CHECK1D(PRIAUTS,"ICE4_SLOW beg:PRIAUTS",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPG,"ICE4_SLOW beg:PRVDEPG",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_SLOW beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RV,"ICE4_SLOW beg:PA_RV",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_SLOW beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_SLOW beg:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_SLOW beg:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_SLOW beg:PA_RG",PRECISION) +END IF ! !* 3.2 compute the homogeneous nucleation source: RCHONI ! @@ -253,5 +282,19 @@ PA_RG(:) = PA_RG(:) + PRVDEPG(:) PA_RV(:) = PA_RV(:) - PRVDEPG(:) PA_TH(:) = PA_TH(:) + PRVDEPG(:)*PLSFACT(:) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCHONI,"ICE4_SLOW end:PRCHONI",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPS,"ICE4_SLOW end:PRVDEPS",PRECISION) + CALL MPPDB_CHECK1D(PRIAGGS,"ICE4_SLOW end:PRIAGGS",PRECISION) + CALL MPPDB_CHECK1D(PRIAUTS,"ICE4_SLOW end:PRIAUTS",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPG,"ICE4_SLOW end:PRVDEPG",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_SLOW end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RV,"ICE4_SLOW end:PA_RV",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_SLOW end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_SLOW end:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_SLOW end:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_SLOW end:PA_RG",PRECISION) +END IF ! END SUBROUTINE ICE4_SLOW diff --git a/src/MNH/ice4_tendencies.f90 b/src/MNH/ice4_tendencies.f90 index e6c646c3d434f4dd98a2c4b007558af968ccee7d..9a6a3f27ec58c79a065288c777113ce5bbe38090 100644 --- a/src/MNH/ice4_tendencies.f90 +++ b/src/MNH/ice4_tendencies.f90 @@ -190,6 +190,8 @@ USE MODI_ICE4_FAST_RI USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -309,7 +311,53 @@ REAL, DIMENSION(KSIZE) :: ZRVT, ZRCT, ZRRT, ZRIT, ZRST, ZRGT, & REAL, DIMENSION(KIT,KJT,KKT) :: ZRRT3D INTEGER :: JL LOGICAL, DIMENSION(KSIZE) :: LLWETG - +! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D(PEXN,"ICE4_TENDENCIES beg:PEXN",PRECISION) + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_TENDENCIES begPRHODREF:",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_TENDENCIES beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PLSFACT,"ICE4_TENDENCIES beg:PLSFACT",PRECISION) + CALL MPPDB_CHECK3D_LOG(LDMICRO,"ICE4_TENDENCIES beg:LDMICRO") + CALL MPPDB_CHECK1D_INT(K1,"ICE4_TENDENCIES beg:K1") + CALL MPPDB_CHECK1D_INT(K2,"ICE4_TENDENCIES beg:K2") + CALL MPPDB_CHECK1D_INT(K3,"ICE4_TENDENCIES beg:K3") + CALL MPPDB_CHECK1D(PPRES,"ICE4_TENDENCIES beg:PPRES",PRECISION) + CALL MPPDB_CHECK1D(PCF,"ICE4_TENDENCIES beg:PCF",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_TENDENCIES beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PTHT,"ICE4_TENDENCIES beg:PTHT",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_TENDENCIES beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_TENDENCIES beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_TENDENCIES beg:PRRT",PRECISION) + CALL MPPDB_CHECK1D(PRIT,"ICE4_TENDENCIES beg:PRIT",PRECISION) + CALL MPPDB_CHECK1D(PRST,"ICE4_TENDENCIES beg:PRST",PRECISION) + CALL MPPDB_CHECK1D(PRGT,"ICE4_TENDENCIES beg:PRGT",PRECISION) + CALL MPPDB_CHECK1D(PRHT,"ICE4_TENDENCIES beg:PRHT",PRECISION) + CALL MPPDB_CHECK3D(PRRT3D,"ICE4_TENDENCIES beg:PRRT3D",PRECISION) + CALL MPPDB_CHECK1D(PSIGMA_RC,"ICE4_TENDENCIES beg:PSIGMA_RC",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PCIT,"ICE4_TENDENCIES beg:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PRCHONI,"ICE4_TENDENCIES beg:PRCHONI",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPS,"ICE4_TENDENCIES beg:PRVDEPS",PRECISION) + CALL MPPDB_CHECK1D(PRIAGGS,"ICE4_TENDENCIES beg:PRIAGGS",PRECISION) + CALL MPPDB_CHECK1D(PRIAUTS,"ICE4_TENDENCIES beg:PRIAUTS",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPG,"ICE4_TENDENCIES beg:PRVDEPG",PRECISION) + CALL MPPDB_CHECK1D(PRCAUTR,"ICE4_TENDENCIES beg:PRCAUTR",PRECISION) + CALL MPPDB_CHECK1D(PRCACCR,"ICE4_TENDENCIES beg:PRCACCR",PRECISION) + CALL MPPDB_CHECK1D(PRREVAV,"ICE4_TENDENCIES beg:PRREVAV",PRECISION) + CALL MPPDB_CHECK1D(PRSMLTG,"ICE4_TENDENCIES beg:PRSMLTG",PRECISION) + CALL MPPDB_CHECK1D(PRCMLTSR,"ICE4_TENDENCIES beg:PRCMLTSR",PRECISION) + CALL MPPDB_CHECK1D(PRICFRRG,"ICE4_TENDENCIES beg:PRICFRRG",PRECISION) + CALL MPPDB_CHECK1D(PRRCFRIG,"ICE4_TENDENCIES beg:PRRCFRIG",PRECISION) + CALL MPPDB_CHECK1D(PRICFRR,"ICE4_TENDENCIES beg:PRICFRR",PRECISION) + CALL MPPDB_CHECK1D(PRGMLTR,"ICE4_TENDENCIES beg:PRGMLTR",PRECISION) + CALL MPPDB_CHECK1D(PRHMLTR,"ICE4_TENDENCIES beg:PRHMLTR",PRECISION) + CALL MPPDB_CHECK1D(PRCBERI,"ICE4_TENDENCIES beg:PRCBERI",PRECISION) + CALL MPPDB_CHECK2D(PRS_TEND,"ICE4_TENDENCIES beg:PRS_TEND",PRECISION) + CALL MPPDB_CHECK2D(PRG_TEND,"ICE4_TENDENCIES beg:PRG_TEND",PRECISION) + CALL MPPDB_CHECK2D(PRH_TEND,"ICE4_TENDENCIES beg:PRH_TEND",PRECISION) +END IF +! PA_TH(:)=0. PA_RV(:)=0. PA_RC(:)=0. @@ -590,4 +638,81 @@ CALL ICE4_FAST_RI(KSIZE, LDSOFT, LDCOMPUTE, & &PRCBERI, PA_TH, PA_RC, PA_RI) ! ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PCIT,"ICE4_TENDENCIES end:PCIT",PRECISION) + CALL MPPDB_CHECK1D(PRCHONI,"ICE4_TENDENCIES end:PRCHONI",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPS,"ICE4_TENDENCIES end:PRVDEPS",PRECISION) + CALL MPPDB_CHECK1D(PRIAGGS,"ICE4_TENDENCIES end:PRIAGGS",PRECISION) + CALL MPPDB_CHECK1D(PRIAUTS,"ICE4_TENDENCIES end:PRIAUTS",PRECISION) + CALL MPPDB_CHECK1D(PRVDEPG,"ICE4_TENDENCIES end:PRVDEPG",PRECISION) + CALL MPPDB_CHECK1D(PRCAUTR,"ICE4_TENDENCIES end:PRCAUTR",PRECISION) + CALL MPPDB_CHECK1D(PRCACCR,"ICE4_TENDENCIES end:PRCACCR",PRECISION) + CALL MPPDB_CHECK1D(PRREVAV,"ICE4_TENDENCIES end:PRREVAV",PRECISION) + CALL MPPDB_CHECK1D(PRSMLTG,"ICE4_TENDENCIES end:PRSMLTG",PRECISION) + CALL MPPDB_CHECK1D(PRCMLTSR,"ICE4_TENDENCIES end:PRCMLTSR",PRECISION) + CALL MPPDB_CHECK1D(PRICFRRG,"ICE4_TENDENCIES end:PRICFRRG",PRECISION) + CALL MPPDB_CHECK1D(PRRCFRIG,"ICE4_TENDENCIES end:PRRCFRIG",PRECISION) + CALL MPPDB_CHECK1D(PRICFRR,"ICE4_TENDENCIES end:PRICFRR",PRECISION) + CALL MPPDB_CHECK1D(PRGMLTR,"ICE4_TENDENCIES end:PRGMLTR",PRECISION) + CALL MPPDB_CHECK1D(PRHMLTR,"ICE4_TENDENCIES end:PRHMLTR",PRECISION) + CALL MPPDB_CHECK1D(PRCBERI,"ICE4_TENDENCIES end:PRCBERI",PRECISION) + CALL MPPDB_CHECK2D(PRS_TEND,"ICE4_TENDENCIES end:PRS_TEND",PRECISION) + CALL MPPDB_CHECK2D(PRG_TEND,"ICE4_TENDENCIES end:PRG_TEND",PRECISION) + CALL MPPDB_CHECK2D(PRH_TEND,"ICE4_TENDENCIES end:PRH_TEND",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK1D(PRCRIMSS,"ICE4_TENDENCIES end:PRCRIMSS",PRECISION) + CALL MPPDB_CHECK1D(PRCRIMSG,"ICE4_TENDENCIES end:PRCRIMSG",PRECISION) + CALL MPPDB_CHECK1D(PRSRIMCG,"ICE4_TENDENCIES end:PRSRIMCG",PRECISION) + CALL MPPDB_CHECK1D(PRRACCSS,"ICE4_TENDENCIES end:PRRACCSS",PRECISION) + CALL MPPDB_CHECK1D(PRRACCSG,"ICE4_TENDENCIES end:PRRACCSG",PRECISION) + CALL MPPDB_CHECK1D(PRSACCRG,"ICE4_TENDENCIES end:PRSACCRG",PRECISION) + CALL MPPDB_CHECK1D(PRVHENI_MR,"ICE4_TENDENCIES end:PRVHENI_MR",PRECISION) + CALL MPPDB_CHECK1D(PRRHONG_MR,"ICE4_TENDENCIES end:PRRHONG_MR",PRECISION) + CALL MPPDB_CHECK1D(PRIMLTC_MR,"ICE4_TENDENCIES end:PRIMLTC_MR",PRECISION) + CALL MPPDB_CHECK1D(PRSRIMCG_MR,"ICE4_TENDENCIES end:PRSRIMCG_MR",PRECISION) + CALL MPPDB_CHECK1D(PRCWETG,"ICE4_TENDENCIES end:PRCWETG",PRECISION) + CALL MPPDB_CHECK1D(PRIWETG,"ICE4_TENDENCIES end:PRIWETG",PRECISION) + CALL MPPDB_CHECK1D(PRRWETG,"ICE4_TENDENCIES end:PRRWETG",PRECISION) + CALL MPPDB_CHECK1D(PRSWETG,"ICE4_TENDENCIES end:PRSWETG",PRECISION) + CALL MPPDB_CHECK1D(PRCDRYG,"ICE4_TENDENCIES end:PRCDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRIDRYG,"ICE4_TENDENCIES end:PRIDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRRDRYG,"ICE4_TENDENCIES end:PRRDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRSDRYG,"ICE4_TENDENCIES end:PRSDRYG",PRECISION) + CALL MPPDB_CHECK1D(PRWETGH,"ICE4_TENDENCIES end:PRWETGH",PRECISION) + CALL MPPDB_CHECK1D(PRWETGH_MR,"ICE4_TENDENCIES end:PRWETGH_MR",PRECISION) + CALL MPPDB_CHECK1D(PRCWETH,"ICE4_TENDENCIES end:PRCWETH",PRECISION) + CALL MPPDB_CHECK1D(PRIWETH,"ICE4_TENDENCIES end:PRIWETH",PRECISION) + CALL MPPDB_CHECK1D(PRSWETH,"ICE4_TENDENCIES end:PRSWETH",PRECISION) + CALL MPPDB_CHECK1D(PRGWETH,"ICE4_TENDENCIES end:PRGWETH",PRECISION) + CALL MPPDB_CHECK1D(PRRWETH,"ICE4_TENDENCIES end:PRRWETH",PRECISION) + CALL MPPDB_CHECK1D(PRCDRYH,"ICE4_TENDENCIES end:PRCDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRIDRYH,"ICE4_TENDENCIES end:PRIDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRSDRYH,"ICE4_TENDENCIES end:PRSDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRRDRYH,"ICE4_TENDENCIES end:PRRDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRGDRYH,"ICE4_TENDENCIES end:PRGDRYH",PRECISION) + CALL MPPDB_CHECK1D(PRDRYHG,"ICE4_TENDENCIES end:PRDRYHG",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_TENDENCIES end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RV,"ICE4_TENDENCIES end:PA_RV",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_TENDENCIES end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_TENDENCIES end:PA_RR",PRECISION) + CALL MPPDB_CHECK1D(PA_RI,"ICE4_TENDENCIES end:PA_RI",PRECISION) + CALL MPPDB_CHECK1D(PA_RS,"ICE4_TENDENCIES end:PA_RS",PRECISION) + CALL MPPDB_CHECK1D(PA_RG,"ICE4_TENDENCIES end:PA_RG",PRECISION) + CALL MPPDB_CHECK1D(PA_RH,"ICE4_TENDENCIES end:PA_RH",PRECISION) + CALL MPPDB_CHECK1D(PB_TH,"ICE4_TENDENCIES end:PB_TH",PRECISION) + CALL MPPDB_CHECK1D(PB_RV,"ICE4_TENDENCIES end:PB_RV",PRECISION) + CALL MPPDB_CHECK1D(PB_RC,"ICE4_TENDENCIES end:PB_RC",PRECISION) + CALL MPPDB_CHECK1D(PB_RR,"ICE4_TENDENCIES end:PB_RR",PRECISION) + CALL MPPDB_CHECK1D(PB_RI,"ICE4_TENDENCIES end:PB_RI",PRECISION) + CALL MPPDB_CHECK1D(PB_RS,"ICE4_TENDENCIES end:PB_RS",PRECISION) + CALL MPPDB_CHECK1D(PB_RG,"ICE4_TENDENCIES end:PB_RG",PRECISION) + CALL MPPDB_CHECK1D(PB_RH,"ICE4_TENDENCIES end:PB_RH",PRECISION) + CALL MPPDB_CHECK1D(PHLC_HCF,"ICE4_TENDENCIES end:PHLC_HCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LCF,"ICE4_TENDENCIES end:PHLC_LCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_HRC,"ICE4_TENDENCIES end:PHLC_HRC",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LRC,"ICE4_TENDENCIES end:PHLC_LRC",PRECISION) + CALL MPPDB_CHECK3D(PRAINFR,"ICE4_TENDENCIES end:PRAINFR",PRECISION) +END IF +! END SUBROUTINE ICE4_TENDENCIES diff --git a/src/MNH/ice4_warm.f90 b/src/MNH/ice4_warm.f90 index 4966abd0f4f4f943bbd9848495a76aeb90c25c3b..659a44d880caba204b8825049d995d4f17ffe7e3 100644 --- a/src/MNH/ice4_warm.f90 +++ b/src/MNH/ice4_warm.f90 @@ -81,6 +81,8 @@ USE MODE_MSG USE MODI_BITREP #endif ! +USE MODE_MPPDB +! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : @@ -126,9 +128,37 @@ REAL :: ZTIMAUTIC LOGICAL, DIMENSION(SIZE(PRHODREF)) :: GMASK, GMASK1, GMASK2 !------------------------------------------------------------------------------- ! -! -! -!------------------------------------------------------------------------------- +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK1D_LOG(LDCOMPUTE,"ICE4_WARM beg:LDCOMPUTE") + CALL MPPDB_CHECK1D(PRHODREF,"ICE4_WARM beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK1D(PLVFACT,"ICE4_WARM beg:PLVFACT",PRECISION) + CALL MPPDB_CHECK1D(PT,"ICE4_WARM beg:PT",PRECISION) + CALL MPPDB_CHECK1D(PPRES,"ICE4_WARM beg:PPRES",PRECISION) + CALL MPPDB_CHECK1D(PTHT,"ICE4_WARM beg:PTHT",PRECISION) + CALL MPPDB_CHECK1D(PLBDAR,"ICE4_WARM beg:PLBDAR",PRECISION) + CALL MPPDB_CHECK1D(PLBDAR_RF,"ICE4_WARM beg:PLBDAR_RF",PRECISION) + CALL MPPDB_CHECK1D(PKA,"ICE4_WARM beg:PKA",PRECISION) + CALL MPPDB_CHECK1D(PDV,"ICE4_WARM beg:PDV",PRECISION) + CALL MPPDB_CHECK1D(PCJ,"ICE4_WARM beg:PCJ",PRECISION) + CALL MPPDB_CHECK1D(PHLC_HCF,"ICE4_WARM beg:PHLC_HCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LCF,"ICE4_WARM beg:PHLC_LCF",PRECISION) + CALL MPPDB_CHECK1D(PHLC_HRC,"ICE4_WARM beg:PHLC_HRC",PRECISION) + CALL MPPDB_CHECK1D(PHLC_LRC,"ICE4_WARM beg:PHLC_LRC",PRECISION) + CALL MPPDB_CHECK1D(PCF,"ICE4_WARM beg:PCF",PRECISION) + CALL MPPDB_CHECK1D(PRF,"ICE4_WARM beg:PRF",PRECISION) + CALL MPPDB_CHECK1D(PRVT,"ICE4_WARM beg:PRVT",PRECISION) + CALL MPPDB_CHECK1D(PRCT,"ICE4_WARM beg:PRCT",PRECISION) + CALL MPPDB_CHECK1D(PRRT,"ICE4_WARM beg:PRRT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCAUTR,"ICE4_WARM beg:PRCAUTR",PRECISION) + CALL MPPDB_CHECK1D(PRCACCR,"ICE4_WARM beg:PRCACCR",PRECISION) + CALL MPPDB_CHECK1D(PRREVAV,"ICE4_WARM beg:PRREVAV",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_WARM beg:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RV,"ICE4_WARM beg:PA_RV",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_WARM beg:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_WARM beg:PA_RR",PRECISION) +END IF ! !* 4.2 compute the autoconversion of r_c for r_r production: RCAUTR ! @@ -326,5 +356,15 @@ PA_RR(:) = PA_RR(:) - PRREVAV(:) PA_RV(:) = PA_RV(:) + PRREVAV(:) PA_TH(:) = PA_TH(:) - PRREVAV(:)*PLVFACT(:) ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK1D(PRCAUTR,"ICE4_WARM end:PRCAUTR",PRECISION) + CALL MPPDB_CHECK1D(PRCACCR,"ICE4_WARM end:PRCACCR",PRECISION) + CALL MPPDB_CHECK1D(PRREVAV,"ICE4_WARM end:PRREVAV",PRECISION) + CALL MPPDB_CHECK1D(PA_TH,"ICE4_WARM end:PA_TH",PRECISION) + CALL MPPDB_CHECK1D(PA_RV,"ICE4_WARM end:PA_RV",PRECISION) + CALL MPPDB_CHECK1D(PA_RC,"ICE4_WARM end:PA_RC",PRECISION) + CALL MPPDB_CHECK1D(PA_RR,"ICE4_WARM end:PA_RR",PRECISION) +END IF ! END SUBROUTINE ICE4_WARM diff --git a/src/MNH/ice_adjust.f90 b/src/MNH/ice_adjust.f90 index fb0b65f8c0acc69e9f0bf4f3bd5b17ccfa609684..e09adabe22b14b69e287eac8a46a4154ec94eb38 100644 --- a/src/MNH/ice_adjust.f90 +++ b/src/MNH/ice_adjust.f90 @@ -183,6 +183,7 @@ USE MODI_GET_HALO #ifdef MNH_BITREP USE MODI_BITREP #endif +USE MODE_MPPDB ! IMPLICIT NONE ! @@ -289,6 +290,30 @@ INTEGER :: JI,JJ,JK !* 1. PRELIMINARIES ! ------------- ! +!Check all IN arrays +CALL MPPDB_CHECK3D(PRHODJ,"ICE_ADJUST beg:PRHODJ",PRECISION) +CALL MPPDB_CHECK3D(PEXNREF,"ICE_ADJUST beg:PEXNREF",PRECISION) +CALL MPPDB_CHECK3D(PSIGS,"ICE_ADJUST beg:PSIGS",PRECISION) +CALL MPPDB_CHECK3D(PMFCONV,"ICE_ADJUST beg:PMFCONV",PRECISION) +CALL MPPDB_CHECK3D(PPABST,"ICE_ADJUST beg:PPABST",PRECISION) +CALL MPPDB_CHECK3D(PZZ,"ICE_ADJUST beg:PZZ",PRECISION) +CALL MPPDB_CHECK3D(PEXN,"ICE_ADJUST beg:PEXN",PRECISION) +CALL MPPDB_CHECK3D(PCF_MF,"ICE_ADJUST beg:PCF_MF",PRECISION) +CALL MPPDB_CHECK3D(PRC_MF,"ICE_ADJUST beg:PRC_MF",PRECISION) +CALL MPPDB_CHECK3D(PRI_MF,"ICE_ADJUST begPRI_MF:",PRECISION) +CALL MPPDB_CHECK3D(PRV,"ICE_ADJUST beg:PRV",PRECISION) +CALL MPPDB_CHECK3D(PRC,"ICE_ADJUST beg:PRC",PRECISION) +CALL MPPDB_CHECK3D(PTH,"ICE_ADJUST beg:PTH",PRECISION) +CALL MPPDB_CHECK3D(PRR,"ICE_ADJUST beg:PRR",PRECISION) +CALL MPPDB_CHECK3D(PRI,"ICE_ADJUST beg:PRI",PRECISION) +CALL MPPDB_CHECK3D(PRS,"ICE_ADJUST beg:PRS",PRECISION) +CALL MPPDB_CHECK3D(PRG,"ICE_ADJUST beg:PRG",PRECISION) +!Check all INOUT arrays +CALL MPPDB_CHECK3D(PRVS,"ICE_ADJUST beg:PRVS",PRECISION) +CALL MPPDB_CHECK3D(PRCS,"ICE_ADJUST beg:PRCS",PRECISION) +CALL MPPDB_CHECK3D(PTHS,"ICE_ADJUST beg:PTHS",PRECISION) +CALL MPPDB_CHECK3D(PRIS,"ICE_ADJUST beg:PRIS",PRECISION) +! IIU = SIZE(PEXNREF,1) IJU = SIZE(PEXNREF,2) IKU = SIZE(PEXNREF,3) @@ -494,5 +519,13 @@ END IF ! !------------------------------------------------------------------------------ ! +!Check all INOUT arrays +CALL MPPDB_CHECK3D(PRVS,"ICE_ADJUST end:PRVS",PRECISION) +CALL MPPDB_CHECK3D(PRCS,"ICE_ADJUST end:PRCS",PRECISION) +CALL MPPDB_CHECK3D(PTHS,"ICE_ADJUST end:PTHS",PRECISION) +CALL MPPDB_CHECK3D(PRIS,"ICE_ADJUST end:PRIS",PRECISION) +!Check all OUT arrays +CALL MPPDB_CHECK3D(PSRCS,"ICE_ADJUST end:PSRCS",PRECISION) +CALL MPPDB_CHECK3D(PCLDFR,"ICE_ADJUST end:PCLDFR",PRECISION) ! END SUBROUTINE ICE_ADJUST diff --git a/src/MNH/rain_ice.f90 b/src/MNH/rain_ice.f90 index be405279640d3018ef45363bafee977f6c1d8feb..230db2358df08ff79635002ad8e1832a455ea86a 100644 --- a/src/MNH/rain_ice.f90 +++ b/src/MNH/rain_ice.f90 @@ -263,6 +263,7 @@ USE MODE_PACK_PGI #ifdef MNH_BITREP USE MODI_BITREP #endif +USE MODE_MPPDB ! IMPLICIT NONE ! @@ -526,6 +527,45 @@ LOGICAL :: GPRESENT_PFPR,GPRESENT_PSEA !$acc & GSEDIMR,GSEDIMC,GSEDIMI,GSEDIMS,GSEDIMG,GSEDIMH, & !$acc & GNEGT,I1,I2,I3 ) ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK3D(PDZZ,"RAIN_ICE beg:PDZZ",PRECISION) + CALL MPPDB_CHECK3D(PRHODJ,"RAIN_ICE beg:PRHODJ",PRECISION) + CALL MPPDB_CHECK3D(PRHODREF,"RAIN_ICE beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK3D(PEXNREF,"RAIN_ICE beg:PEXNREF",PRECISION) + CALL MPPDB_CHECK3D(PPABST,"RAIN_ICE beg:PPABST",PRECISION) + CALL MPPDB_CHECK3D(PCLDFR,"RAIN_ICE beg:PCLDFR",PRECISION) + CALL MPPDB_CHECK3D(PTHT,"RAIN_ICE beg:PTHT",PRECISION) + CALL MPPDB_CHECK3D(PRVT,"RAIN_ICE beg:PRVT",PRECISION) + CALL MPPDB_CHECK3D(PRCT,"RAIN_ICE beg:PRCT",PRECISION) + CALL MPPDB_CHECK3D(PRRT,"RAIN_ICE beg:PRRT",PRECISION) + CALL MPPDB_CHECK3D(PRIT,"RAIN_ICE beg:PRIT",PRECISION) + CALL MPPDB_CHECK3D(PRST,"RAIN_ICE beg:PRST",PRECISION) + CALL MPPDB_CHECK3D(PRGT,"RAIN_ICE beg:PRGT",PRECISION) + CALL MPPDB_CHECK3D(PSIGS,"RAIN_ICE beg:PSIGS",PRECISION) + IF (PRESENT(PSEA)) CALL MPPDB_CHECK2D(PSEA,"RAIN_ICE beg:PSEA",PRECISION) + IF (PRESENT(PTOWN)) CALL MPPDB_CHECK2D(PTOWN,"RAIN_ICE beg:PTOWN",PRECISION) + IF (PRESENT(PRHT)) CALL MPPDB_CHECK3D(PRHT,"RAIN_ICE beg:PRHT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"RAIN_ICE beg:PCIT",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RAIN_ICE beg:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRVS,"RAIN_ICE beg:PRVS",PRECISION) + CALL MPPDB_CHECK3D(PRCS,"RAIN_ICE beg:PRCS",PRECISION) + CALL MPPDB_CHECK3D(PRRS,"RAIN_ICE beg:PRRS",PRECISION) + CALL MPPDB_CHECK3D(PRIS,"RAIN_ICE beg:PRIS",PRECISION) + CALL MPPDB_CHECK3D(PRSS,"RAIN_ICE beg:PRSS",PRECISION) + CALL MPPDB_CHECK3D(PRGS,"RAIN_ICE beg:PRGS",PRECISION) + CALL MPPDB_CHECK2D(PINPRC,"RAIN_ICE beg:PINPRC",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RAIN_ICE beg:PINDEP",PRECISION) + CALL MPPDB_CHECK2D(PINPRR,"RAIN_ICE beg:PINPRR",PRECISION) + CALL MPPDB_CHECK3D(PINPRR3D,"RAIN_ICE beg:PINPRR3D",PRECISION) + CALL MPPDB_CHECK3D(PEVAP3D,"RAIN_ICE beg:PEVAP3D",PRECISION) + CALL MPPDB_CHECK2D(PINPRS,"RAIN_ICE beg:PINPRS",PRECISION) + CALL MPPDB_CHECK2D(PINPRG,"RAIN_ICE beg:PINPRG",PRECISION) + IF (PRESENT(PRHS)) CALL MPPDB_CHECK3D(PRHS,"RAIN_ICE beg:PRHS",PRECISION) + IF (PRESENT(PINPRH)) CALL MPPDB_CHECK2D(PINPRH,"RAIN_ICE beg:PINPRH",PRECISION) +END IF +! #ifdef _OPENACC IF ( KRR == 7 ) THEN PRINT *,'OPENACC: RAIN_ICE: KRR=7 not yet tested' @@ -1302,6 +1342,32 @@ CALL RAINFR_VERT(ZRAINFR,ZW) ! !$acc end data ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"RAIN_ICE end:PCIT",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RAIN_ICE end:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRVS,"RAIN_ICE end:PRVS",PRECISION) + CALL MPPDB_CHECK3D(PRCS,"RAIN_ICE end:PRCS",PRECISION) + CALL MPPDB_CHECK3D(PRRS,"RAIN_ICE end:PRRS",PRECISION) + CALL MPPDB_CHECK3D(PRIS,"RAIN_ICE end:PRIS",PRECISION) + CALL MPPDB_CHECK3D(PRSS,"RAIN_ICE end:PRSS",PRECISION) + CALL MPPDB_CHECK3D(PRGS,"RAIN_ICE end:PRGS",PRECISION) + CALL MPPDB_CHECK2D(PINPRC,"RAIN_ICE end:PINPRC",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RAIN_ICE end:PINDEP",PRECISION) + CALL MPPDB_CHECK2D(PINPRR,"RAIN_ICE end:PINPRR",PRECISION) + CALL MPPDB_CHECK3D(PINPRR3D,"RAIN_ICE end:PINPRR3D",PRECISION) + CALL MPPDB_CHECK3D(PEVAP3D,"RAIN_ICE end:PEVAP3D",PRECISION) + CALL MPPDB_CHECK2D(PINPRS,"RAIN_ICE end:PINPRS",PRECISION) + CALL MPPDB_CHECK2D(PINPRG,"RAIN_ICE end:PINPRG",PRECISION) + IF (PRESENT(PRHS)) CALL MPPDB_CHECK3D(PRHS,"RAIN_ICE end:PRHS",PRECISION) + IF (PRESENT(PINPRH)) CALL MPPDB_CHECK2D(PINPRH,"RAIN_ICE end:PINPRH",PRECISION) + !Check all OUT arrays + IF (PRESENT(PFPR)) THEN + DO JL=1,SIZE(PFPR,4) + CALL MPPDB_CHECK3D(PFPR(:,:,:,JL),"RAIN_ICE end:PFPR(:,:,:,JL)",PRECISION) + END DO + END IF +END IF !------------------------------------------------------------------------------- ! !------------------------------------------------------------------------------- diff --git a/src/MNH/rain_ice_red.f90 b/src/MNH/rain_ice_red.f90 index efe1df09ac971d51edc5107d46609dd918db0fff..3dca1dbb515d038cb474497e39141bbac3ff52e7 100644 --- a/src/MNH/rain_ice_red.f90 +++ b/src/MNH/rain_ice_red.f90 @@ -261,6 +261,7 @@ USE MODE_MSG #ifdef MNH_PGI USE MODE_PACK_PGI #endif +USE MODE_MPPDB ! IMPLICIT NONE ! @@ -483,6 +484,40 @@ REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: & ! !PW: to remove later when everything on GPU !$acc update self(PDZZ,PCLDFR,PTHS,PRVS,PRCS,PRIS) +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK3D_LOG(LDMICRO,"RAIN_ICE_RED beg:LDMICRO") + CALL MPPDB_CHECK3D(PEXN,"RAIN_ICE_RED beg:PEXN",PRECISION) + CALL MPPDB_CHECK3D(PDZZ,"RAIN_ICE_RED beg:PDZZ",PRECISION) + CALL MPPDB_CHECK3D(PRHODJ,"RAIN_ICE_RED beg:PRHODJ",PRECISION) + CALL MPPDB_CHECK3D(PRHODREF,"RAIN_ICE_RED beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK3D(PEXNREF,"RAIN_ICE_RED beg:PEXNREF",PRECISION) + CALL MPPDB_CHECK3D(PPABST,"RAIN_ICE_RED beg:PPABST",PRECISION) + CALL MPPDB_CHECK3D(PCLDFR,"RAIN_ICE_RED beg:PCLDFR",PRECISION) + CALL MPPDB_CHECK3D(PTHT,"RAIN_ICE_RED beg:PTHT",PRECISION) + CALL MPPDB_CHECK3D(PRVT,"RAIN_ICE_RED beg:PRVT",PRECISION) + CALL MPPDB_CHECK3D(PRCT,"RAIN_ICE_RED beg:PRCT",PRECISION) + CALL MPPDB_CHECK3D(PRRT,"RAIN_ICE_RED beg:PRRT",PRECISION) + CALL MPPDB_CHECK3D(PRIT,"RAIN_ICE_RED beg:PRIT",PRECISION) + CALL MPPDB_CHECK3D(PRST,"RAIN_ICE_RED beg:PRST",PRECISION) + CALL MPPDB_CHECK3D(PRGT,"RAIN_ICE_RED beg:PRGT",PRECISION) + CALL MPPDB_CHECK3D(PSIGS,"RAIN_ICE_RED beg:PSIGS",PRECISION) + IF (PRESENT(PSEA)) CALL MPPDB_CHECK2D(PSEA,"RAIN_ICE_RED beg:PSEA",PRECISION) + IF (PRESENT(PTOWN)) CALL MPPDB_CHECK2D(PTOWN,"RAIN_ICE_RED beg:PTOWN",PRECISION) + IF (PRESENT(PRHT)) CALL MPPDB_CHECK3D(PRHT,"RAIN_ICE_RED beg:PRHT",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"RAIN_ICE_RED beg:PCIT",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RAIN_ICE_RED beg:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRVS,"RAIN_ICE_RED beg:PRVS",PRECISION) + CALL MPPDB_CHECK3D(PRCS,"RAIN_ICE_RED beg:PRCS",PRECISION) + CALL MPPDB_CHECK3D(PRRS,"RAIN_ICE_RED beg:PRRS",PRECISION) + CALL MPPDB_CHECK3D(PRIS,"RAIN_ICE_RED beg:PRIS",PRECISION) + CALL MPPDB_CHECK3D(PRSS,"RAIN_ICE_RED beg:PRSS",PRECISION) + CALL MPPDB_CHECK3D(PRGS,"RAIN_ICE_RED beg:PRGS",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RAIN_ICE_RED beg:PINDEP",PRECISION) + IF (PRESENT(PRHS)) CALL MPPDB_CHECK3D(PRHS,"RAIN_ICE_RED beg:PRHS",PRECISION) +END IF +! !------------------------------------------------------------------------------- ! !------------------------------------------------------------------------------- @@ -1582,6 +1617,32 @@ IF (PRESENT(PFPR)) THEN !$acc update device(PFPR) END IF ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PCIT,"RAIN_ICE_RED end:PCIT",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RAIN_ICE_RED end:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRVS,"RAIN_ICE_RED end:PRVS",PRECISION) + CALL MPPDB_CHECK3D(PRCS,"RAIN_ICE_RED end:PRCS",PRECISION) + CALL MPPDB_CHECK3D(PRRS,"RAIN_ICE_RED end:PRRS",PRECISION) + CALL MPPDB_CHECK3D(PRIS,"RAIN_ICE_RED end:PRIS",PRECISION) + CALL MPPDB_CHECK3D(PRSS,"RAIN_ICE_RED end:PRSS",PRECISION) + CALL MPPDB_CHECK3D(PRGS,"RAIN_ICE_RED end:PRGS",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RAIN_ICE_RED end:PINDEP",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK2D(PINPRC,"RAIN_ICE_RED end:PINPRC",PRECISION) + CALL MPPDB_CHECK2D(PINPRR,"RAIN_ICE_RED end:PINPRR",PRECISION) + CALL MPPDB_CHECK3D(PINPRR3D,"RAIN_ICE_RED end:PINPRR3D",PRECISION) + CALL MPPDB_CHECK3D(PEVAP3D,"RAIN_ICE_RED end:PEVAP3D",PRECISION) + CALL MPPDB_CHECK2D(PINPRS,"RAIN_ICE_RED end:PINPRS",PRECISION) + CALL MPPDB_CHECK2D(PINPRG,"RAIN_ICE_RED end:PINPRG",PRECISION) + IF (PRESENT(PINPRH)) CALL MPPDB_CHECK2D(PINPRH,"RAIN_ICE_RED end:PINPRH",PRECISION) + IF (PRESENT(PFPR)) THEN + DO JL=1,SIZE(PFPR,4) + CALL MPPDB_CHECK3D(PFPR(:,:,:,JL),"RAIN_ICE_RED end:PFPR(:,:,:,JL)",PRECISION) + END DO + END IF +END IF +! CONTAINS FUNCTION RAIN_ICE_COUNTJV(LTAB, KIT, KJT, KKT, KSIZE, I1,I2,I3) RESULT(IC) ! diff --git a/src/MNH/resolved_cloud.f90 b/src/MNH/resolved_cloud.f90 index 6bc88ca4533d63053713bfe0112f40fd2c02c01d..47da8f9cc053c806f71ac60682e73670d62c8630 100644 --- a/src/MNH/resolved_cloud.f90 +++ b/src/MNH/resolved_cloud.f90 @@ -1,6 +1,6 @@ -!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2018 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 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. ! $Source: /srv/cvsroot/MNH-VX-Y-Z/src/MNH/resolved_cloud.f90,v $ !----------------------------------------------------------------- @@ -321,6 +321,7 @@ USE MODI_LIMA_ADJUST #ifdef MNH_BITREP USE MODI_BITREP #endif +USE MODE_MPPDB ! IMPLICIT NONE ! @@ -511,6 +512,70 @@ REAL,DIMENSION(SIZE(PRS,1),SIZE(PRS,2),SIZE(PRS,3),SIZE(PRS,4)) :: ZRSSTEP !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! +IF (MPPDB_INITIALIZED) THEN + !Check all IN arrays + CALL MPPDB_CHECK3D(PZZ,"RESOLVED_CLOUD beg:PZZ",PRECISION) + CALL MPPDB_CHECK3D(PRHODJ,"RESOLVED_CLOUD beg:PRHODJ",PRECISION) + CALL MPPDB_CHECK3D(PRHODREF,"RESOLVED_CLOUD beg:PRHODREF",PRECISION) + CALL MPPDB_CHECK3D(PEXNREF,"RESOLVED_CLOUD beg:PEXNREF",PRECISION) + CALL MPPDB_CHECK3D(PPABST,"RESOLVED_CLOUD beg:PPABST",PRECISION) + CALL MPPDB_CHECK3D(PTHT,"RESOLVED_CLOUD beg:PTHT",PRECISION) + CALL MPPDB_CHECK3D(PSIGS,"RESOLVED_CLOUD beg:PSIGS",PRECISION) + CALL MPPDB_CHECK3D(PMFCONV,"RESOLVED_CLOUD beg:PMFCONV",PRECISION) + CALL MPPDB_CHECK3D(PTHM,"RESOLVED_CLOUD beg:PTHM",PRECISION) + CALL MPPDB_CHECK3D(PPABSM,"RESOLVED_CLOUD beg:PPABSM",PRECISION) + CALL MPPDB_CHECK3D(PRCM,"RESOLVED_CLOUD beg:PRCM",PRECISION) + CALL MPPDB_CHECK3D(PW_ACT,"RESOLVED_CLOUD beg:PW_ACT",PRECISION) + CALL MPPDB_CHECK3D(PDTHRAD,"RESOLVED_CLOUD beg:PDTHRAD",PRECISION) + CALL MPPDB_CHECK3D(PCF_MF,"RESOLVED_CLOUD beg:PCF_MF",PRECISION) + CALL MPPDB_CHECK3D(PRC_MF,"RESOLVED_CLOUD beg:PRC_MF",PRECISION) + CALL MPPDB_CHECK3D(PRI_MF,"RESOLVED_CLOUD beg:PRI_MF",PRECISION) + ! DO JI=1,SIZE(PSOLORG,4) + ! CALL MPPDB_CHECK3D(PSOLORG(:,:,:,JI),"RESOLVED_CLOUD beg:PSOLORG(:,:,:,JI)",PRECISION) + ! END DO + ! DO JI=1,SIZE(PMI,4) + ! CALL MPPDB_CHECK3D(PMI(:,:,:,JI),"RESOLVED_CLOUD beg:PMI(:,:,:,JI)",PRECISION) + ! END DO + IF (PRESENT(PSEA)) CALL MPPDB_CHECK2D(PSEA,"RESOLVED_CLOUD beg:PSEA",PRECISION) + IF (PRESENT(PTOWN)) CALL MPPDB_CHECK2D(PTOWN,"RESOLVED_CLOUD beg:PTOWN",PRECISION) + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PRT(:,:,:,1),"RESOLVED_CLOUD beg:PRT(:,:,:,1)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,2),"RESOLVED_CLOUD beg:PRT(:,:,:,2)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,3),"RESOLVED_CLOUD beg:PRT(:,:,:,3)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,4),"RESOLVED_CLOUD beg:PRT(:,:,:,4)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,5),"RESOLVED_CLOUD beg:PRT(:,:,:,5)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,6),"RESOLVED_CLOUD beg:PRT(:,:,:,6)",PRECISION) + IF(SIZE(PRT,4)>6) CALL MPPDB_CHECK3D(PRT(:,:,:,7),"RESOLVED_CLOUD beg:PRT(:,:,:,7)",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RESOLVED_CLOUD beg:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,1),"RESOLVED_CLOUD beg:PRS(:,:,:,1)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,2),"RESOLVED_CLOUD beg:PRS(:,:,:,2)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,3),"RESOLVED_CLOUD beg:PRS(:,:,:,3)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,4),"RESOLVED_CLOUD beg:PRS(:,:,:,4)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,5),"RESOLVED_CLOUD beg:PRS(:,:,:,5)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,6),"RESOLVED_CLOUD beg:PRS(:,:,:,6)",PRECISION) + IF(SIZE(PRS,4)>6) CALL MPPDB_CHECK3D(PRS(:,:,:,7),"RESOLVED_CLOUD beg:PRS(:,:,:,7)",PRECISION) + DO JI=1,SIZE(PSVT,4) + CALL MPPDB_CHECK3D(PSVT(:,:,:,JI),"RESOLVED_CLOUD beg:PSVT(:,:,:,JI)",PRECISION) + END DO + DO JI=1,SIZE(PSVS,4) + CALL MPPDB_CHECK3D(PSVS(:,:,:,JI),"RESOLVED_CLOUD beg:PSVS(:,:,:,JI)",PRECISION) + END DO + CALL MPPDB_CHECK3D(PCLDFR,"RESOLVED_CLOUD beg:PCLDFR",PRECISION) + CALL MPPDB_CHECK3D(PCIT,"RESOLVED_CLOUD beg:PCIT",PRECISION) + CALL MPPDB_CHECK2D(PINPRC,"RESOLVED_CLOUD beg:PINPRC",PRECISION) + CALL MPPDB_CHECK2D(PINPRR,"RESOLVED_CLOUD beg:PINPRR",PRECISION) + CALL MPPDB_CHECK3D(PINPRR3D,"RESOLVED_CLOUD beg:PINPRR3D",PRECISION) + CALL MPPDB_CHECK3D(PEVAP3D,"RESOLVED_CLOUD beg:PEVAP3D",PRECISION) + CALL MPPDB_CHECK2D(PINPRS,"RESOLVED_CLOUD beg:PINPRS",PRECISION) + CALL MPPDB_CHECK2D(PINPRG,"RESOLVED_CLOUD beg:PINPRG",PRECISION) + CALL MPPDB_CHECK2D(PINPRH,"RESOLVED_CLOUD beg:PINPRH",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RESOLVED_CLOUD beg:PINDEP",PRECISION) + CALL MPPDB_CHECK3D(PSUPSAT,"RESOLVED_CLOUD beg:PSUPSAT",PRECISION) + CALL MPPDB_CHECK3D(PNACT,"RESOLVED_CLOUD beg:PNACT",PRECISION) + CALL MPPDB_CHECK3D(PNPRO,"RESOLVED_CLOUD beg:PNPRO",PRECISION) + CALL MPPDB_CHECK3D(PSSPRO,"RESOLVED_CLOUD beg:PSSPRO",PRECISION) +END IF +! CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) IKB=1+JPVEXT IKE=SIZE(PZZ,3) - JPVEXT @@ -1407,6 +1472,48 @@ IF (HCLOUD=='C2R2' .OR. HCLOUD=='C3R5' .OR. HCLOUD=='KHKO' .OR. HCLOUD=='LIMA') DEALLOCATE(ZSVT) ENDIF ! +IF (MPPDB_INITIALIZED) THEN + !Check all INOUT arrays + CALL MPPDB_CHECK3D(PRT(:,:,:,1),"RESOLVED_CLOUD end:PRT(:,:,:,1)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,2),"RESOLVED_CLOUD end:PRT(:,:,:,2)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,3),"RESOLVED_CLOUD end:PRT(:,:,:,3)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,4),"RESOLVED_CLOUD end:PRT(:,:,:,4)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,5),"RESOLVED_CLOUD end:PRT(:,:,:,5)",PRECISION) + CALL MPPDB_CHECK3D(PRT(:,:,:,6),"RESOLVED_CLOUD end:PRT(:,:,:,6)",PRECISION) + IF(SIZE(PRT,4)>6) CALL MPPDB_CHECK3D(PRT(:,:,:,7),"RESOLVED_CLOUD end:PRT(:,:,:,7)",PRECISION) + CALL MPPDB_CHECK3D(PTHS,"RESOLVED_CLOUD end:PTHS",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,1),"RESOLVED_CLOUD end:PRS(:,:,:,1)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,2),"RESOLVED_CLOUD end:PRS(:,:,:,2)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,3),"RESOLVED_CLOUD end:PRS(:,:,:,3)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,4),"RESOLVED_CLOUD end:PRS(:,:,:,4)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,5),"RESOLVED_CLOUD end:PRS(:,:,:,5)",PRECISION) + CALL MPPDB_CHECK3D(PRS(:,:,:,6),"RESOLVED_CLOUD end:PRS(:,:,:,6)",PRECISION) + IF(SIZE(PRS,4)>6) CALL MPPDB_CHECK3D(PRS(:,:,:,7),"RESOLVED_CLOUD end:PRS(:,:,:,7)",PRECISION) + DO JI=1,SIZE(PSVT,4) + CALL MPPDB_CHECK3D(PSVT(:,:,:,JI),"RESOLVED_CLOUD end:PSVT(:,:,:,JI)",PRECISION) + END DO + DO JI=1,SIZE(PSVS,4) + CALL MPPDB_CHECK3D(PSVS(:,:,:,JI),"RESOLVED_CLOUD end:PSVS(:,:,:,JI)",PRECISION) + END DO + CALL MPPDB_CHECK3D(PCLDFR,"RESOLVED_CLOUD end:PCLDFR",PRECISION) + CALL MPPDB_CHECK3D(PCIT,"RESOLVED_CLOUD end:PCIT",PRECISION) + CALL MPPDB_CHECK2D(PINPRC,"RESOLVED_CLOUD end:PINPRC",PRECISION) + CALL MPPDB_CHECK2D(PINPRR,"RESOLVED_CLOUD end:PINPRR",PRECISION) + CALL MPPDB_CHECK3D(PINPRR3D,"RESOLVED_CLOUD end:PINPRR3D",PRECISION) + CALL MPPDB_CHECK3D(PEVAP3D,"RESOLVED_CLOUD end:PEVAP3D",PRECISION) + CALL MPPDB_CHECK2D(PINPRS,"RESOLVED_CLOUD end:PINPRS",PRECISION) + CALL MPPDB_CHECK2D(PINPRG,"RESOLVED_CLOUD end:PINPRG",PRECISION) + CALL MPPDB_CHECK2D(PINPRH,"RESOLVED_CLOUD end:PINPRH",PRECISION) + CALL MPPDB_CHECK2D(PINDEP,"RESOLVED_CLOUD end:PINDEP",PRECISION) + CALL MPPDB_CHECK3D(PSUPSAT,"RESOLVED_CLOUD end:PSUPSAT",PRECISION) + CALL MPPDB_CHECK3D(PNACT,"RESOLVED_CLOUD end:PNACT",PRECISION) + CALL MPPDB_CHECK3D(PNPRO,"RESOLVED_CLOUD end:PNPRO",PRECISION) + CALL MPPDB_CHECK3D(PSSPRO,"RESOLVED_CLOUD end:PSSPRO",PRECISION) + !Check all OUT arrays + CALL MPPDB_CHECK3D(PSRCS,"RESOLVED_CLOUD end:PSRCS",PRECISION) + ! CALL MPPDB_CHECK3DM("RESOLVED_CLOUD: 99: PRS(1:6)",PRECISION,& + ! & PRS(:,:,:,1),PRS(:,:,:,2),PRS(:,:,:,3),PRS(:,:,:,4),PRS(:,:,:,5),PRS(:,:,:,6)) +END IF !------------------------------------------------------------------------------- ! END SUBROUTINE RESOLVED_CLOUD