diff --git a/src/arome/ext/aro_rain_ice.F90 b/src/arome/ext/aro_rain_ice.F90 index 8fd95fc4d9f092f209e61990836d98d4c7ad97c2..a22cb6da8e117aef7b43c3111fea0fa505e53fbd 100644 --- a/src/arome/ext/aro_rain_ice.F90 +++ b/src/arome/ext/aro_rain_ice.F90 @@ -213,6 +213,8 @@ REAL :: ZRATIO ! ZMASSTOT / ZMASSCOR TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET !NBUDGET_RH is the one with the highest number TYPE(DIMPHYEX_t) :: YLDIMPHYEX +LOGICAL, DIMENSION(KLON,1,KLEV) :: LLMICRO +INTEGER :: ISIZE ! REAL(KIND=JPRB) :: ZHOOK_HANDLE @@ -433,13 +435,22 @@ ELSEIF (CMICRO=='OLD4') THEN ELSE ZKGN_SBGR(:,:) = RAIN_ICE_PARAM%XFRMIN(11) ENDIF - CALL RAIN_ICE_OLD( OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & + LLMICRO(:,:,:)=PRT(:,:,:,2)>RAIN_ICE_DESCR%XRTMIN(2) .OR. & + PRT(:,:,:,3)>RAIN_ICE_DESCR%XRTMIN(3) .OR. & + PRT(:,:,:,4)>RAIN_ICE_DESCR%XRTMIN(4) .OR. & + PRT(:,:,:,5)>RAIN_ICE_DESCR%XRTMIN(5) .OR. & + PRT(:,:,:,6)>RAIN_ICE_DESCR%XRTMIN(6) .OR. & + PRT(:,:,:,7)>RAIN_ICE_DESCR%XRTMIN(7) + ISIZE=COUNT(LLMICRO) + CALL RAIN_ICE_OLD(YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, & + & RAIN_ICE_DESCR, TBUCONF, & + & OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & & HSEDIM=CSEDIM, HSUBG_AUCV_RC=CSUBG_AUCV_RC, & & OWARM=OWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=KSPLITR, & - & PTSTEP=2*PTSTEP, KRR=KRR, & + & PTSTEP=2*PTSTEP, KRR=KRR, KSIZE=ISIZE, GMICRO=LLMICRO, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& & PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR, & - & PICLDFR=PICLDFR, PWCLDFR=PWCLDFR, & + & PICLDFR=PICLDFR, & !PWCLDFR=PWCLDFR, & & PSSIO=PSSIO, PSSIU=PSSIU, PIFR=PIFR, & & PTHT=PTHT,PRVT= PRT(:,:,:,1),PRCT= PRT(:,:,:,2), & & PRRT=PRT(:,:,:,3), & @@ -451,7 +462,7 @@ ELSEIF (CMICRO=='OLD4') THEN & PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP,& & PINPRS=PINPRS, PINPRG=PINPRG, & & PSIGS=PSIGS, PSEA=PSEA, PTOWN=PTOWN, & - & YDDDH=YDDDH,YDLDDH=YDLDDH,YDMDDH=YDMDDH, & + & TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), & & PRHT=PRT(:,:,:,7),& & PRHS=PRS(:,:,:,7), PINPRH=PINPRH, PFPR=PFPR, & & PICENU=ZICENU, & @@ -475,13 +486,21 @@ ELSE ELSE ZKGN_SBGR(:,:) = RAIN_ICE_PARAM%XFRMIN(11) ENDIF - CALL RAIN_ICE_OLD( OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & + LLMICRO(:,:,:)=PRT(:,:,:,2)>RAIN_ICE_DESCR%XRTMIN(2) .OR. & + PRT(:,:,:,3)>RAIN_ICE_DESCR%XRTMIN(3) .OR. & + PRT(:,:,:,4)>RAIN_ICE_DESCR%XRTMIN(4) .OR. & + PRT(:,:,:,5)>RAIN_ICE_DESCR%XRTMIN(5) .OR. & + PRT(:,:,:,6)>RAIN_ICE_DESCR%XRTMIN(6) + ISIZE=COUNT(LLMICRO) + CALL RAIN_ICE_OLD(YLDIMPHYEX, CST, PARAM_ICE, RAIN_ICE_PARAM, & + & RAIN_ICE_DESCR, TBUCONF, & + & OSEDIC=OSEDIC, OCND2=OCND2, LKOGAN=LKOGAN, LMODICEDEP=LMODICEDEP, & & HSEDIM=CSEDIM, HSUBG_AUCV_RC=CSUBG_AUCV_RC, & & OWARM=OWARM,KKA=KKA,KKU=KKU,KKL=KKL,KSPLITR=KSPLITR, & - & PTSTEP=2*PTSTEP, KRR=KRR, & + & PTSTEP=2*PTSTEP, KRR=KRR, KSIZE=ISIZE, GMICRO=LLMICRO, & & PDZZ=PDZZ, PRHODJ=PRHODJ, PRHODREF=PRHODREF, PEXNREF=PEXNREF,& & PPABST=PPABSM, PCIT=PCIT, PCLDFR=PCLDFR, & - & PICLDFR=PICLDFR, PWCLDFR=PWCLDFR, & + & PICLDFR=PICLDFR, & !PWCLDFR=PWCLDFR, & & PSSIO=PSSIO, PSSIU=PSSIU, PIFR=PIFR, & & PTHT=PTHT,PRVT= PRT(:,:,:,1),PRCT= PRT(:,:,:,2), & & PRRT=PRT(:,:,:,3), & @@ -493,7 +512,7 @@ ELSE & PINPRC=ZINPRC,PINPRR=PINPRR,PEVAP3D=PEVAP,& & PINPRS=PINPRS, PINPRG=PINPRG, & & PSIGS=PSIGS, PSEA=PSEA, PTOWN=PTOWN, & - & YDDDH=YDDDH,YDLDDH=YDLDDH,YDMDDH=YDMDDH, & + & TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), & & PFPR=PFPR, & & PICENU=ZICENU, & & PKGN_ACON=ZKGN_ACON, & diff --git a/src/common/aux/ddh_mix.F90 b/src/common/aux/ddh_mix.F90 deleted file mode 100644 index 0e92e7bb44e1ba101986c27efdfc1980e0461ca7..0000000000000000000000000000000000000000 --- a/src/common/aux/ddh_mix.F90 +++ /dev/null @@ -1,98 +0,0 @@ -! ################## - MODULE DDH_MIX -! ################## - - -!! PURPOSE -!! ------- -! module for type structure in DDH - -!!** IMPLICIT ARGUMENTS -!! ------------------ - -!! AUTHOR -!! ------ -!! O.Riviere *Meteo France* -!! -!! Modifications : -!! -------------- -!! F.Voitus 18/09/17 : New DDH flexible structure for OpenMP - -!------------------------------------------------------------------------------- - - -USE PARKIND1 , ONLY : JPIM, JPRB -USE YOMHOOK , ONLY : LHOOK,DR_HOOK -USE YOMLUN_IFSAUX, ONLY : NULOUT - -IMPLICIT NONE - -SAVE - - -!* 1. TYPE DEFINITION - - -! structure for vertical profile -TYPE TYP_FIELD3D - REAL(KIND=JPRB), POINTER :: RVAL(:,:)=>NULL() ! values (domains x vertical) - CHARACTER(LEN=16) :: CNAME ! name - CHARACTER(LEN=1) :: CTYPE ! indicate wether it's a flux, variable or tendency -END TYPE TYP_FIELD3D - -TYPE TYP_FIELD2D - REAL(KIND=JPRB), POINTER :: RVAL(:)=>NULL() ! values (domains) - CHARACTER(LEN=16) :: CNAME ! name - CHARACTER(LEN=1) :: CTYPE ! indicate wether it's a flux, variable or tendency -END TYPE TYP_FIELD2D - -TYPE TYP_BUVAR - REAL(KIND=JPRB), POINTER :: RVAL(:,:)=>NULL() ! values (domains) - CHARACTER(LEN=2) :: CNAME ! name -END TYPE TYP_BUVAR - - -! structure containing fields, weights for horizontal averaging, etc. -TYPE TYP_DDH - INTEGER(KIND=JPIM) :: NLEV ! vertical dimension - INTEGER(KIND=JPIM) :: NPROMA ! horizontal dimension - INTEGER(KIND=JPIM) :: KST ! first point - INTEGER(KIND=JPIM) :: KEND ! last point - - ! 3D field info - INTEGER(KIND=JPIM) :: NFIELDS3D ! number of fields - INTEGER(KIND=JPIM) :: NFIELDS3D_OFFSET ! offset value for the fields when - ! putting in the global arrays - INTEGER(KIND=JPIM) :: NFIELDS3D_AUTO ! number of fields that should be - ! automatically allocated - ! (maximum of cpg and cpglag) - TYPE(TYP_FIELD3D), POINTER :: YFIELD3D(:)=>NULL() ! array of fields - REAL(KIND=JPRB), POINTER :: RVAL3D(:,:,:)=>NULL() ! auxiliary array for fast - ! (automatic) allocation - ! (vertical x fields x domains) - ! 2D field info - INTEGER(KIND=JPIM) :: NFIELDS2D ! number of fields - INTEGER(KIND=JPIM) :: NFIELDS2D_OFFSET ! offset value for the fields when - ! putting in the global arrays - INTEGER(KIND=JPIM) :: NFIELDS2D_AUTO ! number of fields that should be - ! automatically allocated - ! (maximum of cpg and cpglag) - TYPE(TYP_FIELD2D), POINTER :: YFIELD2D(:)=>NULL() ! array of fields - REAL(KIND=JPRB), POINTER :: RVAL2D(:,:)=>NULL() ! auxiliary array for fast - ! (automatic) allocation - ! (vertical x fields x domains) - ! horizontal info - REAL(KIND=JPRB), POINTER :: WEIGHT(:)=>NULL() ! weights inside one NPROMA block - INTEGER(KIND=JPIM), POINTER :: NDDHI(:)=>NULL() ! cfr. KDDHI in cpg_dia - - - TYPE(TYP_BUVAR), POINTER :: YVARMULT(:)=>NULL() ! array of fields - REAL(KIND=JPRB), POINTER :: RVARSM(:,:,:,:)=>NULL()! auxiliary array for fast - ! (automatic) allocation - -END TYPE TYP_DDH - - - -END MODULE DDH_MIX - diff --git a/src/common/aux/mode_budget_phy.F90 b/src/common/aux/mode_budget_phy.F90 index 033f14774121549698d64cb54c284cc39cbf5966..30db2f33b4fc10006c42562750ef1a5c7ddb131b 100644 --- a/src/common/aux/mode_budget_phy.F90 +++ b/src/common/aux/mode_budget_phy.F90 @@ -48,18 +48,4 @@ SUBROUTINE BUDGET_STORE_ADD(TPBUDGET, HSOURCE, PVARS) REAL, DIMENSION(:,:,:), INTENT(IN) :: PVARS ! Current value to be stored REAL, DIMENSION(SIZE(PVARS, 1), SIZE(PVARS, 2), SIZE(PVARS, 3)) :: ZVARS END SUBROUTINE BUDGET_STORE_ADD -! -SUBROUTINE BUDGET_DDH(PVARS, KBUDN, HSOURCE, YDDDH, YDLDDH, YDMDDH, LDISDIFF) - USE DDH_MIX, ONLY : TYP_DDH - USE YOMLDDH, ONLY : TLDDH - USE YOMMDDH, ONLY : TMDDH - - REAL, DIMENSION(:,:), INTENT(IN) :: PVARS ! source of the variable - INTEGER, INTENT(IN) :: KBUDN ! variable number - CHARACTER(LEN=*), INTENT(IN) :: HSOURCE ! Identifier of the Budget - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH - LOGICAL, OPTIONAL, INTENT(IN) :: LDISDIFF ! PVARS contains the increment (default is .FALSE.) -END SUBROUTINE BUDGET_DDH END MODULE MODE_BUDGET_PHY diff --git a/src/common/aux/yomlddh.F90 b/src/common/aux/yomlddh.F90 deleted file mode 100644 index c07b30a41280e41812a09bf39a64dab71f979ac6..0000000000000000000000000000000000000000 --- a/src/common/aux/yomlddh.F90 +++ /dev/null @@ -1,81 +0,0 @@ -MODULE YOMLDDH - -IMPLICIT NONE - -SAVE - -! ------------------------------------------------------------------ -! LOGIQUE DIAGNOSTIQUES DOMAINES HORIZONTAUX - -! LSDDH : VRAI SI AU MOINS UN DIAGNOSTIC DDH ACTIF -! LHDGLB = CALCULS EN VUE DES MOYENNES GLOBALES -! LHDZON = CALCULS EN VUE DES MOYENNES ZONALES -! LHDDOP = CALCULS EN VUE DES MOYENNES SUR DOMAINES LIMITES, POINTS -! ISOLES COMPRIS -! LHDLFA = TRUE IF OUTPUT ON LFA FILE OTHERWISE PSEUDOGRIB - -! LHDHKS = OPERE SUR MASSES, ENERGIES ET SOL -! LHDMCI = OPERE SUR MOMENT CINETIQUE -! LHDENT = OPERE SUR ENTROPIE - -! LHDPRG = CUMUL ET IMPRESSION MOYENNES GLOBALES -! LHDPRZ = CUMUL ET IMPRESSION MOYENNES ZONALES (1 BANDE: NDHZPR) -! LHDPRD = CUMUL ET IMPRESSION DOMAINES LIMITES (TOUS DOMAINES) -! LHDPR = DES IMPRESSIONS SONT DEMANDEES - -! LHDEFG = CUMUL ET ECRITURE FICHIER DES MOYENNES GLOBALES -! LHDEFZ = CUMUL ET ECRITURE FICHIER DES MOYENNES ZONALES -! LHDEFD = CUMUL ET ECRITURE FICHIER DOMAINES LIMITES - -! LHDLIST = IMPRESSIONS COMPLETES -! LES INDICATEURS SUIVANTS SONT DE NIVEAU 4 ET PLUS -! AU PAS DE TEMPS EN COURS (NSTEP): - -! LHDOUFG = "SYNTHESIS" AND WRITE OUT GLOBAL MEAN DDH -! LHDOUFZ = "SYNTHESIS" AND WRITE OUT ZONAL MEAN DDH -! LHDOUFD = "SYNTHESIS" AND WRITE OUT LIMITED AREAS DDH -! LHDOUP = EFFECTUER UNE SYNTHESE ET IMPRESSION - -! LHDFIL = IMPRESS. DE LA LISTE DES ARTICLES DES FICHIERS DE SORTIE. -! LRDDHDYN = TRUE IF AT LEAST ONE DYNAMICAL DDH DIAGNOSTIC IS ACTIVATED -! LRSLDDH = TRUE IF SEMI-LAG DDH IS ACTIVATED -! LRHDDDH = TRUE IF HORIZ. DIFFUSION DDH IS ACTIVATED -! LRSIDDH = TRUE IF SEMI-IMPLICIT DDH IS ACTIVATED - -TYPE :: TLDDH -LOGICAL :: LSDDH -LOGICAL :: LHDGLB -LOGICAL :: LHDZON -LOGICAL :: LHDDOP -LOGICAL :: LHDLFA -LOGICAL :: LHDHKS -LOGICAL :: LHDMCI -LOGICAL :: LHDENT -LOGICAL :: LHDPRG -LOGICAL :: LHDPRZ -LOGICAL :: LHDPRD -LOGICAL :: LHDPR -LOGICAL :: LHDEFG -LOGICAL :: LHDEFZ -LOGICAL :: LHDEFD -LOGICAL :: LHDLIST -LOGICAL :: LHDOUFG -LOGICAL :: LHDOUFZ -LOGICAL :: LHDOUFD -LOGICAL :: LHDOUP -LOGICAL :: LHDFIL -LOGICAL :: LONLYVAR -LOGICAL :: LHDORIGP -LOGICAL :: LHDCDPI -LOGICAL :: LFLEXDIA -LOGICAL :: LRDDHDYN -LOGICAL :: LRSLDDH -LOGICAL :: LRSIDDH -LOGICAL :: LRHDDDH -LOGICAL :: LDDH_OMP -END TYPE TLDDH - -!!TYPE(TLDDH), POINTER :: YRLDDH => NULL() - -! ------------------------------------------------------------------ -END MODULE YOMLDDH diff --git a/src/common/aux/yomlun_ifsaux.F90 b/src/common/aux/yomlun_ifsaux.F90 deleted file mode 100644 index 77525d07bc1d54d08a8ea18d2c6c782b697c64b2..0000000000000000000000000000000000000000 --- a/src/common/aux/yomlun_ifsaux.F90 +++ /dev/null @@ -1,23 +0,0 @@ -MODULE YOMLUN_IFSAUX - -USE PARKIND1 ,ONLY : JPIM - -IMPLICIT NONE - -SAVE - -! ------------------------------------------------------------------ - -!* Logical units used by code - -! NULOUT : output unit -! NULERR : unit number for comparison with reference run - -! NULDRHACK : output unit for drHack pseudo xml file (see -! dr_hook_util.F90) -INTEGER(KIND=JPIM) :: NULOUT = 6 -INTEGER(KIND=JPIM) :: NULERR = 0 -INTEGER(KIND=JPIM) :: NULDRHACK = 999 - -! ------------------------------------------------------------------ -END MODULE YOMLUN_IFSAUX diff --git a/src/common/aux/yommddh.F90 b/src/common/aux/yommddh.F90 deleted file mode 100644 index 274b078c4835e937fefd547266c8cc29a39fbfc7..0000000000000000000000000000000000000000 --- a/src/common/aux/yommddh.F90 +++ /dev/null @@ -1,311 +0,0 @@ -MODULE YOMMDDH - -USE PARKIND1 , ONLY : JPIM, JPRB - -IMPLICIT NONE - -SAVE - -! ------------------------------------------------------------------ -! DIAGNOSTIQUES DOMAINES HORIZONTAUX -! ---------------------------------- - -! DIMENSIONS DES DIAGNOSTIQUES DDH -! --------------------------------- -! === basic dimensions for reading NAMDDH === -INTEGER(KIND=JPIM), PARAMETER :: JPDHNOX=200 -INTEGER(KIND=JPIM), PARAMETER :: JPDHXPU=5 - -! JPDHNOX: Maximum number of user area -! JPDHXPU: Maximum number of user or mask memory plans - -TYPE :: TMDDH -INTEGER(KIND=JPIM) :: NDHKD -INTEGER(KIND=JPIM) :: NDHNPU -INTEGER(KIND=JPIM) :: NDHBPU(JPDHXPU) -INTEGER(KIND=JPIM) :: NDHBPX -INTEGER(KIND=JPIM) :: NDHNOM -INTEGER(KIND=JPIM) :: NDHDDX -INTEGER(KIND=JPIM) :: NDHIDH -INTEGER(KIND=JPIM) :: NDHCS -INTEGER(KIND=JPIM) :: NDHCV -INTEGER(KIND=JPIM) :: NDHCVSU -INTEGER(KIND=JPIM) :: NDHCSSU -INTEGER(KIND=JPIM) :: NDHCVSUN -INTEGER(KIND=JPIM) :: NDHCVSUL -! NDHKD : NOMBRE DE BANDES DE LATITUDES -! NDHNPU : NOMBRE DE MASQUES UTILISES NDHNPU .LE. JPDHXPU -! NDHBPU(JPDHXPU) : NOMBRE DE DOMAINES CONTENU DANS CHAQUE MASQUE -! NDHBPX : NOMBRE DE DOMAINE MAXIMAL PAR MASQUE -! NDHBPX = MAX( NDHBPU ) -! NDHNOM : NOMBRE TOTALE DE DOMAINES LIMITES EN NOMENCLATURE -! NDHNOM .LE. JPDHNOX -! NDHDDX : NOMBRE MAXIMAL DE DOMAINES INTERNES POSSIBLES -! NDHIDH : NOMBRE DE DOMAINES INTERNES ( OR DOMAINE 0 EVENTUEL ) -! INITIALISE PAR CALCUL DANS SUMDDH -! NDHCS : NOMBRE TOTAL DE CHAMPS AU SOL -! NDHCV : NOMBRE TOTAL DE CHAMPS EN PROFILS VERTICAUX -! NDHCVSU: DIMENSION TABLEAUX LOCAUX DE CHAMPS VERTICAUX -! NDHCVSU EST IMPAIR ET VAUT 1 AU MOINS -! NDHCSSU: DIMENSION TABLEAUX LOCAUX DE CHAMPS AU SOL - -! INDICATEURS D ORGANISATION DE LA REPARTITION DES CHAMPS -! ------------------------------------------------------------------ -INTEGER(KIND=JPIM) :: NDHVV -INTEGER(KIND=JPIM) :: NDHFVD -INTEGER(KIND=JPIM) :: NDHFVP -INTEGER(KIND=JPIM) :: NDHVS -INTEGER(KIND=JPIM) :: NDHFSD -INTEGER(KIND=JPIM) :: NDHFSP -INTEGER(KIND=JPIM) :: NDHFFS -INTEGER(KIND=JPIM) :: NDHVFS -INTEGER(KIND=JPIM) :: NFSVAR_AERO -INTEGER(KIND=JPIM) :: NFSFLX_AERO - -INTEGER(KIND=JPIM) :: NDHVTLS -INTEGER(KIND=JPIM) :: NDHFTLS -INTEGER(KIND=JPIM) :: NDHVTSS -INTEGER(KIND=JPIM) :: NDHFTSS -INTEGER(KIND=JPIM) :: NDHVTTS -INTEGER(KIND=JPIM) :: NDHFTTS -INTEGER(KIND=JPIM) :: NDHVTIS -INTEGER(KIND=JPIM) :: NDHFTIS -INTEGER(KIND=JPIM) :: NDHVSSS -INTEGER(KIND=JPIM) :: NDHFSSS -INTEGER(KIND=JPIM) :: NDHVIIS -INTEGER(KIND=JPIM) :: NDHFIIS -INTEGER(KIND=JPIM) :: NDHVWLS -INTEGER(KIND=JPIM) :: NDHFWLS - -INTEGER(KIND=JPIM) :: NDHTHK -INTEGER(KIND=JPIM) :: NDHVHK -INTEGER(KIND=JPIM) :: NDHFHKD -INTEGER(KIND=JPIM) :: NDHFHKP -INTEGER(KIND=JPIM) :: NDHTMC -INTEGER(KIND=JPIM) :: NDHVMC -INTEGER(KIND=JPIM) :: NDHFMCD -INTEGER(KIND=JPIM) :: NDHFMCP -INTEGER(KIND=JPIM) :: NDHTEN -INTEGER(KIND=JPIM) :: NDHVEN -INTEGER(KIND=JPIM) :: NDHFEND -INTEGER(KIND=JPIM) :: NDHFENP -INTEGER(KIND=JPIM) :: NDHAVD -INTEGER(KIND=JPIM) :: NDHBVD -INTEGER(KIND=JPIM) :: NDHAVP -INTEGER(KIND=JPIM) :: NDHBVP -INTEGER(KIND=JPIM) :: NDHAHKD -INTEGER(KIND=JPIM) :: NDHBHKD -INTEGER(KIND=JPIM) :: NDHAHKP -INTEGER(KIND=JPIM) :: NDHBHKP -INTEGER(KIND=JPIM) :: NDHAMCD -INTEGER(KIND=JPIM) :: NDHBMCD -INTEGER(KIND=JPIM) :: NDHAMCP -INTEGER(KIND=JPIM) :: NDHBMCP -INTEGER(KIND=JPIM) :: NDHAEND -INTEGER(KIND=JPIM) :: NDHBEND -INTEGER(KIND=JPIM) :: NDHAENP -INTEGER(KIND=JPIM) :: NDHBENP - -! * LES INDICATEURS PRECEDES DE * SONT DES NOMBRES ATTACHES -! AU CODE FORTRAN DE CALCUL SCIENTIFIQUE, ET NON DES -! PARAMETRES AJUSTABLES AUX CIRCONSTANCES - -! NDHVV : NOMBRE DE VARIABLES SUR LA VERTICALE -! NDHFVD : NOMBRE DE FLUX+TENDANCES DYNAMIQUES SUR LA VERTICALE -! DETAIL CI DESSOUS -! NDHFVP : NOMBRE DE FLUX+TENDANCES PHYSIQUES SUR LA VERTICALE -! DETAIL CI DESSOUS - -! * NDHVS : NOMBRE DE VARIABLES AU SOL -! * NDHFSD : NOMBRE DE FLUX DYNAMIQUES AU SOL -! * NDHFSP : NOMBRE DE FLUX PHYSIQUES AU SOL -! * NDHFFS : Number of free-style fluxes -! * NDHVFS : Number of free-style variables -! * NFSVAR_AERO : Index of first aerosol variable in the list of free-style vars. -! * NFSFLX_AERO : Index of first aerosol flux in the list of free-style fluxes - -! * NDHVTLS: Number of variables for individual tiles -! * NDHFTLS: Number of fluxes for individual tiles -! * NDHVTSS: Number of variables for snow energy budget -! * NDHFTSS: Number of fluxes for snow energy budget -! * NDHVTTS: Number of variables for soil energy budget -! * NDHFTTS: Number of fluxes for soil energy budget -! * NDHVTIS: Number of variables for sea ice energy budget -! * NDHFTIS: Number of fluxes for sea ice energy budget -! * NDHVSSS: Number of variables for snow water budget -! * NDHFSSS: Number of fluxes for snow water budget -! * NDHVIIS: Number of variables for interception layer water budget -! * NDHFIIS: Number of fluxes for interception layer water budget -! * NDHVWLS: Number of variables for soil water budget -! * NDHFWLS: Number of fluxes for soil water budget - -! NDHTHK : NOMBRE TOTAL DE CHAMPS VERTICAUX SOUS LHDHKS -! * NDHVHK : NOMBRE DE VARIABLES SOUS LHDHKS -! * NDHFHKD: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDHKS -! * NDHFHKP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDHKS - -! NDHTMC : NOMBRE TOTAL DE CHAMPS VERTICAUX SOUS LHDMCI -! * NDHVMC : NOMBRE DE VARIABLES SOUS LHDMCI -! * NDHFMCD: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDMCI -! * NDHFMCP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDMCI - -! NDHTEN : NOMBRE TOTAL DE CHAMPS SOUS LHDENT -! * NDHVEN : NOMBRE DE VARIABLES SOUS LHDENT -! * NDHFEND: NOMBRE DE FLUX+TENDANCES DYNAMIQUES SOUS LHDENT -! * NDHFENP: NOMBRE DE FLUX+TENDANCES PHYSIQUES SOUS LHDENT - -! NDHAVD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES -! NDHBVD : NOMBRE TOTAL DE FLUX DYNAMIQUES -! NDHAVP : NOMBRE TOTAL DE FLUX PHYSIQUES -! NDHBVP : NOMBRE TOTAL DE TENDANCES PHYSIQUES -! * NDHAHKD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDHKS -! * NDHBHKD : NOMBRE TOTAL DE FLUX DYNAMIQUES -! * NDHAHKP : NOMBRE TOTAL DE FLUX PHYSIQUES -! * NDHBHKP : NOMBRE TOTAL DE TENDANCES PHYSIQUES -! * NDHAMCD : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDMCI -! * NDHBMCD : NOMBRE TOTAL DE FLUX DYNAMIQUES -! * NDHAMCP : NOMBRE TOTAL DE FLUX PHYSIQUES -! * NDHBMCP : NOMBRE TOTAL DE TENDANCES PHYSIQUES -! * NDHAEND : NOMBRE TOTAL DE TENDANCES DYNAMIQUES, OPTION LHDENT -! * NDHBEND : NOMBRE TOTAL DE FLUX DYNAMIQUES -! * NDHAENP : NOMBRE TOTAL DE FLUX PHYSIQUES -! * NDHBENP : NOMBRE TOTAL DE TENDANCES PHYSIQUES - -! IDENTIFICATION DES DOMAINES DE L UTILISATEUR -! ------------------------------------------------------------------ - -INTEGER(KIND=JPIM) :: NDHZPR -REAL(KIND=JPRB) :: FNODDH(11,JPDHNOX) -REAL(KIND=JPRB) :: BDEDDH(10,JPDHNOX) -REAL(KIND=JPRB) :: HDSFGL - -! FNODDH : DESCRIPTEURS DES DOMAINES LIMITES UTILISATEUR ACCEPTES -! (1,-) : PLAN MEMOIRE (MASQUE) -! (2,-) : NUMERO D ORDRE DANS LE PLAN -! CES DEUX NOMBRES FORMENT LES COORDONNEES INTERNES DU DOMAINE -! (3,-) A (10,-) : COORDONNEES (EN GAL LON, SIN(LAT) EN RD) -! SUIVANT LE TYPE (VOIR DOCUMENTATION) -! (11,-) : TYPE DE DOMAINE - -! BDEDDH : DESCRIPTEUR BRUT LU SUR NAMELIST -! (CERTAINS DOMAINES PEUVENT AVOIR ETE REJETES) -! (1,-) : TYPE DE DOMAINE -! (2,-) : PLAN MEMOIRE -! (3,-) A (10,-) : COORDONNEES (EN GAL LON, LAT EN DEG) -! SUIVANT LE TYPE (VOIR DOCUMENTATION) -! HDSFGL : VOIR CI DESSOUS -! NDHZPR : INDICE DE LA BANDE ZONALE EVENTUELLEMENT IMPRIMEE - -! MASQUES DES DIAGNOSTIQUES DDH, POIDS POUR LES MOYENNES -! ------------------------------------------------------------------ - -INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHLA(:) -INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHPU(:,:) - -INTEGER(KIND=JPIM),ALLOCATABLE:: NDDHI(:) -! ----- -INTEGER(KIND=JPIM),ALLOCATABLE:: NLRDDH(:,:) -INTEGER(KIND=JPIM),ALLOCATABLE:: NURDDH(:,:,:) -! ----- -INTEGER(KIND=JPIM),ALLOCATABLE:: NLXDDH(:) -INTEGER(KIND=JPIM),ALLOCATABLE:: NUXDDH(:,:) -! ----- -REAL(KIND=JPRB),ALLOCATABLE:: HDSFLA(:) -REAL(KIND=JPRB),ALLOCATABLE:: HDSFDU(:,:) -REAL(KIND=JPRB),ALLOCATABLE:: HDSF(:) - -! NDDHLA : MASQUE BANDES DE LATITUDES -! NDDHPU : MASQUES POUR LES DOMAINES LIMITES ET LES POINTS - -! NDDHI : MASQUE DES DOMAINES INTERNES - -! NLRDDH : DISTRIBUTION DE CHAQUE BANDE DE LATITUDE EN DOMAINES INTERNES -! NURDDH : DISTRIBUTION DE CHAQUE DOMAINE DE CHAQUE PLAN EN DOMAINES INTERNE - -! NLXDDH : BORNE DE LECTURE DE NLRDDH POUR CHAQUE BANDE -! NUXDDH : BORNE DE LECTURE DE NURDDH POUR CHAQUE DOMAINE DE CHAQUE PLAN - -! HDSFLA : POIDS DE CHAQUE BANDE DE LATITUDE -! HDSFDU : POIDS DE CHAQUE DOMAINE UTILISATEUR -! HDSFGL : POIDS POUR LES MOYENNES GLOBALES -! HDSF : POIDS DE CHAQUE POINT DE LA GRILLE PHYSIQUE - -! POINTEURS - -! ---- DDH - -! ------------------------------------------------------------------ - -! ----DIMENSIONS OF THE GMV AND GFL ARRAYS AND POINTERS -! FOR DYNAMICAL SI AND HD DDH TENDENCIES - -INTEGER(KIND=JPIM) :: NDIMHDGFL -INTEGER(KIND=JPIM) :: NDIMSIGMV - -INTEGER(KIND=JPIM) :: MSIDDH_U1 -INTEGER(KIND=JPIM) :: MSIDDH_V1 -INTEGER(KIND=JPIM) :: MSIDDH_T1 -INTEGER(KIND=JPIM) :: MSIDDH_PD1 -INTEGER(KIND=JPIM) :: MSIDDH_VD1 - -INTEGER(KIND=JPIM) :: MSIDDH_U0 -INTEGER(KIND=JPIM) :: MSIDDH_V0 -INTEGER(KIND=JPIM) :: MSIDDH_T0 -INTEGER(KIND=JPIM) :: MSIDDH_PD0 -INTEGER(KIND=JPIM) :: MSIDDH_VD0 - -INTEGER(KIND=JPIM) :: MSIDDH_U9 -INTEGER(KIND=JPIM) :: MSIDDH_V9 -INTEGER(KIND=JPIM) :: MSIDDH_T9 -INTEGER(KIND=JPIM) :: MSIDDH_PD9 -INTEGER(KIND=JPIM) :: MSIDDH_VD9 - -INTEGER(KIND=JPIM) :: MHDDDH_U -INTEGER(KIND=JPIM) :: MHDDDH_V -INTEGER(KIND=JPIM) :: MHDDDH_T -INTEGER(KIND=JPIM) :: MHDDDH_Q -INTEGER(KIND=JPIM) :: MHDDDH_PD -INTEGER(KIND=JPIM) :: MHDDDH_VD -INTEGER(KIND=JPIM) :: MHDDDH_NHX - -! pointers for DDH arrays used in the semi-Lagrangian scheme -INTEGER(KIND=JPIM) :: MSLDDH_U -INTEGER(KIND=JPIM) :: MSLDDH_V -INTEGER(KIND=JPIM) :: MSLDDH_T -INTEGER(KIND=JPIM) :: MSLDDH_PD -INTEGER(KIND=JPIM) :: MSLDDH_VD -INTEGER(KIND=JPIM) :: MSLDDH_NHX - -! MTNDSI_DDH_U : POINTEUR SUR LA COMPOSANTE-U DU VENT DANS LE TABLEAU -! CONTENANT LES TENDANCES SEMI-IMPLICITES -! MTNDSI_DDH_V : POINTEUR SUR LA COMPOSANTE-V DU VENT DANS LE TABLEAU -! CONTENANT LES TENDANCES SEMI-IMPLICITES -! MTNDSI_DDH_T : POINTEUR SUR LA TEMPERATURE DANS LE TABLEAU -! CONTENANT LES TENDANCES SEMI-IMPLICITES -! MTNDHD_DDH_U : POINTEUR SUR LA COMPOSANTE-U DU VENT DANS LE TABLEAU GMV -! CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE -! MTNDHD_DDH_V : POINTEUR SUR LA COMPOSANTE-V DU VENT DANS LE TABLEAU GMV -! CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE -! MTNDHD_DDH_T : POINTEUR SUR LA TEMPERATURE DANS LE TABLEAU GMV -! CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE -! MTNDHD_DDH_Q : POINTEUR SUR L'HUMIDITE SPECIFIQUE DANS LE TABLEAU GFL -! CONTENANT LES TENDANCES LIEES A LA DIFFUSION HORIZONTALE -! NTNDHD_GFL : NOMBRE TOTAL DE GFL TRAITES EN SPECTRAL ET DIFFUSSES - -! CFPATHDDH : directory name (ending with a '/') of DDH output files - -CHARACTER(LEN=200) :: CFPATHDDH - -INTEGER(KIND=JPIM) :: NFIELDS3D_AUTO -INTEGER(KIND=JPIM) :: NFIELDS3D_OFFSET -INTEGER(KIND=JPIM) :: NFIELDSMAX -INTEGER(KIND=JPIM) :: NFIELDS2D_AUTO -INTEGER(KIND=JPIM) :: NFIELDS2D_OFFSET - - -END TYPE TMDDH - -!!TYPE(TMDDH), POINTER :: YRMDDH => NULL() - -! ------------------------------------------------------------------ -END MODULE YOMMDDH diff --git a/src/common/aux/yomtddh.F90 b/src/common/aux/yomtddh.F90 deleted file mode 100644 index 64518026b721a09909a4407d50e18b5465696c13..0000000000000000000000000000000000000000 --- a/src/common/aux/yomtddh.F90 +++ /dev/null @@ -1,325 +0,0 @@ -MODULE YOMTDDH - -USE PARKIND1 ,ONLY : JPRB - -IMPLICIT NONE - -SAVE - -! TABLEAUX DE CUMUL DES DIAGNOSTICS DDH - -TYPE :: TTDDH -! REAL HDCVB0 (NDHCV*(NFLEVG+1),NDHIDH) -! REAL HDCVB1 (NDHCV*(NFLEVG+1),NDHIDH) -! REAL HDCS0 (NDHCS,NDHIDH) -! REAL HDCS1 (NDHCS,NDHIDH) - -REAL(KIND=JPRB),ALLOCATABLE:: HDCVB0(:,:,:) -REAL(KIND=JPRB),ALLOCATABLE:: HDCVB1(:,:,:) -REAL(KIND=JPRB),ALLOCATABLE:: HDCS0(:,:,:) -REAL(KIND=JPRB),ALLOCATABLE:: HDCS1(:,:,:) - -! ARRAY TO SAVE INITIAL VALUES FOR FREE STYLE VARIABLES - -REAL(KIND=JPRB),ALLOCATABLE:: PDDHFSVI(:) - -CHARACTER(LEN=128), ALLOCATABLE :: CFLDNAMES3D(:) ! # fields -CHARACTER(LEN=1), ALLOCATABLE :: CFLDTYPES3D(:) ! # fields -CHARACTER(LEN=128), ALLOCATABLE :: CFLDNAMES2D(:) ! # fields -CHARACTER(LEN=1), ALLOCATABLE :: CFLDTYPES2D(:) ! # fields - -END TYPE TTDDH - -!!TYPE(TTDDH), POINTER :: YRTDDH => NULL() - -! POINTEURS - -! TABLEAUX DE CUMUL DES DIAGNOSTICS DDH -! -------------------------------------- - -! DHCV. : TABLEAUX DE CUMULS DES VARIABLES/FLUX EN PROFILS VERTICAUX -! DHCVB.: TABLEAUX DE CUMULS PAR VARIABLES/FLUX NON DECOUPES EN NIVEAUX -! DHCS. : TABLEAUX DE CUMULS DES VARIABLES/FLUX AU SOL - -! ORGANISATION DES TABLEAUX: -! CHAMPS ATMOSPHERIQUES -! TABLEAUX ---0 : VARIABLES INITIALES -! TABLEAUX ---1 : VARIABLES A NSTEP NON FILTREES -! TABLEAUX ---0 : CUMULS JUSQU A NSTEP-1 -! TABLEAUX ---1 : CUMULS JUSQU A NSTEP -! 1 A NDHVV: VARIABLES DU MODELE -! NDHVV+1 A NDHVV+NDHAVD: TENDANCES DYNAMIQUES -! NDHVV+NDHAVD+1 A NDHVV+NDHFVD: FLUX DYNAMIQUES -! NDHVV+NDHFVD+1 A NDHVV+NDHFVD+NDHAVP: FLUX PHYSIQUES -! NDHVV+NDHFVD+NDHAVP+1 A NDHCV: TENDANCES PHYSIQUES -! CHAMPS SOL -! TABLEAUX ---0 : VARIABLES INITIALES -! TABLEAUX ---1 : VARIABLES A NSTEP NON FILTREES -! TABLEAUX ---0 : CUMULS JUSQU A NSTEP-1 -! TABLEAUX ---1 : CUMULS JUSQU A NSTEP -! 1 A NDHVS: VARIABLES DU MODELE -! NDHVS+1 A NDHVS+NDHVFS: FREE-STYLE VARIABLES -! NDHVS+NDHVFS+1 A NDHVS+NDHVFS+NDHFSD: CUMULS DYNAMIQUES -! NDHVS+NDHVFS+NDHFSD+1 A -! NDHVS+NDHVFS+NDHFSD+NDHFSP: CUMULS PHYSIQUES -! NDHVS+NDHVFS+NDHFSD+NDHFSP+1 A -! NDHVS+NDHVFS+NDHFSD+NDHFSP+NDHFFS=NDHCS: FREE-STYLE FLUXES - -! LA VALEUR D UN CHAMP AU NIVEAU JLEV = 0 N A DE SENS QUE POUR LES -! FLUX. POUR LES TENDANCES ET VARIABLES, CETTE VALEUR EST NULLE - -! CONTENU DES TABLEAUX -! -------------------- - -!* 1. PROFILS VERTICAUX - -!* 1.1 VARIABLES - -! SI LHDHKS (DEBUT A L'INDICE 1) -! 1-VPP - MASSE D'AIR -! 2-VQV - MASSE DE VAPEUR D'EAU QV -! 3-VUU - QUANTITE DE MOUVEMENT ZONALE UZ -! 4-VVV - QUANTITE DE MOUVEMENT MERIDIENNE VM -! 5-VKK - ENERGIE CINETIQUE KENE -! 6-VCT - ENTHALPIE CP*T -! 7-VEP - ENERGIE POTENTIELLE PHI -! 8-VHR - HUMIDITE RELATIVE -! 9-VQL - MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.) -! 10-VQN - MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.) -! 11-VQR - RAIN MASS (SI LHDQLN=.TRUE.) -! 12-VQS - SNOW MASS (SI LHDQLN=.TRUE.) -! 13-VQG - GRAUPEL MASS (SI LHDQLN=.TRUE.) -! 9+NHDQLNVA-V01 - VARIABLE PASSIVE NUMERO 01 (SI LHDPAS=.TRUE.) -! ... -! 9+NHDQLNVA+NHDPASVA-1-Vxx - VARIABLE PASSIVE NUMERO xx=NHDPASVA (SI LHDPAS=.TRUE.) -! 9+NHDQLNVA+NHDPASVA-VNT - NEBULOSITE TOTALE -! 10+NHDQLNVA+NHDPASVA-VOM - VITESSE VERTICALE EN COORDONNEE PRESSION -! SI LHDMCI (DEBUT A L'INDICE NDHVHK+1) -! 1-VA1 - MOMENT ANGULAIRE A1 -! 2-VA2 - MOMENT ANGULAIRE A2 -! 3-VA3 - MOMENT ANGULAIRE A3 -! SI LHDENT (DEBUT A L'INDICE NDHVHK+NDHVMC+1) -! 1-VSS - ENTROPIE: S - -!* 1.2 TENDANCES DYNAMIQUES - -! SI LHDHKS (DEBUT A L'INDICE NDHVV+1) -! 1-TPPDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'AIR -! 2-TQVDIVFLUHOR - DIV. FLUX HORIZONTAL DE VAPEUR D'EAU -! 3-TUUDIVFLUHOR - DIV. FLUX HORIZONTAL QTE DE MVT ZONALE (CALCUL PARTIEL) -! 4-TVVDIVFLUHOR - DIV. FLUX HORIZONTAL QTE DE MVT MERIDIENNE (PARTIEL) -! 5-TUUFFVGADPSG - QTE DE MVT AGEOSTROPHIQUE MERIDIENNE -! 6-TVVFFVGADPSG - QTE DE MVT AGEOSTROPHIQUE ZONALE -! 7-TKKDIVFLUHOR - DIV. FLUX HORIZONTAL ENERGIE CINETIQUE -! 8-TKKCONVERSI1 - TRAVAIL DES FORCES DE PRESSION -! 9-TCTDIVFLUHOR - DIV. FLUX HORIZONTAL ENTHALPIE -! 10-TCTCONVERSI2 - CONVERSION D'ENERGIE INTERNE -! 11-TCTCONVERSI3 - CONVERSION D'ENERGIE INTERNE INDUITE PAR LES PRECIPITATIONS -! 12-TEPDIVFLUHOR - DIV. FLUX HORIZONTAL ENERGIE POTENTIELLE -! 13-PPP - MASSE D'AIR: CUMUL TEMPOREL -! 14-TQLDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.) -! 15-TQNDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.) -! 16-TQRDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE RAIN -! 17-TQSDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE SNOW -! 18-TQGDIVFLUHOR - DIV. FLUX HORIZONTAL DE MASSE GRAUPEL -! SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHAHKD+1) -! 1-TA1DIVFLUHOR - MOMENT ANGULAIRE A1: DIV. FLUX HORIZONTAL -! 2-TA2DIVFLUHOR - MOMENT ANGULAIRE A2: DIV. FLUX HORIZONTAL -! 3-TA3DIVFLUHOR - MOMENT ANGULAIRE A3: DIV. FLUX HORIZONTAL -! 4-TA1ADJUST - MOMENT ANGULAIRE A1: TERME D'AJUSTEMENT -! 5-TA2ADJUST - MOMENT ANGULAIRE A2: TERME D'AJUSTEMENT -! 6-TA3ADJUST - MOMENT ANGULAIRE A3: TERME D'AJUSTEMENT -! 7-TA1NONAX - MOMENT ANGULAIRE A1: MOMENT NON AXIAL -! 8-TA2NONAX - MOMENT ANGULAIRE A2: MOMENT NON AXIAL -! SI LHDENT (DEBUT A L'INDICE NDHVV+NDHAHKD+NDHAMCD+1) -! 1-TSSDIVFLUHOR - ENTROPIE: DIV. FLUX HORIZONTAL -! 2-TSSPRECICT - ENTROPIE: EFFET PRECIPITATIONS SUR ENTHALPIE - -!* 1.3 FLUX DYNAMIQUES - -! SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHAVD+1) -! 1-FPPFLUVERTDYN- VERTICAL DE MASSE D'AIR -! 2-FQVFLUVERTDYN- VERTICAL DE VAPEUR D'EAU -! 3-FUUFLUVERTDYN- VERTICAL DE QTE DE MVT ZONALE -! 4-FVVFLUVERTDYN- VERTICAL DE QTE DE MVT MERIDIENNE -! 5-FUUFLUDUAPLUI- QTE DE MVT ZONALE TRANSPORTEE PAR PRECIPITATIONS -! 6-FVVFLUDUAPLUI- QTE DE MVT MERIDIENNE TRANSPORTEE PAR PRECIPITATIONS -! 7-FKKFLUVERTDYN- VERTICAL D'ENERGIE CINETIQUE -! 8-FKKFLUDUAPLUI- ENERGIE CINETIQUE TRANSPORTEE PAR PRECIPITATIONS -! 9-FCTFLUVERTDYN- VERTICAL D'ENTHALPIE -! 10-FEPCONVERSIFL- PSEUDO VERTICAL D'ENERGIE POTENTIELLE -! 11-FQLFLUVERTDYN- VERTICAL DE MASSE D'EAU LIQUIDE (SI LHDQLN=.TRUE.) -! 12-FQNFLUVERTDYN- VERTICAL DE MASSE D'EAU NEIGEUSE (SI LHDQLN=.TRUE.) -! 13-FQRFLUVERTDYN- VERTICAL DE MASSE RAIN (SI LHDQLN=.TRUE.) -! 14-FQSFLUVERTDYN- VERTICAL DE MASSE SNOW (SI LHDQLN=.TRUE.) -! 15-FQGFLUVERTDYN- VERTICAL DE MASSE GRAUPEL (SI LHDQLN=.TRUE.) -! SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHAVD+NDHBHKD+1) -! 1-FA1FLUVERTDYN- MOMENT ANGULAIRE A1: FLUX VERTICAL DYNAMIQUE -! 2-FA2FLUVERTDYN- MOMENT ANGULAIRE A2: FLUX VERTICAL DYNAMIQUE -! 3-FA3FLUVERTDYN- MOMENT ANGULAIRE A3: FLUX VERTICAL DYNAMIQUE -! 4-FA1GRAV - MOMENT ANGULAIRE A1: FORCE DE GRAVITE -! 5-FA2GRAV - MOMENT ANGULAIRE A2: FORCE DE GRAVITE -! 6-FA3GRAV - MOMENT ANGULAIRE A3: FORCE DE GRAVITE -! 7-FA1FLUDUAPLUI- MOMENT ANGULAIRE A1: FLUX DU AUX PRECIPITATIONS (NDPSFI=1) -! 8-FA2FLUDUAPLUI- MOMENT ANGULAIRE A2: FLUX DU AUX PRECIPITATIONS (NDPSFI=1) -! 9-FA3FLUDUAPLUI- MOMENT ANGULAIRE A3: FLUX DU AUX PRECIPITATIONS (NDPSFI=1) -! SI LHDENT (DEBUT A L'INDICE NDHVV+NDHAVD+NDHBHKD+NDHBMCD+1) -! 1-FSSFLUVERTDYN- ENTROPIE: FLUX VERTICAL DYNAMIQUE -! 2-FSSPRECISS - ENTROPIE: EFFET DIRECT DES PRECIPITATIONS - -!* 1.4 FLUX PHYSIQUES - -! SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHFVD+1) -! 1-FPPSUMFPL - TOTAL DE PRECIPITATION, PERTE DE MASSE D'AIR -! 2-FQVTUR - TURBULENT DE VAPEUR D'EAU -! 3-FQVTURCONV - TURBULENT DE VAPEUR D'EAU DU A LA CONVECTION -! 4-FQVPRECISTL - DE PRECIPITATION STRATIFORME LIQUIDE -! 5-FQVPRECISTN - DE PRECIPITATION STRATIFORME NEIGEUSE -! 6-FQVPRECISTG - DE PRECIPITATION STRATIFORME GRESILE -! 7-FQVPRECICOL - DE PRECIPITATION CONVECTIVE LIQUIDE -! 8-FQVPRECICON - DE PRECIPITATION CONVECTIVE NEIGEUSE -! 9-FQVPRECICOG - DE PRECIPITATION CONVECTIVE GRESILE -! 10-FQVTURQNEGAT - DE VAPEUR D'EAU COMPENSANT LES VALEURS < 0 -! 11-FUUTUR - TURBULENT DE QTE DE MVT ZONALE -! 12-FVVTUR - TURBULENT DE QTE DE MVT MERIDIENNE -! 6-FQVPRECICOL - DE PRECIPITATION CONVECTIVE LIQUIDE -! 7-FQVPRECICON - DE PRECIPITATION CONVECTIVE NEIGEUSE -! 8-FQVTURQNEGAT - DE VAPEUR D'EAU COMPENSANT LES VALEURS < 0 -! 9-FUUTUR - TURBULENT DE QTE DE MVT ZONALE -! 10-FVVTUR - TURBULENT DE QTE DE MVT MERIDIENNE -! 11-FUUTURCONV - TURBULENT DE QTE DE MVT ZONALE DU A LA CONVECTION -! 12-FVVTURCONV - TURBULENT DE QTE DE MVT ZONALE DU A LA CONVECTION -! 13-FUUONDEGREL - TURBULENT DE QTE DE MVT MERIDIENNE DU AUX ONDES OROGRAPHIQUES -! 14-FUUONDEGREL - TURBULENT DE QTE DE MVT MERIDIENNE DU AUX ONDES OROGRAPHIQUES -! 15-FCTTUR - TURBULENT SEC D'ENTHALPIE -! 16-FCTTURCONV - TURBULENT CONVECTIF D'ENTHALPIE -! 17-FCTRAYSOL1 - DE RAYONNEMENT SOLAIRE -! 18-FCTRAYTER1 - DE RAYONNEMENT THERMIQUE -! 19-FCTPRECISTL - D'ENTHALPIE DU AUX PRECIPITATIONS STRATIFORMES LIQUIDES -! 20-FCTPRECISTN - D'ENTHALPIE DU AUX PRECIPITATIONS STRATIFORMES NEIGEUSES -! 21-FCTPRECICOL - D'ENTHALPIE DU AUX PRECIPITATIONS CONVECTIVES LIQUIDES -! 22-FCTPRECICON - D'ENTHALPIE DU AUX PRECIPITATIONS CONVECTIVES NEIGEUSES -! 23-FCTPRECCSCOL - DE CHAL. SENS. DU AUX PRECIPITATIONS CONVECTIVES LIQUIDES -! 24-FCTPRECCSCON - DE CHAL. SENS. DU AUX PRECIPITATIONS CONVECTIVES NEIGEUSES -! 25-FCTPRECCSSTL - DE CHAL. SENS. DU AUX PRECIPITATIONS STRATIFORMES LIQUIDES -! 26-FCTPRECCSSTN - DE CHAL. SENS. DU AUX PRECIPITATIONS STRATIFORMES NEIGEUSES -! 27-FQLTUR - TURBULENT D'EAU LIQUIDE (SI LHDQLN=.TRUE.) -! 28-FQNTUR - TURBULENT D'EAU NEIGEUSE (SI LHDQLN=.TRUE.) -! 29-FQLTURCONV - TURBULENT D'EAU LIQUIDE DU A LA CONVECTION (SI LHDQLN=.TRUE.) -! 30-FQNTURCONV - TURBULENT D'EAU NEIGEUSE DU A LA CONVECTION (SI LHDQLN=.TRUE.) -! 31-FQLTURQNEGAT - D'EAU LIQUIDE COMPENSANT LES VALEURS < 0 (SI LHDQLN=.TRUE.) -! 32-FQNTURQNEGAT - D'EAU NEIGEUSE COMPENSANT LES VALEURS < 0 (SI LHDQLN=.TRUE.) -! 33-FQTCONDECOL - DE CONDENSATION CONVECTIVE LIQUIDE (SI LHDQLN=.TRUE.) -! 34-FQTCONDECON - DE CONDENSATION CONVECTIVE NEIGEUSE (SI LHDQLN=.TRUE.) -! 35-FQTCONDESTL - DE CONDENSATION STRATIFORME LIQUIDE (SI LHDQLN=.TRUE.) -! 36-FQTCONDESTN - DE CONDENSATION STRATIFORME NEIGEUSE (SI LHDQLN=.TRUE.) -! 37-FQRTURQNEGAT - pseudo-flux of rain to compensate <0 -! 38-FQSTURQNEGAT - pseudo-flux of snow to compensate <0 -! 39-FQTCONDESTR - rain flux from cloudsc -! 40-FQTCONDESTS - snow flux from cloudsc -! SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAHKP+1) -! 1-FA1TUR - MOMENT ANGULAIRE A1: DIFFUSION VERTICALE -! 2-FA2TUR - MOMENT ANGULAIRE A2: DIFFUSION VERTICALE -! 3-FA3TUR - MOMENT ANGULAIRE A3: DIFFUSION VERTICALE -! 4-FA1TURCONV - MOMENT ANGULAIRE A1: PROCESSUS CONVECTIFS TURBULENTS -! 5-FA2TURCONV - MOMENT ANGULAIRE A2: PROCESSUS CONVECTIFS TURBULENTS -! 6-FA3TURCONV - MOMENT ANGULAIRE A3: PROCESSUS CONVECTIFS TURBULENTS -! 7-FA1ONDEGREL - MOMENT ANGULAIRE A1: ONDES DE GRAVITE OROGRAPHIQUES -! 8-FA2ONDEGREL - MOMENT ANGULAIRE A2: ONDES DE GRAVITE OROGRAPHIQUES -! 9-FA3ONDEGREL - MOMENT ANGULAIRE A3: ONDES DE GRAVITE OROGRAPHIQUES -! SI LHDENT (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAHKP+NDHAMCP+1) - -!* 1.5 TENDANCES PHYSIQUES - -! SI LHDHKS (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+1) -! 1-TKKDISSIPTUR - DISSIPATION DUE A LA TURBULENCE SECHE -! 2-TKKDISSIPCONV- DISSIPATION DUE A LA CONVECTION -! 3-TKKDISSIPGREL- DISSIPATION DUE AUX ONDES DE GRAVITE INDUITES PAR LE RELIEF -! SI LHDMCI (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+NDHBHKP+1) -! SI LHDENT (DEBUT A L'INDICE NDHVV+NDHFVD+NDHAVP+NDHBHKP+NDHBMCP+1) -! 1-TSSDISSIPTUR - ENTROPIE: DISSIPATION DUE AUX PROCESSUS TURBULENTS SECS -! TURBULENT DISSIPATION OF ENERGY -! 2-TSSDISSIPCONV- ENTROPIE: DISSIPATION DUE AUX PROCESSUS TURBULENTS CONVECTIFS -! CONVECTIVE DISSIPATION OF ENERGY -! 3-TSSDISSIPGREL- ENTROPIE: DISSIPATION DUE AUX ONDES DE RELIEF -! GRAVITY WAVE DRAG DISSIP. OF ENERGY -! 4-TSSTURQVTOT - ENTROPIE: PROCESSUS TURBULENTS SUR LA VAPEUR D'EAU -! DIFFUSION OF HUMIDITY -! 5-TSSRAY1 - ENTROPIE: EFFET DU RAYONNEMENT -! RADIATION -! 6-TSSTURCTTOT - ENTROPIE: PROCESSUS TURBULENTS SUR L'ENTHALPIE -! DIFFUSION OF ENTHALPY - -!* 2. VARIABLES AU SOL - -!* 2.1 VARIABLES -! SUR LES POINTS TERRE UNIQUEMENT - -! SI LHDHKS -! 1-S V - SURFACE DE TERRE DU DOMAINE (MOYENNE PONDEREE DES PLSM) -! 2-S V - ENERGIE COUCHE SURFACE -! 3-S V - ENERGIE COUCHE PROFONDE -! 4-S V - HAUTEUR D'EAU COUCHE SURFACE -! 5-S V - HAUTEUR D'EAU COUCHE PROFONDE -! 6-S V - HAUTEUR DE NEIGE COUCHE SURFACE -! SI LHDMCI -! SI LHDENT - -!* 2.1a FREE-STYLE VARIABLES -! (NOTE: VALID OVER LAND AND SEA) - -! IF LHDHKS.AND.LECMWF -! 1-SVGFS - 2-METRE TEMPERATURE -! 2-SVGFS - 2-METRE DEWPOINT -! 3-SVGFS - 10-METRE U-COMPONENT -! 4-SVGFS - 10-METRE V-COMPONENT -! 5-SVGFS - SKIN TEMPERATURE -! 6-SVGFS - FORECAST SURFACE ROUGHNESS -! 7-SVGFS - FORECAST SURFACE ROUGHNESS FOR HEAT -! 8-SVGFS - FORECAST ALBEDO -! IF LHDMCI -! IF LHDENT - -!* 2.2 TENDANCES/FLUX DYNAMIQUES -! SUR LES POINTS TERRE UNIQUEMENT - -! SI LHDHKS -! SI LHDMCI -! SI LHDENT - -!* 2.3 TENDANCES/FLUX PHYSIQUES -! SUR LES POINTS TERRE UNIQUEMENT - -! IF LHDHKS -! 1-S FVRAC - FLUX DE RAYONNEMENT SOLAIRE NET (GAIN ALGEBRIQUE POUR LA COUCHE S) -! 2-S FVRAC - FLUX DE RAYONNEMENT THERMIQUE NET -! 3-S FVRAC - FLUX DE CHALEUR LATENTE, EVAPORATION DE LIQUIDE -! 4-S FVRAC - FLUX DE CHALEUR LATENTE, EVAPORATION DE NEIGE -! 5-S FVRAC - FLUX DE CHALEUR SENSIBLE -! 6-S FVRAC - FLUX DE CHALEUR VERS SOL PROFOND (GAIN ALGEBRIQUE POUR COUCHE P) -! 7-S FVRAC - FLUX DE CHALEUR RESULTANT DE LA FONTE DE NEIGE (COUCHE S) -! 8-S FVRAC - FLUX DE PRECIPITATIONS STRATIFORMES LIQUIDES (GAIN POUR LA COUCHE S) -! 9-S FVRAC - FLUX DE PRECIPITATIONS STRATIFORMES NEIGEUSES -! 10-S FVRAC - FLUX DE PRECIPITATIONS STRATIFORMES GRESILES -! 11-S FVRAC - FLUX DE PRECIPITATIONS CONVECTIVES LIQUIDES -! 12-S FVRAC - FLUX DE PRECIPITATIONS CONVECTIVES NEIGEUSES -! 13-S FVRAC - FLUX DE PRECIPITATIONS CONVECTIVES GRESILES -! 14-S FVRAC - FLUX D'EVAPORATION DE LIQUIDE -! 15-S FVRAC - FLUX D'EVAPORATION DE NEIGE -! 16-S FVRAC - FLUX D'EAU VERS LA COUCHE PROFONDE (GAIN POUR COUCHE P) -! 17-S FVRAC - FLUX NEIGE VERS LIQUIDE (FONTE EN SURFACE, COUCHE S) -! 18-S FVRAC - TROP-PLEIN EN SURFACE (RUISSELLEMENT, PERDU) -! 19-S FVRAC - TROP-PLEIN EN PROFONDEUR (PERDU) -! IF LHDMCI -! IF LHDENT - -!* 2.3a FREE-STYLE FLUXES -! (NOTE: VALID OVER LAND AND SEA) - -! IF LHDHKS.AND.LECMWF -! 1-SFGFS - SURFACE SOLAR RADIATION DOWNWARDS -! 2-SFGFS - SURFACE THERMAL RADIATION DOWNWARDS -! IF LHDMCI -! IF LHDENT - -END MODULE YOMTDDH diff --git a/src/common/micro/mode_rain_ice_old_fast_rg.F90 b/src/common/micro/mode_rain_ice_old_fast_rg.F90 index 94d6dd5df476cca39fac84c5435f7a6931aee74d..3b17c5903c06a3cfe628e8d323425aab39858d5c 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rg.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rg.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG CONTAINS - SUBROUTINE RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, KRR, & OCND2, LTIW, GMICRO, & PRHODJ, PTHS, & @@ -19,7 +19,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG PCJ, PKA, PDV, & PLBDAR, PLBDAG, PLBDAS, & PTIW, PZT, PRES, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -28,12 +28,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, & - LBUDGET_RI, LBUDGET_RS, LBUDGET_RH - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, & + NBUDGET_RI, NBUDGET_RS, NBUDGET_RH IMPLICIT NONE @@ -41,6 +38,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG TYPE(CST_T), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF REAL, INTENT(IN) :: PTSTEP ! Double Time step INTEGER, INTENT(IN) :: KSIZE @@ -89,9 +87,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG REAL, DIMENSION(KSIZE), INTENT(IN) :: PZT ! Temperature REAL, DIMENSION(KSIZE), INTENT(IN) :: PRES ! Pressure - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS LOGICAL, DIMENSION(KSIZE) :: GDRY ! Test where to compute dry growth @@ -120,6 +117,11 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG ! IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RG',0,ZHOOK_HANDLE) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW1(:,3:4) = 0.0 DO JK = 1, KSIZE IF ((PRIT(JK) > ICED%XRTMIN(4) .AND. PRIT(JK)>ICEP%XFRMIN(2)) .AND. & @@ -139,17 +141,23 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'CFRZ_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'CFRZ_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 6.2 compute the Dry growth case + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF ( KRR == 7 ) THEN + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + END IF + ZZW1(:,:) = 0.0 DO JK = 1, KSIZE IF ((PRGT(JK) > ICED%XRTMIN(6)) .AND. & @@ -284,7 +292,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG ZZW(:) = 0.0 ZRWETG(:) = 0.0 - DO JK = 1, JK + DO JK = 1, KSIZE IF (PRGT(JK)>ICED%XRTMIN(6)) THEN ZZW1(JK,5) = MIN( PRIS(JK), & ZZW1(JK,2) / (ICEP%XCOLIG*EXP(ICEP%XCOLEXIG*(PZT(JK)-CST%XTT)) ) ) ! RIWETG @@ -364,23 +372,23 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG END DO END IF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'WETG_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'WETG_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'WETG_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'WETG_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'WETG_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) IF ( KRR == 7 ) THEN - IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 12,'WETG_BU_RRH',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) END IF + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + DO JK = 1, KSIZE IF (PRGT(JK) > ICED%XRTMIN(6) .AND. & PRGT(JK) > ICEP%XFRMIN(4) .AND. & @@ -398,21 +406,19 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'DRYG_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'DRYG_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'DRYG_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'DRYG_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 6.5 Melting of the graupeln + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 IF (LTIW) THEN @@ -466,12 +472,10 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG END DO ENDIF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'GMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'GMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'GMLT_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RG',1,ZHOOK_HANDLE) END SUBROUTINE RAIN_ICE_OLD_FAST_RG diff --git a/src/common/micro/mode_rain_ice_old_fast_rh.F90 b/src/common/micro/mode_rain_ice_old_fast_rh.F90 index 6f1a04973ba38d3eae05efecc373cffa89f0fd34..0416986331ab47c8a34d744cdadcd078c59bb089 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rh.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rh.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH CONTAINS - SUBROUTINE RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, BUCONF, & KSIZE, KRR, & GMICRO, & PTHS, PRHODJ, & @@ -19,7 +19,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH PLBDAS, PLBDAG, PLBDAH, & PCJ, PKA, PDV, & PZT, PRES, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -28,12 +28,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, & - LBUDGET_RI, LBUDGET_RS, LBUDGET_RH - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, & + NBUDGET_RI, NBUDGET_RS, NBUDGET_RH IMPLICIT NONE @@ -41,6 +38,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH TYPE(CST_T), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KSIZE INTEGER, INTENT(IN) :: KRR @@ -82,9 +80,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH REAL, DIMENSION(KSIZE), INTENT(IN) :: PZT ! Temperature REAL, DIMENSION(KSIZE), INTENT(IN) :: PRES ! Pressure - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS LOGICAL, DIMENSION(KSIZE) :: GWET ! Test where to compute wet growth LOGICAL, DIMENSION(KSIZE) :: GHAIL ! Test where to compute hail growth @@ -111,6 +108,14 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH GHAIL(:) = PRHT(:)>ICED%XRTMIN(7) IHAIL = COUNT(GHAIL(:)) + + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) ! IF( IHAIL>0 ) THEN ! @@ -286,23 +291,20 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH END DO END IF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'WETH_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'WETH_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'WETH_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'WETH_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'WETH_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 7.45 Conversion of the hailstones into graupel + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF( IHAIL>0 ) THEN ! !* 7.5 Melting of the hailstones @@ -329,12 +331,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH END DO END IF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:),& - 4,'HMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'HMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RH) CALL BUDGET_DDH(UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 12,'HMLT_BU_RRH',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', UNPACK(PRHS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RH',1,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_rain_ice_old_fast_ri.F90 b/src/common/micro/mode_rain_ice_old_fast_ri.F90 index fd985533253a648fa223d84d66a5fa489a01380a..16cdc370e02bf8bb902a84587bbd73cf62471fa3 100644 --- a/src/common/micro/mode_rain_ice_old_fast_ri.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_ri.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI CONTAINS - SUBROUTINE RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, & OCND2, LMODICEDEP, GMICRO, & PRHODJ, PTHS, & @@ -22,7 +22,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI PZT, PRES, PSSI, & PSIFRC, PESI, & PCITRED, PCITRED23, PDICRIT, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -33,11 +33,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI USE MODE_RAIN_ICE_OLD_ICENUMBER2, ONLY: ICENUMBER2 - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RC, LBUDGET_RI - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, & + LBU_ENABLE, NBUDGET_TH, NBUDGET_RC, NBUDGET_RI IMPLICIT NONE @@ -45,6 +43,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI TYPE(CST_T), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF REAL, INTENT(IN) :: PTSTEP ! Double Time step INTEGER, INTENT(IN) :: KSIZE @@ -92,9 +91,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI REAL, INTENT(IN) :: PCITRED23 REAL, INTENT(IN) :: PDICRIT - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS REAL, DIMENSION(KSIZE) :: ZCRYSHA ! Ice crystal habit factor REAL, DIMENSION(KSIZE) :: ZCI2S ! factor to turn cloud ice with few lagre crystals into snow @@ -115,6 +113,10 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RI',0,ZHOOK_HANDLE) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 DO JK = 1, KSIZE IF ((PRIS(JK)>0.0) .AND. (PZT(JK)>CST%XTT)) THEN @@ -126,15 +128,16 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'IMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'IMLT_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 7.2 Bergeron-Findeisen effect: RCBERI + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 IF(OCND2)THEN @@ -218,12 +221,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI END DO ENDIF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'BERFI_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'BERFI_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'BERFI_BU_RRI',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RI',1,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_rain_ice_old_fast_rs.F90 b/src/common/micro/mode_rain_ice_old_fast_rs.F90 index 272c52e64e61781a87355b5cb995856a14f6107e..4fc69b2169f665fdebd9ea1b2b2a9f347510a32e 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rs.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rs.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS CONTAINS - SUBROUTINE RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, KRR, GMICRO, & PRHODJ, PTHS, & ZRVT, ZRCT, ZRRT, ZRST, & @@ -17,7 +17,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS ZRHODREF, ZRHODJ, ZLSFACT, ZLVFACT, & ZCJ, ZKA, ZDV, & ZLBDAR, ZLBDAS, ZCOLF, ZPRES, ZZT, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -26,11 +26,9 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, LBUDGET_RS - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, & + LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, NBUDGET_RS IMPLICIT NONE @@ -38,6 +36,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS TYPE(CST_T), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF REAL, INTENT(IN) :: PTSTEP ! Double Time step INTEGER, INTENT(IN) :: KSIZE @@ -76,9 +75,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS REAL, DIMENSION(KSIZE), INTENT(IN) :: ZZT ! Temperature REAL, DIMENSION(KSIZE), INTENT(IN) :: ZPRES ! Pressure - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS LOGICAL, DIMENSION(KSIZE) :: GMASK ! Test where to compute riming/accretion @@ -101,6 +99,12 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS !* 5.1 cloud droplet riming of the aggregates ! IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RS',0,ZHOOK_HANDLE) + + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW1(:,:) = 0.0 ! GMASK(:) = (ZRCT(:)>ICED%XRTMIN(2)) .AND. (ZRST(:)>ICED%XRTMIN(5)) .AND. & @@ -173,17 +177,18 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS END DO END IF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'RIM_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'RIM_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 5.2 rain accretion onto the aggregates + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW1(:,2:3) = 0.0 GMASK(:) = (ZRRT(:) > ICED%XRTMIN(3)) .AND. & (ZRST(:) > ICED%XRTMIN(5)) .AND. & @@ -293,21 +298,16 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS END DO END IF - IF (LBUDGET_TH) CALL BUDGET_DDH ( & - UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH ( & - UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'ACC_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH ( & - UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'ACC_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH ( & - UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 5.3 Conversion-Melting of the aggregates + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 DO JK = 1, KSIZE IF ((ZRST(JK)>ICED%XRTMIN(5)) .AND. (ZRSS(JK)>0.0) .AND. (ZZT(JK)>CST%XTT)) THEN @@ -333,10 +333,8 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS END IF END DO - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'CMEL_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', UNPACK(ZRSS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', UNPACK(ZRGS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RS',1,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 b/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 index 0ae2581815af5e66c03bd8ec9eeb62cf3c40aa96..ea89a3626600ff763f09976e2a467e5962e0a594 100644 --- a/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 +++ b/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 @@ -249,9 +249,7 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT ENDDO DO JK = D%NKTB , D%NKTE - DO JI = D%NIB, D%NIE - PRRS(:,JK) = PRRS(:,JK) + ZW(:,JK)*(ZWSED(:,JK+KKL)-ZWSED(:,JK)) - ENDDO + PRRS(:,JK) = PRRS(:,JK) + ZW(:,JK)*(ZWSED(:,JK+KKL)-ZWSED(:,JK)) ENDDO IF (PRESENT(PFPR)) THEN DO JK = D%NKTB , D%NKTE diff --git a/src/common/micro/mode_rain_ice_old_slow.F90 b/src/common/micro/mode_rain_ice_old_slow.F90 index ed2de7de3197d3b6054f91d6e833a85c8bc1ac92..0b26730c45e9dc48cb0e31ecf5c2c8cbf93b1f63 100644 --- a/src/common/micro/mode_rain_ice_old_slow.F90 +++ b/src/common/micro/mode_rain_ice_old_slow.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW CONTAINS - SUBROUTINE RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, & + SUBROUTINE RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, BUCONF, & KSIZE, OCND2, LMODICEDEP, & PTSTEP, ZREDSN, & GMICRO, PRHODJ, PTHS, PRVS, & @@ -21,7 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW PLBDAG, PKA, PDV, & PAI, PCJ, PAA2, PBB3, & ZDICRIT, ZREDGR, ZKVO, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -30,13 +30,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, & - LBUDGET_RI, LBUDGET_RS, LBUDGET_RV + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, LBU_ENABLE, NBUDGET_TH, NBUDGET_RG, NBUDGET_RR, NBUDGET_RC, & + NBUDGET_RI, NBUDGET_RS, NBUDGET_RV USE MODE_RAIN_ICE_OLD_ICENUMBER2, ONLY: ICENUMBER2 @@ -46,6 +43,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW TYPE(CST_T), INTENT(IN) :: CST TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_T), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KSIZE LOGICAL, INTENT(IN) :: OCND2 @@ -98,9 +96,8 @@ MODULE MODE_RAIN_ICE_OLD_SLOW REAL, INTENT(IN) :: ZDICRIT, ZREDGR ! Possible reduction of the rate of graupel,snow growth REAL, INTENT(IN) :: ZKVO ! factor used for caluclate maximum mass in the ice distubution. - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS ! !* 3.2 compute the homogeneous nucleation source: RCHONI ! @@ -120,6 +117,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW ZINVTSTEP=1./PTSTEP ZZW(:) = 0.0 + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + DO JL = 1, KSIZE IF ((PZT(JL)<CST%XTT-35.0) .AND. (PRCT(JL)>ICED%XRTMIN(2)) .AND. (PRCS(JL)>0.)) THEN ZZW(JL) = MIN( PRCS(JL),ICEP%XHON*PRHODREF(JL)*PRCT(JL) & @@ -130,15 +131,16 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'HON_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'HON_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', UNPACK(PRCS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 3.3 compute the spontaneous freezing source: RRHONG + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 DO JL = 1, KSIZE IF ((PZT(JL)<CST%XTT-35.0) .AND. (PRRT(JL)>ICED%XRTMIN(3)) .AND. (PRRS(JL)>0.)) THEN @@ -149,12 +151,9 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'SFR_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'SFR_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', UNPACK(PRRS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 3.4 compute the deposition, aggregation and autoconversion sources @@ -183,6 +182,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END DO ZZW(:) = 0.0 + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF(OCND2)THEN DO JL = 1, KSIZE IF ((PRST(JL)>ICED%XRTMIN(5)) .AND. (PRSS(JL)>0.0)) THEN @@ -214,15 +217,15 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END DO ENDIF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'DEPS_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:), & - 6,'DEPS_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 3.4.4 compute the aggregation on r_s: RIAGGS + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 DO JL = 1, KSIZE IF ((PRIT(JL)>ICED%XRTMIN(4)) .AND. (PRST(JL)>ICED%XRTMIN(5)) .AND. (PRIS(JL)>0.0)) THEN @@ -235,15 +238,15 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END IF END DO - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 3.4.5 compute the autoconversion of r_i for r_s production: RIAUTS ZCRIAUTI(:)=MIN(ICEP%XCRIAUTI,10**(ICEP%XACRIAUTI*(PZT(:)-CST%XTT)+ICEP%XBCRIAUTI)) ZZW(:) = 0.0 + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) DO JL = 1, KSIZE IF ((PRIT(JL)>ICED%XRTMIN(4)) .AND. (PRIS(JL)>0.0)) THEN ZZW(JL) = MIN(PRIS(JL),ICEP%XTIMAUTI * EXP(ICEP%XTEXAUTI*(PZT(JL)-CST%XTT)) & @@ -292,10 +295,8 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END DO ENDIF - IF (LBUDGET_RI) CALL BUDGET_DDH(UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 9,'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH(UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', UNPACK(PRIS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', UNPACK(PRSS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 3.4.6 compute the deposition on r_g: RVDEPG @@ -312,6 +313,10 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END IF END DO + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 DO JL = 1, KSIZE IF ((PRGT(JL)>ICED%XRTMIN(6)) .AND. (PRGS(JL)>0.0)) THEN @@ -340,12 +345,9 @@ MODULE MODE_RAIN_ICE_OLD_SLOW END IF END DO - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'DEPG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:), & - 6,'DEPG_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH(UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 11,'DEPG_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', UNPACK(PZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', UNPACK(PZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', UNPACK(PRGS(:)*PZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_SLOW',1,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_rain_ice_old_warm.F90 b/src/common/micro/mode_rain_ice_old_warm.F90 index e4854ba426883a88ef4061b81f768dbbc3c78639..17d6754de51e037044e9ffb3ff9e39253f7e1d42 100644 --- a/src/common/micro/mode_rain_ice_old_warm.F90 +++ b/src/common/micro/mode_rain_ice_old_warm.F90 @@ -9,7 +9,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM CONTAINS - SUBROUTINE RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, BUCONF, & KSIZE, OCND2, LKOGAN, GMICRO, & PRHODJ, PEVAP3D, PTHS, PRVS, & ZRVT, ZRCT, ZRRT, ZRCS, ZRRS, ZTHS, & @@ -21,7 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, & ZAA2W, ZBB3W, & ZZT, ZPRES, ZESW, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB USE YOMHOOK, ONLY: LHOOK, DR_HOOK @@ -33,11 +33,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM USE MODE_TIWMX, ONLY: ESATW, AA2W, BB3W - USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH - USE MODD_BUDGET, ONLY: LBUDGET_TH, LBUDGET_RR, LBUDGET_RC, LBUDGET_RV - USE DDH_MIX, ONLY: TYP_DDH - USE YOMLDDH, ONLY: TLDDH - USE YOMMDDH, ONLY: TMDDH + USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY + USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, & + LBU_ENABLE, NBUDGET_TH, NBUDGET_RR, NBUDGET_RC, NBUDGET_RV IMPLICIT NONE @@ -46,6 +44,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED + TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF INTEGER, INTENT(IN) :: KSIZE @@ -102,9 +101,8 @@ MODULE MODE_RAIN_ICE_OLD_WARM REAL, DIMENSION(KSIZE), INTENT(IN) :: ZZKGN_ACON REAL, DIMENSION(KSIZE), INTENT(IN) :: ZZKGN_SBGR - TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH - TYPE(TLDDH), INTENT(IN) :: YDLDDH - TYPE(TMDDH), INTENT(IN) :: YDMDDH + TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS + INTEGER, INTENT(IN) :: KBUDGETS REAL, DIMENSION(KSIZE) :: ZUSW ! Undersaturation over water @@ -127,6 +125,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM ! IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_WARM',0,ZHOOK_HANDLE) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (LKOGAN) THEN DO JK = 1, KSIZE IF (ZRCT(JK) > 1.0E-8) THEN ! Closely following Kogan autoconversion @@ -149,13 +150,14 @@ MODULE MODE_RAIN_ICE_OLD_WARM END DO ENDIF - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 4.3 compute the accretion of r_c for r_r production: RCACCR + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (PARAMI%CSUBG_RC_RR_ACCR == 'NONE') THEN !CLoud water and rain are diluted over the grid box DO JK = 1, KSIZE @@ -214,13 +216,15 @@ MODULE MODE_RAIN_ICE_OLD_WARM STOP 'wrong CSUBG_RC_RR_ACCR case' ENDIF - IF (LBUDGET_RC) CALL BUDGET_DDH(UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 7,'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', UNPACK(ZRCS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) !* 4.4 compute the evaporation of r_r: RREVAV + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) + ZZW(:) = 0.0 IF (PARAMI%CSUBG_RR_EVAP=='NONE') THEN @@ -341,12 +345,9 @@ MODULE MODE_RAIN_ICE_OLD_WARM STOP 'wrong CSUBG_RR_EVAP case' END IF - IF (LBUDGET_TH) CALL BUDGET_DDH(UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:), & - 4,'REVA_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH(UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:), & - 6,'REVA_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH(UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0), & - 8,'REVA_BU_RRR',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', UNPACK(ZTHS(:),MASK=GMICRO(:,:),FIELD=PTHS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', UNPACK(ZRVS(:),MASK=GMICRO(:,:),FIELD=PRVS)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', UNPACK(ZRRS(:)*ZRHODJ(:),MASK=GMICRO(:,:),FIELD=0.0)) ZW(:,:) = PEVAP3D(:,:) PEVAP3D(:,:) = UNPACK(ZZW(:), MASK=GMICRO(:,:), FIELD=ZW(:,:)) ! diff --git a/src/common/micro/modi_rain_ice_old.F90 b/src/common/micro/modi_rain_ice_old.F90 index f8ada7f34dd9f169c07de9c17f562825fd2790d4..8e4d4c289011fd02befd2d739019a3dc64581e96 100644 --- a/src/common/micro/modi_rain_ice_old.F90 +++ b/src/common/micro/modi_rain_ice_old.F90 @@ -3,34 +3,34 @@ ! #################### ! INTERFACE - SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, OSEDIC, OCND2, LKOGAN, LMODICEDEP, & - HSEDIM, HSUBG_AUCV_RC, OWARM, & - KKA, KKU, KKL, & - KSPLITR, PTSTEP, KRR, KSIZE, GMICRO, & - PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR,& - PICLDFR, PSSIO, PSSIU, PIFR, & - PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & - PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & - PINPRC, PINPRR, PEVAP3D, & - PINPRS, PINPRG, PSIGS, PSEA, PTOWN, & - YDDDH, YDLDDH, YDMDDH, & - PICENU, PKGN_ACON, PKGN_SBGR, & + SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF, & + OSEDIC, OCND2, LKOGAN, LMODICEDEP, & + HSEDIM, HSUBG_AUCV_RC, OWARM, & + KKA, KKU, KKL, & + KSPLITR, PTSTEP, KRR, KSIZE, GMICRO, & + PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, & + PICLDFR, PSSIO, PSSIU, PIFR, & + PTHT, PRVT, PRCT, PRRT, PRIT, PRST, & + PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & + PINPRC, PINPRR, PEVAP3D, & + PINPRS, PINPRG, PSIGS, PSEA, PTOWN, & + TBUDGETS, KBUDGETS, & + PICENU, PKGN_ACON, PKGN_SBGR, & PRHT, PRHS, PINPRH, PFPR) ! -USE DDH_MIX, ONLY : TYP_DDH -USE YOMLDDH, ONLY : TLDDH -USE YOMMDDH, ONLY : TMDDH +USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_PARAM_ICE, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_PARAM, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR, ONLY: RAIN_ICE_DESCR_T ! -TYPE(DIMPHYEX_T), INTENT(IN) :: D -TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(CST_T), INTENT(IN) :: CST TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI -TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP -TYPE(RAIN_ICE_DESCR_T), INTENT(IN) :: ICED +TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP +TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED +TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. LOGICAL, INTENT(IN) :: OCND2 ! Logical switch to separate liquid and ice @@ -42,7 +42,6 @@ CHARACTER(LEN=4), INTENT(IN) :: HSUBG_AUCV_RC ! Switch for rc->rr Sub LOGICAL, INTENT(IN) :: OWARM ! .TRUE. allows raindrops to ! form by warm processes ! (Kessler scheme) -! INTEGER, INTENT(IN) :: KKA !near ground array index INTEGER, INTENT(IN) :: KKU !uppest atmosphere array index INTEGER, INTENT(IN) :: KKL !vert. levels type 1=MNH -1=ARO @@ -52,58 +51,57 @@ REAL, INTENT(IN) :: PTSTEP ! Double Time step ! (single if cold start) INTEGER, INTENT(IN) :: KRR ! Number of moist variable ! -LOGICAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: GMICRO +LOGICAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: GMICRO ! Layer thickness (m) INTEGER, INTENT(IN) :: KSIZE - -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ ! Layer thickness (m) -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobian -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF! Reference density -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNREF ! Reference Exner function -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABST ! absolute pressure at t ! -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PCIT ! Pristine ice n.c. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PCLDFR ! Cloud fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDZZ ! Layer thickness (m) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODJ ! Dry density * Jacobian +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRHODREF! Reference density +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PEXNREF ! Reference Exner function +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPABST ! absolute pressure at t +! +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PCIT ! Pristine ice n.c. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PCLDFR ! Cloud fraction ! -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHT ! Theta at time t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRVT ! Water vapor m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRCT ! Cloud water m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRRT ! Rain water m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRIT ! Pristine ice m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRST ! Snow/aggregate m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRGT ! Graupel/hail m.r. at t -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSIGS ! Sigma_s at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHT ! Theta at time t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRVT ! Water vapor m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRCT ! Cloud water m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRRT ! Rain water m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRIT ! Pristine ice m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRST ! Snow/aggregate m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRGT ! Graupel/hail m.r. at t +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSIGS ! Sigma_s at t ! input from aro_adjust / condensation with OCND2, dummy if OCND2 = F -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PICLDFR ! ice cloud fraction -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSSIO ! Super-saturation with respect to ice in the - ! supersaturated fraction -REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSSIU ! Sub-saturation with respect to ice in the - ! subsaturated fraction -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PIFR ! Ratio cloud ice moist part to dry part +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PICLDFR ! ice cloud fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSSIO ! Super-saturation with respect to ice in the + ! supersaturated fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PSSIU ! Sub-saturation with respect to ice in the + ! subsaturated fraction +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PIFR ! Ratio cloud ice moist part to dry part ! input from aro_adjust / condensation with OCND2 END. ! -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PTHS ! Theta source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRVS ! Water vapor m.r. source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRCS ! Cloud water m.r. source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRRS ! Rain water m.r. source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRIS ! Pristine ice m.r. source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRSS ! Snow/aggregate m.r. source -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRGS ! Graupel m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PTHS ! Theta source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRVS ! Water vapor m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRCS ! Cloud water m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRRS ! Rain water m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRIS ! Pristine ice m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRSS ! Snow/aggregate m.r. source +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PRGS ! Graupel m.r. source ! -REAL, DIMENSION(D%NIT), INTENT(INOUT) :: PINPRC! Cloud instant precip -REAL, DIMENSION(D%NIT), INTENT(INOUT) :: PINPRR! Rain instant precip -REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PEVAP3D! Rain evap profile -REAL, DIMENSION(D%NIT), INTENT(INOUT) :: PINPRS! Snow instant precip -REAL, DIMENSION(D%NIT), INTENT(INOUT) :: PINPRG! Graupel instant precip -REAL, DIMENSION(D%NIT), INTENT(IN) :: PSEA ! Sea Mask -REAL, DIMENSION(D%NIT), INTENT(IN) :: PTOWN! Fraction that is town -TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH -TYPE(TLDDH), INTENT(IN) :: YDLDDH -TYPE(TMDDH), INTENT(IN) :: YDMDDH +REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRC! Cloud instant precip +REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRR! Rain instant precip +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PEVAP3D! Rain evap profile +REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRS! Snow instant precip +REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRG! Graupel instant precip +REAL, DIMENSION(D%NIT), INTENT(IN) :: PSEA ! Sea Mask +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTOWN! Fraction that is town +TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS +INTEGER, INTENT(IN) :: KBUDGETS REAL, DIMENSION(D%NIT), INTENT(IN) :: PICENU, PKGN_ACON, PKGN_SBGR REAL, DIMENSION(D%NIT,D%NKT), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t REAL, DIMENSION(D%NIT,D%NKT), OPTIONAL, INTENT(INOUT) :: PRHS ! Hail m.r. source -REAL, DIMENSION(D%NIT), OPTIONAL, INTENT(INOUT) :: PINPRH ! Hail instant precip +REAL, DIMENSION(D%NIT), OPTIONAL, INTENT(OUT) :: PINPRH ! Hail instant precip REAL, DIMENSION(D%NIT,D%NKT,KRR), OPTIONAL, INTENT(OUT) :: PFPR ! upper-air precipitation fluxes ! END SUBROUTINE RAIN_ICE_OLD diff --git a/src/common/micro/rain_ice_old.F90 b/src/common/micro/rain_ice_old.F90 index ec3957e371755420da73edee415b4e678f976ab6..1d792dbd9b5a77252a12939baba73be5a2b51440 100644 --- a/src/common/micro/rain_ice_old.F90 +++ b/src/common/micro/rain_ice_old.F90 @@ -1,8 +1,8 @@ ! ######spl - SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, & + SUBROUTINE RAIN_ICE_OLD (D, CST, PARAMI, ICEP, ICED, BUCONF, & OSEDIC, OCND2, LKOGAN, LMODICEDEP, & HSEDIM, HSUBG_AUCV_RC, OWARM, & - KKA,KKU,KKL, & + KKA, KKU, KKL, & KSPLITR, PTSTEP, KRR, KSIZE, GMICRO, & PDZZ, PRHODJ, PRHODREF, PEXNREF, PPABST, PCIT, PCLDFR, & PICLDFR, PSSIO, PSSIU, PIFR, & @@ -10,7 +10,7 @@ PRGT, PTHS, PRVS, PRCS, PRRS, PRIS, PRSS, PRGS, & PINPRC, PINPRR, PEVAP3D, & PINPRS, PINPRG, PSIGS, PSEA, PTOWN, & - YDDDH, YDLDDH, YDMDDH, & + TBUDGETS, KBUDGETS, & PICENU, PKGN_ACON, PKGN_SBGR, & PRHT, PRHS, PINPRH, PFPR) @@ -173,17 +173,15 @@ ! ------------ ! USE MODD_PARAMETERS, ONLY: JPVEXT -USE MODD_BUDGET, ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RG, LBUDGET_RR, LBUDGET_RC, & - LBUDGET_RI, LBUDGET_RS, LBUDGET_RH, LBUDGET_RV +USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & + NBUDGET_RI, NBUDGET_RR, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH, & + LBU_ENABLE USE MODD_LES, ONLY: TLES -USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH +USE MODE_BUDGET_PHY, ONLY: BUDGET_STORE_ADD_PHY, BUDGET_STORE_INIT_PHY, BUDGET_STORE_END_PHY USE MODI_GAMMA, ONLY: GAMMA USE MODE_TIWMX, ONLY: ESATI, ESATW, AA2, BB3, AA2W, BB3W USE MODE_ICECLOUD, ONLY: ICECLOUD USE MODE_TIWMX_TAB, ONLY: TIWMX_TAB -USE DDH_MIX, ONLY: TYP_DDH -USE YOMLDDH, ONLY: TLDDH -USE YOMMDDH, ONLY: TMDDH ! USE MODE_RAIN_ICE_OLD_NUCLEATION, ONLY: RAIN_ICE_OLD_NUCLEATION USE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT, ONLY: RAIN_ICE_OLD_SEDIMENTATION_STAT @@ -204,8 +202,9 @@ IMPLICIT NONE TYPE(DIMPHYEX_T), INTENT(IN) :: D TYPE(CST_T), INTENT(IN) :: CST TYPE(PARAM_ICE_t), INTENT(IN) :: PARAMI -TYPE(RAIN_ICE_PARAM_T), INTENT(IN) :: ICEP +TYPE(RAIN_ICE_PARAM_t), INTENT(IN) :: ICEP TYPE(RAIN_ICE_DESCR_t), INTENT(IN) :: ICED +TYPE(TBUDGETCONF_t), INTENT(IN) :: BUCONF LOGICAL, INTENT(IN) :: OSEDIC ! Switch for droplet sedim. LOGICAL, INTENT(IN) :: OCND2 ! Logical switch to separate liquid and ice @@ -271,9 +270,8 @@ REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRS! Snow instant precip REAL, DIMENSION(D%NIT), INTENT(OUT) :: PINPRG! Graupel instant precip REAL, DIMENSION(D%NIT), INTENT(IN) :: PSEA ! Sea Mask REAL, DIMENSION(D%NIT), INTENT(IN) :: PTOWN! Fraction that is town -TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH -TYPE(TLDDH), INTENT(IN) :: YDLDDH -TYPE(TMDDH), INTENT(IN) :: YDMDDH +TYPE(TBUDGETDATA), DIMENSION(KBUDGETS), INTENT(INOUT) :: TBUDGETS +INTEGER, INTENT(IN) :: KBUDGETS REAL, DIMENSION(D%NIT), INTENT(IN) :: PICENU, PKGN_ACON, PKGN_SBGR REAL, DIMENSION(D%NIT,D%NKT), OPTIONAL, INTENT(IN) :: PRHT ! Hail m.r. at t REAL, DIMENSION(D%NIT,D%NKT), OPTIONAL, INTENT(INOUT) :: PRHS ! Hail m.r. source @@ -409,6 +407,7 @@ REAL :: ZCOEFFRCM LOGICAL :: LCHECKNOISE ! Noise check on/off LOGICAL :: LTIW ! Use TIW for graupel melting ( set by XFRMIN(18) ~ 1) ! +REAL, DIMENSION(D%NIT,D%NKT) :: ZBU0 REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !------------------------------------------------------------------------------- @@ -499,6 +498,11 @@ ENDIF ZT(:,:) = PTHT(:,:) * ( PPABST(:,:) / CST%XP00 ) ** (CST%XRD/CST%XCPD) +IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_TH), 'HENU', PTHS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RV), 'HENU', PRVS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI), 'HENU', PRIS(:,:)*PRHODJ(:,:)) +ENDIF CALL RAIN_ICE_OLD_NUCLEATION(D, CST, ICEP, COUNT(ZT(D%NIB:D%NIE,D%NKTB:D%NKTE)<CST%XTT), & OCND2, LMODICEDEP, KRR, PTSTEP, & PTHT, PPABST, PEXNREF, PICLDFR, PRHODJ, PRHODREF, & @@ -506,10 +510,11 @@ CALL RAIN_ICE_OLD_NUCLEATION(D, CST, ICEP, COUNT(ZT(D%NIB:D%NIE,D%NKTB:D%NKTE)<C PTHS, PRVS, PRIS, PCIT, & PICENU, ZT, ZZZZ, & PRHT) - -IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HENU_BU_RTH',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'HENU_BU_RRV',YDDDH, YDLDDH, YDMDDH) -IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'HENU_BU_RRI',YDDDH, YDLDDH, YDMDDH) +IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_TH), 'HENU', PTHS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RV), 'HENU', PRVS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI), 'HENU', PRIS(:,:)*PRHODJ(:,:)) +ENDIF IMICRO = 0 DO JK = 1, D%NKT @@ -843,7 +848,7 @@ IF ( KSIZE >= 0 ) THEN ZRF(JL)=ZRAINFR(I1(JL),I2(JL)) END DO ! - CALL RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, & + CALL RAIN_ICE_OLD_SLOW(D, CST, ICED, ICEP, BUCONF, & KSIZE, OCND2, LMODICEDEP, & PTSTEP, ZREDSN, & GMICRO, PRHODJ, PTHS, PRVS, & @@ -855,7 +860,7 @@ IF ( KSIZE >= 0 ) THEN ZLBDAG, ZKA, ZDV, & ZAI, ZCJ, ZAA2, ZBB3, & ZDICRIT, ZREDGR, ZKVO, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) ! !------------------------------------------------------------------------------- ! @@ -879,7 +884,7 @@ IF ( KSIZE >= 0 ) THEN IF( OWARM ) THEN ! Check if the formation of the raindrops by the slow ! warm processes is allowed PEVAP3D(:,:)= 0. - CALL RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, & + CALL RAIN_ICE_OLD_WARM(D, CST, PARAMI, ICEP, ICED, BUCONF, & KSIZE, OCND2, LKOGAN, GMICRO, & PRHODJ, PEVAP3D, PTHS, PRVS, & ZRVT, ZRCT, ZRRT, ZRCS, ZRRS, ZTHS, & @@ -891,7 +896,7 @@ IF ( KSIZE >= 0 ) THEN ZHLC_HCF, ZHLC_LCF, ZHLC_HRC, ZHLC_LRC, & ZAA2W, ZBB3W, & ZZT, ZPRES, ZESW, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) END IF ! !------------------------------------------------------------------------------- @@ -900,7 +905,7 @@ IF ( KSIZE >= 0 ) THEN !* 4. COMPUTES THE FAST COLD PROCESS SOURCES FOR r_s ! ---------------------------------------------- ! - CALL RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, & + CALL RAIN_ICE_OLD_FAST_RS(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, KRR, GMICRO, & PRHODJ, PTHS, & ZRVT, ZRCT, ZRRT, ZRST, & @@ -908,7 +913,7 @@ IF ( KSIZE >= 0 ) THEN ZRHODREF, ZRHODJ, ZLSFACT, ZLVFACT, & ZCJ, ZKA, ZDV, & ZLBDAR, ZLBDAS, ZCOLF, ZPRES, ZZT, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) ! !------------------------------------------------------------------------------- ! @@ -917,7 +922,7 @@ IF ( KSIZE >= 0 ) THEN ! ---------------------------------------------- ! - CALL RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, & + CALL RAIN_ICE_OLD_FAST_RG(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, KRR, & OCND2, LTIW, GMICRO, & PRHODJ, PTHS, & @@ -927,7 +932,7 @@ IF ( KSIZE >= 0 ) THEN ZCJ, ZKA, ZDV, & ZLBDAR, ZLBDAG, ZLBDAS, & ZTIW, ZZT, ZPRES, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) ! !------------------------------------------------------------------------------- ! @@ -936,7 +941,7 @@ IF ( KSIZE >= 0 ) THEN ! ---------------------------------------------- ! IF ( KRR == 7 ) THEN - CALL RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, & + CALL RAIN_ICE_OLD_FAST_RH(D, CST, ICEP, ICED, BUCONF, & KSIZE, KRR, & GMICRO, & PTHS, PRHODJ, & @@ -946,7 +951,7 @@ IF ( KSIZE >= 0 ) THEN ZLBDAS, ZLBDAG, ZLBDAH, & ZCJ, ZKA, ZDV, & ZZT, ZPRES, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) END IF ! !------------------------------------------------------------------------------- @@ -956,7 +961,7 @@ IF ( KSIZE >= 0 ) THEN ! ------------------------------------------------------------- ! - CALL RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, & + CALL RAIN_ICE_OLD_FAST_RI(D, CST, ICEP, ICED, BUCONF, & PTSTEP, KSIZE, & OCND2, LMODICEDEP, GMICRO, & PRHODJ, PTHS, & @@ -969,7 +974,7 @@ IF ( KSIZE >= 0 ) THEN ZZT, ZPRES, ZSSI, & ZSIFRC, ZESI, & ZCITRED, ZCITRED23, ZDICRIT, & - YDDDH, YDLDDH, YDMDDH) + TBUDGETS, KBUDGETS) IF (OCND2.AND.LCHECKNOISE) THEN !* 8 This check is mainly for noise reduction: @@ -1054,91 +1059,93 @@ IF ( KSIZE >= 0 ) THEN ! ! Advance the budget calls ! + IF (BUCONF%LBU_ENABLE) THEN ! Reordered for compability with flexible structures like in AROME - + ZBU0(:,:)=0. ! rain_ice_slow - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HON_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'HON_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'HON_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'SFR_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'SFR_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SFR_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DEPS_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'DEPS_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'DEPS_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'AGGS_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'AGGS_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'AUTS_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'AUTS_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DEPG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'DEPG_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'DEPG_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HON', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'HON', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'HON', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'SFR', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'SFR', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'SFR', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'DEPS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'AGGS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'AGGS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'AUTS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'AUTS', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DEPG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'DEPG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'DEPG', ZBU0(:,:)) IF (OWARM) THEN ! rain_ice_warm - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'AUTO_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'AUTO_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'ACCR_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'ACCR_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'REVA_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RV) CALL BUDGET_DDH (PRVS(:,:)*PRHODJ(:,:),6,'REVA_BU_RRV',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'REVA_BU_RRR',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'AUTO', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'AUTO', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'ACCR', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'ACCR', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'REVA', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RV) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RV), 'REVA', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'REVA', ZBU0(:,:)) ENDIF !rain_ice_fast_rs - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'RIM_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'RIM_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'RIM_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'RIM_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'ACC_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'ACC_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'ACC_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'ACC_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'CMEL_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'CMEL_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'RIM', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'RIM', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'RIM', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'RIM', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'ACC', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'ACC', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'ACC', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'ACC', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'CMEL', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'CMEL', ZBU0(:,:)) !rain_ice_fast_rg - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'CFRZ_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'CFRZ_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'CFRZ_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'CFRZ_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'WETG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'WETG_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'WETG_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'WETG_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'WETG_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'WETG_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'WETG_BU_RRH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'DRYG_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'DRYG_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'DRYG_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'DRYG_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'DRYG_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'DRYG_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'GMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'GMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'GMLT_BU_RRG',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'CFRZ', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'CFRZ', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'CFRZ', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'CFRZ', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'WETG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'DRYG', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'GMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'GMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'GMLT', ZBU0(:,:)) IF(KRR==7) THEN ! rain_ice_fast_rh - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'WETH_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'WETH_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'WETH_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'WETH_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'WETH_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'WETH_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'WETH_BU_RRH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'HMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8,'HMLT_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RH) CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'HMLT_BU_RRH',YDDDH, YDLDDH, YDMDDH) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RS), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RG), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'WETH', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'HMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RR), 'HMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RH), 'HMLT', ZBU0(:,:)) ENDIF !rain_ice_fast_ri - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'IMLT_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'IMLT_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'IMLT_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:)*PRHODJ(:,:),4,'BERFI_BU_RTH',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RC) CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7,'BERFI_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9,'BERFI_BU_RRI',YDDDH, YDLDDH, YDMDDH) - + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'IMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'IMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'IMLT', ZBU0(:,:)) + IF (BUCONF%LBUDGET_TH) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_TH), 'BERFI', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RC) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RC), 'BERFI', ZBU0(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_ADD_PHY(D, TBUDGETS(NBUDGET_RI), 'BERFI', ZBU0(:,:)) + + ENDIF !BUCONF%LBU_ENABLE END IF ! !------------------------------------------------------------------------------- @@ -1149,6 +1156,17 @@ END IF !* 8.1 time splitting loop initialization ! IF (HSEDIM == 'STAT') THEN + IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_RC .AND. OSEDIC) & + CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:)) + IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) & + CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:)) + ENDIF + CALL RAIN_ICE_OLD_SEDIMENTATION_STAT(D, CST, ICEP, ICED, & KRR, OSEDIC, PTSTEP, KKL, IKB, IKE, & PDZZ, PRHODJ, PRHODREF, PPABST, & @@ -1158,16 +1176,29 @@ IF (HSEDIM == 'STAT') THEN ZRAY, ZLBC, ZFSEDC, ZCONC3D, & PRHT, PRHS, PINPRH, PFPR) - IF (LBUDGET_RC .AND. OSEDIC) & - CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7 ,'SEDI_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8 ,'SEDI_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9 ,'SEDI_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'SEDI_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SEDI_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF ( KRR == 7 .AND. LBUDGET_RH) & - CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'SEDI_BU_RRH',YDDDH, YDLDDH, YDMDDH) + IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_RC .AND. OSEDIC) & + CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:)) + IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) & + CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:)) + ENDIF ELSEIF (HSEDIM == 'SPLI') THEN + IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_RC .AND. OSEDIC) & + CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:)) + IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) & + CALL BUDGET_STORE_INIT_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:)) + ENDIF + CALL RAIN_ICE_OLD_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, KSIZE, & KRR, OSEDIC, PTSTEP, KKL, IKB, KSPLITR, & PDZZ, PRHODJ, PRHODREF, PPABST, & @@ -1177,15 +1208,16 @@ ELSEIF (HSEDIM == 'SPLI') THEN ZRAY, ZLBC, ZFSEDC, ZCONC3D, & PRHT, PRHS, PINPRH, PFPR) - IF (LBUDGET_RC .AND. OSEDIC) & - CALL BUDGET_DDH (PRCS(:,:)*PRHODJ(:,:),7 ,'SEDI_BU_RRC',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RR) CALL BUDGET_DDH (PRRS(:,:)*PRHODJ(:,:),8 ,'SEDI_BU_RRR',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RI) CALL BUDGET_DDH (PRIS(:,:)*PRHODJ(:,:),9 ,'SEDI_BU_RRI',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RS) CALL BUDGET_DDH (PRSS(:,:)*PRHODJ(:,:),10,'SEDI_BU_RRS',YDDDH, YDLDDH, YDMDDH) - IF (LBUDGET_RG) CALL BUDGET_DDH (PRGS(:,:)*PRHODJ(:,:),11,'SEDI_BU_RRG',YDDDH, YDLDDH, YDMDDH) - IF ( KRR == 7 .AND. LBUDGET_RH) & - CALL BUDGET_DDH (PRHS(:,:)*PRHODJ(:,:),12,'SEDI_BU_RRH',YDDDH, YDLDDH, YDMDDH) - + IF(BUCONF%LBU_ENABLE) THEN + IF (BUCONF%LBUDGET_RC .AND. OSEDIC) & + CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RC),'SEDI', PRCS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RR) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RR),'SEDI', PRRS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RI) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RI),'SEDI', PRIS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RS) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RS), 'SEDI', PRSS(:,:)*PRHODJ(:,:)) + IF (BUCONF%LBUDGET_RG) CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RG), 'SEDI', PRGS(:,:)*PRHODJ(:,:)) + IF (KRR == 7 .AND. BUCONF%LBUDGET_RH) & + CALL BUDGET_STORE_END_PHY(D, TBUDGETS(NBUDGET_RH), 'SEDI', PRHS(:,:)*PRHODJ(:,:)) + ENDIF ELSE WRITE(*,*) ' STOP' WRITE(*,*) ' NO SEDIMENTATION SCHEME FOR HSEDIM=',HSEDIM diff --git a/src/testprogs/rain_ice_old/main_rain_ice_old.F90 b/src/testprogs/rain_ice_old/main_rain_ice_old.F90 index ed882f01b9529a8bdc828a7e7ede8df4e55ca233..1c771702fcd7085186787b5ed85554432e829120 100644 --- a/src/testprogs/rain_ice_old/main_rain_ice_old.F90 +++ b/src/testprogs/rain_ice_old/main_rain_ice_old.F90 @@ -8,15 +8,12 @@ program main_rain_ice_old use yomhook, only: lhook, dr_hook use parkind1, only: jprb, jpim - use ddh_mix, only: typ_ddh - use yomlddh, only: tlddh - use yommddh, only: tmddh - use modd_dimphyex, only: dimphyex_t use modd_cst, only: cst use modd_rain_ice_param, only: rain_ice_param use modd_rain_ice_descr, only: rain_ice_descr use modd_param_ice, only: param_ice + use modd_budget use iso_fortran_env, only: output_unit @@ -81,14 +78,11 @@ program main_rain_ice_old character(len=4) :: c_micro character(len=4) :: csubg_aucv_rc logical :: owarm + TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RH) :: YLBUDGET real :: ptstep - integer :: i,j - - type(typ_ddh) :: ydddh - type(tlddh) :: ydlddh - type(tmddh) :: ydmddh + integer :: i, j, jrr real(8) :: time_start_real, time_end_real real(8) :: time_start_cpu, time_end_cpu @@ -162,6 +156,10 @@ program main_rain_ice_old c_sedim = 'STAT' csubg_aucv_rc = 'PDF' +DO JRR=1, NBUDGET_RH + YLBUDGET(JRR)%NBUDGET=JRR +ENDDO + ptstep = 25.0000000000000 call initoptions() @@ -244,7 +242,7 @@ program main_rain_ice_old if (isize .gt. 0) then call rain_ice_old(D=D, cst=cst, parami=param_ice, & - icep=rain_ice_param, iced=rain_ice_descr, & + icep=rain_ice_param, iced=rain_ice_descr, buconf=tbuconf, & osedic=osedic, ocnd2=ocnd2, & lkogan=lkogan, lmodicedep=lmodicedep, & hsedim=c_sedim, hsubg_aucv_rc=csubg_aucv_rc, owarm=owarm, & @@ -265,7 +263,7 @@ program main_rain_ice_old pinprc=zinprc(:,i), pinprr=pinprr(:,i), pevap3d=pevap(:,:,i), & pinprs=pinprs(:,i), pinprg=pinprg(:,i), psigs=psigs(:,:,i), & psea=psea(:,i), ptown=ptown(:,i), & - ydddh=ydddh, ydlddh=ydlddh, ydmddh=ydmddh, & + TBUDGETS=YLBUDGET, KBUDGETS=SIZE(YLBUDGET), & picenu=picenu(:,i), & pkgn_acon=pkgn_acon(:,i), pkgn_sbgr=pkgn_sbgr(:,i), & pfpr=pfpr(:,:,:,i)) diff --git a/tools/check_commit_ial.sh b/tools/check_commit_ial.sh index e5136d8dccf4bc21859488c9abe359cd67d0d378..f20bbafae7ea849a4d874d807c7ba0e4c59a307f 100755 --- a/tools/check_commit_ial.sh +++ b/tools/check_commit_ial.sh @@ -339,6 +339,14 @@ if [ $packcreation -eq 1 ]; then for rep in turb micro conv aux; do [ -d PHYEX/$rep ] && mv PHYEX/$rep . done + #modd_nsv.F90 has been moved and gmkpack is lost in case a different version exists in main/.../micro + if [ -f ../../main/phyex/micro/modd_nsv.F90 -a -f aux/modd_nsv.F90 ]; then + mv aux/modd_nsv.F90 micro/ + if [ -f PHYEX/gmkpack_ignored_files ]; then + grep -v micro/modd_nsv.F90 PHYEX/gmkpack_ignored_files > PHYEX/gmkpack_ignored_files_new + mv PHYEX/gmkpack_ignored_files_new PHYEX/gmkpack_ignored_files + fi + fi if [ -f PHYEX/gmkpack_ignored_files ]; then #gmkpack_ignored_files contains a list of file, present in the reference pack, that is not used anymore #and must be excluded from compilation (in case of a full comilation) or from re-compilation (in case of a non-full