Skip to content
Snippets Groups Projects
Commit f8b503f8 authored by RODIER Quentin's avatar RODIER Quentin
Browse files

Quentin 16/12/2022: bugfix, supress arguments keys when the modd structure is already present

parent 3433624a
No related branches found
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@ MODULE MODE_ICE4_SEDIMENTATION_SPLIT_MOMENTUM
IMPLICIT NONE
CONTAINS
SUBROUTINE ICE4_SEDIMENTATION_SPLIT_MOMENTUM(KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT, KKL, &
&PTSTEP, KRR, PARAMI%LSEDIC, OMOMENTUM, PDZZ, &
&PTSTEP, KRR, OSEDIC, OMOMENTUM, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
&PINPRC, PINPRR, PINPRI, PINPRS, PINPRG, &
......@@ -51,7 +51,7 @@ INTEGER, INTENT(IN) :: KIB, KIE, KIT, KJB, KJE, KJT, KKB, KKE, KKTB, KKTE, KKT
INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO
REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start)
INTEGER, INTENT(IN) :: KRR ! Number of moist variable
LOGICAL, INTENT(IN) :: PARAMI%LSEDIC ! Switch for droplet sedim.
LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim.
LOGICAL, INTENT(IN) :: OMOMENTUM ! Switch to use momentum flux
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PDZZ ! Layer thikness (m)
REAL, DIMENSION(KIT,KJT,KKT), INTENT(IN) :: PRHODREF! Reference density
......@@ -119,7 +119,7 @@ REAL, DIMENSION(SIZE(XRTMIN)) :: ZRSMIN
!
ZINVTSTEP=1./PTSTEP
ZRSMIN(:) = XRTMIN(:) * ZINVTSTEP
IF (PARAMI%LSEDIC) PINPRC (:,:) = 0.
IF (OSEDIC) PINPRC (:,:) = 0.
PINPRR (:,:) = 0.
PINPRI (:,:) = 0.
PINPRS (:,:) = 0.
......@@ -129,7 +129,7 @@ IF (PRESENT(PFPR)) PFPR(:,:,:,:) = 0.
!
!* 1. Parameters for cloud sedimentation
!
IF (PARAMI%LSEDIC) THEN
IF (OSEDIC) THEN
ZRAY(:,:,:) = 0.
ZLBC(:,:,:) = XLBC(1)
ZFSEDC(:,:,:) = XFSEDC(1)
......@@ -160,7 +160,7 @@ ENDIF
! For optimization we consider each variable separately
!
! External tendecies
IF (PARAMI%LSEDIC) THEN
IF (OSEDIC) THEN
ZPRCS(:,:,:) = PRCS(:,:,:)-PRCT(:,:,:)*ZINVTSTEP
ENDIF
ZPRRS(:,:,:) = PRRS(:,:,:)-PRRT(:,:,:)*ZINVTSTEP
......@@ -188,7 +188,7 @@ END DO
!
!* 2.1 for cloud
!
IF (PARAMI%LSEDIC) THEN
IF (OSEDIC) THEN
ZREMAINT(:,:) = PTSTEP
FIRST = .TRUE.
DO WHILE (ANY(ZREMAINT>0.))
......
......@@ -7,7 +7,7 @@ MODULE MODE_ICE4_SEDIMENTATION_STAT
IMPLICIT NONE
CONTAINS
SUBROUTINE ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PTSTEP, KRR, OSEDIC, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&PLBDAS, &
&PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, &
......@@ -57,7 +57,7 @@ TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP
TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED
REAL, INTENT(IN) :: PTSTEP ! Double Time step (single if cold start)
INTEGER, INTENT(IN) :: KRR ! Number of moist variable
LOGICAL, INTENT(IN) :: PARAMI%LSEDIC ! Switch for droplet sedim.
LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim.
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PDZZ ! Layer thikness (m)
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PRHODREF! Reference density
REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN) :: PPABST ! absolute pressure at t
......@@ -166,7 +166,7 @@ DO JK = IKE , IKB, -1*IKL
IF (JRR==2) THEN
!******* for cloud
IF (PARAMI%LSEDIC) THEN
IF (OSEDIC) THEN
CALL CLOUD(PRCT(:,:,JK))
ELSE
ZSED(:,:,IK,JRR)=0.
......@@ -230,7 +230,7 @@ DO JK = IKE , IKB, -1*IKL
IF (JK==IKB) THEN
DO JJ = IJB, IJE
DO JI = IIB, IIE
IF(PARAMI%LSEDIC) PINPRC(JI,JJ) = ZSED(JI,JJ,IK,2)/CST%XRHOLW
IF(OSEDIC) PINPRC(JI,JJ) = ZSED(JI,JJ,IK,2)/CST%XRHOLW
PINPRR(JI,JJ) = ZSED(JI,JJ,IK,3)/CST%XRHOLW
PINPRI(JI,JJ) = ZSED(JI,JJ,IK,4)/CST%XRHOLW
PINPRS(JI,JJ) = ZSED(JI,JJ,IK,5)/CST%XRHOLW
......
......@@ -8,8 +8,7 @@ IMPLICIT NONE
CONTAINS
SUBROUTINE ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, KPROMA, KSIZE, &
&KRR, ODSOFT, LDCOMPUTE, &
&HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
&HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF, &
&HSUBG_AUCV_RC, HSUBG_AUCV_RI, &
&PEXN, PRHODREF, PLVFACT, PLSFACT, K1, K2, &
&PPRES, PCF, PSIGMA_RC, &
&PCIT, &
......@@ -95,11 +94,8 @@ INTEGER, INTENT(IN) :: KPROMA, KSIZE
INTEGER, INTENT(IN) :: KRR
LOGICAL, INTENT(IN) :: ODSOFT
LOGICAL, DIMENSION(KPROMA), INTENT(IN) :: LDCOMPUTE
CHARACTER(LEN=80), INTENT(IN) :: HSUBG_RC_RR_ACCR
CHARACTER(LEN=80), INTENT(IN) :: HSUBG_RR_EVAP
CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC
CHARACTER(LEN=80), INTENT(IN) :: HSUBG_AUCV_RI
CHARACTER(LEN=80), INTENT(IN) :: HSUBG_PR_PDF ! pdf for subgrid precipitation
REAL, DIMENSION(KPROMA), INTENT(IN) :: PEXN
REAL, DIMENSION(KPROMA), INTENT(IN) :: PRHODREF
REAL, DIMENSION(KPROMA), INTENT(IN) :: PLVFACT
......@@ -307,11 +303,11 @@ ELSE
ENDIF ! ODSOFT
!
!Cloud water split between high and low content part is done here
CALL ICE4_COMPUTE_PDF(CST, ICEP, ICED, KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, HSUBG_PR_PDF,&
CALL ICE4_COMPUTE_PDF(CST, ICEP, ICED, KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF,&
PRHODREF, ZVART(:,IRC), ZVART(:,IRI), PCF, ZT, PSIGMA_RC, &
PHLC_HCF, PHLC_LCF, PHLC_HRC, PHLC_LRC, &
PHLI_HCF, PHLI_LCF, PHLI_HRI, PHLI_LRI, ZRAINFR)
LLRFR=HSUBG_RC_RR_ACCR=='PRFR' .OR. HSUBG_RR_EVAP=='PRFR'
LLRFR=PARAMI%CSUBG_RC_RR_ACCR=='PRFR' .OR. PARAMI%CSUBG_RR_EVAP=='PRFR'
IF (LLRFR) THEN
!Diagnostic of precipitation fraction
PRAINFR(:,:) = 0.
......@@ -400,7 +396,8 @@ CALL ICE4_SLOW(CST, ICEP, ICED, KPROMA, KSIZE, ODSOFT, LDCOMPUTE, PRHODREF, ZT,
!
IF(PARAMI%LWARM) THEN ! Check if the formation of the raindrops by the slow
! warm processes is allowed
CALL ICE4_WARM(CST, ICEP, ICED, KPROMA, KSIZE, ODSOFT, LDCOMPUTE, HSUBG_RC_RR_ACCR, HSUBG_RR_EVAP, &
CALL ICE4_WARM(CST, ICEP, ICED, KPROMA, KSIZE, ODSOFT,LDCOMPUTE, &
&PARAMI%CSUBG_RC_RR_ACCR, PARAMI%CSUBG_RR_EVAP, &
&PRHODREF, PLVFACT, ZT, PPRES, ZVART(:,ITH),&
&ZLBDAR, ZLBDAR_RF, ZKA, ZDV, ZCJ, &
&PHLC_LCF, PHLC_HCF, PHLC_LRC, PHLC_HRC, &
......
......@@ -527,7 +527,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN
ENDDO
ENDDO
CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
&PTSTEP, KRR, OSEDIC, PDZZ, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&ZLBDAS, &
&PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,&
......@@ -546,7 +546,7 @@ IF(.NOT. PARAMI%LSEDIM_AFTER) THEN
ENDDO
ENDDO
CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
&PTSTEP, KRR, OSEDIC, PDZZ, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&ZLBDAS, &
&PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,&
......@@ -883,8 +883,7 @@ IF (KSIZE > 0) THEN
CALL ICE4_TENDENCIES(D, CST, PARAMI, ICEP, ICED, BUCONF, &
&KPROMA, IMICRO, &
&KRR, LSOFT, LLCOMPUTE, &
&PARAMI%LWARM, PARAMI%CSUBG_RC_RR_ACCR, PARAMI%CSUBG_RR_EVAP, &
&HSUBG_AUCV_RC, HSUBG_AUCV_RI, PARAMI%CSUBG_PR_PDF, &
&HSUBG_AUCV_RC, HSUBG_AUCV_RI, &
&ZEXN, ZRHODREF, ZLVFACT, ZLSFACT, I1, I2, &
&ZPRES, ZCF, ZSIGMA_RC, &
&ZCIT, &
......@@ -1616,7 +1615,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN
ENDDO
ENDDO
CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
&PTSTEP, KRR, OSEDIC, PDZZ, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&ZLBDAS, &
&PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,&
......@@ -1635,7 +1634,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN
ENDDO
ENDDO
CALL ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, &
&PTSTEP, KRR, OSEDIC, PDZZ, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PRHODREF, PPABST, PTHT, PRHODJ, &
&ZLBDAS, &
&PRCS, ZRCT, PRRS, ZRRT, PRIS, ZRIT,&
......@@ -1650,7 +1649,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN
!SR: It *seems* that we must have two separate calls for ifort
IF(KRR==7) THEN
CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PTSTEP, KRR, PDZZ, &
&PRHODREF, PPABST, PTHT, ZT, PRHODJ, &
&PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
&PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
......@@ -1658,7 +1657,7 @@ IF(PARAMI%LSEDIM_AFTER) THEN
&PINPRH=PINPRH, PRHT=PRHT, PRHS=PRHS, PFPR=PFPR)
ELSE
CALL ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, &
&PTSTEP, KRR, PARAMI%LSEDIC, PDZZ, &
&PTSTEP, KRR, PDZZ, &
&PRHODREF, PPABST, PTHT, ZT, PRHODJ, &
&PRCS, PRCT, PRRS, PRRT, PRIS, PRIT, PRSS, PRST, PRGS, PRGT,&
&PINPRC, PINPRR, ZINPRI, PINPRS, PINPRG, &
......
......@@ -152,7 +152,8 @@ ELSEIF (PARAMMF%CMF_CLOUD == 'NONE') THEN
! No CONVECTIVE CLOUD SCHEME
! Nothing to do: PRC_MF, PRI_MF, PCF_MF, PSIGMF are already filled with zero
ELSE
CALL PRINT_MSG(NVERB_FATAL,'GEN','COMPUTE_MF_CLOUD','Shallow convection cloud scheme not valid: PARAMMF%CMF_CLOUD='//TRIM(PARAMMF%CMF_CLOUD))
CALL PRINT_MSG(NVERB_FATAL, &
'GEN','COMPUTE_MF_CLOUD','Shallow convection cloud scheme not valid: PARAMMF%CMF_CLOUD='//TRIM(PARAMMF%CMF_CLOUD))
ENDIF
IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD',1,ZHOOK_HANDLE)
......
......@@ -277,7 +277,7 @@ ENDIF
!!! 5. Compute diagnostic convective cloud fraction and content
!!! --------------------------------------------------------
!
CALL COMPUTE_MF_CLOUD(D,CST,CSTURB,PARAMMF,TURBN%OSTATNW,&
CALL COMPUTE_MF_CLOUD(D,CST,CSTURB,PARAMMF,TURBN%LSTATNW,&
KRR, KRRL, KRRI, &
ZFRAC_ICE, &
PRC_UP,PRI_UP,PEMF, &
......
......@@ -436,7 +436,7 @@ IF ( OMF_FLX .AND. tpfile%lopened ) THEN
TZFIELD%LTIMEDEP = .TRUE.
CALL IO_Field_write(TPFILE,TZFIELD,PFLXZTHVMF)
!
IF (OMIXUV) THEN
IF (PARAM_MFSHALLN%LMIXUV) THEN
! stores the U momentum vertical flux
ZWORK(:,:,:)=RESHAPE(ZFLXZUMF(:,:),(/ IIU,IJU,IKU /) )
TZFIELD%CMNHNAME = 'MF_UW_FLX'
......
......@@ -169,7 +169,7 @@ ICEP%XBCRIAUTI = -3.3840957210994582
HFRAC_ICE = 'S'
TURBN%CCONDENS = 'CB02'
TURBN%LLAMBDA3 = 'CB'
TURBN%CLAMBDA3 = 'CB'
HBUNAME = 'DEPI'
TURBN%LSUBG_COND = .TRUE.
TURBN%LSIGMAS = .TRUE.
......
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