diff --git a/src/arome/aux/mode_budget_phy.F90 b/src/arome/aux/mode_budget_phy.F90 index d2881a9679bcbf83eaa50a3fc3503bf7f5cfaf50..cb081ae07d3b3a281252c107079290a03a2c3741 100644 --- a/src/arome/aux/mode_budget_phy.F90 +++ b/src/arome/aux/mode_budget_phy.F90 @@ -77,8 +77,7 @@ USE MODDB_INTBUDGET, ONLY:TVARSM END SUBROUTINE BUDGET_STORE_ADD SUBROUTINE BUDGET_DDH(PVARS,KBUDN,HBUVAR,YDDDH, YDLDDH, YDMDDH, LDISDIFF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ##################################### ! !! BUDGET - routine to call the BUDGET routine for AROME. @@ -165,7 +164,7 @@ CHARACTER (LEN=4) :: CLPROC CHARACTER (LEN=11) :: CLDDH LOGICAL :: LISDIFF -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BUDGET_DDH',0,ZHOOK_HANDLE) IF (PRESENT(LDISDIFF)) THEN diff --git a/src/arome/aux/mode_fill_dimphyexn.F90 b/src/arome/aux/mode_fill_dimphyexn.F90 index 9771b9e919610f980e0e2e6e63c9affe43879a42..8dd7a361068e8e3df6a7d916541fb5594b79c11a 100644 --- a/src/arome/aux/mode_fill_dimphyexn.F90 +++ b/src/arome/aux/mode_fill_dimphyexn.F90 @@ -35,8 +35,7 @@ SUBROUTINE FILL_DIMPHYEX(YDDIMPHYEX, KIT, KJT, KKT, KVEXT, KIE) ! ------------ ! USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -50,7 +49,7 @@ INTEGER, INTENT(IN) :: KIE ! Index of the last horizontal point to consider ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('FILL_DIMPHYEX', 0, ZHOOK_HANDLE) diff --git a/src/arome/conv/convect_chem_transport.F90 b/src/arome/conv/convect_chem_transport.F90 index b5030c5b70947c34bde2dfad0ae40d63efa668e1..b23868532afee32267eaab698789fcaac405cecb 100644 --- a/src/arome/conv/convect_chem_transport.F90 +++ b/src/arome/conv/convect_chem_transport.F90 @@ -1,11 +1,10 @@ ! ######spl - SUBROUTINE CONVECT_CHEM_TRANSPORT( KLON, KLEV, KCH, PCH1, PCH1C, & + SUBROUTINE CONVECT_CHEM_TRANSPORT( CVPEXT, D, NSV, KCH, PCH1, PCH1C, & KDPL, KPBL, KLCL, KCTL, KLFS, KDBL, & PUMF, PUER, PUDR, PDMF, PDER, PDDR, & PTIMEC, PDXDY, PMIXF, PLMASS, PWSUB,& KFTSTEPS ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** Compute modified chemical tracer values due to convective event @@ -50,74 +49,81 @@ ! ------------ ! USE MODD_CST, ONLY : XG -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT -USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_NSV, ONLY : NSV_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(NSV_T), INTENT(IN) :: NSV INTEGER, INTENT(IN) :: KCH ! number of passive tracers ! -REAL,DIMENSION(KLON,KLEV,KCH),INTENT(IN) :: PCH1 ! grid scale tracer concentr. -REAL,DIMENSION(KLON,KLEV,KCH),INTENT(OUT):: PCH1C! conv adjusted tracer concntr. -! -INTEGER, DIMENSION(KLON), INTENT(IN) :: KDPL ! index for departure level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KPBL ! index for top of source layer -INTEGER, DIMENSION(KLON), INTENT(IN) :: KLCL ! index lifting condens. level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KCTL ! index for cloud top level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KLFS ! index for level of free sink -INTEGER, DIMENSION(KLON), INTENT(IN) :: KDBL ! index for downdraft base level -! -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PUMF ! updraft mass flux (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PUER ! updraft entrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PUDR ! updraft detrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PDMF ! downdraft mass flux (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PDER ! downdraft entrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PDDR ! downdraft detrainment (kg/s) -! -REAL, DIMENSION(KLON), INTENT(IN) :: PTIMEC! convection time step -REAL, DIMENSION(KLON), INTENT(IN) :: PDXDY ! grid area (m^2) -REAL, DIMENSION(KLON), INTENT(IN) :: PMIXF ! mixed fraction at LFS -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PLMASS! mass of model layer (kg) -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PWSUB ! envir. compensating subsidence(Pa/s) +REAL,DIMENSION(D%NIT,D%NKT,KCH),INTENT(IN) :: PCH1 ! grid scale tracer concentr. +REAL,DIMENSION(D%NIT,D%NKT,KCH),INTENT(OUT):: PCH1C! conv adjusted tracer concntr. +! +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDPL ! index for departure level +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KPBL ! index for top of source layer +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLCL ! index lifting condens. level +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KCTL ! index for cloud top level +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLFS ! index for level of free sink +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDBL ! index for downdraft base level +! +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUMF ! updraft mass flux (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUER ! updraft entrainment (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUDR ! updraft detrainment (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDMF ! downdraft mass flux (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDER ! downdraft entrainment (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDDR ! downdraft detrainment (kg/s) +! +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTIMEC! convection time step +REAL, INTENT(IN) :: PDXDY ! grid area (m^2) +REAL, DIMENSION(D%NIT), INTENT(IN) :: PMIXF ! mixed fraction at LFS +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PLMASS! mass of model layer (kg) +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PWSUB ! envir. compensating subsidence(Pa/s) INTEGER, INTENT(IN) :: KFTSTEPS ! maximum fractional time steps ! ! !* 0.2 Declarations of local variables : ! INTEGER :: INCH1 ! number of chemical tracers -INTEGER :: IIE, IKB, IKE ! horizontal + vertical loop bounds +INTEGER :: IKB, IKE ! horizontal + vertical loop bounds INTEGER :: IKS ! vertical dimension INTEGER :: JI ! horizontal loop index INTEGER :: JK, JKP ! vertical loop index INTEGER :: JN ! chemical tracer loop index INTEGER :: JSTEP ! fractional time loop index -INTEGER :: JKLD, JKLP, JKMAX ! loop index for levels +INTEGER :: JKLD, JKLP, JKMIN, JKMAX, JKMAX2 ! loop index for levels ! -REAL, DIMENSION(KLON,KLEV) :: ZOMG ! compensat. subsidence (Pa/s) -REAL, DIMENSION(KLON,KLEV,KCH) :: ZUCH1, ZDCH1 ! updraft/downdraft values -REAL, DIMENSION(KLON) :: ZTIMEC ! fractional convective time step -REAL, DIMENSION(KLON,KLEV) :: ZTIMC! 2D work array for ZTIMEC -REAL, DIMENSION(KLON,KLEV,KCH) :: ZCH1MFIN, ZCH1MFOUT +REAL, DIMENSION(D%NIT,D%NKT) :: ZOMG ! compensat. subsidence (Pa/s) +REAL, DIMENSION(D%NIT,D%NKT,KCH) :: ZUCH1, ZDCH1 ! updraft/downdraft values +REAL, DIMENSION(D%NIT) :: ZTIMEC ! fractional convective time step +REAL, DIMENSION(D%NIT,D%NKT) :: ZTIMC! 2D work array for ZTIMEC +REAL, DIMENSION(D%NIT,D%NKT,KCH) :: ZCH1MFIN, ZCH1MFOUT ! work arrays for environm. compensat. mass -REAL, DIMENSION(KLON,KCH) :: ZWORK1, ZWORK2, ZWORK3 +REAL, DIMENSION(D%NIT,KCH) :: ZWORK1, ZWORK2, ZWORK3 ! !------------------------------------------------------------------------------- ! !* 0.3 Compute loop bounds ! ------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CHEM_TRANSPORT',0,ZHOOK_HANDLE) INCH1 = KCH -IIE = KLON -IKB = 1 + JCVEXB -IKS = KLEV -IKE = KLEV - JCVEXT -JKMAX = MAXVAL( KCTL(:) ) +IKB = 1 + CVPEXT%JCVEXB +IKS = D%NKT +IKE = D%NKT - CVPEXT%JCVEXT +JKMAX = 0 +JKMIN = 999999999 +DO JI=D%NIB, D%NIE + JKMIN = MIN(JKMIN, KDPL(JI)) + JKMAX = MAX(JKMAX, KCTL(JI)) +ENDDO + ! ! !* 2. Updraft computations @@ -128,24 +134,26 @@ ZUCH1(:,:,:) = 0. !* 2.1 Initialization at LCL ! ---------------------------------- ! -DO JI = 1, IIE - JKLD = KDPL(JI) - JKLP = KPBL(JI) - ZWORK1(JI,:) = .5 * ( PCH1(JI,JKLD,:) + PCH1(JI,JKLP,:) ) +DO JI = D%NIB, D%NIE + DO JN = 1, INCH1 + JKLD = KDPL(JI) + JKLP = KPBL(JI) + ZWORK1(JI,JN) = .5 * ( PCH1(JI,JKLD,JN) + PCH1(JI,JKLP,JN) ) + ENDDO END DO ! !* 2.2 Final updraft loop ! ------------------ ! -DO JK = MINVAL( KDPL(:) ), JKMAX +DO JK = JKMIN, JKMAX JKP = JK + 1 ! DO JN = 1, INCH1 - DO JI = 1, IIE - IF ( KDPL(JI) <= JK .AND. KLCL(JI) > JK ) & + DO JI = D%NIB, D%NIE + IF ( KDPL(JI) <= JK .AND. MIN(KLCL(JI), KCTL(JI)) > JK ) & ZUCH1(JI,JK,JN) = ZWORK1(JI,JN) ! - IF ( KLCL(JI) - 1 <= JK .AND. KCTL(JI) > JK ) THEN + IF ( MIN(KLCL(JI), KCTL(JI)) - 1 <= JK .AND. KCTL(JI) > JK ) THEN ZUCH1(JI,JKP,JN) = ZUCH1(JI,JK,JN) !if you have reactive i.e. non-passive tracers ! update their values here and add the corresponding @@ -167,20 +175,30 @@ ZDCH1(:,:,:) = 0. !* 3.1 Initialization at the LFS ! ------------------------- ! -ZWORK1(:,:) = SPREAD( PMIXF(:), DIM=2, NCOPIES=INCH1 ) -DO JI = 1, IIE +DO JI=1,D%NIE +DO JK=1,INCH1 +ZWORK1(JI,JK) = PMIXF(JI) +ENDDO +ENDDO +DO JI = D%NIB, D%NIE + DO JN = 1, INCH1 JK = KLFS(JI) - ZDCH1(JI,JK,:) = ZWORK1(JI,:) * PCH1(JI,JK,:) + & - ( 1. - ZWORK1(JI,:) ) * ZUCH1(JI,JK,:) + ZDCH1(JI,JK,JN) = ZWORK1(JI,JN) * PCH1(JI,JK,JN) + & + ( 1. - ZWORK1(JI,JN) ) * ZUCH1(JI,JK,JN) + ENDDO END DO ! !* 3.2 Final downdraft loop ! -------------------- ! -DO JK = MAXVAL( KLFS(:) ), IKB + 1, -1 +JKMAX2 = 0 +DO JI=D%NIB, D%NIE + JKMAX2 = MAX(JKMAX2, KLFS(JI)) +ENDDO +DO JK = JKMAX2, IKB + 1, -1 JKP = JK - 1 DO JN = 1, INCH1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( JK <= KLFS(JI) .AND. JKP >= KDBL(JI) ) THEN ZDCH1(JI,JKP,JN) = ( ZDCH1(JI,JK,JN) * PDMF(JI,JK) - & PCH1(JI,JK,JN) * PDER(JI,JKP) ) / & @@ -194,25 +212,39 @@ END DO !* 4. Final closure (environmental) computations ! ------------------------------------------ ! -PCH1C(:,IKB:IKE,:) = PCH1(:,IKB:IKE,:) ! initialize adjusted envir. values +PCH1C(D%NIB:D%NIE,IKB:IKE,1:KCH) = PCH1(D%NIB:D%NIE,IKB:IKE,1:KCH) ! initialize adjusted envir. values ! DO JK = IKB, IKE - ZOMG(:,JK) = PWSUB(:,JK) * PDXDY(:) / XG ! environmental subsidence + DO JI=D%NIB,D%NIE + ZOMG(JI,JK) = PWSUB(JI,JK) * PDXDY / XG ! environmental subsidence + ENDDO END DO ! -ZTIMEC(:) = PTIMEC(:) / REAL( KFTSTEPS ) ! adjust fractional time step - ! to be an integer multiple of PTIMEC -WHERE ( PTIMEC(:) < 1. ) ZTIMEC(:) = 0. -ZTIMC(:,:)= SPREAD( ZTIMEC(:), DIM=2, NCOPIES=IKS ) -! -ZCH1MFIN(:,:,:) = 0. -ZCH1MFOUT(:,:,:) = 0. +DO JI=D%NIB,D%NIE + ZTIMEC(JI) = PTIMEC(JI) / REAL( KFTSTEPS ) ! adjust fractional time step +ENDDO ! to be an integer multiple of PTIMEC + +DO JI=D%NIB,D%NIE + IF(PTIMEC(JI) < 1.) ZTIMEC(JI) = 0 +ENDDO +DO JI=1,D%NIE +DO JK=1,IKS + ZTIMC(JI,JK) = ZTIMEC(JI) +ENDDO +ENDDO +! +ZCH1MFIN(D%NIB:D%NIE,1:D%NKT,1:KCH) = 0. +ZCH1MFOUT(D%NIB:D%NIE,1:D%NKT,1:KCH) = 0. ! DO JSTEP = 1, KFTSTEPS ! Enter the fractional time step loop ! DO JK = IKB + 1, JKMAX JKP = MAX( IKB + 1, JK - 1 ) - ZWORK3(:,:) = SPREAD( ZOMG(:,JK), DIM=2, NCOPIES=INCH1 ) + DO JI=1,D%NIE + DO JN=1,INCH1 + ZWORK3(JI,JN) = ZOMG(JI,JK) + ENDDO + ENDDO ZWORK1(:,:) = SIGN( 1., ZWORK3(:,:) ) ZWORK2(:,:) = 0.5 * ( 1. + ZWORK1(:,:) ) ZWORK1(:,:) = 0.5 * ( 1. - ZWORK1(:,:) ) @@ -224,16 +256,18 @@ DO JSTEP = 1, KFTSTEPS ! Enter the fractional time step loop ! DO JN = 1, INCH1 DO JK = IKB + 1, JKMAX - PCH1C(:,JK,JN) = PCH1C(:,JK,JN) + ZTIMC(:,JK) / PLMASS(:,JK) * ( & - ZCH1MFIN(:,JK,JN) + PUDR(:,JK) * ZUCH1(:,JK,JN) + & - PDDR(:,JK) * ZDCH1(:,JK,JN) - ZCH1MFOUT(:,JK,JN) - & - ( PUER(:,JK) + PDER(:,JK) ) * PCH1(:,JK,JN) ) - IF(JN < NSV_LGBEG .OR. JN>NSV_LGEND-1) THEN - PCH1C(:,JK,JN) = MAX( 0., PCH1C(:,JK,JN) ) - ELSE - ! no tendency for horizontal Lagrangian variables - PCH1C(:,JK,JN) = PCH1(:,JK,JN) - END IF + DO JI=D%NIB,D%NIE + PCH1C(JI,JK,JN) = PCH1C(JI,JK,JN) + ZTIMC(JI,JK) / PLMASS(JI,JK) * ( & + ZCH1MFIN(JI,JK,JN) + PUDR(JI,JK) * ZUCH1(JI,JK,JN) + & + PDDR(JI,JK) * ZDCH1(JI,JK,JN) - ZCH1MFOUT(JI,JK,JN) - & + ( PUER(JI,JK) + PDER(JI,JK) ) * PCH1(JI,JK,JN) ) + IF(JN < NSV%NSV_LGBEG .OR. JN>NSV%NSV_LGEND-1) THEN + PCH1C(JI,JK,JN) = MAX( 0., PCH1C(JI,JK,JN) ) + ELSE + ! no tendency for horizontal Lagrangian variables + PCH1C(JI,JK,JN) = PCH1(JI,JK,JN) + END IF + ENDDO END DO END DO ! diff --git a/src/arome/conv/convect_chem_transport.h b/src/arome/conv/convect_chem_transport.h new file mode 100644 index 0000000000000000000000000000000000000000..19efece81e5fd9feae8e32d9d34b509f4204d276 --- /dev/null +++ b/src/arome/conv/convect_chem_transport.h @@ -0,0 +1,39 @@ +INTERFACE + +SUBROUTINE CONVECT_CHEM_TRANSPORT( CVPEXT, D, NSV, KCH, PCH1, PCH1C, & +KDPL, KPBL, KLCL, KCTL, KLFS, KDBL, & +PUMF, PUER, PUDR, PDMF, PDER, PDDR, & +PTIMEC, PDXDY, PMIXF, PLMASS, PWSUB,& +KFTSTEPS ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : XG +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_NSV, ONLY : NSV_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(NSV_T), INTENT(IN) :: NSV +INTEGER, INTENT(IN) :: KCH +REAL,DIMENSION(D%NIT,D%NKT,KCH),INTENT(IN) :: PCH1 +REAL,DIMENSION(D%NIT,D%NKT,KCH),INTENT(OUT):: PCH1C +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDPL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KPBL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLCL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KCTL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLFS +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDBL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUDR +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDDR +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTIMEC +REAL, INTENT(IN) :: PDXDY +REAL, DIMENSION(D%NIT), INTENT(IN) :: PMIXF +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PLMASS +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PWSUB +INTEGER, INTENT(IN) :: KFTSTEPS +END SUBROUTINE CONVECT_CHEM_TRANSPORT + +END INTERFACE diff --git a/src/arome/conv/convect_closure.F90 b/src/arome/conv/convect_closure.F90 index 6ee605af504ff8b7f7c138e8913626ef3eac6dbd..7912c2bf16444ddbfe4dd84aed77db4f388fd9d5 100644 --- a/src/arome/conv/convect_closure.F90 +++ b/src/arome/conv/convect_closure.F90 @@ -11,8 +11,7 @@ PCAPE, PTIMEC, & KFTSTEPS, & PDTEVRF, PPRLFLX, PPRSFLX ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################### ! !!**** Uses modified Fritsch-Chappell closure @@ -211,7 +210,7 @@ LOGICAL, DIMENSION(KLON,KLEV) :: GWORK4 ! work array ! ---------------------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE',0,ZHOOK_HANDLE) PSPR(:) = 0. ZTIMC(:,:) = 0. diff --git a/src/arome/conv/convect_closure_adjust.F90 b/src/arome/conv/convect_closure_adjust.F90 index 44ec30977339a26cf07fb52a53436d8364b8b048..3e25822f8e5b27856e901200e1e1a9e8465ec6db 100644 --- a/src/arome/conv/convect_closure_adjust.F90 +++ b/src/arome/conv/convect_closure_adjust.F90 @@ -5,8 +5,7 @@ PPRMELT, PZPRMELT, PDTEVR, PZDTEVR, & PTPR, PZTPR, & PPRLFLX, PZPRLFL, PPRSFLX, PZPRSFL ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################### ! !!**** Uses closure adjustment factor to adjust mass flux and to modify @@ -103,7 +102,7 @@ INTEGER :: JK ! vertical loop index !* 0.3 Compute loop bounds ! ------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_ADJUST',0,ZHOOK_HANDLE) IKB = 1 + JCVEXB IKE = KLEV - JCVEXT diff --git a/src/arome/conv/convect_closure_adjust_shal.F90 b/src/arome/conv/convect_closure_adjust_shal.F90 index 4b5447ab1f8344e31dd1fa0a0bd880a96672ee04..04fc6d91532ee527608e691f37eb5e3124c22230 100644 --- a/src/arome/conv/convect_closure_adjust_shal.F90 +++ b/src/arome/conv/convect_closure_adjust_shal.F90 @@ -1,8 +1,7 @@ ! ######spl - SUBROUTINE CONVECT_CLOSURE_ADJUST_SHAL( KLON, KLEV, PADJ, & + SUBROUTINE CONVECT_CLOSURE_ADJUST_SHAL( CVPEXT, D, PADJ, & PUMF, PZUMF, PUER, PZUER, PUDR, PZUDR ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################################ ! !!**** Uses closure adjustment factor to adjust mass flux and to modify @@ -52,30 +51,31 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension -REAL, DIMENSION(KLON), INTENT(IN) :: PADJ ! mass adjustment factor +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT), INTENT(IN) :: PADJ ! mass adjustment factor ! ! -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PUMF ! updraft mass flux (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PZUMF ! initial value of " -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PUER ! updraft entrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PZUER ! initial value of " -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PUDR ! updraft detrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT) :: PZUDR ! initial value of " +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUMF ! updraft mass flux (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUMF ! initial value of " +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUER ! updraft entrainment (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUER ! initial value of " +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUDR ! updraft detrainment (kg/s) +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUDR ! initial value of " ! ! !* 0.2 Declarations of local variables : ! INTEGER :: IKB, IKE ! vert. loop bounds -INTEGER :: JK ! vertical loop index +INTEGER :: JK, JI ! vertical loop index ! ! !------------------------------------------------------------------------------- @@ -83,10 +83,10 @@ INTEGER :: JK ! vertical loop index !* 0.3 Compute loop bounds ! ------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_ADJUST_SHAL',0,ZHOOK_HANDLE) -IKB = 1 + JCVEXB -IKE = KLEV - JCVEXT +IKB = 1 + CVPEXT%JCVEXB +IKE = D%NKT - CVPEXT%JCVEXT ! ! !* 1. Adjust mass flux by the factor PADJ to converge to @@ -94,9 +94,11 @@ IKE = KLEV - JCVEXT ! ---------------------------------------------------- ! DO JK = IKB + 1, IKE - PUMF(:,JK) = PZUMF(:,JK) * PADJ(:) - PUER(:,JK) = PZUER(:,JK) * PADJ(:) - PUDR(:,JK) = PZUDR(:,JK) * PADJ(:) + DO JI = D%NIB, D%NIE + PUMF(JI,JK) = PZUMF(JI,JK) * PADJ(JI) + PUER(JI,JK) = PZUER(JI,JK) * PADJ(JI) + PUDR(JI,JK) = PZUDR(JI,JK) * PADJ(JI) + ENDDO END DO ! IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_ADJUST_SHAL',1,ZHOOK_HANDLE) diff --git a/src/arome/conv/convect_closure_adjust_shal.h b/src/arome/conv/convect_closure_adjust_shal.h new file mode 100644 index 0000000000000000000000000000000000000000..e9787fb445884c558f51750d7b3c2399a46f391f --- /dev/null +++ b/src/arome/conv/convect_closure_adjust_shal.h @@ -0,0 +1,19 @@ +INTERFACE + +SUBROUTINE CONVECT_CLOSURE_ADJUST_SHAL( CVPEXT, D, PADJ, & +PUMF, PZUMF, PUER, PZUER, PUDR, PZUDR ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT), INTENT(IN) :: PADJ +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PUDR +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT) :: PZUDR +END SUBROUTINE CONVECT_CLOSURE_ADJUST_SHAL + +END INTERFACE diff --git a/src/arome/conv/convect_closure_shal.F90 b/src/arome/conv/convect_closure_shal.F90 index cfae7f68451336695eba5ac7d1de960004aac616..2416a57dc54e58ff1f0c718221848a916a5a7429 100644 --- a/src/arome/conv/convect_closure_shal.F90 +++ b/src/arome/conv/convect_closure_shal.F90 @@ -1,13 +1,12 @@ ! ######spl - SUBROUTINE CONVECT_CLOSURE_SHAL( KLON, KLEV, & - PPRES, PDPRES, PZ, PDXDY, PLMASS, & + SUBROUTINE CONVECT_CLOSURE_SHAL( CVP_SHAL, CVPEXT, CST, D, & + PPRES, PDPRES, PZ, PLMASS, & PTHL, PTH, PRW, PRC, PRI, OTRIG1, & PTHC, PRWC, PRCC, PRIC, PWSUB, & KLCL, KDPL, KPBL, KCTL, & PUMF, PUER, PUDR, PUTHL, PURW, & PURC, PURI, PCAPE, PTIMEC, KFTSTEPS ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################## ! !!**** Uses modified Fritsch-Chappell closure @@ -76,60 +75,62 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XCPD, XRD, XG, XP00, XCPV, XLVTT, XCL, XTT, XCI -USE MODD_CONVPAR_SHAL, ONLY : XSTABT, XSTABC -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension -INTEGER, DIMENSION(KLON), INTENT(IN) :: KLCL ! index lifting condens. level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KCTL ! index for cloud top level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KDPL ! index for departure level -INTEGER, DIMENSION(KLON), INTENT(IN) :: KPBL ! index for top of source layer -REAL, DIMENSION(KLON), INTENT(INOUT) :: PTIMEC ! convection time step -REAL, DIMENSION(KLON), INTENT(IN) :: PDXDY ! grid area (m^2) -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PTHL ! grid scale enthalpy (J/kg) -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PTH ! grid scale theta -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PRW ! grid scale total water +TYPE(CONVPAR_SHAL) ,INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT) ,INTENT(IN) :: CVPEXT +TYPE(CST_T) ,INTENT(IN) :: CST +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PPRES ! pressure (P) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PDPRES ! pressure difference between + ! bottom and top of layer (Pa) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PZ ! height of model layer (m) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PLMASS ! mass of model layer (kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTHL ! grid scale enthalpy (J/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTH ! grid scale theta +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRW ! grid scale total water ! mixing ratio -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PRC ! grid scale r_c -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PRI ! grid scale r_i -LOGICAL, DIMENSION(KLON), INTENT(IN) :: OTRIG1 ! logical to keep trace of +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRC ! grid scale r_c +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRI ! grid scale r_i +LOGICAL ,DIMENSION(D%NIT) ,INTENT(IN) :: OTRIG1 ! logical to keep trace of +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PTHC ! conv. adj. grid scale theta +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PRWC ! conv. adj. grid scale r_w +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PRCC ! conv. adj. grid scale r_c +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PRIC ! conv. adj. grid scale r_i +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PWSUB ! envir. compensating subsidence(Pa/s) +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KLCL ! index lifting condens. level +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KDPL ! index for departure level +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KPBL ! index for top of source layer +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KCTL ! index for cloud top level +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(INOUT) :: PUMF ! updraft mass flux (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(INOUT) :: PUER ! updraft entrainment (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(INOUT) :: PUDR ! updraft detrainment (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PUTHL ! updraft enthalpy (J/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PURW ! updraft total water (kg/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PURC ! updraft cloud water (kg/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PURI ! updraft cloud ice (kg/kg) +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PCAPE ! available potent. energy +REAL ,DIMENSION(D%NIT) ,INTENT(INOUT) :: PTIMEC ! convection time step ! convective arrays modified in UPDRAFT ! ! -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PPRES ! pressure (P) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PDPRES ! pressure difference between - ! bottom and top of layer (Pa) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PLMASS ! mass of model layer (kg) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PZ ! height of model layer (m) -REAL, DIMENSION(KLON), INTENT(IN) :: PCAPE ! available potent. energy -INTEGER, INTENT(OUT) :: KFTSTEPS! maximum of fract time steps +INTEGER ,INTENT(OUT) :: KFTSTEPS! maximum of fract time steps ! only used for chemical tracers ! ! -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PUMF ! updraft mass flux (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PUER ! updraft entrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PUDR ! updraft detrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PUTHL ! updraft enthalpy (J/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PURW ! updraft total water (kg/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PURC ! updraft cloud water (kg/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PURI ! updraft cloud ice (kg/kg) ! -REAL, DIMENSION(KLON,KLEV), INTENT(OUT) :: PTHC ! conv. adj. grid scale theta -REAL, DIMENSION(KLON,KLEV), INTENT(OUT) :: PRWC ! conv. adj. grid scale r_w -REAL, DIMENSION(KLON,KLEV), INTENT(OUT) :: PRCC ! conv. adj. grid scale r_c -REAL, DIMENSION(KLON,KLEV), INTENT(OUT) :: PRIC ! conv. adj. grid scale r_i -REAL, DIMENSION(KLON,KLEV), INTENT(OUT) :: PWSUB ! envir. compensating subsidence(Pa/s) ! !* 0.2 Declarations of local variables : ! -INTEGER :: IIE, IKB, IKE ! horizontal + vertical loop bounds +INTEGER :: IKB, IKE ! horizontal + vertical loop bounds INTEGER :: IKS ! vertical dimension INTEGER :: JK, JKP, JKMAX ! vertical loop index INTEGER :: JI ! horizontal loop index @@ -137,39 +138,39 @@ INTEGER :: JITER ! iteration loop index INTEGER :: JSTEP ! fractional time loop index REAL :: ZCPORD, ZRDOCP ! C_pd / R_d, R_d / C_pd ! -REAL, DIMENSION(KLON,KLEV) :: ZTHLC ! convectively adjusted +REAL, DIMENSION(D%NIT,D%NKT) :: ZTHLC ! convectively adjusted ! grid scale enthalpy -REAL, DIMENSION(KLON,KLEV) :: ZOMG ! conv. environm. subsidence (Pa/s) -REAL, DIMENSION(KLON,KLEV) :: ZUMF ! non-adjusted updraft mass flux -REAL, DIMENSION(KLON,KLEV) :: ZUER ! " updraft entrainm. rate -REAL, DIMENSION(KLON,KLEV) :: ZUDR ! " updraft detrainm. rate -REAL, DIMENSION(KLON) :: ZADJ ! mass adjustment factor -REAL, DIMENSION(KLON) :: ZADJMAX ! limit value for ZADJ -REAL, DIMENSION(KLON) :: ZCAPE ! new CAPE after adjustment -REAL, DIMENSION(KLON) :: ZTIMEC ! fractional convective time step -REAL, DIMENSION(KLON,KLEV):: ZTIMC ! 2D work array for ZTIMEC -! -REAL, DIMENSION(KLON) :: ZTHLCL ! new theta at LCL -REAL, DIMENSION(KLON) :: ZRVLCL ! new r_v at LCL -REAL, DIMENSION(KLON) :: ZZLCL ! height of LCL -REAL, DIMENSION(KLON) :: ZTLCL ! temperature at LCL -REAL, DIMENSION(KLON) :: ZTELCL ! envir. temper. at LCL -REAL, DIMENSION(KLON) :: ZTHEUL ! theta_e for undilute ascent -REAL, DIMENSION(KLON) :: ZTHES1, ZTHES2! saturation environm. theta_e -REAL, DIMENSION(KLON,KLEV) :: ZTHMFIN, ZTHMFOUT, ZRWMFIN, ZRWMFOUT -REAL, DIMENSION(KLON,KLEV) :: ZRCMFIN, ZRCMFOUT, ZRIMFIN, ZRIMFOUT +REAL, DIMENSION(D%NIT,D%NKT) :: ZOMG ! conv. environm. subsidence (Pa/s) +REAL, DIMENSION(D%NIT,D%NKT) :: ZUMF ! non-adjusted updraft mass flux +REAL, DIMENSION(D%NIT,D%NKT) :: ZUER ! " updraft entrainm. rate +REAL, DIMENSION(D%NIT,D%NKT) :: ZUDR ! " updraft detrainm. rate +REAL, DIMENSION(D%NIT) :: ZADJ ! mass adjustment factor +REAL, DIMENSION(D%NIT) :: ZADJMAX ! limit value for ZADJ +REAL, DIMENSION(D%NIT) :: ZCAPE ! new CAPE after adjustment +REAL, DIMENSION(D%NIT) :: ZTIMEC ! fractional convective time step +REAL, DIMENSION(D%NIT,D%NKT):: ZTIMC ! 2D work array for ZTIMEC +! +REAL, DIMENSION(D%NIT) :: ZTHLCL ! new theta at LCL +REAL, DIMENSION(D%NIT) :: ZRVLCL ! new r_v at LCL +REAL, DIMENSION(D%NIT) :: ZZLCL ! height of LCL +REAL, DIMENSION(D%NIT) :: ZTLCL ! temperature at LCL +REAL, DIMENSION(D%NIT) :: ZTELCL ! envir. temper. at LCL +REAL, DIMENSION(D%NIT) :: ZTHEUL ! theta_e for undilute ascent +REAL, DIMENSION(D%NIT) :: ZTHES1, ZTHES2! saturation environm. theta_e +REAL, DIMENSION(D%NIT,D%NKT) :: ZTHMFIN, ZTHMFOUT, ZRWMFIN, ZRWMFOUT +REAL, DIMENSION(D%NIT,D%NKT) :: ZRCMFIN, ZRCMFOUT, ZRIMFIN, ZRIMFOUT ! work arrays for environm. compensat. mass flux -REAL, DIMENSION(KLON) :: ZPI ! (P/P00)**R_d/C_pd -REAL, DIMENSION(KLON) :: ZLV ! latent heat of vaporisation -REAL, DIMENSION(KLON) :: ZLS ! latent heat of sublimation -REAL, DIMENSION(KLON) :: ZCPH ! specific heat C_ph -INTEGER, DIMENSION(KLON) :: ITSTEP ! fractional convective time step -INTEGER, DIMENSION(KLON) :: ICOUNT ! timestep counter -INTEGER, DIMENSION(KLON) :: ILCL ! index lifting condens. level -INTEGER, DIMENSION(KLON) :: IWORK1 ! work array -REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5 -LOGICAL, DIMENSION(KLON) :: GWORK1, GWORK3! work arrays -LOGICAL, DIMENSION(KLON,KLEV) :: GWORK4 ! work array +REAL, DIMENSION(D%NIT) :: ZPI ! (P/P00)**R_d/C_pd +REAL, DIMENSION(D%NIT) :: ZLV ! latent heat of vaporisation +REAL, DIMENSION(D%NIT) :: ZLS ! latent heat of sublimation +REAL, DIMENSION(D%NIT) :: ZCPH ! specific heat C_ph +INTEGER, DIMENSION(D%NIT) :: ITSTEP ! fractional convective time step +INTEGER, DIMENSION(D%NIT) :: ICOUNT ! timestep counter +INTEGER, DIMENSION(D%NIT) :: ILCL ! index lifting condens. level +INTEGER, DIMENSION(D%NIT) :: IWORK1 ! work array +REAL, DIMENSION(D%NIT) :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5 +LOGICAL, DIMENSION(D%NIT) :: GWORK1, GWORK3! work arrays +LOGICAL, DIMENSION(D%NIT,D%NKT) :: GWORK4 ! work array ! ! !------------------------------------------------------------------------------- @@ -178,7 +179,10 @@ LOGICAL, DIMENSION(KLON,KLEV) :: GWORK4 ! work array ! ---------------------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +#include "convect_closure_adjust_shal.h" + IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_SHAL',0,ZHOOK_HANDLE) ZTIMC(:,:) = 0. ZTHES2(:) = 0. @@ -186,28 +190,27 @@ ZWORK1(:) = 0. ZWORK2(:) = 0. ZWORK3(:) = 0. ZWORK4(:) = 0. -ZWORK5(:) = 0. GWORK1(:) = .FALSE. GWORK3(:) = .FALSE. GWORK4(:,:) = .FALSE. ILCL(:) = KLCL(:) ! -ZCPORD = XCPD / XRD -ZRDOCP = XRD / XCPD +ZCPORD = CST%XCPD / CST%XRD +ZRDOCP = CST%XRD / CST%XCPD ! ZADJ(:) = 1. ZWORK5(:) = 1. -WHERE( .NOT. OTRIG1(:) ) ZWORK5(:) = 0. +DO JI=D%NIB,D%NIE + IF (.NOT. OTRIG1(JI)) ZWORK5 = 0 +ENDDO ! ! !* 0.3 Compute loop bounds ! ------------------- ! -IIE = KLON -IKB = 1 + JCVEXB -IKS = KLEV -IKE = KLEV - JCVEXT -!JKMAX = MAXVAL( KCTL(:) ) +IKB = 1 + CVPEXT%JCVEXB +IKS = D%NKT +IKE = D%NKT - CVPEXT%JCVEXT JKMAX=IKE ! ! @@ -228,27 +231,30 @@ PWSUB(:,:) = 0. ! ZADJMAX(:) = 1000. IWORK1(:) = ILCL(:) -!JKP = MINVAL( KDPL(:) ) JKP=IKB DO JK = JKP, IKE - DO JI = 1, IIE - IF( JK > KDPL(JI) .AND. JK <= IWORK1(JI) ) THEN + DO JI = D%NIB, D%NIE + IF( JK > KDPL(JI))THEN + IF(JK <= IWORK1(JI) ) THEN ZWORK1(JI) = PLMASS(JI,JK) / ( ( PUER(JI,JK) + 1.E-5 ) * PTIMEC(JI) ) ZADJMAX(JI) = MIN( ZADJMAX(JI), ZWORK1(JI) ) END IF + END IF END DO END DO ! ! -GWORK1(:) = OTRIG1(:) ! logical array to limit adjustment to not definitively - ! adjusted columns +GWORK1(D%NIB:D%NIE) = OTRIG1(D%NIB:D%NIE) ! logical array to limit adjustment to not definitively + ! adjusted columns ! DO JK = IKB, IKE - ZTHLC(:,JK) = PTHL(:,JK) ! initialize adjusted envir. values - PRWC(:,JK) = PRW(:,JK) - PRCC(:,JK) = PRC(:,JK) - PRIC(:,JK) = PRI(:,JK) - PTHC(:,JK) = PTH(:,JK) + DO JI=D%NIB, D%NIE + ZTHLC(JI,JK) = PTHL(JI,JK) ! initialize adjusted envir. values + PRWC(JI,JK) = PRW(JI,JK) + PRCC(JI,JK) = MAX(0., PRC(JI,JK)) + PRIC(JI,JK) = MAX(0., PRI(JI,JK)) + PTHC(JI,JK) = PTH(JI,JK) + ENDDO END DO ! ! @@ -256,14 +262,23 @@ END DO DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! removed within the advective time interval TIMEC ! - ZTIMEC(:) = PTIMEC(:) - GWORK4(:,:) = SPREAD( GWORK1(:), DIM=2, NCOPIES=IKS ) - WHERE( GWORK4(:,:) ) PWSUB(:,:) = 0. - ZOMG(:,:)=0. + ZTIMEC(D%NIB:D%NIE) = PTIMEC(D%NIB:D%NIE) + DO JI=1, D%NIE + DO JK=1, IKS + GWORK4(JI,JK) = GWORK1(JI) + ENDDO + ENDDO + DO JK = IKB, IKE + DO JI=D%NIB, D%NIE + IF(GWORK4(JI,JK))PWSUB(JI,JK) = 0. + ENDDO + END DO + ZOMG(D%NIB:D%NIE,1:D%NKT)=0. ! DO JK = IKB + 1, JKMAX JKP = MAX( IKB + 1, JK - 1 ) - WHERE ( GWORK1(:) .AND. JK <= KCTL(:) ) + DO JI=D%NIB,D%NIE + IF(GWORK1(JI) .AND. JK <= KCTL(JI)) THEN ! ! !* 4. Determine vertical velocity at top and bottom of each layer @@ -271,9 +286,9 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! --------------------------------------------------------------- ! we compute here Domega/Dp = - g rho Dw/Dz = 1/Dt ! - ZWORK1(:) = - ( PUER(:,JKP) - PUDR(:,JKP) ) / PLMASS(:,JKP) + ZWORK1(JI) = - ( PUER(JI,JKP) - PUDR(JI,JKP) ) / PLMASS(JI,JKP) ! - PWSUB(:,JK) = PWSUB(:,JKP) - PDPRES(:,JK-1) * ZWORK1(:) + PWSUB(JI,JK) = PWSUB(JI,JKP) - PDPRES(JI,JK-1) * ZWORK1(JI) ! we use PDPRES(JK-1) and not JKP in order to have zero subsidence ! at the first layer ! @@ -282,23 +297,28 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! mass conservation reasons one must split full time step PTIMEC) ! --------------------------------------------------------------- ! - ZWORK1(:) = XSTABT * PDPRES(:,JKP) / ( ABS( PWSUB(:,JK) ) + 1.E-10 ) + ZWORK1(JI) = CVP_SHAL%XSTABT * PDPRES(JI,JKP) / ( ABS( PWSUB(JI,JK) ) + 1.E-10 ) ! the factor XSTABT is used for stability reasons - ZTIMEC(:) = MIN( ZTIMEC(:), ZWORK1(:) ) + ZTIMEC(JI) = MIN( ZTIMEC(JI), ZWORK1(JI) ) ! ! transform vertical velocity in mass flux units - ZOMG(:,JK) = PWSUB(:,JK) * PDXDY(:) / XG - END WHERE + ZOMG(JI,JK) = PWSUB(JI,JK) * CVP_SHAL%XA25 / CST%XG + ENDIF + ENDDO END DO ! ! - WHERE( GWORK4(:,:) ) - ZTHLC(:,:) = PTHL(:,:) ! reinitialize adjusted envir. values - PRWC(:,:) = PRW(:,:) ! when iteration criterium not attained - PRCC(:,:) = PRC(:,:) - PRIC(:,:) = PRI(:,:) - PTHC(:,:) = PTH(:,:) - END WHERE + DO JK = IKB, IKE + DO JI=D%NIB, D%NIE + IF(GWORK4(JI,JK)) THEN + ZTHLC(JI,JK) = PTHL(JI,JK) ! reinitialize adjusted envir. values + PRWC(JI,JK) = PRW(JI,JK) ! when iteration criterium not attained + PRCC(JI,JK) = MAX(0., PRC(JI,JK)) + PRIC(JI,JK) = MAX(0., PRI(JI,JK)) + PTHC(JI,JK) = PTH(JI,JK) + ENDIF + ENDDO + ENDDO ! ! ! 6. Check for mass conservation, i.e. ZWORK1 > 1.E-2 @@ -306,36 +326,49 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! automatically become zero. ! ---------------------------------------------------- ! - DO JI = 1, IIE + DO JI = D%NIB, D%NIE JK=KCTL(JI) ZWORK1(JI) = PUDR(JI,JK) * PDPRES(JI,JK) / ( PLMASS(JI,JK) + .1 ) & - PWSUB(JI,JK) END DO - WHERE( GWORK1(:) .AND. ABS( ZWORK1(:) ) - .01 > 0. ) - GWORK1(:) = .FALSE. - PTIMEC(:) = 1.E-1 - ZWORK5(:) = 0. - END WHERE + DO JI = D%NIB, D%NIE + IF(GWORK1(JI) .AND. ABS( ZWORK1(JI) ) - .01 > 0. ) THEN + GWORK1(JI) = .FALSE. + PTIMEC(JI) = 1.E-1 + ZWORK5(JI) = 0. + ENDIF + ENDDO DO JK = IKB, IKE PWSUB(:,JK) = PWSUB(:,JK) * ZWORK5(:) END DO - GWORK4(:,1:IKB) = .FALSE. - GWORK4(:,IKE:IKS) = .FALSE. -! - ITSTEP(:) = INT( PTIMEC(:) / ZTIMEC(:) ) + 1 - ZTIMEC(:) = PTIMEC(:) / REAL( ITSTEP(:) ) ! adjust fractional time step + GWORK4(D%NIB:D%NIE,1:IKB) = .FALSE. + GWORK4(D%NIB:D%NIE,IKE:IKS) = .FALSE. +! + DO JI=D%NIB,D%NIE + ITSTEP(JI) = INT( PTIMEC(JI) / ZTIMEC(JI) ) + 1 + ENDDO + DO JI=D%NIB,D%NIE + ZTIMEC(JI) = PTIMEC(JI) / REAL( ITSTEP(JI) ) ! adjust fractional time step + ENDDO ! to be an integer multiple of PTIMEC - ZTIMC(:,:)= SPREAD( ZTIMEC(:), DIM=2, NCOPIES=IKS ) - ICOUNT(:) = 0 + DO JI=1, D%NIE + DO JK=1, IKS + ZTIMC(JI,JK) = ZTIMEC(JI) + ENDDO + ENDDO + ICOUNT(D%NIB:D%NIE) = 0 ! ! ! - KFTSTEPS = MAXVAL( ITSTEP(:) ) + KFTSTEPS = 0 + DO JI=D%NIB,D%NIE + KFTSTEPS = MAX(KFTSTEPS, ITSTEP(JI)) + ENDDO DO JSTEP = 1, KFTSTEPS ! Enter the fractional time step loop here ! - ICOUNT(:) = ICOUNT(:) + 1 + ICOUNT(D%NIB:D%NIE) = ICOUNT(D%NIB:D%NIE) + 1 ! - GWORK3(:) = ITSTEP(:) >= ICOUNT(:) .AND. GWORK1(:) + GWORK3(D%NIB:D%NIE) = ITSTEP(D%NIB:D%NIE) >= ICOUNT(D%NIB:D%NIE) .AND. GWORK1(D%NIB:D%NIE) ! ! !* 7. Assign enthalpy and r_w values at the top and bottom of each @@ -352,11 +385,11 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ZRIMFOUT(:,:) = 0. ! DO JK = IKB + 1, JKMAX - DO JI = 1, IIE + DO JI = D%NIB, D%NIE GWORK4(JI,JK) = GWORK3(JI) .AND. JK <= KCTL(JI) END DO JKP = MAX( IKB + 1, JK - 1 ) - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( GWORK3(JI) ) THEN ! ZWORK1(JI) = SIGN( 1., ZOMG(JI,JK) ) @@ -372,7 +405,7 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ZRIMFOUT(JI,JK) = ZOMG(JI,JK) * PRIC(JI,JK) * ZWORK2(JI) END IF END DO - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( GWORK3(JI) ) THEN ZTHMFIN(JI,JKP) = ZTHMFIN(JI,JKP) + ZTHMFOUT(JI,JK) * ZWORK2(JI) ZTHMFOUT(JI,JKP) = ZTHMFOUT(JI,JKP) + ZTHMFIN(JI,JK) * ZWORK1(JI) @@ -387,7 +420,9 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is END DO END DO ! - WHERE ( GWORK4(:,:) ) + DO JK = IKB, IKE + DO JI=D%NIB, D%NIE + IF(GWORK4(JI,JK)) THEN ! !****************************************************************************** ! @@ -396,23 +431,25 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! ----------------------------------------------------------------- ! ! - ZTHLC(:,:) = ZTHLC(:,:) + ZTIMC(:,:) / PLMASS(:,:) * ( & - ZTHMFIN(:,:) + PUDR(:,:) * PUTHL(:,:) & - - ZTHMFOUT(:,:) - PUER(:,:) * PTHL(:,:) ) - PRWC(:,:) = PRWC(:,:) + ZTIMC(:,:) / PLMASS(:,:) * ( & - ZRWMFIN(:,:) + PUDR(:,:) * PURW(:,:) & - - ZRWMFOUT(:,:) - PUER(:,:) * PRW(:,:) ) - PRCC(:,:) = PRCC(:,:) + ZTIMC(:,:) / PLMASS(:,:) * ( & - ZRCMFIN(:,:) + PUDR(:,:) * PURC(:,:) - ZRCMFOUT(:,:) - & - PUER(:,:) * PRC(:,:) ) - PRIC(:,:) = PRIC(:,:) + ZTIMC(:,:) / PLMASS(:,:) * ( & - ZRIMFIN(:,:) + PUDR(:,:) * PURI(:,:) - ZRIMFOUT(:,:) - & - PUER(:,:) * PRI(:,:) ) + ZTHLC(JI,JK) = ZTHLC(JI,JK) + ZTIMC(JI,JK) / PLMASS(JI,JK) * ( & + ZTHMFIN(JI,JK) + PUDR(JI,JK) * PUTHL(JI,JK) & + - ZTHMFOUT(JI,JK) - PUER(JI,JK) * PTHL(JI,JK) ) + PRWC(JI,JK) = PRWC(JI,JK) + ZTIMC(JI,JK) / PLMASS(JI,JK) * ( & + ZRWMFIN(JI,JK) + PUDR(JI,JK) * PURW(JI,JK) & + - ZRWMFOUT(JI,JK) - PUER(JI,JK) * PRW(JI,JK) ) + PRCC(JI,JK) = PRCC(JI,JK) + ZTIMC(JI,JK) / PLMASS(JI,JK) * ( & + ZRCMFIN(JI,JK) + PUDR(JI,JK) * PURC(JI,JK) - ZRCMFOUT(JI,JK) - & + PUER(JI,JK) * MAX(0., PRC(JI,JK)) ) + PRIC(JI,JK) = PRIC(JI,JK) + ZTIMC(JI,JK) / PLMASS(JI,JK) * ( & + ZRIMFIN(JI,JK) + PUDR(JI,JK) * PURI(JI,JK) - ZRIMFOUT(JI,JK) - & + PUER(JI,JK) * MAX(0., PRI(JI,JK)) ) ! ! !****************************************************************************** ! - END WHERE + ENDIF + ENDDO + ENDDO ! END DO ! Exit the fractional time step loop ! @@ -421,16 +458,16 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! ---------------------------------------------- ! DO JK = IKB + 1, JKMAX - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF( GWORK1(JI) .AND. JK <= KCTL(JI) ) THEN - ZPI(JI) = ( XP00 / PPRES(JI,JK) ) ** ZRDOCP - ZCPH(JI) = XCPD + PRWC(JI,JK) * XCPV + ZPI(JI) = ( CST%XP00 / PPRES(JI,JK) ) ** ZRDOCP + ZCPH(JI) = CST%XCPD + PRWC(JI,JK) * CST%XCPV ZWORK2(JI) = PTH(JI,JK) / ZPI(JI) ! first temperature estimate - ZLV(JI) = XLVTT + ( XCPV - XCL ) * ( ZWORK2(JI) - XTT ) - ZLS(JI) = XLVTT + ( XCPV - XCI ) * ( ZWORK2(JI) - XTT ) + ZLV(JI) = CST%XLVTT + ( CST%XCPV - CST%XCL ) * ( ZWORK2(JI) - CST%XTT ) + ZLS(JI) = CST%XLVTT + ( CST%XCPV - CST%XCI ) * ( ZWORK2(JI) - CST%XTT ) ! final linearized temperature ZWORK2(JI) = ( ZTHLC(JI,JK) + ZLV(JI) * PRCC(JI,JK) + ZLS(JI) * PRIC(JI,JK) & - - (1. + PRWC(JI,JK) ) * XG * PZ(JI,JK) ) / ZCPH(JI) + - (1. + PRWC(JI,JK) ) * CST%XG * PZ(JI,JK) ) / ZCPH(JI) ZWORK2(JI) = MAX( 180., MIN( 340., ZWORK2(JI) ) ) PTHC(JI,JK)= ZWORK2(JI) * ZPI(JI) ! final adjusted envir. theta END IF @@ -443,42 +480,42 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! that in routine TRIGGER_FUNCT ! --------------------------------------------- ! - CALL CONVECT_CLOSURE_THRVLCL( KLON, KLEV, & + CALL CONVECT_CLOSURE_THRVLCL( CVPEXT, CST, D, & PPRES, PTHC, PRWC, PZ, GWORK1, & ZTHLCL, ZRVLCL, ZZLCL, ZTLCL, ZTELCL, & ILCL, KDPL, KPBL ) ! ! - ZTLCL(:) = MAX( 230., MIN( 335., ZTLCL(:) ) ) ! set some overflow bounds - ZTELCL(:) = MAX( 230., MIN( 335., ZTELCL(:) ) ) - ZTHLCL(:) = MAX( 230., MIN( 345., ZTHLCL(:) ) ) - ZRVLCL(:) = MAX( 0., MIN( 1., ZRVLCL(:) ) ) + ZTLCL(D%NIB:D%NIE) = MAX( 230., MIN( 335., ZTLCL(D%NIB:D%NIE) ) ) ! set some overflow bounds + ZTELCL(D%NIB:D%NIE) = MAX( 230., MIN( 335., ZTELCL(D%NIB:D%NIE) ) ) + ZTHLCL(D%NIB:D%NIE) = MAX( 230., MIN( 345., ZTHLCL(D%NIB:D%NIE) ) ) + ZRVLCL(D%NIB:D%NIE) = MAX( 0., MIN( 1., ZRVLCL(D%NIB:D%NIE) ) ) ! ! !* 12. Compute adjusted CAPE ! --------------------- ! - ZCAPE(:) = 0. - ZPI(:) = ZTHLCL(:) / ZTLCL(:) - ZPI(:) = MAX( 0.95, MIN( 1.5, ZPI(:) ) ) - ZWORK1(:) = XP00 / ZPI(:) ** ZCPORD ! pressure at LCL + ZCAPE(D%NIB:D%NIE) = 0. + ZPI(D%NIB:D%NIE) = ZTHLCL(D%NIB:D%NIE) / ZTLCL(D%NIB:D%NIE) + ZPI(D%NIB:D%NIE) = MAX( 0.95, MIN( 1.5, ZPI(D%NIB:D%NIE) ) ) + ZWORK1(D%NIB:D%NIE) = CST%XP00 / ZPI(D%NIB:D%NIE) ** ZCPORD ! pressure at LCL ! - CALL CONVECT_SATMIXRATIO( KLON, ZWORK1, ZTELCL, ZWORK3, ZLV, ZLS, ZCPH ) - ZWORK3(:) = MIN( .1, MAX( 0., ZWORK3(:) ) ) + CALL CONVECT_SATMIXRATIO( CST, D, ZWORK1, ZTELCL, ZWORK3, ZLV, ZLS, ZCPH ) + ZWORK3(D%NIB:D%NIE) = MIN( .1, MAX( 0., ZWORK3(D%NIB:D%NIE) ) ) ! ! compute theta_e updraft undilute - ZTHEUL(:) = ZTLCL(:) * ZPI(:) ** ( 1. - 0.28 * ZRVLCL(:) ) & - * EXP( ( 3374.6525 / ZTLCL(:) - 2.5403 ) & - * ZRVLCL(:) * ( 1. + 0.81 * ZRVLCL(:) ) ) + ZTHEUL(D%NIB:D%NIE) = ZTLCL(D%NIB:D%NIE) * ZPI(D%NIB:D%NIE) ** ( 1. - 0.28 * ZRVLCL(D%NIB:D%NIE) ) & + * EXP( ( 3374.6525 / ZTLCL(D%NIB:D%NIE) - 2.5403 ) & + * ZRVLCL(D%NIB:D%NIE) * ( 1. + 0.81 * ZRVLCL(D%NIB:D%NIE) ) ) ! ! compute theta_e saturated environment at LCL - ZTHES1(:) = ZTELCL(:) * ZPI(:) ** ( 1. - 0.28 * ZWORK3(:) ) & - * EXP( ( 3374.6525 / ZTELCL(:) - 2.5403 ) & - * ZWORK3(:) * ( 1. + 0.81 * ZWORK3(:) ) ) + ZTHES1(D%NIB:D%NIE) = ZTELCL(D%NIB:D%NIE) * ZPI(D%NIB:D%NIE) ** ( 1. - 0.28 * ZWORK3(D%NIB:D%NIE) ) & + * EXP( ( 3374.6525 / ZTELCL(D%NIB:D%NIE) - 2.5403 ) & + * ZWORK3(D%NIB:D%NIE) * ( 1. + 0.81 * ZWORK3(D%NIB:D%NIE) ) ) ! DO JK = IKB, JKMAX JKP = JK - 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE ZWORK4(JI) = 1. IF ( JK == ILCL(JI) ) ZWORK4(JI) = 0. ! @@ -487,14 +524,14 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! GWORK3(JI) = JK >= ILCL(JI) .AND. JK <= KCTL(JI) .AND. GWORK1(JI) ! - ZPI(JI) = ( XP00 / PPRES(JI,JK) ) ** ZRDOCP + ZPI(JI) = ( CST%XP00 / PPRES(JI,JK) ) ** ZRDOCP ZWORK2(JI) = PTHC(JI,JK) / ZPI(JI) END DO ! - CALL CONVECT_SATMIXRATIO( KLON, PPRES(:,JK), ZWORK2, ZWORK3, ZLV, ZLS, ZCPH ) + CALL CONVECT_SATMIXRATIO( CST, D, PPRES(:,JK), ZWORK2, ZWORK3, ZLV, ZLS, ZCPH ) ! ! - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( GWORK3(JI) ) THEN ZTHES2(JI) = ZWORK2(JI) * ZPI(JI) ** ( 1. - 0.28 * ZWORK3(JI) ) & * EXP( ( 3374.6525 / ZWORK2(JI) - 2.5403 ) & @@ -503,7 +540,7 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ZWORK3(JI) = PZ(JI,JK) - PZ(JI,JKP) * ZWORK4(JI) - & ( 1. - ZWORK4(JI) ) * ZZLCL(JI) ! level thickness ZWORK1(JI) = ( 2. * ZTHEUL(JI) ) / ( ZTHES1(JI) + ZTHES2(JI) ) - 1. - ZCAPE(JI) = ZCAPE(JI) + XG * ZWORK3(JI) * MAX( 0., ZWORK1(JI) ) + ZCAPE(JI) = ZCAPE(JI) + CST%XG * ZWORK3(JI) * MAX( 0., ZWORK1(JI) ) ZTHES1(JI) = ZTHES2(JI) END IF END DO @@ -514,24 +551,33 @@ DO JITER = 1, 4 ! Enter adjustment loop to assure that all CAPE is ! CAPE has been removed. ! ------------------------------------------------- ! - WHERE ( GWORK1(:) ) - ZWORK1(:) = MAX( PCAPE(:) - ZCAPE(:), 0.2 * PCAPE(:) ) - ZWORK2(:) = ZCAPE(:) / ( PCAPE(:) + 1.E-8 ) + DO JI=D%NIB,D%NIE + IF ( GWORK1(JI) ) THEN + ZWORK1(JI) = MAX( PCAPE(JI) - ZCAPE(JI), 0.2 * PCAPE(JI) ) + ZWORK2(JI) = ZCAPE(JI) / ( PCAPE(JI) + 1.E-8 ) ! - GWORK1(:) = ZWORK2(:) > 0.2 .OR. ZCAPE(:) == 0. ! mask for adjustment - END WHERE + GWORK1(JI) = ZWORK2(JI) > 0.2 .OR. ZCAPE(JI) == 0. ! mask for adjustment + END IF + ENDDO ! - WHERE ( ZCAPE(:) == 0. .AND. GWORK1(:) ) ZADJ(:) = ZADJ(:) * 0.5 - WHERE ( ZCAPE(:) /= 0. .AND. GWORK1(:) ) & - ZADJ(:) = ZADJ(:) * XSTABC * PCAPE(:) / ( ZWORK1(:) + 1.E-8 ) - ZADJ(:) = MIN( ZADJ(:), ZADJMAX(:) ) + DO JI=D%NIB,D%NIE + IF( ZCAPE(JI) == 0. .AND. GWORK1(JI) ) ZADJ(JI) = ZADJ(JI) * 0.5 + ENDDO + DO JI=D%NIB,D%NIE + IF ( ZCAPE(JI) /= 0. .AND. GWORK1(JI) ) THEN + ZADJ(JI) = ZADJ(JI) * CVP_SHAL%XSTABC * PCAPE(JI) / ( ZWORK1(JI) + 1.E-8 ) + ENDIF + ENDDO + DO JI=D%NIB,D%NIE + ZADJ(JI) = MIN( ZADJ(JI), ZADJMAX(JI) ) + ENDDO ! ! !* 13. Adjust mass flux by the factor ZADJ to converge to ! specified degree of stabilization ! ---------------------------------------------------- ! - CALL CONVECT_CLOSURE_ADJUST_SHAL( KLON, KLEV, ZADJ, & + CALL CONVECT_CLOSURE_ADJUST_SHAL( CVPEXT, D, ZADJ,& PUMF, ZUMF, PUER, ZUER, PUDR, ZUDR ) ! ! @@ -544,9 +590,12 @@ END DO ! end of big adjustment iteration loop ! ! skip adj. total water array to water vapor DO JK = IKB, IKE - PRWC(:,JK) = MAX( 0., PRWC(:,JK) - PRCC(:,JK) - PRIC(:,JK) ) + DO JI=D%NIB,D%NIE + PRWC(JI,JK) = MAX( 0., PRWC(JI,JK) - PRCC(JI,JK) - PRIC(JI,JK) ) + END DO END DO ! ! IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_SHAL',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_CLOSURE_SHAL + diff --git a/src/arome/conv/convect_closure_shal.h b/src/arome/conv/convect_closure_shal.h new file mode 100644 index 0000000000000000000000000000000000000000..f293c258abcb49fc4988ec9e8c68fd7786c1c609 --- /dev/null +++ b/src/arome/conv/convect_closure_shal.h @@ -0,0 +1,50 @@ +INTERFACE + +SUBROUTINE CONVECT_CLOSURE_SHAL( CVP_SHAL, CVPEXT, CST, D, & +PPRES, PDPRES, PZ, PLMASS, & +PTHL, PTH, PRW, PRC, PRI, OTRIG1, & +PTHC, PRWC, PRCC, PRIC, PWSUB, & +KLCL, KDPL, KPBL, KCTL, & +PUMF, PUER, PUDR, PUTHL, PURW, & +PURC, PURI, PCAPE, PTIMEC, KFTSTEPS ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAR_SHAL), INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLCL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KCTL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDPL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KPBL +REAL, DIMENSION(D%NIT), INTENT(INOUT) :: PTIMEC +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PTHL +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PTH +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PRW +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PRC +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PRI +LOGICAL, DIMENSION(D%NIT), INTENT(IN) :: OTRIG1 +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDPRES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PLMASS +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZ +REAL, DIMENSION(D%NIT), INTENT(IN) :: PCAPE +INTEGER, INTENT(OUT) :: KFTSTEPS +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PUER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(INOUT):: PUDR +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PUTHL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PURW +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PURC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PURI +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PTHC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRWC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRCC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PRIC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT) :: PWSUB +END SUBROUTINE CONVECT_CLOSURE_SHAL + +END INTERFACE diff --git a/src/arome/conv/convect_closure_thrvlcl.F90 b/src/arome/conv/convect_closure_thrvlcl.F90 index 1ad35ec7c6c345fa932d741782be648868b928be..860a26fcc3098d2add9e8a0ed9d77f9211cd947e 100644 --- a/src/arome/conv/convect_closure_thrvlcl.F90 +++ b/src/arome/conv/convect_closure_thrvlcl.F90 @@ -1,10 +1,9 @@ ! ######spl - SUBROUTINE CONVECT_CLOSURE_THRVLCL( KLON, KLEV, & + SUBROUTINE CONVECT_CLOSURE_THRVLCL( CVPEXT, CST, D, & PPRES, PTH, PRV, PZ, OWORK1, & PTHLCL, PRVLCL, PZLCL, PTLCL, PTELCL,& KLCL, KDPL, KPBL ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################### ! !!**** Determine thermodynamic properties at new LCL @@ -67,46 +66,49 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XRD, XRV, XCPD, XP00, XTT, XBETAW, XGAMW -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_CST, ONLY: CST_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PTH ! theta -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PRV ! vapor mixing ratio -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PPRES ! pressure -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PZ ! height of grid point (m) -INTEGER, DIMENSION(KLON), INTENT(IN) :: KDPL ! contains vert. index of DPL -INTEGER, DIMENSION(KLON), INTENT(IN) :: KPBL ! " vert. index of source layer top -LOGICAL, DIMENSION(KLON), INTENT(IN) :: OWORK1! logical mask -! -REAL, DIMENSION(KLON), INTENT(OUT):: PTHLCL ! theta at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PRVLCL ! vapor mixing ratio at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PZLCL ! height at LCL (m) -REAL, DIMENSION(KLON), INTENT(OUT):: PTLCL ! temperature at LCL (m) -REAL, DIMENSION(KLON), INTENT(OUT):: PTELCL ! environm. temp. at LCL (K) -INTEGER, DIMENSION(KLON), INTENT(OUT):: KLCL ! contains vert. index of LCL +TYPE(CONVPAREXT) ,INTENT(IN) :: CVPEXT +TYPE(CST_T) ,INTENT(IN) :: CST +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PPRES ! pressure +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTH ! theta +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRV ! vapor mixing ratio +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PZ ! height of grid point (m) +LOGICAL ,DIMENSION(D%NIT) ,INTENT(IN) :: OWORK1! logical mask +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTHLCL ! theta at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PRVLCL ! vapor mixing ratio at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PZLCL ! height at LCL (m) +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTLCL ! temperature at LCL (m) +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTELCL ! environm. temp. at LCL (K) +INTEGER ,DIMENSION(D%NIT) ,INTENT(OUT) :: KLCL ! contains vert. index of LCL +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KDPL ! contains vert. index of DPL +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KPBL ! " vert. index of source layer top +! ! !* 0.2 Declarations of local variables : ! INTEGER :: JK, JKM, JKMIN, JKMAX ! vertical loop index INTEGER :: JI ! horizontal loop index -INTEGER :: IIE, IKB, IKE ! horizontal + vertical loop bounds +INTEGER :: IKB, IKE ! horizontal + vertical loop bounds REAL :: ZEPS ! R_d / R_v REAL :: ZCPORD, ZRDOCP ! C_pd / R_d, R_d / C_pd ! -REAL, DIMENSION(KLON) :: ZPLCL ! pressure at LCL -REAL, DIMENSION(KLON) :: ZTMIX ! mixed layer temperature -REAL, DIMENSION(KLON) :: ZEVMIX ! mixed layer water vapor pressure -REAL, DIMENSION(KLON) :: ZDPTHMIX, ZPRESMIX ! mixed layer depth and pressure -REAL, DIMENSION(KLON) :: ZLV, ZCPH! specific heats of vaporisation, dry air -REAL, DIMENSION(KLON) :: ZDP ! pressure between LCL and model layer -REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2 ! work arrays +REAL, DIMENSION(D%NIT) :: ZPLCL ! pressure at LCL +REAL, DIMENSION(D%NIT) :: ZTMIX ! mixed layer temperature +REAL, DIMENSION(D%NIT) :: ZEVMIX ! mixed layer water vapor pressure +REAL, DIMENSION(D%NIT) :: ZDPTHMIX, ZPRESMIX ! mixed layer depth and pressure +REAL, DIMENSION(D%NIT) :: ZLV, ZCPH! specific heats of vaporisation, dry air +REAL, DIMENSION(D%NIT) :: ZDP ! pressure between LCL and model layer +REAL, DIMENSION(D%NIT) :: ZWORK1, ZWORK2 ! work arrays ! ! !------------------------------------------------------------------------------- @@ -114,19 +116,18 @@ REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2 ! work arrays !* 0.3 Compute array bounds ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_THRVLCL',0,ZHOOK_HANDLE) -IIE = KLON -IKB = 1 + JCVEXB -IKE = KLEV - JCVEXT +IKB = 1 + CVPEXT%JCVEXB +IKE = D%NKT - CVPEXT%JCVEXT ! ! !* 1. Initialize local variables ! -------------------------- ! -ZEPS = XRD / XRV -ZCPORD = XCPD / XRD -ZRDOCP = XRD / XCPD +ZEPS = CST%XRD / CST%XRV +ZCPORD = CST%XCPD / CST%XRD +ZRDOCP = CST%XRD / CST%XCPD ! ZDPTHMIX(:) = 0. ZPRESMIX(:) = 0. @@ -143,13 +144,11 @@ KLCL(:) = IKB + 1 !* 2. Construct a mixed layer as in TRIGGER_FUNCT ! ------------------------------------------- ! - !JKMAX = MAXVAL( KPBL(:) ) - !JKMIN = MINVAL( KDPL(:) ) JKMAX=IKE JKMIN=IKB DO JK = IKB + 1, JKMAX JKM = JK + 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( JK >= KDPL(JI) .AND. JK <= KPBL(JI) ) THEN ! ZWORK1(JI) = PPRES(JI,JK) - PPRES(JI,JKM) @@ -163,71 +162,76 @@ KLCL(:) = IKB + 1 END DO ! ! -WHERE ( OWORK1(:) ) +DO JI=D%NIB,D%NIE + IF ( OWORK1(JI) ) THEN ! - ZPRESMIX(:) = ZPRESMIX(:) / ZDPTHMIX(:) - PTHLCL(:) = PTHLCL(:) / ZDPTHMIX(:) - PRVLCL(:) = PRVLCL(:) / ZDPTHMIX(:) + ZPRESMIX(JI) = ZPRESMIX(JI) / ZDPTHMIX(JI) + PTHLCL(JI) = PTHLCL(JI) / ZDPTHMIX(JI) + PRVLCL(JI) = PRVLCL(JI) / ZDPTHMIX(JI) ! !* 3.1 Use an empirical direct solution ( Bolton formula ) ! to determine temperature and pressure at LCL. -! Nota: the adiabatic saturation temperature is not +! NotaJI the adiabatic saturation temperature is not ! equal to the dewpoint temperature ! -------------------------------------------------- ! ! - ZTMIX(:) = PTHLCL(:) * ( ZPRESMIX(:) / XP00 ) ** ZRDOCP - ZEVMIX(:) = PRVLCL(:) * ZPRESMIX(:) / ( PRVLCL(:) + ZEPS ) - ZEVMIX(:) = MAX( 1.E-8, ZEVMIX(:) ) - ZWORK1(:) = ALOG( ZEVMIX(:) / 613.3 ) + ZTMIX(JI) = PTHLCL(JI) * ( ZPRESMIX(JI) / CST%XP00 ) ** ZRDOCP + ZEVMIX(JI) = PRVLCL(JI) * ZPRESMIX(JI) / ( PRVLCL(JI) + ZEPS ) + ZEVMIX(JI) = MAX( 1.E-8, ZEVMIX(JI) ) + ZWORK1(JI) = ALOG( ZEVMIX(JI) / 613.3 ) ! dewpoint temperature - ZWORK1(:) = ( 4780.8 - 32.19 * ZWORK1(:) ) / ( 17.502 - ZWORK1(:) ) + ZWORK1(JI) = ( 4780.8 - 32.19 * ZWORK1(JI) ) / ( 17.502 - ZWORK1(JI) ) ! adiabatic saturation temperature - PTLCL(:) = ZWORK1(:) - ( .212 + 1.571E-3 * ( ZWORK1(:) - XTT ) & - - 4.36E-4 * ( ZTMIX(:) - XTT ) ) * ( ZTMIX(:) - ZWORK1(:) ) - PTLCL(:) = MIN( PTLCL(:), ZTMIX(:) ) - ZPLCL(:) = XP00 * ( PTLCL(:) / PTHLCL(:) ) ** ZCPORD + PTLCL(JI) = ZWORK1(JI) - ( .212 + 1.571E-3 * ( ZWORK1(JI) - CST%XTT ) & + - 4.36E-4 * ( ZTMIX(JI) - CST%XTT ) ) * ( ZTMIX(JI) - ZWORK1(JI) ) + PTLCL(JI) = MIN( PTLCL(JI), ZTMIX(JI) ) + ZPLCL(JI) = CST%XP00 * ( PTLCL(JI) / PTHLCL(JI) ) ** ZCPORD ! -END WHERE + END IF +ENDDO ! - ZPLCL(:) = MIN( 2.E5, MAX( 10., ZPLCL(:) ) ) ! bound to avoid overflow + ZPLCL(D%NIB:D%NIE) = MIN( 2.E5, MAX( 10., ZPLCL(D%NIB:D%NIE) ) ) ! bound to avoid overflow ! ! !* 3.2 Correct PTLCL in order to be completely consistent ! with MNH saturation formula ! -------------------------------------------------- ! - CALL CONVECT_SATMIXRATIO( KLON, ZPLCL, PTLCL, ZWORK1, ZLV, ZWORK2, ZCPH ) - WHERE( OWORK1(:) ) - ZWORK2(:) = ZWORK1(:) / PTLCL(:) * ( XBETAW / PTLCL(:) - XGAMW ) ! dr_sat/dT - ZWORK2(:) = ( ZWORK1(:) - PRVLCL(:) ) / & - ( 1. + ZLV(:) / ZCPH(:) * ZWORK2(:) ) - PTLCL(:) = PTLCL(:) - ZLV(:) / ZCPH(:) * ZWORK2(:) -! - END WHERE + CALL CONVECT_SATMIXRATIO( CST, D, ZPLCL, PTLCL, ZWORK1, ZLV, ZWORK2, ZCPH ) + DO JI=D%NIB,D%NIE + IF( OWORK1(JI) ) THEN + ZWORK2(JI) = ZWORK1(JI) / PTLCL(JI) * ( CST%XBETAW / PTLCL(JI) - CST%XGAMW ) ! dr_sat/dT + ZWORK2(JI) = ( ZWORK1(JI) - PRVLCL(JI) ) / & + ( 1. + ZLV(JI) / ZCPH(JI) * ZWORK2(JI) ) + PTLCL(JI) = PTLCL(JI) - ZLV(JI) / ZCPH(JI) * ZWORK2(JI) + END IF + ENDDO ! ! !* 3.3 If PRVLCL is oversaturated set humidity and temperature ! to saturation values. ! ------------------------------------------------------- ! - CALL CONVECT_SATMIXRATIO( KLON, ZPRESMIX, ZTMIX, ZWORK1, ZLV, ZWORK2, ZCPH ) - WHERE( OWORK1(:) .AND. PRVLCL(:) > ZWORK1(:) ) - ZWORK2(:) = ZWORK1(:) / ZTMIX(:) * ( XBETAW / ZTMIX(:) - XGAMW ) ! dr_sat/dT - ZWORK2(:) = ( ZWORK1(:) - PRVLCL(:) ) / & - ( 1. + ZLV(:) / ZCPH(:) * ZWORK2(:) ) - PTLCL(:) = ZTMIX(:) + ZLV(:) / ZCPH(:) * ZWORK2(:) - PRVLCL(:) = PRVLCL(:) - ZWORK2(:) - ZPLCL(:) = ZPRESMIX(:) - PTHLCL(:) = PTLCL(:) * ( XP00 / ZPLCL(:) ) ** ZRDOCP - END WHERE + CALL CONVECT_SATMIXRATIO( CST, D, ZPRESMIX, ZTMIX, ZWORK1, ZLV, ZWORK2, ZCPH ) + DO JI=D%NIB,D%NIE + IF( OWORK1(JI) .AND. PRVLCL(JI) > ZWORK1(JI) ) THEN + ZWORK2(JI) = ZWORK1(JI) / ZTMIX(JI) * ( CST%XBETAW / ZTMIX(JI) - CST%XGAMW ) ! dr_sat/dT + ZWORK2(JI) = ( ZWORK1(JI) - PRVLCL(JI) ) / & + ( 1. + ZLV(JI) / ZCPH(JI) * ZWORK2(JI) ) + PTLCL(JI) = ZTMIX(JI) + ZLV(JI) / ZCPH(JI) * ZWORK2(JI) + PRVLCL(JI) = PRVLCL(JI) - ZWORK2(JI) + ZPLCL(JI) = ZPRESMIX(JI) + PTHLCL(JI) = PTLCL(JI) * ( CST%XP00 / ZPLCL(JI) ) ** ZRDOCP + END IF + ENDDO ! ! !* 4.1 Determine vertical loop index at the LCL ! ----------------------------------------- ! DO JK = JKMIN, IKE - 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( ZPLCL(JI) <= PPRES(JI,JK) .AND. OWORK1(JI) ) THEN KLCL(JI) = JK + 1 PZLCL(JI) = PZ(JI,JK+1) @@ -239,24 +243,27 @@ END WHERE !* 4.2 Estimate height and environmental temperature at LCL ! ---------------------------------------------------- ! - DO JI = 1, IIE + DO JI = D%NIB, D%NIE JK = KLCL(JI) JKM = JK - 1 ZDP(JI) = ALOG( ZPLCL(JI) / PPRES(JI,JKM) ) / & ALOG( PPRES(JI,JK) / PPRES(JI,JKM) ) - ZWORK1(JI) = PTH(JI,JK) * ( PPRES(JI,JK) / XP00 ) ** ZRDOCP - ZWORK2(JI) = PTH(JI,JKM) * ( PPRES(JI,JKM) / XP00 ) ** ZRDOCP + ZWORK1(JI) = PTH(JI,JK) * ( PPRES(JI,JK) / CST%XP00 ) ** ZRDOCP + ZWORK2(JI) = PTH(JI,JKM) * ( PPRES(JI,JKM) / CST%XP00 ) ** ZRDOCP ZWORK1(JI) = ZWORK2(JI) + ( ZWORK1(JI) - ZWORK2(JI) ) * ZDP(JI) ! we compute the precise value of the LCL ! The precise height is between the levels KLCL and KLCL-1. ZWORK2(JI) = PZ(JI,JKM) + ( PZ(JI,JK) - PZ(JI,JKM) ) * ZDP(JI) END DO - WHERE( OWORK1(:) ) - PTELCL(:) = ZWORK1(:) - PZLCL(:) = ZWORK2(:) - END WHERE + DO JI=D%NIB,D%NIE + IF( OWORK1(JI) ) THEN + PTELCL(JI) = ZWORK1(JI) + PZLCL(JI) = ZWORK2(JI) + END IF + ENDDO ! ! ! IF (LHOOK) CALL DR_HOOK('CONVECT_CLOSURE_THRVLCL',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_CLOSURE_THRVLCL + diff --git a/src/arome/conv/convect_closure_thrvlcl.h b/src/arome/conv/convect_closure_thrvlcl.h new file mode 100644 index 0000000000000000000000000000000000000000..5e3bd99819824d52e889ef5ff8922981c3fbd273 --- /dev/null +++ b/src/arome/conv/convect_closure_thrvlcl.h @@ -0,0 +1,30 @@ +INTERFACE + +SUBROUTINE CONVECT_CLOSURE_THRVLCL( CVPEXT, CST, D, & +PPRES, PTH, PRV, PZ, OWORK1, & +PTHLCL, PRVLCL, PZLCL, PTLCL, PTELCL,& +KLCL, KDPL, KPBL ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_CST, ONLY: CST_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTH +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRV +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZ +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDPL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KPBL +LOGICAL, DIMENSION(D%NIT), INTENT(IN) :: OWORK1 +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTHLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRVLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PZLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTELCL +INTEGER, DIMENSION(D%NIT), INTENT(OUT):: KLCL +END SUBROUTINE CONVECT_CLOSURE_THRVLCL + +END INTERFACE diff --git a/src/arome/conv/convect_condens.F90 b/src/arome/conv/convect_condens.F90 index 1facb675f96a219b48f2be66e2253c170d1ed37e..99f1f6a137c8231383610b1ffedf8c28c24370c0 100644 --- a/src/arome/conv/convect_condens.F90 +++ b/src/arome/conv/convect_condens.F90 @@ -1,9 +1,8 @@ ! ######spl - SUBROUTINE CONVECT_CONDENS( KLON, & - KICE, PPRES, PTHL, PRW, PRCO, PRIO, PZ, OWORK1, & + SUBROUTINE CONVECT_CONDENS( CST, D, CONVPAR, & + KICE, PPRES, PTHL, PRW, PRCO, PRIO, PZ, & PT, PEW, PRC, PRI, PLV, PLS, PCPH ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################# ! !!**** Compute temperature cloud and ice water content from enthalpy and r_w @@ -63,41 +62,43 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XALPI, XALPW, XBETAI, XBETAW, XCI, XCL, XCPD, XCPV, XG, XGAMI, XGAMW, XLSTT, XLVTT, XRD, XRV, XTT -USE MODD_CONVPAR, ONLY : XTFRZ1, XTFRZ2 +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR, ONLY : CONVPAR_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal loop index -INTEGER, INTENT(IN) :: KICE ! flag for ice ( 1 = yes, +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(CONVPAR_T), INTENT(IN) :: CONVPAR +INTEGER, INTENT(IN) :: KICE ! flag for ice ( 1 = yes, ! 0 = no ice ) -REAL, DIMENSION(KLON), INTENT(IN) :: PPRES ! pressure -REAL, DIMENSION(KLON), INTENT(IN) :: PTHL ! enthalpy (J/kg) -REAL, DIMENSION(KLON), INTENT(IN) :: PRW ! total water mixing ratio -REAL, DIMENSION(KLON), INTENT(IN) :: PRCO ! cloud water estimate (kg/kg) -REAL, DIMENSION(KLON), INTENT(IN) :: PRIO ! cloud ice estimate (kg/kg) -REAL, DIMENSION(KLON), INTENT(IN) :: PZ ! level height (m) -LOGICAL, DIMENSION(KLON),INTENT(IN) :: OWORK1 ! logical mask -! -! -REAL, DIMENSION(KLON), INTENT(OUT):: PT ! temperature -REAL, DIMENSION(KLON), INTENT(OUT):: PRC ! cloud water mixing ratio(kg/kg) -REAL, DIMENSION(KLON), INTENT(OUT):: PRI ! cloud ice mixing ratio (kg/kg) -REAL, DIMENSION(KLON), INTENT(OUT):: PLV ! latent heat L_v -REAL, DIMENSION(KLON), INTENT(OUT):: PLS ! latent heat L_s -REAL, DIMENSION(KLON), INTENT(OUT):: PCPH ! specific heat C_ph -REAL, DIMENSION(KLON), INTENT(OUT):: PEW ! water saturation mixing ratio -! -!* 0.2 Declarations of local variables KLON -! -INTEGER :: JITER ! iteration index +REAL, DIMENSION(D%NIT), INTENT(IN) :: PPRES ! pressure +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTHL ! enthalpy (J/kg) +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRW ! total water mixing ratio +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRCO ! cloud water estimate (kg/kg) +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRIO ! cloud ice estimate (kg/kg) +REAL, DIMENSION(D%NIT), INTENT(IN) :: PZ ! level height (m) +! +! +REAL, DIMENSION(D%NIT), INTENT(OUT):: PT ! temperature +REAL, DIMENSION(D%NIT), INTENT(OUT):: PEW ! water saturation mixing ratio +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRC ! cloud water mixing ratio(kg/kg) +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRI ! cloud ice mixing ratio (kg/kg) +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLV ! latent heat L_v +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLS ! latent heat L_s +REAL, DIMENSION(D%NIT), INTENT(OUT):: PCPH ! specific heat C_ph +! +!* 0.2 Declarations of local variables D%NIT +! +INTEGER :: JITER, JI ! iteration index REAL :: ZEPS ! R_d / R_v ! -REAL, DIMENSION(KLON) :: ZEI ! ice saturation mixing ratio -REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3, ZT ! work arrays +REAL, DIMENSION(D%NIT) :: ZEI ! ice saturation mixing ratio +REAL, DIMENSION(D%NIT) :: ZWORK1, ZWORK2, ZWORK3, ZT ! work arrays ! ! !------------------------------------------------------------------------------- @@ -105,9 +106,9 @@ REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3, ZT ! work arrays !* 1. Initialize temperature and Exner function ! ----------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_CONDENS',0,ZHOOK_HANDLE) -ZEPS = XRD / XRV +ZEPS = CST%XRD / CST%XRV ! ! ! Make a first temperature estimate, based e.g. on values of @@ -115,35 +116,39 @@ ZEPS = XRD / XRV ! !! Note that the definition of ZCPH is not the same as used in !! routine CONVECT_SATMIXRATIO - PCPH(:) = XCPD + XCPV * PRW(:) - ZWORK1(:) = ( 1. + PRW(:) ) * XG * PZ(:) - PT(:) = ( PTHL(:) + PRCO(:) * XLVTT + PRIO(:) * XLSTT - ZWORK1(:) ) & - / PCPH(:) - PT(:) = MAX(180., MIN( 330., PT(:) ) ) ! set overflow bounds in + DO JI=D%NIB,D%NIE + PCPH(JI) = CST%XCPD + CST%XCPV * PRW(JI) + ZWORK1(JI) = ( 1. + PRW(JI) ) * CST%XG * PZ(JI) + PT(JI) = ( PTHL(JI) + PRCO(JI) * CST%XLVTT + PRIO(JI) * CST%XLSTT - ZWORK1(JI) ) & + / PCPH(JI) + PT(JI) = MAX(180., MIN( 330., PT(JI) ) ) ! set overflow bounds in ! case that PTHL=0 + ENDDO ! ! !* 2. Enter the iteration loop ! ------------------------ ! DO JITER = 1,6 - PEW(:) = EXP( XALPW - XBETAW / PT(:) - XGAMW * ALOG( PT(:) ) ) - ZEI(:) = EXP( XALPI - XBETAI / PT(:) - XGAMI * ALOG( PT(:) ) ) - PEW(:) = ZEPS * PEW(:) / ( PPRES(:) - PEW(:) ) - ZEI(:) = ZEPS * ZEI(:) / ( PPRES(:) - ZEI(:) ) -! - PLV(:) = XLVTT + ( XCPV - XCL ) * ( PT(:) - XTT ) ! compute L_v - PLS(:) = XLSTT + ( XCPV - XCI ) * ( PT(:) - XTT ) ! compute L_i + DO JI=D%NIB,D%NIE + PEW(JI) = EXP( CST%XALPW - CST%XBETAW / PT(JI) - CST%XGAMW * ALOG( PT(JI) ) ) + ZEI(JI) = EXP( CST%XALPI - CST%XBETAI / PT(JI) - CST%XGAMI * ALOG( PT(JI) ) ) + PEW(JI) = ZEPS * PEW(JI) / ( PPRES(JI) - PEW(JI) ) + ZEI(JI) = ZEPS * ZEI(JI) / ( PPRES(JI) - ZEI(JI) ) +! + PLV(JI) = CST%XLVTT + ( CST%XCPV - CST%XCL ) * ( PT(JI) - CST%XTT ) ! compute L_v + PLS(JI) = CST%XLSTT + ( CST%XCPV - CST%XCI ) * ( PT(JI) - CST%XTT ) ! compute L_i ! - ZWORK2(:) = ( XTFRZ1 - PT(:) ) / ( XTFRZ1 - XTFRZ2 ) ! freezing interval - ZWORK2(:) = MAX( 0., MIN(1., ZWORK2(:) ) ) * REAL( KICE ) - ZWORK3(:) = ( 1. - ZWORK2(:) ) * PEW(:) + ZWORK2(:) * ZEI(:) - PRC(:) = MAX( 0., ( 1. - ZWORK2(:) ) * ( PRW(:) - ZWORK3(:) ) ) - PRI(:) = MAX( 0., ZWORK2(:) * ( PRW(:) - ZWORK3(:) ) ) - ZT(:) = ( PTHL(:) + PRC(:) * PLV(:) + PRI(:) * PLS(:) - ZWORK1(:) ) & - / PCPH(:) - PT(:) = PT(:) + ( ZT(:) - PT(:) ) * 0.4 ! force convergence - PT(:) = MAX( 175., MIN( 330., PT(:) ) ) + ZWORK2(JI) = ( CONVPAR%XTFRZ1 - PT(JI) ) / ( CONVPAR%XTFRZ1 - CONVPAR%XTFRZ2 ) ! freezing interval + ZWORK2(JI) = MAX( 0., MIN(1., ZWORK2(JI) ) ) * REAL( KICE ) + ZWORK3(JI) = ( 1. - ZWORK2(JI) ) * PEW(JI) + ZWORK2(JI) * ZEI(JI) + PRC(JI) = MAX( 0., ( 1. - ZWORK2(JI) ) * ( PRW(JI) - ZWORK3(JI) ) ) + PRI(JI) = MAX( 0., ZWORK2(JI) * ( PRW(JI) - ZWORK3(JI) ) ) + ZT(JI) = ( PTHL(JI) + PRC(JI) * PLV(JI) + PRI(JI) * PLS(JI) - ZWORK1(JI) ) & + / PCPH(JI) + PT(JI) = PT(JI) + ( ZT(JI) - PT(JI) ) * 0.4 ! force convergence + PT(JI) = MAX( 175., MIN( 330., PT(JI) ) ) + END DO END DO ! ! diff --git a/src/arome/conv/convect_condens.h b/src/arome/conv/convect_condens.h new file mode 100644 index 0000000000000000000000000000000000000000..fdc0428e2afa9e1746e90d5ed4b05a6e59f3c8e4 --- /dev/null +++ b/src/arome/conv/convect_condens.h @@ -0,0 +1,29 @@ +INTERFACE + +SUBROUTINE CONVECT_CONDENS( CST, D, CONVPAR, & +KICE, PPRES, PTHL, PRW, PRCO, PRIO, PZ, & +PT, PEW, PRC, PRI, PLV, PLS, PCPH ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR, ONLY : CONVPAR_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(CONVPAR_T), INTENT(IN) :: CONVPAR +INTEGER, INTENT(IN) :: KICE +REAL, DIMENSION(D%NIT), INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTHL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRW +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRCO +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRIO +REAL, DIMENSION(D%NIT), INTENT(IN) :: PZ +REAL, DIMENSION(D%NIT), INTENT(OUT):: PT +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRC +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRI +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLV +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLS +REAL, DIMENSION(D%NIT), INTENT(OUT):: PCPH +REAL, DIMENSION(D%NIT), INTENT(OUT):: PEW +END SUBROUTINE CONVECT_CONDENS + +END INTERFACE diff --git a/src/arome/conv/convect_downdraft.F90 b/src/arome/conv/convect_downdraft.F90 index f5f25cda4d696c2fb6b2e92b8c1b47b1e9299a39..1193a6aeef77dccf3656b03b2b0066c40af3de2e 100644 --- a/src/arome/conv/convect_downdraft.F90 +++ b/src/arome/conv/convect_downdraft.F90 @@ -7,8 +7,7 @@ PDMF, PDER, PDDR, PDTHL, PDRW, & PMIXF, PDTEVR, KLFS, KDBL, KML, & PDTEVRF ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** Compute downdraft properties from LFS to DBL. @@ -146,7 +145,7 @@ LOGICAL, DIMENSION(KLON) :: GWORK1 ! work array ! 0.3 Set loop bounds ! --------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_DOWNDRAFT',0,ZHOOK_HANDLE) IIE = KLON IKB = 1 + JCVEXB diff --git a/src/arome/conv/convect_mixing_funct.F90 b/src/arome/conv/convect_mixing_funct.F90 index 6f2d951b8bfa4bd0f828562c390b4cc5715fd812..8c9cec2e723d175ba3b7ce13c127a1931911c0a4 100644 --- a/src/arome/conv/convect_mixing_funct.F90 +++ b/src/arome/conv/convect_mixing_funct.F90 @@ -1,8 +1,7 @@ ! ######spl - SUBROUTINE CONVECT_MIXING_FUNCT( KLON, & + SUBROUTINE CONVECT_MIXING_FUNCT( D, & PMIXC, KMF, PER, PDR ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** Determine the area under the distribution function @@ -48,6 +47,7 @@ !! Original 07/11/95 !! Last modified 04/10/97 !------------------------------------------------------------------------------- +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! !* 0. DECLARATIONS ! ------------ @@ -57,12 +57,12 @@ IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KMF ! switch for dist. function -REAL, DIMENSION(KLON), INTENT(IN) :: PMIXC ! critical mixed fraction +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PMIXC ! critical mixed fraction +INTEGER ,INTENT(IN) :: KMF ! switch for dist. function ! -REAL, DIMENSION(KLON), INTENT(OUT):: PER ! normalized entrainment rate -REAL, DIMENSION(KLON), INTENT(OUT):: PDR ! normalized detrainment rate +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PER ! normalized entrainment rate +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PDR ! normalized detrainment rate ! !* 0.2 Declarations of local variables : ! @@ -73,8 +73,9 @@ REAL :: ZA1 = 0.4361836, ZA2 =-0.1201676 ! constants REAL :: ZA3 = 0.9372980, ZT1 = 0.500498 ! constants REAL :: ZE45 = 0.01111 ! constant ! -REAL, DIMENSION(KLON) :: ZX, ZY, ZW1, ZW2 ! work variables +REAL, DIMENSION(D%NIT) :: ZX, ZY, ZW1, ZW2 ! work variables REAL :: ZW11 +INTEGER :: JI ! ! !------------------------------------------------------------------------------- @@ -82,37 +83,42 @@ REAL :: ZW11 ! 1. Use gaussian function for KMF=1 ! ------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_MIXING_FUNCT',0,ZHOOK_HANDLE) IF( KMF == 1 ) THEN ! ZX(:) = ( PMIXC(:) - 0.5 ) / ZSIGMA - ZX(:) = 6. * PMIXC(:) - 3. - ZW1(:) = 1. / ( 1.+ ZP * ABS ( ZX(:) ) ) - ZY(:) = EXP( -0.5 * ZX(:) * ZX(:) ) - ZW2(:) = ZA1 * ZW1(:) + ZA2 * ZW1(:) * ZW1(:) + & - ZA3 * ZW1(:) * ZW1(:) * ZW1(:) + ZX(D%NIB:D%NIE) = 6. * PMIXC(D%NIB:D%NIE) - 3. + ZW1(D%NIB:D%NIE) = 1. / ( 1.+ ZP * ABS ( ZX(D%NIB:D%NIE) ) ) + ZY(D%NIB:D%NIE) = EXP( -0.5 * ZX(D%NIB:D%NIE) * ZX(D%NIB:D%NIE) ) + ZW2(D%NIB:D%NIE) = ZA1 * ZW1(D%NIB:D%NIE) + ZA2 * ZW1(D%NIB:D%NIE) * ZW1(D%NIB:D%NIE) + & + ZA3 * ZW1(D%NIB:D%NIE) * ZW1(D%NIB:D%NIE) * ZW1(D%NIB:D%NIE) ZW11 = ZA1 * ZT1 + ZA2 * ZT1 * ZT1 + ZA3 * ZT1 * ZT1 * ZT1 ENDIF ! -WHERE ( KMF == 1 .AND. ZX(:) >= 0. ) - PER(:) = ZSIGMA * ( 0.5 * ( ZSQRTP - ZE45 * ZW11 & - - ZY(:) * ZW2(:) ) + ZSIGMA * ( ZE45 - ZY(:) ) ) & - - 0.5 * ZE45 * PMIXC(:) * PMIXC(:) - PDR(:) = ZSIGMA*( 0.5 * ( ZY(:) * ZW2(:) - ZE45 * ZW11 ) & - + ZSIGMA * ( ZE45 - ZY(:) ) ) & - - ZE45 * ( 0.5 + 0.5 * PMIXC(:) * PMIXC(:) - PMIXC(:) ) -END WHERE -WHERE ( KMF == 1 .AND. ZX(:) < 0. ) - PER(:) = ZSIGMA*( 0.5 * ( ZY(:) * ZW2(:) - ZE45 * ZW11 ) & - + ZSIGMA * ( ZE45 - ZY(:) ) ) & - - 0.5 * ZE45 * PMIXC(:) * PMIXC(:) - PDR(:) = ZSIGMA * ( 0.5 * ( ZSQRTP - ZE45 * ZW11 - ZY(:) & - * ZW2(:) ) + ZSIGMA * ( ZE45 - ZY(:) ) ) & - - ZE45 * ( 0.5 + 0.5 * PMIXC(:) * PMIXC(:) - PMIXC(:) ) -END WHERE -! - PER(:) = PER(:) * ZFE - PDR(:) = PDR(:) * ZFE +DO JI=D%NIB, D%NIE + IF ( KMF == 1 .AND. ZX(JI) >= 0. ) THEN + PER(JI) = ZSIGMA * ( 0.5 * ( ZSQRTP - ZE45 * ZW11 & + - ZY(JI) * ZW2(JI) ) + ZSIGMA * ( ZE45 - ZY(JI) ) ) & + - 0.5 * ZE45 * PMIXC(JI) * PMIXC(JI) + PDR(JI) = ZSIGMA*( 0.5 * ( ZY(JI) * ZW2(JI) - ZE45 * ZW11 ) & + + ZSIGMA * ( ZE45 - ZY(JI) ) ) & + - ZE45 * ( 0.5 + 0.5 * PMIXC(JI) * PMIXC(JI) - PMIXC(JI) ) + END IF +ENDDO +DO JI=D%NIB, D%NIE +IF ( KMF == 1 .AND. ZX(JI) < 0. ) THEN + PER(JI) = ZSIGMA*( 0.5 * ( ZY(JI) * ZW2(JI) - ZE45 * ZW11 ) & + + ZSIGMA * ( ZE45 - ZY(JI) ) ) & + - 0.5 * ZE45 * PMIXC(JI) * PMIXC(JI) + PDR(JI) = ZSIGMA * ( 0.5 * ( ZSQRTP - ZE45 * ZW11 - ZY(JI) & + * ZW2(JI) ) + ZSIGMA * ( ZE45 - ZY(JI) ) ) & + - ZE45 * ( 0.5 + 0.5 * PMIXC(JI) * PMIXC(JI) - PMIXC(JI) ) + END IF +ENDDO + +! + PER(D%NIB:D%NIE) = PER(D%NIB:D%NIE) * ZFE + PDR(D%NIB:D%NIE) = PDR(D%NIB:D%NIE) * ZFE ! ! ! 2. Use triangular function KMF=2 @@ -123,3 +129,4 @@ END WHERE ! IF (LHOOK) CALL DR_HOOK('CONVECT_MIXING_FUNCT',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_MIXING_FUNCT + diff --git a/src/arome/conv/convect_mixing_funct.h b/src/arome/conv/convect_mixing_funct.h new file mode 100644 index 0000000000000000000000000000000000000000..dd7187f9c87a551143b1c46cb41d8e5afe9e8226 --- /dev/null +++ b/src/arome/conv/convect_mixing_funct.h @@ -0,0 +1,14 @@ +INTERFACE + +SUBROUTINE CONVECT_MIXING_FUNCT( D, & +PMIXC, KMF, PER, PDR ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(DIMPHYEX_T), INTENT(IN) :: D +INTEGER, INTENT(IN) :: KMF +REAL, DIMENSION(D%NIT), INTENT(IN) :: PMIXC +REAL, DIMENSION(D%NIT), INTENT(OUT):: PER +REAL, DIMENSION(D%NIT), INTENT(OUT):: PDR +END SUBROUTINE CONVECT_MIXING_FUNCT + +END INTERFACE diff --git a/src/arome/conv/convect_precip_adjust.F90 b/src/arome/conv/convect_precip_adjust.F90 index 0285d09c6c2f8e47e550eede3eb3ccec3937cfc1..2c648a3d795be48b8f815e630f5c15984bfb1e62 100644 --- a/src/arome/conv/convect_precip_adjust.F90 +++ b/src/arome/conv/convect_precip_adjust.F90 @@ -6,8 +6,7 @@ PPREF, PTPR, PMIXF, PDTEVR, & KLFS, KDBL, KLCL, KCTL, KETL, & PDTEVRF ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ###################################################################### ! !!**** Adjust up- and downdraft mass fluxes to be consistent with the @@ -114,7 +113,7 @@ REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3, & ! 0.3 Set loop bounds ! --------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_PRECIP_ADJUST',0,ZHOOK_HANDLE) IKB = 1 + JCVEXB IKE = KLEV - JCVEXT diff --git a/src/arome/conv/convect_satmixratio.F90 b/src/arome/conv/convect_satmixratio.F90 index 0926cd7a39d2e9aec2a4339b9372719a4448a835..53c7ff88ed69e2f53ddcb8d776f66e8f11d664ac 100644 --- a/src/arome/conv/convect_satmixratio.F90 +++ b/src/arome/conv/convect_satmixratio.F90 @@ -1,8 +1,6 @@ ! ######spl - SUBROUTINE CONVECT_SATMIXRATIO( KLON, & - PPRES, PT, PEW, PLV, PLS, PCPH ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + SUBROUTINE CONVECT_SATMIXRATIO(CST, D, PPRES, PT, PEW, PLV, PLS, PCPH) + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################ ! !!**** Compute vapor saturation mixing ratio over liquid water @@ -52,7 +50,8 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XALPW, XBETAW, XCI, XCL, XCPD, XCPV, XGAMW, XLSTT, XLVTT, XRD, XRV, XTT +USE MODD_CST, ONLY : CST_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE @@ -60,35 +59,36 @@ IMPLICIT NONE !* 0.1 Declarations of dummy arguments : ! ! -INTEGER, INTENT(IN) :: KLON ! horizontal loop index -REAL, DIMENSION(KLON), INTENT(IN) :: PPRES ! pressure -REAL, DIMENSION(KLON), INTENT(IN) :: PT ! temperature +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT), INTENT(IN) :: PPRES ! pressure +REAL, DIMENSION(D%NIT), INTENT(IN) :: PT ! temperature ! -REAL, DIMENSION(KLON), INTENT(OUT):: PEW ! vapor saturation mixing ratio -REAL, DIMENSION(KLON), INTENT(OUT):: PLV ! latent heat L_v -REAL, DIMENSION(KLON), INTENT(OUT):: PLS ! latent heat L_s -REAL, DIMENSION(KLON), INTENT(OUT):: PCPH ! specific heat C_ph +REAL, DIMENSION(D%NIT), INTENT(OUT):: PEW ! vapor saturation mixing ratio +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLV ! latent heat L_v +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLS ! latent heat L_s +REAL, DIMENSION(D%NIT), INTENT(OUT):: PCPH ! specific heat C_ph ! !* 0.2 Declarations of local variables : ! -REAL, DIMENSION(KLON) :: ZT ! temperature +REAL, DIMENSION(D%NIT) :: ZT ! temperature REAL :: ZEPS ! R_d / R_v ! ! !------------------------------------------------------------------------------- ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_SATMIXRATIO',0,ZHOOK_HANDLE) - ZEPS = XRD / XRV + ZEPS = CST%XRD / CST%XRV ! - ZT(:) = MIN( 400., MAX( PT(:), 10. ) ) ! overflow bound - PEW(:) = EXP( XALPW - XBETAW / ZT(:) - XGAMW * ALOG( ZT(:) ) ) - PEW(:) = ZEPS * PEW(:) / ( PPRES(:) - PEW(:) ) + ZT(D%NIB:D%NIE) = MIN( 400., MAX( PT(D%NIB:D%NIE), 10. ) ) ! overflow bound + PEW(D%NIB:D%NIE) = EXP( CST%XALPW - CST%XBETAW / ZT(D%NIB:D%NIE) - CST%XGAMW * ALOG( ZT(D%NIB:D%NIE) ) ) + PEW(D%NIB:D%NIE) = ZEPS * PEW(D%NIB:D%NIE) / ( PPRES(D%NIB:D%NIE) - PEW(D%NIB:D%NIE) ) ! - PLV(:) = XLVTT + ( XCPV - XCL ) * ( ZT(:) - XTT ) ! compute L_v - PLS(:) = XLSTT + ( XCPV - XCI ) * ( ZT(:) - XTT ) ! compute L_i + PLV(D%NIB:D%NIE) = CST%XLVTT + ( CST%XCPV - CST%XCL ) * ( ZT(D%NIB:D%NIE) - CST%XTT ) ! compute L_v + PLS(D%NIB:D%NIE) = CST%XLSTT + ( CST%XCPV - CST%XCI ) * ( ZT(D%NIB:D%NIE) - CST%XTT ) ! compute L_i ! - PCPH(:) = XCPD + XCPV * PEW(:) ! compute C_ph + PCPH(D%NIB:D%NIE) = CST%XCPD + CST%XCPV * PEW(D%NIB:D%NIE) ! compute C_ph ! IF (LHOOK) CALL DR_HOOK('CONVECT_SATMIXRATIO',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_SATMIXRATIO diff --git a/src/arome/conv/convect_satmixratio.h b/src/arome/conv/convect_satmixratio.h new file mode 100644 index 0000000000000000000000000000000000000000..72263a7a6895644794945dbc78dab074aac6d749 --- /dev/null +++ b/src/arome/conv/convect_satmixratio.h @@ -0,0 +1,17 @@ +INTERFACE + +SUBROUTINE CONVECT_SATMIXRATIO(CST, D, PPRES, PT, PEW, PLV, PLS, PCPH) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT), INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT), INTENT(IN) :: PT +REAL, DIMENSION(D%NIT), INTENT(OUT):: PEW +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLV +REAL, DIMENSION(D%NIT), INTENT(OUT):: PLS +REAL, DIMENSION(D%NIT), INTENT(OUT):: PCPH +END SUBROUTINE CONVECT_SATMIXRATIO + +END INTERFACE diff --git a/src/arome/conv/convect_trigger_funct.F90 b/src/arome/conv/convect_trigger_funct.F90 index fd641fbb1d074593ceedf64fa9de1911b8521f7f..8b408bc88aa64cf328ed926ebfa54ea7b470037d 100644 --- a/src/arome/conv/convect_trigger_funct.F90 +++ b/src/arome/conv/convect_trigger_funct.F90 @@ -5,8 +5,7 @@ PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, & PTHVELCL, KLCL, KDPL, KPBL, OTRIG, & PCAPE ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################### ! !!**** Determine convective columns as well as the cloudy values of theta, @@ -139,7 +138,7 @@ LOGICAL, DIMENSION(KLON) :: GWORK1 ! work array !* 0.3 Compute array bounds ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_TRIGGER_FUNCT',0,ZHOOK_HANDLE) IIE = KLON IKB = 1 + JCVEXB diff --git a/src/arome/conv/convect_trigger_shal.F90 b/src/arome/conv/convect_trigger_shal.F90 index 9b09758085642eaebcc36435e3148a6a1fe494d9..8be349361d7810cfb90fa07401cefd0c88ba42ad 100644 --- a/src/arome/conv/convect_trigger_shal.F90 +++ b/src/arome/conv/convect_trigger_shal.F90 @@ -1,11 +1,10 @@ ! ######spl - SUBROUTINE CONVECT_TRIGGER_SHAL( KLON, KLEV, & - PPRES, PTH, PTHV, PTHES, & - PRV, PW, PZ, PDXDY,PTKECLS, & - PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, & - PTHVELCL, KLCL, KDPL, KPBL, OTRIG ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + SUBROUTINE CONVECT_TRIGGER_SHAL( CVP_SHAL, CVPEXT, CST, D, & + PPRES, PTH, PTHV, PTHES, & + PRV, PW, PZ, PTKECLS, & + PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, & + PTHVELCL, KLCL, KDPL, KPBL, OTRIG) + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** Determine convective columns as well as the cloudy values of theta, @@ -80,63 +79,65 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XBETAW, XCPD, XG, XGAMW, XP00, XRD, XRV, XTT -USE MODD_CONVPAR_SHAL, ONLY : XATPERT, XAW, XBTPERT, XBW, XCDEPTH, XDTPERT, XNHGAM, XZLCL, XZPBL -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal loop index -INTEGER, INTENT(IN) :: KLEV ! vertical loop index -REAL, DIMENSION(KLON), INTENT(IN) :: PDXDY ! grid area -REAL, DIMENSION(KLON), INTENT(IN) :: PTKECLS ! TKE CLS -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PTH, PTHV ! theta, theta_v -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PTHES ! envir. satur. theta_e -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PRV ! vapor mixing ratio -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PPRES ! pressure -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PZ ! height of grid point (m) -REAL, DIMENSION(KLON,KLEV),INTENT(IN) :: PW ! vertical velocity -! -REAL, DIMENSION(KLON), INTENT(OUT):: PTHLCL ! theta at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PTLCL ! temp. at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PRVLCL ! vapor mixing ratio at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PWLCL ! parcel velocity at LCL -REAL, DIMENSION(KLON), INTENT(OUT):: PZLCL ! height at LCL (m) -REAL, DIMENSION(KLON), INTENT(OUT):: PTHVELCL ! environm. theta_v at LCL (K) -LOGICAL, DIMENSION(KLON), INTENT(OUT):: OTRIG ! logical mask for convection -INTEGER, DIMENSION(KLON), INTENT(INOUT):: KLCL ! contains vert. index of LCL -INTEGER, DIMENSION(KLON), INTENT(INOUT):: KDPL ! contains vert. index of DPL -INTEGER, DIMENSION(KLON), INTENT(INOUT):: KPBL ! contains index of source layer top +TYPE(CONVPAR_SHAL) ,INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT) ,INTENT(IN) :: CVPEXT +TYPE(CST_T) ,INTENT(IN) :: CST +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PPRES ! pressure +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTH,PTHV ! theta, theta_v +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTHES ! envir. satur. theta_e +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRV ! vapor mixing ratio +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PW ! vertical velocity +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PZ ! height of grid point (m) +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PTKECLS ! TKE CLS +! +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTHLCL ! theta at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTLCL ! temp. at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PRVLCL ! vapor mixing ratio at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PWLCL ! parcel velocity at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PZLCL ! height at LCL (m) +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PTHVELCL ! environm. theta_v at LCL (K) +INTEGER ,DIMENSION(D%NIT) ,INTENT(INOUT) :: KLCL ! contains vert. index of LCL +INTEGER ,DIMENSION(D%NIT) ,INTENT(INOUT) :: KDPL ! contains vert. index of DPL +INTEGER ,DIMENSION(D%NIT) ,INTENT(INOUT) :: KPBL ! contains index of source layer top +LOGICAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: OTRIG ! logical mask for convection ! !* 0.2 Declarations of local variables : ! -INTEGER :: JKK, JK, JKP, JKM, JKDL, JL, JKT, JT! vertical loop index -INTEGER :: JI ! horizontal loop index -INTEGER :: IIE, IKB, IKE ! horizontal + vertical loop bounds -REAL :: ZEPS, ZEPSA ! R_d / R_v, R_v / R_d -REAL :: ZCPORD, ZRDOCP ! C_pd / R_d, R_d / C_pd +INTEGER :: JKK, JK, JKM, JL, JT! vertical loop index +INTEGER :: JI ! horizontal loop index +INTEGER :: IKB, IKE ! horizontal + vertical loop bounds +REAL :: ZEPS, ZEPSA ! R_d / R_v, R_v / R_d +REAL :: ZCPORD, ZRDOCP ! C_pd / R_d, R_d / C_pd ! -REAL, DIMENSION(KLON) :: ZTHLCL, ZTLCL, ZRVLCL, & ! locals for PTHLCL,PTLCL +REAL, DIMENSION(D%NIT) :: ZTHLCL, ZTLCL, ZRVLCL, & ! locals for PTHLCL,PTLCL ZWLCL, ZZLCL, ZTHVELCL ! PRVLCL, .... -INTEGER, DIMENSION(KLON) :: IDPL, IPBL, ILCL ! locals for KDPL, ... -REAL, DIMENSION(KLON) :: ZPLCL ! pressure at LCL -REAL, DIMENSION(KLON) :: ZZDPL ! height of DPL -REAL, DIMENSION(KLON) :: ZTHVLCL ! theta_v at LCL = mixed layer value -REAL, DIMENSION(KLON) :: ZTMIX ! mixed layer temperature -REAL, DIMENSION(KLON) :: ZEVMIX ! mixed layer water vapor pressure -REAL, DIMENSION(KLON) :: ZDPTHMIX, ZPRESMIX ! mixed layer depth and pressure -REAL, DIMENSION(KLON) :: ZCAPE ! convective available energy (m^2/s^2/g) -REAL, DIMENSION(KLON) :: ZCAP ! pseudo fro CAPE -REAL, DIMENSION(KLON) :: ZTHEUL ! updraft equiv. pot. temperature (K) -REAL, DIMENSION(KLON) :: ZLV, ZCPH! specific heats of vaporisation, dry air -REAL, DIMENSION(KLON) :: ZDP ! pressure between LCL and model layer -REAL, DIMENSION(KLON) :: ZTOP,ZTOPP ! estimated cloud top (m) -REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3 ! work arrays -LOGICAL, DIMENSION(KLON) :: GTRIG, GTRIG2 ! local arrays for OTRIG -LOGICAL, DIMENSION(KLON) :: GWORK1 ! work array +INTEGER, DIMENSION(D%NIT) :: IDPL, IPBL, ILCL ! locals for KDPL, ... +REAL, DIMENSION(D%NIT) :: ZPLCL ! pressure at LCL +REAL, DIMENSION(D%NIT) :: ZZDPL ! height of DPL +REAL, DIMENSION(D%NIT) :: ZTHVLCL ! theta_v at LCL = mixed layer value +REAL, DIMENSION(D%NIT) :: ZTMIX ! mixed layer temperature +REAL, DIMENSION(D%NIT) :: ZEVMIX ! mixed layer water vapor pressure +REAL, DIMENSION(D%NIT) :: ZDPTHMIX, ZPRESMIX ! mixed layer depth and pressure +REAL, DIMENSION(D%NIT) :: ZCAPE ! convective available energy (m^2/s^2/g) +REAL, DIMENSION(D%NIT) :: ZCAP ! pseudo fro CAPE +REAL, DIMENSION(D%NIT) :: ZTHEUL ! updraft equiv. pot. temperature (K) +REAL, DIMENSION(D%NIT) :: ZLV, ZCPH! specific heats of vaporisation, dry air +REAL, DIMENSION(D%NIT) :: ZDP ! pressure between LCL and model layer +REAL, DIMENSION(D%NIT) :: ZTOP,ZTOPP ! estimated cloud top (m) +REAL, DIMENSION(D%NIT) :: ZWORK1, ZWORK2, ZWORK3 ! work arrays +LOGICAL, DIMENSION(D%NIT) :: GTRIG2 ! local arrays for OTRIG +LOGICAL, DIMENSION(D%NIT) :: GWORK1 ! work array ! ! !------------------------------------------------------------------------------- @@ -144,20 +145,22 @@ LOGICAL, DIMENSION(KLON) :: GWORK1 ! work array !* 0.3 Compute array bounds ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +#include "convect_satmixratio.h" + IF (LHOOK) CALL DR_HOOK('CONVECT_TRIGGER_SHAL',0,ZHOOK_HANDLE) -IIE = KLON -IKB = 1 + JCVEXB -IKE = KLEV - JCVEXT +IKB = 1 + CVPEXT%JCVEXB +IKE = D%NKT - CVPEXT%JCVEXT ! ! !* 1. Initialize local variables ! -------------------------- ! -ZEPS = XRD / XRV -ZEPSA = XRV / XRD -ZCPORD = XCPD / XRD -ZRDOCP = XRD / XCPD +ZEPS = CST%XRD / CST%XRV +ZEPSA = CST%XRV / CST%XRD +ZCPORD = CST%XCPD / CST%XRD +ZRDOCP = CST%XRD / CST%XCPD OTRIG(:) = .FALSE. IDPL(:) = KDPL(:) IPBL(:) = KPBL(:) @@ -185,17 +188,19 @@ JT = IKE - 2 ! DO JKK = IKB + 1, IKE - 2 ! - GWORK1(:) = ZZDPL(:) - PZ(:,IKB) < XZLCL + GWORK1(D%NIB:D%NIE) = ZZDPL(D%NIB:D%NIE) - PZ(D%NIB:D%NIE,IKB) < CVP_SHAL%XZLCL ! we exit the trigger test when the center of the mixed layer is more ! than 1500 m above soil level. - WHERE ( GWORK1(:) ) - ZDPTHMIX(:) = 0. - ZPRESMIX(:) = 0. - ZTHLCL(:) = 0. - ZRVLCL(:) = 0. - ZZDPL(:) = PZ(:,JKK) - IDPL(:) = JKK - END WHERE + DO JI=D%NIB, D%NIE + IF ( GWORK1(JI) ) THEN + ZDPTHMIX(JI) = 0. + ZPRESMIX(JI) = 0. + ZTHLCL(JI) = 0. + ZRVLCL(JI) = 0. + ZZDPL(JI) = PZ(JI,JKK) + IDPL(JI) = JKK + END IF + ENDDO ! ! !* 3. Construct a mixed layer of at least 50 hPa (XZPBL) @@ -203,88 +208,93 @@ DO JKK = IKB + 1, IKE - 2 ! DO JK = JKK, IKE - 1 JKM = JK + 1 - DO JI = 1, IIE - IF ( GWORK1(JI) .AND. ZDPTHMIX(JI) < XZPBL ) THEN + DO JI = D%NIB, D%NIE + IF ( GWORK1(JI) .AND. ZDPTHMIX(JI) < CVP_SHAL%XZPBL ) THEN IPBL(JI) = JK ZWORK1(JI) = PPRES(JI,JK) - PPRES(JI,JKM) ZDPTHMIX(JI) = ZDPTHMIX(JI) + ZWORK1(JI) ZPRESMIX(JI) = ZPRESMIX(JI) + PPRES(JI,JK) * ZWORK1(JI) ZTHLCL(JI) = ZTHLCL(JI) + PTH(JI,JK) * ZWORK1(JI) - ZRVLCL(JI) = ZRVLCL(JI) + PRV(JI,JK) * ZWORK1(JI) + ZRVLCL(JI) = ZRVLCL(JI) + MAX(0., PRV(JI,JK)) * ZWORK1(JI) END IF END DO - !IF ( MINVAL ( ZDPTHMIX(:) ) >= XZPBL ) EXIT END DO ! ! - WHERE ( GWORK1(:) ) + DO JI=D%NIB, D%NIE + IF ( GWORK1(JI) ) THEN ! - ZPRESMIX(:) = ZPRESMIX(:) / ZDPTHMIX(:) - ZTHLCL(:) = ZTHLCL(:) / ZDPTHMIX(:) + & - & (XATPERT * MIN(3.,PTKECLS(:))/XCPD +XBTPERT) * XDTPERT ! add small Temp Perturb. - ZRVLCL(:) = ZRVLCL(:) / ZDPTHMIX(:) - ZTHVLCL(:) = ZTHLCL(:) * ( 1. + ZEPSA * ZRVLCL(:) ) & - / ( 1. + ZRVLCL(:) ) + ZPRESMIX(JI) = ZPRESMIX(JI) / ZDPTHMIX(JI) + ZTHLCL(JI) = ZTHLCL(JI) / ZDPTHMIX(JI) + & + & (CVP_SHAL%XATPERT * MIN(3.,PTKECLS(JI))/CST%XCPD +CVP_SHAL%XBTPERT) * CVP_SHAL%XDTPERT ! add small Temp Perturb. + ZRVLCL(JI) = ZRVLCL(JI) / ZDPTHMIX(JI) + ZTHVLCL(JI) = ZTHLCL(JI) * ( 1. + ZEPSA * ZRVLCL(JI) ) & + / ( 1. + ZRVLCL(JI) ) ! !* 4.1 Use an empirical direct solution ( Bolton formula ) ! to determine temperature and pressure at LCL. -! Nota: the adiabatic saturation temperature is not +! NotaJI the adiabatic saturation temperature is not ! equal to the dewpoint temperature ! ---------------------------------------------------- ! ! - ZTMIX(:) = ZTHLCL(:) * ( ZPRESMIX(:) / XP00 ) ** ZRDOCP - ZEVMIX(:) = ZRVLCL(:) * ZPRESMIX(:) / ( ZRVLCL(:) + ZEPS ) - ZEVMIX(:) = MAX( 1.E-8, ZEVMIX(:) ) - ZWORK1(:) = LOG( ZEVMIX(:) / 613.3 ) + ZTMIX(JI) = ZTHLCL(JI) * ( ZPRESMIX(JI) / CST%XP00 ) ** ZRDOCP + ZEVMIX(JI) = ZRVLCL(JI) * ZPRESMIX(JI) / ( ZRVLCL(JI) + ZEPS ) + ZEVMIX(JI) = MAX( 1.E-8, ZEVMIX(JI) ) + ZWORK1(JI) = LOG( ZEVMIX(JI) / 613.3 ) ! dewpoint temperature - ZWORK1(:) = ( 4780.8 - 32.19 * ZWORK1(:) ) / ( 17.502 - ZWORK1(:) ) + ZWORK1(JI) = ( 4780.8 - 32.19 * ZWORK1(JI) ) / ( 17.502 - ZWORK1(JI) ) ! adiabatic saturation temperature - ZTLCL(:) = ZWORK1(:) - ( .212 + 1.571E-3 * ( ZWORK1(:) - XTT ) & - - 4.36E-4 * ( ZTMIX(:) - XTT ) ) * ( ZTMIX(:) - ZWORK1(:) ) - ZTLCL(:) = MIN( ZTLCL(:), ZTMIX(:) ) - ZPLCL(:) = XP00 * ( ZTLCL(:) / ZTHLCL(:) ) ** ZCPORD + ZTLCL(JI) = ZWORK1(JI) - ( .212 + 1.571E-3 * ( ZWORK1(JI) - CST%XTT ) & + - 4.36E-4 * ( ZTMIX(JI) - CST%XTT ) ) * ( ZTMIX(JI) - ZWORK1(JI) ) + ZTLCL(JI) = MIN( ZTLCL(JI), ZTMIX(JI) ) + ZPLCL(JI) = CST%XP00 * ( ZTLCL(JI) / ZTHLCL(JI) ) ** ZCPORD ! - END WHERE + END IF + ENDDO ! ! !* 4.2 Correct ZTLCL in order to be completely consistent ! with MNH saturation formula ! --------------------------------------------- ! - CALL CONVECT_SATMIXRATIO( KLON, ZPLCL, ZTLCL, ZWORK1, ZLV, ZWORK2, ZCPH ) - WHERE( GWORK1(:) ) - ZWORK2(:) = ZWORK1(:) / ZTLCL(:) * ( XBETAW / ZTLCL(:) - XGAMW ) ! dr_sat/dT - ZWORK2(:) = ( ZWORK1(:) - ZRVLCL(:) ) / & - ( 1. + ZLV(:) / ZCPH(:) * ZWORK2(:) ) - ZTLCL(:) = ZTLCL(:) - ZLV(:) / ZCPH(:) * ZWORK2(:) + CALL CONVECT_SATMIXRATIO( CST, D, ZPLCL, ZTLCL, ZWORK1, ZLV, ZWORK2, ZCPH ) + DO JI=D%NIB, D%NIE + IF( GWORK1(JI) ) THEN + ZWORK2(JI) = ZWORK1(JI) / ZTLCL(JI) * ( CST%XBETAW / ZTLCL(JI) - CST%XGAMW ) ! dr_sat/dT + ZWORK2(JI) = ( ZWORK1(JI) - ZRVLCL(JI) ) / & + ( 1. + ZLV(JI) / ZCPH(JI) * ZWORK2(JI) ) + ZTLCL(JI) = ZTLCL(JI) - ZLV(JI) / ZCPH(JI) * ZWORK2(JI) ! - END WHERE + END IF + ENDDO ! ! !* 4.3 If ZRVLCL = PRVMIX is oversaturated set humidity ! and temperature to saturation values. ! --------------------------------------------- ! - CALL CONVECT_SATMIXRATIO( KLON, ZPRESMIX, ZTMIX, ZWORK1, ZLV, ZWORK2, ZCPH ) - WHERE( GWORK1(:) .AND. ZRVLCL(:) > ZWORK1(:) ) - ZWORK2(:) = ZWORK1(:) / ZTMIX(:) * ( XBETAW / ZTMIX(:) - XGAMW ) ! dr_sat/dT - ZWORK2(:) = ( ZWORK1(:) - ZRVLCL(:) ) / & - ( 1. + ZLV(:) / ZCPH(:) * ZWORK2(:) ) - ZTLCL(:) = ZTMIX(:) - ZLV(:) / ZCPH(:) * ZWORK2(:) - ZRVLCL(:) = ZRVLCL(:) - ZWORK2(:) - ZPLCL(:) = ZPRESMIX(:) - ZTHLCL(:) = ZTLCL(:) * ( XP00 / ZPLCL(:) ) ** ZRDOCP - ZTHVLCL(:)= ZTHLCL(:) * ( 1. + ZEPSA * ZRVLCL(:) ) & - / ( 1. + ZRVLCL(:) ) - END WHERE + CALL CONVECT_SATMIXRATIO( CST, D, ZPRESMIX, ZTMIX, ZWORK1, ZLV, ZWORK2, ZCPH ) + DO JI=D%NIB, D%NIE + IF( GWORK1(JI) .AND. ZRVLCL(JI) > ZWORK1(JI) ) THEN + ZWORK2(JI) = ZWORK1(JI) / ZTMIX(JI) * ( CST%XBETAW / ZTMIX(JI) - CST%XGAMW ) ! dr_sat/dT + ZWORK2(JI) = ( ZWORK1(JI) - ZRVLCL(JI) ) / & + ( 1. + ZLV(JI) / ZCPH(JI) * ZWORK2(JI) ) + ZTLCL(JI) = ZTMIX(JI) - ZLV(JI) / ZCPH(JI) * ZWORK2(JI) + ZRVLCL(JI) = ZRVLCL(JI) - ZWORK2(JI) + ZPLCL(JI) = ZPRESMIX(JI) + ZTHLCL(JI) = ZTLCL(JI) * ( CST%XP00 / ZPLCL(JI) ) ** ZRDOCP + ZTHVLCL(JI)= ZTHLCL(JI) * ( 1. + ZEPSA * ZRVLCL(JI) ) & + / ( 1. + ZRVLCL(JI) ) + END IF + ENDDO ! ! !* 5.1 Determine vertical loop index at the LCL and DPL ! -------------------------------------------------- ! DO JK = JKK, IKE - 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( ZPLCL(JI) <= PPRES(JI,JK) .AND. GWORK1(JI) ) ILCL(JI) = JK + 1 END DO END DO @@ -293,7 +303,7 @@ DO JKK = IKB + 1, IKE - 2 !* 5.2 Estimate height and environm. theta_v at LCL ! -------------------------------------------------- ! - DO JI = 1, IIE + DO JI = D%NIB, D%NIE JK = ILCL(JI) JKM = JK - 1 ZDP(JI) = LOG( ZPLCL(JI) / PPRES(JI,JKM) ) / & @@ -303,10 +313,12 @@ DO JKK = IKB + 1, IKE - 2 ! The precise height is between the levels ILCL and ILCL-1. ZWORK2(JI) = PZ(JI,JKM) + ( PZ(JI,JK) - PZ(JI,JKM) ) * ZDP(JI) END DO - WHERE( GWORK1(:) ) - ZTHVELCL(:) = ZWORK1(:) - ZZLCL(:) = ZWORK2(:) - END WHERE + DO JI = D%NIB, D%NIE + IF( GWORK1(JI) ) THEN + ZTHVELCL(JI) = ZWORK1(JI) + ZZLCL(JI) = ZWORK2(JI) + END IF + END DO ! ! !* 6. Check to see if cloud is bouyant @@ -316,7 +328,7 @@ DO JKK = IKB + 1, IKE - 2 ! ------------------------------------------------------------- ! ! ! normalize w grid scale to a 25 km refer. grid -! DO JI = 1, IIE +! DO JI = 1, D%NIT ! JK = ILCL(JI) ! JKM = JK - 1 ! ZWORK1(JI) = ( PW(JI,JKM) + ( PW(JI,JK) - PW(JI,JKM) ) * ZDP(JI) ) & @@ -331,7 +343,7 @@ DO JKK = IKB + 1, IKE - 2 !* 6.2 Compute parcel vertical velocity at LCL ! --------------------------------------- ! -! DO JI = 1, IIE +! DO JI = 1, D%NIT ! JKDL = IDPL(JI) ! ZWORK3(JI) = XG * ZWORK1(JI) * ( ZZLCL(JI) - PZ(JI,JKDL) ) & ! / ( PTHV(JI,JKDL) + ZTHVELCL(JI) ) @@ -341,7 +353,7 @@ DO JKK = IKB + 1, IKE - 2 ! GTRIG(:) = ZTHVLCL(:) - ZTHVELCL(:) + ZWORK1(:) > 0. .AND. & ! ZWLCL(:) > 0. ! END WHERE - ZWLCL(:) = XAW * MAX(0.,PW(:,IKB)) + XBW + ZWLCL(D%NIB:D%NIE) = CVP_SHAL%XAW * MAX(0.,PW(D%NIB:D%NIE,IKB)) + CVP_SHAL%XBW ! ! !* 6.3 Look for parcel that produces sufficient cloud depth. @@ -349,26 +361,26 @@ DO JKK = IKB + 1, IKE - 2 ! is smaller than a given value (based on vertical velocity eq.) ! -------------------------------------------------------------- ! - ZTHEUL(:) = ZTLCL(:) * ( ZTHLCL(:) / ZTLCL(:) ) & - ** ( 1. - 0.28 * ZRVLCL(:) ) & - * EXP( ( 3374.6525 / ZTLCL(:) - 2.5403 ) * & - ZRVLCL(:) * ( 1. + 0.81 * ZRVLCL(:) ) ) + ZTHEUL(D%NIB:D%NIE) = ZTLCL(D%NIB:D%NIE) * ( ZTHLCL(D%NIB:D%NIE) / ZTLCL(D%NIB:D%NIE) ) & + ** ( 1. - 0.28 * ZRVLCL(D%NIB:D%NIE) ) & + * EXP( ( 3374.6525 / ZTLCL(D%NIB:D%NIE) - 2.5403 ) * & + ZRVLCL(D%NIB:D%NIE) * ( 1. + 0.81 * ZRVLCL(D%NIB:D%NIE) ) ) ! - ZCAPE(:) = 0. - ZCAP(:) = 0. - ZTOP(:) = 0. - ZTOPP(:) = 0. - ZWORK3(:)= 0. + ZCAPE(D%NIB:D%NIE) = 0. + ZCAP(D%NIB:D%NIE) = 0. + ZTOP(D%NIB:D%NIE) = 0. + ZTOPP(D%NIB:D%NIE) = 0. + ZWORK3(D%NIB:D%NIE)= 0. JKM = IKB DO JL = JKM, JT JK = JL + 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE ZWORK1(JI) = ( 2. * ZTHEUL(JI) / & ( PTHES(JI,JK) + PTHES(JI,JL) ) - 1. ) * ( PZ(JI,JK) - PZ(JI,JL) ) IF ( JL < ILCL(JI) ) ZWORK1(JI) = 0. - ZCAPE(JI) = ZCAPE(JI) + XG * MAX( 1., ZWORK1(JI) ) + ZCAPE(JI) = ZCAPE(JI) + CST%XG * MAX( 1., ZWORK1(JI) ) ZCAP(JI) = ZCAP(JI) + ZWORK1(JI) - ZWORK2(JI) = XNHGAM * XG * ZCAP(JI) + 1.05 * ZWLCL(JI) * ZWLCL(JI) + ZWORK2(JI) = CVP_SHAL%XNHGAM * CST%XG * ZCAP(JI) + 1.05 * ZWLCL(JI) * ZWLCL(JI) ! the factor 1.05 takes entrainment into account ZWORK2(JI) = SIGN( 1., ZWORK2(JI) ) ZWORK3(JI) = ZWORK3(JI) + MIN(0., ZWORK2(JI) ) @@ -385,26 +397,28 @@ DO JKK = IKB + 1, IKE - 2 END DO ! ! - ZWORK2(:) = ZTOP(:) - ZZLCL(:) + ZWORK2(D%NIB:D%NIE) = ZTOP(D%NIB:D%NIE) - ZZLCL(D%NIB:D%NIE) ! WHERE( ZWORK2(:) .GE. XCDEPTH .AND. ZWORK2(:) < XCDEPTH_D .AND. GTRIG2(:) & - WHERE( ZWORK2(:) .GE. XCDEPTH .AND. GTRIG2(:) & - .AND. ZCAPE(:) > 10. ) - GTRIG2(:) = .FALSE. - OTRIG(:) = .TRUE. - ! OTRIG(:) = GTRIG(:) ! we select the first departure level - PTHLCL(:) = ZTHLCL(:) ! that gives sufficient cloud depth - PRVLCL(:) = ZRVLCL(:) - PTLCL(:) = ZTLCL(:) - PWLCL(:) = ZWLCL(:) - PZLCL(:) = ZZLCL(:) - PTHVELCL(:) = ZTHVELCL(:) - KDPL(:) = IDPL(:) - KPBL(:) = IPBL(:) - KLCL(:) = ILCL(:) - END WHERE + DO JI=D%NIB, D%NIE + IF( ZWORK2(JI) .GE. CVP_SHAL%XCDEPTH .AND. GTRIG2(JI) .AND. ZCAPE(JI) > 10. )THEN + GTRIG2(JI) = .FALSE. + OTRIG(JI) = .TRUE. + ! OTRIG(JI) = GTRIG(JI) ! we select the first departure level + PTHLCL(JI) = ZTHLCL(JI) ! that gives sufficient cloud depth + PRVLCL(JI) = ZRVLCL(JI) + PTLCL(JI) = ZTLCL(JI) + PWLCL(JI) = ZWLCL(JI) + PZLCL(JI) = ZZLCL(JI) + PTHVELCL(JI) = ZTHVELCL(JI) + KDPL(JI) = IDPL(JI) + KPBL(JI) = IPBL(JI) + KLCL(JI) = ILCL(JI) + END IF + ENDDO ! END DO ! ! IF (LHOOK) CALL DR_HOOK('CONVECT_TRIGGER_SHAL',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_TRIGGER_SHAL + diff --git a/src/arome/conv/convect_trigger_shal.h b/src/arome/conv/convect_trigger_shal.h new file mode 100644 index 0000000000000000000000000000000000000000..bac51118aa6924cb4d5b1a53598020c5b7995d0f --- /dev/null +++ b/src/arome/conv/convect_trigger_shal.h @@ -0,0 +1,36 @@ +INTERFACE + +SUBROUTINE CONVECT_TRIGGER_SHAL( CVP_SHAL, CVPEXT, CST, D, & +PPRES, PTH, PTHV, PTHES, & +PRV, PW, PZ, PTKECLS, & +PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, & +PTHVELCL, KLCL, KDPL, KPBL, OTRIG) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAR_SHAL), INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTKECLS +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PTH, PTHV +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PTHES +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PRV +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PZ +REAL, DIMENSION(D%NIT,D%NKT),INTENT(IN) :: PW +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTHLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PRVLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PWLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PZLCL +REAL, DIMENSION(D%NIT), INTENT(OUT):: PTHVELCL +LOGICAL, DIMENSION(D%NIT), INTENT(OUT):: OTRIG +INTEGER, DIMENSION(D%NIT), INTENT(INOUT):: KLCL +INTEGER, DIMENSION(D%NIT), INTENT(INOUT):: KDPL +INTEGER, DIMENSION(D%NIT), INTENT(INOUT):: KPBL +END SUBROUTINE CONVECT_TRIGGER_SHAL + +END INTERFACE diff --git a/src/arome/conv/convect_tstep_pref.F90 b/src/arome/conv/convect_tstep_pref.F90 index 59e96f7d5d81828519b73722001188dee89a3f6e..e9d32404e2772afe4ead23b7d1a36e69583263d7 100644 --- a/src/arome/conv/convect_tstep_pref.F90 +++ b/src/arome/conv/convect_tstep_pref.F90 @@ -2,8 +2,7 @@ SUBROUTINE CONVECT_TSTEP_PREF( KLON, KLEV, & PU, PV, PPRES, PZ, PDXDY, KLCL, KCTL, & PTIMEA, PPREF ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ###################################################################### ! !!**** Routine to compute convective advection time step and precipitation @@ -90,7 +89,7 @@ REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3 ! work arrays ! 0.3 Set loop bounds ! --------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_TSTEP_PREF',0,ZHOOK_HANDLE) IIE = KLON IKB = 1 + JCVEXB diff --git a/src/arome/conv/convect_updraft.F90 b/src/arome/conv/convect_updraft.F90 index bd06ce6d62896b869bca01717d9fbc8b9171f4c0..ce59208dec355db30f494add3d73ac4ea567a4ce 100644 --- a/src/arome/conv/convect_updraft.F90 +++ b/src/arome/conv/convect_updraft.F90 @@ -6,8 +6,7 @@ PUMF, PUER, PUDR, PUTHL, PUTHV, PURW, & PURC, PURI, PURR, PURS, PUPR, & PUTPR, PCAPE, KCTL, KETL, PUTT ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** Compute updraft properties from DPL to CTL. @@ -167,7 +166,7 @@ LOGICAL, DIMENSION(KLON,KLEV) :: GWORK6 ! work array ! 0.3 Set loop bounds ! --------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('CONVECT_UPDRAFT',0,ZHOOK_HANDLE) IKB = 1 + JCVEXB IKE = KLEV - JCVEXT diff --git a/src/arome/conv/convect_updraft_shal.F90 b/src/arome/conv/convect_updraft_shal.F90 index 6aa68e00d89dcf117f22e52eeeb1c30fbb0c9cc3..e60e2ec98f4d254c5e7996c03acce07f62bd7ef3 100644 --- a/src/arome/conv/convect_updraft_shal.F90 +++ b/src/arome/conv/convect_updraft_shal.F90 @@ -1,12 +1,11 @@ ! ######spl - SUBROUTINE CONVECT_UPDRAFT_SHAL( KLON, KLEV, & + SUBROUTINE CONVECT_UPDRAFT_SHAL( CVP_SHAL, CVPEXT, CST, D, CONVPAR, & KICE, PPRES, PDPRES, PZ, PTHL, PTHV, PTHES, PRW,& PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, & PMFLCL, OTRIG, KLCL, KDPL, KPBL, & PUMF, PUER, PUDR, PUTHL, PUTHV, PURW, & - PURC, PURI, PCAPE, KCTL, KETL ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + PURC, PURI, PCAPE, KCTL, KETL,GTRIG1 ) + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################### ! !!**** Compute updraft properties from DPL to CTL. @@ -77,80 +76,85 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XCPD, XCPV, XG, XP00, XRD, XRV -USE MODD_CONVPAR_SHAL, ONLY : XCDEPTH, XCDEPTH_D, XCRAD, XENTR, XNHGAM -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR, ONLY : CONVPAR_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T ! ! IMPLICIT NONE ! !* 0.1 Declarations of dummy arguments : ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension -INTEGER, INTENT(IN) :: KICE ! flag for ice ( 1 = yes, +TYPE(CONVPAR_SHAL) ,INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT) ,INTENT(IN) :: CVPEXT +TYPE(CST_T) ,INTENT(IN) :: CST +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +TYPE(CONVPAR_T) ,INTENT(IN) :: CONVPAR +INTEGER ,INTENT(IN) :: KICE ! flag for ice ( 1 = yes, ! 0 = no ice ) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PTHL ! grid scale enthalpy (J/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PTHV ! grid scale theta_v -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PTHES ! grid scale saturated theta_e -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PRW ! grid scale total water - ! mixing ratio -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PPRES ! pressure (P) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PDPRES! pressure difference between +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PPRES ! pressure (P) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PDPRES! pressure difference between ! bottom and top of layer (Pa) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PZ ! height of model layer (m) -REAL, DIMENSION(KLON), INTENT(IN) :: PTHLCL ! theta at LCL -REAL, DIMENSION(KLON), INTENT(IN) :: PTLCL ! temp. at LCL -REAL, DIMENSION(KLON), INTENT(IN) :: PRVLCL ! vapor mixing ratio at LCL -REAL, DIMENSION(KLON), INTENT(IN) :: PWLCL ! parcel velocity at LCL (m/s) -REAL, DIMENSION(KLON), INTENT(IN) :: PMFLCL ! cloud base unit mass flux +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PZ ! height of model layer (m) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTHL ! grid scale enthalpy (J/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTHV ! grid scale theta_v +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PTHES ! grid scale saturated theta_e +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(IN) :: PRW ! grid scale total water + ! mixing ratio +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PTHLCL ! theta at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PTLCL ! temp. at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PRVLCL ! vapor mixing ratio at LCL +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PWLCL ! parcel velocity at LCL (m/s) +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PZLCL ! height at LCL (m) +REAL ,DIMENSION(D%NIT) ,INTENT(IN) :: PTHVELCL ! environm. theta_v at LCL (K) +REAL ,INTENT(IN) :: PMFLCL ! cloud base unit mass flux ! (kg/s) -REAL, DIMENSION(KLON), INTENT(IN) :: PZLCL ! height at LCL (m) -REAL, DIMENSION(KLON), INTENT(IN) :: PTHVELCL ! environm. theta_v at LCL (K) -LOGICAL, DIMENSION(KLON), INTENT(INOUT):: OTRIG! logical mask for convection -INTEGER, DIMENSION(KLON), INTENT(IN) :: KLCL ! contains vert. index of LCL -INTEGER, DIMENSION(KLON), INTENT(IN) :: KDPL ! contains vert. index of DPL -INTEGER, DIMENSION(KLON), INTENT(IN) :: KPBL ! " vert. index of source layertop -! -! -INTEGER, DIMENSION(KLON), INTENT(OUT):: KCTL ! contains vert. index of CTL -INTEGER, DIMENSION(KLON), INTENT(OUT):: KETL ! contains vert. index of & +LOGICAL ,DIMENSION(D%NIT) ,INTENT(INOUT) :: OTRIG! logical mask for convection +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KLCL ! contains vert. index of LCL +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KDPL ! contains vert. index of DPL +INTEGER ,DIMENSION(D%NIT) ,INTENT(IN) :: KPBL ! " vert. index of source layertop +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PUMF ! updraft mass flux (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PUER ! updraft entrainment (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PUDR ! updraft detrainment (kg/s) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PUTHL ! updraft enthalpy (J/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PUTHV ! updraft theta_v (K) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PURW ! updraft total water (kg/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PURC ! updraft cloud water (kg/kg) +REAL ,DIMENSION(D%NIT,D%NKT) ,INTENT(OUT) :: PURI ! updraft cloud ice (kg/kg) +REAL ,DIMENSION(D%NIT) ,INTENT(OUT) :: PCAPE ! available potent. energy +! +! +INTEGER ,DIMENSION(D%NIT) ,INTENT(OUT) :: KCTL ! contains vert. index of CTL +INTEGER ,DIMENSION(D%NIT) ,INTENT(OUT) :: KETL ! contains vert. index of & !equilibrium (zero buoyancy) level -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PUMF ! updraft mass flux (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PUER ! updraft entrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PUDR ! updraft detrainment (kg/s) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PUTHL ! updraft enthalpy (J/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PUTHV ! updraft theta_v (K) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PURW ! updraft total water (kg/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PURC ! updraft cloud water (kg/kg) -REAL, DIMENSION(KLON,KLEV), INTENT(OUT):: PURI ! updraft cloud ice (kg/kg) -REAL, DIMENSION(KLON), INTENT(OUT):: PCAPE ! available potent. energy +LOGICAL ,DIMENSION(D%NIT) ,INTENT(IN) :: GTRIG1! logical mask for convection ! !* 0.2 Declarations of local variables : ! -INTEGER :: IIE, IKB, IKE ! horizontal and vertical loop bounds +INTEGER :: IKB, IKE ! horizontal and vertical loop bounds INTEGER :: JI ! horizontal loop index INTEGER :: JK, JKP, JKM, JK1, JK2 ! vertical loop index REAL :: ZEPSA ! R_v / R_d, C_pv / C_pd REAL :: ZRDOCP ! C_pd / R_d, R_d / C_pd ! -REAL, DIMENSION(KLON) :: ZUT ! updraft temperature (K) -REAL, DIMENSION(KLON) :: ZUW1, ZUW2 ! square of updraft vert. +REAL, DIMENSION(D%NIT) :: ZUT ! updraft temperature (K) +REAL, DIMENSION(D%NIT) :: ZUW1, ZUW2 ! square of updraft vert. ! velocity at levels k and k+1 -REAL, DIMENSION(KLON) :: ZE1,ZE2,ZD1,ZD2 ! fractional entrainm./detrain +REAL, DIMENSION(D%NIT) :: ZE1,ZE2,ZD1,ZD2 ! fractional entrainm./detrain ! rates at levels k and k+1 -REAL, DIMENSION(KLON) :: ZMIXF ! critical mixed fraction -REAL, DIMENSION(KLON) :: ZCPH ! specific heat C_ph -REAL, DIMENSION(KLON) :: ZLV, ZLS ! latent heat of vaporis., sublim. -REAL, DIMENSION(KLON) :: ZURV ! updraft water vapor at level k+1 -REAL, DIMENSION(KLON) :: ZPI ! Pi=(P0/P)**(Rd/Cpd) -REAL, DIMENSION(KLON) :: ZTHEUL ! theta_e for undilute ascent -REAL, DIMENSION(KLON) :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5, & +REAL, DIMENSION(D%NIT) :: ZMIXF ! critical mixed fraction +REAL, DIMENSION(D%NIT) :: ZCPH ! specific heat C_ph +REAL, DIMENSION(D%NIT) :: ZLV, ZLS ! latent heat of vaporis., sublim. +REAL, DIMENSION(D%NIT) :: ZURV ! updraft water vapor at level k+1 +REAL, DIMENSION(D%NIT) :: ZPI ! Pi=(P0/P)**(Rd/Cpd) +REAL, DIMENSION(D%NIT) :: ZTHEUL ! theta_e for undilute ascent +REAL, DIMENSION(D%NIT) :: ZWORK1, ZWORK2, ZWORK3, ZWORK4, ZWORK5, & ZWORK6 ! work arrays -INTEGER, DIMENSION(KLON) :: IWORK ! wok array -LOGICAL, DIMENSION(KLON) :: GWORK1, GWORK2, GWORK4, GWORK5 +INTEGER, DIMENSION(D%NIT) :: IWORK ! wok array +LOGICAL, DIMENSION(D%NIT) :: GWORK1, GWORK2, GWORK4 ! work arrays -LOGICAL, DIMENSION(KLON,KLEV) :: GWORK6 ! work array ! ! !------------------------------------------------------------------------------- @@ -158,18 +162,21 @@ LOGICAL, DIMENSION(KLON,KLEV) :: GWORK6 ! work array ! 0.3 Set loop bounds ! --------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +#include "convect_condens.h" +#include "convect_mixing_funct.h" + IF (LHOOK) CALL DR_HOOK('CONVECT_UPDRAFT_SHAL',0,ZHOOK_HANDLE) -IKB = 1 + JCVEXB -IKE = KLEV - JCVEXT -IIE = KLON +IKB = 1 + CVPEXT%JCVEXB +IKE = D%NKT - CVPEXT%JCVEXT ! ! !* 1. Initialize updraft properties and local variables ! ------------------------------------------------- ! -ZEPSA = XRV / XRD -ZRDOCP = XRD / XCPD +ZEPSA = CST%XRV / CST%XRD +ZRDOCP = CST%XRD / CST%XCPD ! PUMF(:,:) = 0. PUER(:,:) = 0. @@ -201,27 +208,25 @@ GWORK4(:) = .FALSE. ! Define accurate enthalpy for updraft ! ----------------------------------------------------- ! -ZTHEUL(:) = PTLCL(:) * ( PTHLCL(:) / PTLCL(:) ) ** ( 1. - 0.28 * PRVLCL(:) ) & - * EXP( ( 3374.6525 / PTLCL(:) - 2.5403 ) * & - PRVLCL(:) * ( 1. + 0.81 * PRVLCL(:) ) ) +ZTHEUL(D%NIB:D%NIE) = PTLCL(D%NIB:D%NIE) * ( PTHLCL(D%NIB:D%NIE) / PTLCL(D%NIB:D%NIE) ) ** ( 1. - 0.28 * PRVLCL(D%NIB:D%NIE) ) & + * EXP( ( 3374.6525 / PTLCL(D%NIB:D%NIE) - 2.5403 ) * & + PRVLCL(D%NIB:D%NIE) * ( 1. + 0.81 * PRVLCL(D%NIB:D%NIE) ) ) ! ! -ZWORK1(:) = ( XCPD + PRVLCL(:) * XCPV ) * PTLCL(:) & - + ( 1. + PRVLCL(:) ) * XG * PZLCL(:) +ZWORK1(D%NIB:D%NIE) = ( CST%XCPD + PRVLCL(D%NIB:D%NIE) * CST%XCPV ) * PTLCL(D%NIB:D%NIE) & + + ( 1. + PRVLCL(D%NIB:D%NIE) ) * CST%XG * PZLCL(D%NIB:D%NIE) ! ! !* 2. Set updraft properties between DPL and LCL ! ------------------------------------------ ! -!JKP = MAXVAL( KLCL(:) ) -!JKM = MINVAL( KDPL(:) ) JKP=IKE JKM=IKB DO JK = JKM, JKP - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( JK >= KDPL(JI) .AND. JK < KLCL(JI) ) THEN - PUMF(JI,JK) = PMFLCL(JI) + PUMF(JI,JK) = PMFLCL PUTHL(JI,JK) = ZWORK1(JI) PUTHV(JI,JK) = PTHLCL(JI) * ( 1. + ZEPSA * PRVLCL(JI) ) / & ( 1. + PRVLCL(JI) ) @@ -238,66 +243,71 @@ DO JK = IKB + 1, IKE - 1 ZWORK6(:) = 1. JKP = JK + 1 ! - GWORK4(:) = JK >= KLCL(:) - 1 - GWORK1(:) = GWORK4(:) .AND. GWORK2(:) ! this mask is used to confine + GWORK4(D%NIB:D%NIE) = JK >= KLCL(D%NIB:D%NIE) - 1 + GWORK1(D%NIB:D%NIE) = GWORK4(D%NIB:D%NIE) .AND. GWORK2(D%NIB:D%NIE) ! this mask is used to confine ! updraft computations between the LCL and the CTL ! - WHERE( JK == KLCL(:) - 1 ) ZWORK6(:) = 0. ! factor that is used in buoyancy - ! computation at first level above LCL + DO JI=D%NIB, D%NIE + IF( JK == KLCL(JI) - 1 ) ZWORK6(JI) = 0. ! factor that is used in buoyancy + ENDDO ! computation at first level above LCL ! ! !* 4. Estimate condensate, L_v L_i, Cph and theta_v at level k+1 ! ---------------------------------------------------------- ! - ZWORK1(:) = PURC(:,JK) - ZWORK2(:) = PURI(:,JK) - CALL CONVECT_CONDENS( KLON, KICE, PPRES(:,JKP), PUTHL(:,JK), PURW(:,JK),& - ZWORK1, ZWORK2, PZ(:,JKP), GWORK1, ZUT, ZURV, & - PURC(:,JKP), PURI(:,JKP), ZLV, ZLS, ZCPH ) + ZWORK1(D%NIB:D%NIE) = PURC(D%NIB:D%NIE,JK) + ZWORK2(D%NIB:D%NIE) = PURI(D%NIB:D%NIE,JK) + CALL CONVECT_CONDENS(CST, D, CONVPAR, KICE, PPRES(D%NIB:D%NIE,JKP),& + PUTHL(D%NIB:D%NIE,JK), PURW(D%NIB:D%NIE,JK), & + ZWORK1, ZWORK2, PZ(D%NIB:D%NIE,JKP), ZUT,ZURV,& + PURC(D%NIB:D%NIE,JKP), PURI(D%NIB:D%NIE,JKP), & + ZLV, ZLS, ZCPH ) ! ! - ZPI(:) = ( XP00 / PPRES(:,JKP) ) ** ZRDOCP - WHERE ( GWORK1(:) ) + ZPI(D%NIB:D%NIE) = ( CST%XP00 / PPRES(D%NIB:D%NIE,JKP) ) ** ZRDOCP + DO JI=D%NIB, D%NIE + IF ( GWORK1(JI) ) THEN ! - PUTHV(:,JKP) = ZPI(:) * ZUT(:) * ( 1. + ZEPSA * ZURV(:) ) & - / ( 1. + PURW(:,JK) ) + PUTHV(JI,JKP) = ZPI(JI) * ZUT(JI) * ( 1. + ZEPSA * ZURV(JI) ) & + / ( 1. + PURW(JI,JK) ) ! ! -!* 5. Compute square of vertical velocity using entrainment -! at level k -! ----------------------------------------------------- +!* 5. Compute square of vertical velocity using entrainment +! at level k +! ----------------------------------------------------- ! - ZWORK3(:) = PZ(:,JKP) - PZ(:,JK) * ZWORK6(:) - & - ( 1. - ZWORK6(:) ) * PZLCL(:) ! level thickness - ZWORK4(:) = PTHV(:,JK) * ZWORK6(:) + & - ( 1. - ZWORK6(:) ) * PTHVELCL(:) - ZWORK5(:) = 2. * ZUW1(:) * PUER(:,JK) / MAX( .1, PUMF(:,JK) ) - ZUW2(:) = ZUW1(:) + ZWORK3(:) * XNHGAM * XG * & - ( ( PUTHV(:,JK) + PUTHV(:,JKP) ) / & - ( ZWORK4(:) + PTHV(:,JKP) ) - 1. ) & ! buoyancy term - - ZWORK5(:) ! entrainment term + ZWORK3(JI) = PZ(JI,JKP) - PZ(JI,JK) * ZWORK6(JI) - & + ( 1. - ZWORK6(JI) ) * PZLCL(JI) ! level thickness + ZWORK4(JI) = PTHV(JI,JK) * ZWORK6(JI) + & + ( 1. - ZWORK6(JI) ) * PTHVELCL(JI) + ZWORK5(JI) = 2. * ZUW1(JI) * PUER(JI,JK) / MAX( .1, PUMF(JI,JK) ) + ZUW2(JI) = ZUW1(JI) + ZWORK3(JI) * CVP_SHAL%XNHGAM * CST%XG * & + ( ( PUTHV(JI,JK) + PUTHV(JI,JKP) ) / & + ( ZWORK4(JI) + PTHV(JI,JKP) ) - 1. ) & ! buoyancy term + - ZWORK5(JI) ! entrainment term ! ! -!* 6. Update total precipitation: dr_r=(r_c+r_i)*exp(-rate*dz) -! -------------------------------------------------------- +!* 6. Update total precipitationJI dr_r=(r_c+r_i)*exp(-rate*dz) +! -------------------------------------------------------- ! -! compute level mean vertical velocity - ZWORK2(:) = 0.5 * & - ( SQRT( MAX( 1.E-2, ZUW2(:) ) ) + & - SQRT( MAX( 1.E-2, ZUW1(:) ) ) ) +! compute level mean vertical velocity + ZWORK2(JI) = 0.5 * & + ( SQRT( MAX( 1.E-2, ZUW2(JI) ) ) + & + SQRT( MAX( 1.E-2, ZUW1(JI) ) ) ) ! ! -!* 7. Update r_c, r_i, enthalpy, r_w for precipitation -! ------------------------------------------------------- +!* 7. Update r_c, r_i, enthalpy, r_w for precipitation +! ------------------------------------------------------- ! - PURW(:,JKP) = PURW(:,JK) - PURC(:,JKP) = PURC(:,JKP) - PURI(:,JKP) = PURI(:,JKP) - PUTHL(:,JKP) = PUTHL(:,JK) + PURW(JI,JKP) = PURW(JI,JK) + PURC(JI,JKP) = PURC(JI,JKP) + PURI(JI,JKP) = PURI(JI,JKP) + PUTHL(JI,JKP) = PUTHL(JI,JK) ! - ZUW1(:) = ZUW2(:) + ZUW1(JI) = ZUW2(JI) ! - END WHERE + END IF + ENDDO ! ! !* 8. Compute entrainment and detrainment using conservative @@ -310,25 +320,26 @@ DO JK = IKB + 1, IKE - 1 ! evaluating the derivative using ZMIXF=0.1. ! ----------------------------------------------------- ! - ZMIXF(:) = 0.1 ! starting value for critical mixed fraction - ZWORK1(:) = ZMIXF(:) * PTHL(:,JKP) & - + ( 1. - ZMIXF(:) ) * PUTHL(:,JKP) ! mixed enthalpy - ZWORK2(:) = ZMIXF(:) * PRW(:,JKP) & - + ( 1. - ZMIXF(:) ) * PURW(:,JKP) ! mixed r_w + ZMIXF(D%NIB:D%NIE) = 0.1 ! starting value for critical mixed fraction + ZWORK1(D%NIB:D%NIE) = ZMIXF(D%NIB:D%NIE) * PTHL(D%NIB:D%NIE,JKP) & + + ( 1. - ZMIXF(D%NIB:D%NIE) ) * PUTHL(D%NIB:D%NIE,JKP) ! mixed enthalpy + ZWORK2(D%NIB:D%NIE) = ZMIXF(D%NIB:D%NIE) * PRW(D%NIB:D%NIE,JKP) & + + ( 1. - ZMIXF(D%NIB:D%NIE) ) * PURW(D%NIB:D%NIE,JKP) ! mixed r_w ! - CALL CONVECT_CONDENS( KLON, KICE, PPRES(:,JKP), ZWORK1, ZWORK2, & - PURC(:,JKP), PURI(:,JKP), PZ(:,JKP), GWORK1, ZUT,& - ZWORK3, ZWORK4, ZWORK5, ZLV, ZLS, ZCPH ) + CALL CONVECT_CONDENS(CST, D, CONVPAR, KICE, PPRES(D%NIB:D%NIE,JKP),& + ZWORK1, ZWORK2, PURC(D%NIB:D%NIE,JKP), & + PURI(D%NIB:D%NIE,JKP), PZ(D%NIB:D%NIE,JKP), & + ZUT, ZWORK3, ZWORK4, ZWORK5, ZLV, ZLS, ZCPH) ! put in enthalpy and r_w and get T r_c, r_i (ZUT, ZWORK4-5) ! ! compute theta_v of mixture - ZWORK3(:) = ZUT(:) * ZPI(:) * ( 1. + ZEPSA * ( & - ZWORK2(:) - ZWORK4(:) - ZWORK5(:) ) ) / ( 1. + ZWORK2(:) ) + ZWORK3(D%NIB:D%NIE) = ZUT(D%NIB:D%NIE) * ZPI(D%NIB:D%NIE) * ( 1. + ZEPSA * ( & + ZWORK2(D%NIB:D%NIE) - ZWORK4(D%NIB:D%NIE) - ZWORK5(D%NIB:D%NIE) ) ) / ( 1. + ZWORK2(D%NIB:D%NIE) ) ! compute final value of critical mixed fraction using theta_v ! of mixture, grid-scale and updraft - ZMIXF(:) = MAX( 0., PUTHV(:,JKP) - PTHV(:,JKP) ) * ZMIXF(:) / & - ( PUTHV(:,JKP) - ZWORK3(:) + 1.E-10 ) - ZMIXF(:) = MAX( 0., MIN( 1., ZMIXF(:) ) ) + ZMIXF(D%NIB:D%NIE) = MAX( 0., PUTHV(D%NIB:D%NIE,JKP) - PTHV(D%NIB:D%NIE,JKP) ) * ZMIXF(D%NIB:D%NIE) / & + ( PUTHV(D%NIB:D%NIE,JKP) - ZWORK3(D%NIB:D%NIE) + 1.E-10 ) + ZMIXF(D%NIB:D%NIE) = MAX( 0., MIN( 1., ZMIXF(D%NIB:D%NIE) ) ) ! ! !* 8.2 Compute final midlevel values for entr. and detrainment @@ -336,33 +347,38 @@ DO JK = IKB + 1, IKE - 1 ! ------------------------------------------------------- ! ! - CALL CONVECT_MIXING_FUNCT ( KLON, ZMIXF, 1, ZE2, ZD2 ) -! Note: routine MIXING_FUNCT returns fractional entrainm/detrainm. rates + CALL CONVECT_MIXING_FUNCT ( D, ZMIXF, 1, ZE2, ZD2 ) +! NoteD%NIB:D%NIE routine MIXING_FUNCT returns fractional entrainm/detrainm. rates ! ZE2=MIN(ZD2,MAX(.3,ZE2)) ! -! ZWORK1(:) = XENTR * PMFLCL(:) * PDPRES(:,JKP) / XCRAD ! rate of env. inflow +! ZWORK1(D%NIB:D%NIE) = XENTR * PMFLCL * PDPRES(D%NIB:D%NIE,JKP) / XCRAD ! rate of env. inflow !*MOD - zwork1(:) = xentr * xg / xcrad * pumf(:,jk) * ( pz(:,jkp) - pz(:,jk) ) -! ZWORK1(:) = XENTR * pumf(:,jk) * PDPRES(:,JKP) / XCRAD ! rate of env. inflow + zwork1(D%NIB:D%NIE) = CVP_SHAL%xentr * CST%xg / CVP_SHAL%xcrad * pumf(D%NIB:D%NIE,jk) * ( pz(D%NIB:D%NIE,jkp) - pz(D%NIB:D%NIE,jk) ) +! ZWORK1(D%NIB:D%NIE) = XENTR * pumf(D%NIB:D%NIE,jk) * PDPRES(D%NIB:D%NIE,JKP) / XCRAD ! rate of env. inflow !*MOD ZWORK2(:) = 0. - WHERE ( GWORK1(:) ) ZWORK2(:) = 1. - WHERE ( PUTHV(:,JKP) > PTHV(:,JKP) ) - PUER(:,JKP) = 0.5 * ZWORK1(:) * ( ZE1(:) + ZE2(:) ) * ZWORK2(:) - PUDR(:,JKP) = 0.5 * ZWORK1(:) * ( ZD1(:) + ZD2(:) ) * ZWORK2(:) - ELSEWHERE - PUER(:,JKP) = 0. - PUDR(:,JKP) = ZWORK1(:) * ZWORK2(:) - END WHERE + DO JI=D%NIB, D%NIE + IF( GWORK1(JI) ) ZWORK2(JI) = 1. + ENDDO + DO JI=D%NIB, D%NIE + IF ( PUTHV(JI,JKP) > PTHV(JI,JKP) ) THEN + PUER(JI,JKP) = 0.5 * ZWORK1(JI) * ( ZE1(JI) + ZE2(JI) ) * ZWORK2(JI) + PUDR(JI,JKP) = 0.5 * ZWORK1(JI) * ( ZD1(JI) + ZD2(JI) ) * ZWORK2(JI) + ELSE + PUER(JI,JKP) = 0. + PUDR(JI,JKP) = ZWORK1(JI) * ZWORK2(JI) + END IF + ENDDO ! !* 8.3 Determine equilibrium temperature level ! -------------------------------------- ! - WHERE ( PUTHV(:,JKP) > PTHV(:,JKP) .AND. JK > KLCL(:) + 1 & - .AND. GWORK1(:) ) - KETL(:) = JKP ! equilibrium temperature level - END WHERE + DO JI=D%NIB, D%NIE + IF ( PUTHV(JI,JKP) > PTHV(JI,JKP) .AND. JK > KLCL(JI) + 1 .AND. GWORK1(JI) )THEN + KETL(JI) = JKP ! equilibrium temperature level + END IF + ENDDO ! !* 8.4 If the calculated detrained mass flux is greater than ! the total updraft mass flux, or vertical velocity is @@ -370,10 +386,15 @@ DO JK = IKB + 1, IKE - 1 ! exit updraft calculations - CTL is attained ! ------------------------------------------------------- ! - WHERE( GWORK1(:) ) & - GWORK2(:) = PUMF(:,JK) - PUDR(:,JKP) > 10. .AND. ZUW2(:) > 0. - WHERE ( GWORK2(:) ) KCTL(:) = JKP ! cloud top level - GWORK1(:) = GWORK2(:) .AND. GWORK4(:) + DO JI=D%NIB, D%NIE + IF( GWORK1(JI) ) THEN + GWORK2(JI) = PUMF(JI,JK) - PUDR(JI,JKP) > 10. .AND. ZUW2(JI) > 0. + ENDIF + ENDDO + DO JI=D%NIB, D%NIE + IF ( GWORK2(JI) ) KCTL(JI) = JKP ! cloud top level + ENDDO + GWORK1(D%NIB:D%NIE) = GWORK2(D%NIB:D%NIE) .AND. GWORK4(D%NIB:D%NIE) ! !IF ( COUNT( GWORK2(:) ) == 0 ) EXIT ! @@ -383,37 +404,39 @@ DO JK = IKB + 1, IKE - 1 ! a significantly larger value for CAPE than the actual one. ! ---------------------------------------------------------- ! - WHERE ( GWORK1(:) ) + DO JI=D%NIB, D%NIE + IF ( GWORK1(JI) )THEN ! - ZWORK3(:) = PZ(:,JKP) - PZ(:,JK) * ZWORK6(:) - & - ( 1. - ZWORK6(:) ) * PZLCL(:) ! level thickness - ZWORK2(:) = PTHES(:,JK) + ( 1. - ZWORK6(:) ) * & - ( PTHES(:,JKP) - PTHES(:,JK) ) / ( PZ(:,JKP) - PZ(:,JK) ) * & - ( PZLCL(:) - PZ(:,JK) ) ! linear interpolation for theta_es at LCL - ! ( this is only done for model level just above LCL + ZWORK3(JI) = PZ(JI,JKP) - PZ(JI,JK) * ZWORK6(JI) - & + ( 1. - ZWORK6(JI) ) * PZLCL(JI) ! level thickness + ZWORK2(JI) = PTHES(JI,JK) + ( 1. - ZWORK6(JI) ) * & + ( PTHES(JI,JKP) - PTHES(JI,JK) ) / ( PZ(JI,JKP) - PZ(JI,JK) ) * & + ( PZLCL(JI) - PZ(JI,JK) ) ! linear interpolation for theta_es at LCL + ! ( this is only done for model level just above LCL ! - ZWORK1(:) = ( 2. * ZTHEUL(:) ) / ( ZWORK2(:) + PTHES(:,JKP) ) - 1. - PCAPE(:) = PCAPE(:) + XG * ZWORK3(:) * MAX( 0., ZWORK1(:) ) + ZWORK1(JI) = ( 2. * ZTHEUL(JI) ) / ( ZWORK2(JI) + PTHES(JI,JKP) ) - 1. + PCAPE(JI) = PCAPE(JI) + CST%XG * ZWORK3(JI) * MAX( 0., ZWORK1(JI) ) ! ! -!* 10. Compute final values of updraft mass flux, enthalpy, r_w -! at level k+1 -! -------------------------------------------------------- +!* 10. Compute final values of updraft mass flux, enthalpy, r_w +! at level k+1 +! -------------------------------------------------------- ! - PUMF(:,JKP) = PUMF(:,JK) - PUDR(:,JKP) + PUER(:,JKP) - PUMF(:,JKP) = MAX( PUMF(:,JKP), 0.1 ) - PUTHL(:,JKP) = ( PUMF(:,JK) * PUTHL(:,JK) + & - PUER(:,JKP) * PTHL(:,JK) - PUDR(:,JKP) * PUTHL(:,JK) ) & - / PUMF(:,JKP) - PURW(:,JKP) = ( PUMF(:,JK) * PURW(:,JK) + & - PUER(:,JKP) * PRW(:,JK) - PUDR(:,JKP) * PURW(:,JK) ) & - / PUMF(:,JKP) + PUMF(JI,JKP) = PUMF(JI,JK) - PUDR(JI,JKP) + PUER(JI,JKP) + PUMF(JI,JKP) = MAX( PUMF(JI,JKP), 0.1 ) + PUTHL(JI,JKP) = ( PUMF(JI,JK) * PUTHL(JI,JK) + & + PUER(JI,JKP) * PTHL(JI,JK) - PUDR(JI,JKP) * PUTHL(JI,JK) ) & + / PUMF(JI,JKP) + PURW(JI,JKP) = ( PUMF(JI,JK) * PURW(JI,JK) + & + PUER(JI,JKP) * PRW(JI,JK) - PUDR(JI,JKP) * PURW(JI,JK) ) & + / PUMF(JI,JKP) ! ! - ZE1(:) = ZE2(:) ! update fractional entrainment/detrainment - ZD1(:) = ZD2(:) + ZE1(JI) = ZE2(JI) ! update fractional entrainment/detrainment + ZD1(JI) = ZD2(JI) ! - END WHERE + END IF + ENDDO ! END DO ! @@ -421,17 +444,17 @@ END DO ! or > 3km (deep convection) or CAPE < 1 ! ------------------------------------------------ ! - DO JI = 1, IIE + DO JI = D%NIB, D%NIE JK = KCTL(JI) ZWORK1(JI) = PZ(JI,JK) - PZLCL(JI) - OTRIG(JI) = ZWORK1(JI) >= XCDEPTH .AND. ZWORK1(JI) < XCDEPTH_D & + OTRIG(JI) = ZWORK1(JI) >= CVP_SHAL%XCDEPTH .AND. ZWORK1(JI) < CVP_SHAL%XCDEPTH_D & .AND. PCAPE(JI) > 1. END DO - WHERE( .NOT. OTRIG(:) ) - KCTL(:) = IKB - END WHERE -KETL(:) = MAX( KETL(:), KLCL(:) + 2 ) -KETL(:) = MIN( KETL(:), KCTL(:) ) + DO JI = D%NIB, D%NIE + IF( .NOT. OTRIG(JI) ) KCTL(JI) = IKB + ENDDO +KETL(D%NIB:D%NIE) = MAX( KETL(D%NIB:D%NIE), KLCL(D%NIB:D%NIE) + 2 ) +KETL(D%NIB:D%NIE) = MIN( KETL(D%NIB:D%NIE), KCTL(D%NIB:D%NIE) ) ! ! !* 12.2 If the ETL and CTL are the same detrain updraft mass @@ -439,9 +462,11 @@ KETL(:) = MIN( KETL(:), KCTL(:) ) ! ------------------------------------------------------- ! ZWORK1(:) = 0. -WHERE ( KETL(:) == KCTL(:) ) ZWORK1(:) = 1. +DO JI=D%NIB, D%NIE + IF ( KETL(JI) == KCTL(JI) ) ZWORK1(JI) = 1. +ENDDO ! -DO JI = 1, IIE +DO JI = D%NIB, D%NIE JK = KETL(JI) PUDR(JI,JK) = PUDR(JI,JK) + & ( PUMF(JI,JK) - PUER(JI,JK) ) * ZWORK1(JI) @@ -464,27 +489,25 @@ END DO ! ------------------------------------------------------- ! ZWORK1(:) = 0. -!JK1 = MINVAL( KETL(:) ) -!JK2 = MAXVAL( KCTL(:) ) JK1 = IKB JK2 = IKE DO JK = JK1, JK2 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF( JK > KETL(JI) .AND. JK <= KCTL(JI) ) THEN ZWORK1(JI) = ZWORK1(JI) + PDPRES(JI,JK) END IF END DO END DO ! -DO JI = 1, IIE +DO JI = D%NIB, D%NIE JK = KETL(JI) ZWORK1(JI) = PUMF(JI,JK) / MAX( 1., ZWORK1(JI) ) END DO ! DO JK = JK1 + 1, JK2 JKP = JK - 1 - DO JI = 1, IIE + DO JI = D%NIB, D%NIE IF ( JK > KETL(JI) .AND. JK <= KCTL(JI) ) THEN PUDR(JI,JK) = PDPRES(JI,JK) * ZWORK1(JI) PUMF(JI,JK) = PUMF(JI,JKP) - PUDR(JI,JK) @@ -497,20 +520,19 @@ END DO ! ------------------------------------------------------- ! !IWORK(:) = MIN( KPBL(:), KLCL(:) - 1 ) -IWORK(:) = KPBL(:) -DO JI = 1, IIE +IWORK(D%NIB:D%NIE) = KPBL(D%NIB:D%NIE) +DO JI = D%NIB, D%NIE JK = KDPL(JI) JKP = IWORK(JI) ! mixed layer depth ZWORK2(JI) = PPRES(JI,JK) - PPRES(JI,JKP) + PDPRES(JI,JK) END DO ! -!JKP = MAXVAL( IWORK(:) ) JKP=IKE DO JK = JKM, JKP - DO JI = 1, IIE - IF ( JK >= KDPL(JI) .AND. JK <= IWORK(JI) ) THEN - PUER(JI,JK) = PUER(JI,JK) + PMFLCL(JI) * PDPRES(JI,JK) / ( ZWORK2(JI) + 0.1 ) + DO JI = D%NIB, D%NIE + IF ( JK >= KDPL(JI) .AND. JK <= IWORK(JI) .AND. GTRIG1(JI)) THEN + PUER(JI,JK) = PUER(JI,JK) + PMFLCL * PDPRES(JI,JK) / ( ZWORK2(JI) + 0.1 ) PUMF(JI,JK) = PUMF(JI,JK-1) + PUER(JI,JK) END IF END DO @@ -525,16 +547,20 @@ END DO ! which could produce a thicker cloud. ! --------------------------------------------------- ! -GWORK6(:,:) = SPREAD( OTRIG(:), DIM=2, NCOPIES=KLEV ) -WHERE ( .NOT. GWORK6(:,:) ) - PUMF(:,:) = 0. - PUDR(:,:) = 0. - PUER(:,:) = 0. - PUTHL(:,:) = PTHL(:,:) - PURW(:,:) = PRW(:,:) - PURC(:,:) = 0. - PURI(:,:) = 0. -END WHERE +DO JK=1,D%NKT + DO JI=D%NIB, D%NIE + IF(.NOT. OTRIG(JI))THEN + PUMF(JI,JK) = 0. + PUDR(JI,JK) = 0. + PUER(JI,JK) = 0. + PUTHL(JI,JK) = PTHL(JI,JK) + PURW(JI,JK) = PRW(JI,JK) + PURC(JI,JK) = 0. + PURI(JI,JK) = 0. + ENDIF + ENDDO +ENDDO ! IF (LHOOK) CALL DR_HOOK('CONVECT_UPDRAFT_SHAL',1,ZHOOK_HANDLE) END SUBROUTINE CONVECT_UPDRAFT_SHAL + diff --git a/src/arome/conv/convect_updraft_shal.h b/src/arome/conv/convect_updraft_shal.h new file mode 100644 index 0000000000000000000000000000000000000000..63bc110b329dc7531d6071c625249e1a8cc9a2d8 --- /dev/null +++ b/src/arome/conv/convect_updraft_shal.h @@ -0,0 +1,53 @@ +INTERFACE + +SUBROUTINE CONVECT_UPDRAFT_SHAL( CVP_SHAL, CVPEXT, CST, D, CONVPAR, & +KICE, PPRES, PDPRES, PZ, PTHL, PTHV, PTHES, PRW,& +PTHLCL, PTLCL, PRVLCL, PWLCL, PZLCL, PTHVELCL, & +PMFLCL, OTRIG, KLCL, KDPL, KPBL, & +PUMF, PUER, PUDR, PUTHL, PUTHV, PURW, & +PURC, PURI, PCAPE, KCTL, KETL,GTRIG1 ) +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAR, ONLY : CONVPAR_T +USE MODD_CONVPAR_SHAL, ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +TYPE(CONVPAR_SHAL), INTENT(IN) :: CVP_SHAL +TYPE(CONVPAREXT), INTENT(IN) :: CVPEXT +TYPE(CST_T), INTENT(IN) :: CST +TYPE(DIMPHYEX_T), INTENT(IN) :: D +TYPE(CONVPAR_T), INTENT(IN) :: CONVPAR +INTEGER, INTENT(IN) :: KICE +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHV +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PTHES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PRW +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PPRES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PDPRES +REAL, DIMENSION(D%NIT,D%NKT), INTENT(IN) :: PZ +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTHLCL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTLCL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PRVLCL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PWLCL +REAL, INTENT(IN) :: PMFLCL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PZLCL +REAL, DIMENSION(D%NIT), INTENT(IN) :: PTHVELCL +LOGICAL, DIMENSION(D%NIT), INTENT(INOUT):: OTRIG +LOGICAL, DIMENSION(D%NIT), INTENT(IN):: GTRIG1 +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KLCL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KDPL +INTEGER, DIMENSION(D%NIT), INTENT(IN) :: KPBL +INTEGER, DIMENSION(D%NIT), INTENT(OUT):: KCTL +INTEGER, DIMENSION(D%NIT), INTENT(OUT):: KETL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PUMF +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PUER +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PUDR +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PUTHL +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PUTHV +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PURW +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PURC +REAL, DIMENSION(D%NIT,D%NKT), INTENT(OUT):: PURI +REAL, DIMENSION(D%NIT), INTENT(OUT):: PCAPE +END SUBROUTINE CONVECT_UPDRAFT_SHAL + +END INTERFACE diff --git a/src/arome/conv/deep_convection.F90 b/src/arome/conv/deep_convection.F90 index e459cef3c0c7ca5c5da09298a263e9404da30478..58610446d69ddd89efaf0ff932e32583b2943265 100644 --- a/src/arome/conv/deep_convection.F90 +++ b/src/arome/conv/deep_convection.F90 @@ -10,8 +10,7 @@ OCH1CONV, KCH1, PCH1, PCH1TEN, & OUSECHEM, OCH_CONV_SCAV, OCH_CONV_LINOX, & ODUST, OSALT, PRHODREF, PIC_RATE, PCG_RATE ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################ ! !!**** Monitor routine to compute all convective tendencies by calls @@ -325,7 +324,7 @@ REAL, DIMENSION(:),ALLOCATABLE :: ZIC_RATE,ZCG_RATE !* 0.3 Compute loop bounds ! ------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DEEP_CONVECTION',0,ZHOOK_HANDLE) IIB = KIDIA IIE = KFDIA diff --git a/src/arome/conv/ini_convpar.F90 b/src/arome/conv/ini_convpar.F90 index 16ab5ca90480685de18d1d9fa21c918f46818019..6b2f0cd0fb8d1e996a93215dd2f8bd2ecb50fb5b 100644 --- a/src/arome/conv/ini_convpar.F90 +++ b/src/arome/conv/ini_convpar.F90 @@ -1,93 +1,3 @@ -! ######spl - SUBROUTINE INI_CONVPAR - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK -! ###################### -! -!!**** *INI_CONVPAR * - routine to initialize the constants modules -!! -!! PURPOSE -!! ------- -! The purpose of this routine is to initialize the constants -! stored in modules MODD_CONVPAR, MODD_CST, MODD_CONVPAREXT. -! -! -!!** METHOD -!! ------ -!! The deep convection constants are set to their numerical values -!! -!! -!! EXTERNAL -!! -------- -!! -!! IMPLICIT ARGUMENTS -!! ------------------ -!! Module MODD_CONVPAR : contains deep convection constants -!! -!! REFERENCE -!! --------- -!! Book2 of the documentation (module MODD_CONVPAR, routine INI_CONVPAR) -!! -!! -!! AUTHOR -!! ------ -!! P. BECHTOLD * Laboratoire d'Aerologie * -!! -!! MODIFICATIONS -!! ------------- -!! Original 26/03/96 -!! Last modified 15/04/98 adapted for ARPEGE -!------------------------------------------------------------------------------- -! -!* 0. DECLARATIONS -! ------------ -! -USE MODD_CONVPAR, ONLY : XA25, XCDEPTH, XCRAD, XENTR, XMELDPTH, XNHGAM, XRCONV, XRHDBC, XSTABC, & -& XSTABT, XTFRZ1, XTFRZ2, XUSRDPTH, XUVDP, XWTRIG, XZLCL, XZPBL - -! -IMPLICIT NONE -! -!------------------------------------------------------------------------------- -! -!* 1. Set the thermodynamical and numerical constants for -! the deep convection parameterization -! --------------------------------------------------- -! -! -REAL(KIND=JPRB) :: ZHOOK_HANDLE -IF (LHOOK) CALL DR_HOOK('INI_CONVPAR',0,ZHOOK_HANDLE) -XA25 = 625.E6 ! 25 km x 25 km reference grid area -! -XCRAD = 1500. ! cloud radius -XCDEPTH = 2.5E3 ! minimum necessary cloud depth -XENTR = 0.03 ! entrainment constant (m/Pa) = 0.2 (m) -! -XZLCL = 3.5E3 ! maximum allowed allowed height - ! difference between the surface and the LCL -XZPBL = 60.E2 ! minimum mixed layer depth to sustain convection -XWTRIG = 6.00 ! constant in vertical velocity trigger -! -! -XNHGAM = 1.3333 ! accounts for non-hydrost. pressure - ! in buoyancy term of w equation - ! = 2 / (1+gamma) -XTFRZ1 = 268.16 ! begin of freezing interval -XTFRZ2 = 248.16 ! end of freezing interval -! -XRHDBC = 0.9 ! relative humidity below cloud in downdraft - -XRCONV = 0.015 ! constant in precipitation conversion -XSTABT = 0.75 ! factor to assure stability in fractional time - ! integration, routine CONVECT_CLOSURE -XSTABC = 0.95 ! factor to assure stability in CAPE adjustment, - ! routine CONVECT_CLOSURE -XUSRDPTH = 165.E2 ! pressure thickness used to compute updraft - ! moisture supply rate for downdraft -XMELDPTH = 100.E2 ! layer (Pa) through which precipitation melt is - ! allowed below downdraft -XUVDP = 0.7 ! constant for pressure perturb in momentum transport -! -! -IF (LHOOK) CALL DR_HOOK('INI_CONVPAR',1,ZHOOK_HANDLE) -END SUBROUTINE INI_CONVPAR +SUBROUTINE INI_CONVPAR +STOP "INI_CONVPAR should not be called" +END diff --git a/src/arome/conv/ini_convpar.h b/src/arome/conv/ini_convpar.h new file mode 100644 index 0000000000000000000000000000000000000000..d8766f2c2f44e82b878cc7ee86e3a9ee15c46a7a --- /dev/null +++ b/src/arome/conv/ini_convpar.h @@ -0,0 +1,92 @@ +! ######spl + SUBROUTINE INI_CONVPAR(CONVPAR) + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK +! ###################### +! +!!**** *INI_CONVPAR * - routine to initialize the constants modules +!! +!! PURPOSE +!! ------- +! The purpose of this routine is to initialize the constants +! stored in modules MODD_CONVPAR, MODD_CST, MODD_CONVPAREXT. +! +! +!!** METHOD +!! ------ +!! The deep convection constants are set to their numerical values +!! +!! +!! EXTERNAL +!! -------- +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +!! Module MODD_CONVPAR : contains deep convection constants +!! +!! REFERENCE +!! --------- +!! Book2 of the documentation (module MODD_CONVPAR, routine INI_CONVPAR) +!! +!! +!! AUTHOR +!! ------ +!! P. BECHTOLD * Laboratoire d'Aerologie * +!! +!! MODIFICATIONS +!! ------------- +!! Original 26/03/96 +!! Last modified 15/04/98 adapted for ARPEGE +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +! +USE MODD_CONVPAR, ONLY : CONVPAR_T +IMPLICIT NONE +TYPE(CONVPAR_T), INTENT(INOUT) :: CONVPAR + +! +! +!------------------------------------------------------------------------------- +! +!* 1. Set the thermodynamical and numerical constants for +! the deep convection parameterization +! --------------------------------------------------- +! +! +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR',0,ZHOOK_HANDLE) +CONVPAR%XA25 = 625.E6 ! 25 km x 25 km reference grid area +! +CONVPAR%XCRAD = 1500. ! cloud radius +CONVPAR%XCDEPTH = 2.5E3 ! minimum necessary cloud depth +CONVPAR%XENTR = 0.03 ! entrainment constant (m/Pa) = 0.2 (m) +! +CONVPAR%XZLCL = 3.5E3 ! maximum allowed allowed height + ! difference between the surface and the LCL +CONVPAR%XZPBL = 60.E2 ! minimum mixed layer depth to sustain convection +CONVPAR%XWTRIG = 6.00 ! constant in vertical velocity trigger +! +! +CONVPAR%XNHGAM = 1.3333 ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +CONVPAR%XTFRZ1 = 268.16 ! begin of freezing interval +CONVPAR%XTFRZ2 = 248.16 ! end of freezing interval +! +CONVPAR%XRHDBC = 0.9 ! relative humidity below cloud in downdraft + +CONVPAR%XRCONV = 0.015 ! constant in precipitation conversion +CONVPAR%XSTABT = 0.75 ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +CONVPAR%XSTABC = 0.95 ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +CONVPAR%XUSRDPTH = 165.E2 ! pressure thickness used to compute updraft + ! moisture supply rate for downdraft +CONVPAR%XMELDPTH = 100.E2 ! layer (Pa) through which precipitation melt is + ! allowed below downdraft +CONVPAR%XUVDP = 0.7 ! constant for pressure perturb in momentum transport +! +! +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR',1,ZHOOK_HANDLE) +END SUBROUTINE INI_CONVPAR diff --git a/src/arome/conv/ini_convpar_e1.F90 b/src/arome/conv/ini_convpar_e1.F90 index 5e5473b5fad6a71f6de19b6ecc733f223af423d9..a6c8b06c9fa47e823066a58e658ab554220f81e8 100644 --- a/src/arome/conv/ini_convpar_e1.F90 +++ b/src/arome/conv/ini_convpar_e1.F90 @@ -1,7 +1,6 @@ ! ######spl SUBROUTINE INI_CONVPAR_E1 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################### ! !!**** *INI_CONVPAR * - routine to initialize the convective constants modules @@ -54,7 +53,7 @@ IMPLICIT NONE ! --------------------------------------------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('INI_CONVPAR_E1',0,ZHOOK_HANDLE) XA25 = 625.E6 ! 25 km x 25 km reference grid area ! diff --git a/src/arome/conv/ini_convpar_shal.F90 b/src/arome/conv/ini_convpar_shal.F90 index 959fd7d2a390e4b7259bb9fef788343ecef36fe8..a30c0996a89fcf83763cf3aa8a02d9f5b504e748 100644 --- a/src/arome/conv/ini_convpar_shal.F90 +++ b/src/arome/conv/ini_convpar_shal.F90 @@ -1,7 +1,6 @@ ! ######spl SUBROUTINE INI_CONVPAR_SHAL - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################### ! !!**** *INI_CONVPAR * - routine to initialize the constants modules @@ -54,7 +53,7 @@ IMPLICIT NONE ! --------------------------------------------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('INI_CONVPAR_SHAL',0,ZHOOK_HANDLE) XA25 = 625.E6 ! 25 km x 25 km reference grid area ! diff --git a/src/arome/conv/modd_convpar.F90 b/src/arome/conv/modd_convpar.F90 index 8a6717d0fa4432f5eaa17bd1e6ee328023fa096c..0fdece532687c9c9d32db00e6ff29889bbcef378 100644 --- a/src/arome/conv/modd_convpar.F90 +++ b/src/arome/conv/modd_convpar.F90 @@ -33,35 +33,200 @@ ! IMPLICIT NONE ! -REAL, SAVE :: XA25 ! 25 km x 25 km reference grid area -! -REAL, SAVE :: XCRAD ! cloud radius -REAL, SAVE :: XCDEPTH ! minimum necessary cloud depth -REAL, SAVE :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) -! -REAL, SAVE :: XZLCL ! maximum allowed allowed height - ! difference between departure level and surface -REAL, SAVE :: XZPBL ! minimum mixed layer depth to sustain convection -REAL, SAVE :: XWTRIG ! constant in vertical velocity trigger -! -! -REAL, SAVE :: XNHGAM ! accounts for non-hydrost. pressure - ! in buoyancy term of w equation - ! = 2 / (1+gamma) -REAL, SAVE :: XTFRZ1 ! begin of freezing interval -REAL, SAVE :: XTFRZ2 ! end of freezing interval -! -REAL, SAVE :: XRHDBC ! relative humidity below cloud in downdraft -! -REAL, SAVE :: XRCONV ! constant in precipitation conversion -REAL, SAVE :: XSTABT ! factor to assure stability in fractional time - ! integration, routine CONVECT_CLOSURE -REAL, SAVE :: XSTABC ! factor to assure stability in CAPE adjustment, - ! routine CONVECT_CLOSURE -REAL, SAVE :: XUSRDPTH ! pressure thickness used to compute updraft - ! moisture supply rate for downdraft -REAL, SAVE :: XMELDPTH ! layer (Pa) through which precipitation melt is - ! allowed below melting level -REAL, SAVE :: XUVDP ! constant for pressure perturb in momentum transport +TYPE CONVPAR_T +REAL :: XA25 ! 25 km x 25 km reference grid area +! +REAL :: XCRAD ! cloud radius +REAL :: XCDEPTH ! minimum necessary cloud depth +REAL :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) +! +REAL :: XZLCL ! maximum allowed allowed height + ! difference between departure level and surface +REAL :: XZPBL ! minimum mixed layer depth to sustain convection +REAL :: XWTRIG ! constant in vertical velocity trigger +! +! +REAL :: XNHGAM ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +REAL :: XTFRZ1 ! begin of freezing interval +REAL :: XTFRZ2 ! end of freezing interval +! +REAL :: XRHDBC ! relative humidity below cloud in downdraft +! +REAL :: XRCONV ! constant in precipitation conversion +REAL :: XSTABT ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +REAL :: XSTABC ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +REAL :: XUSRDPTH ! pressure thickness used to compute updraft + ! moisture supply rate for downdraft +REAL :: XMELDPTH ! layer (Pa) through which precipitation melt is + ! allowed below melting level +REAL :: XUVDP ! constant for pressure perturb in momentum transport +END TYPE CONVPAR_T + +!Keep global variables for parts of the code not ported to the type yet +REAL :: XA25 ! 25 km x 25 km reference grid area +! +REAL :: XCRAD ! cloud radius +REAL :: XCDEPTH ! minimum necessary cloud depth +REAL :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) +! +REAL :: XZLCL ! maximum allowed allowed height + ! difference between departure level and surface +REAL :: XZPBL ! minimum mixed layer depth to sustain convection +REAL :: XWTRIG ! constant in vertical velocity trigger +! +! +REAL :: XNHGAM ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +REAL :: XTFRZ1 ! begin of freezing interval +REAL :: XTFRZ2 ! end of freezing interval +! +REAL :: XRHDBC ! relative humidity below cloud in downdraft +! +REAL :: XRCONV ! constant in precipitation conversion +REAL :: XSTABT ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +REAL :: XSTABC ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +REAL :: XUSRDPTH ! pressure thickness used to compute updraft + ! moisture supply rate for downdraft +REAL :: XMELDPTH ! layer (Pa) through which precipitation melt is + ! allowed below melting level +REAL :: XUVDP ! constant for pressure perturb in momentum transport + +INTERFACE INI_CONVPAR + MODULE PROCEDURE INI_CONVPAR0 + MODULE PROCEDURE INI_CONVPAR1 +END INTERFACE + + + +CONTAINS + + +SUBROUTINE INI_CONVPAR1 (CONVPAR) + +USE YOMHOOK , ONLY : LHOOK, JPHOOK, DR_HOOK + +TYPE (CONVPAR_T), INTENT (OUT) :: CONVPAR + +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR1',0,ZHOOK_HANDLE) + +CONVPAR%XA25 = XA25 +CONVPAR%XCRAD = XCRAD +CONVPAR%XCDEPTH = XCDEPTH +CONVPAR%XENTR = XENTR +CONVPAR%XZLCL = XZLCL +CONVPAR%XZPBL = XZPBL +CONVPAR%XWTRIG = XWTRIG +CONVPAR%XNHGAM = XNHGAM +CONVPAR%XTFRZ1 = XTFRZ1 +CONVPAR%XTFRZ2 = XTFRZ2 +CONVPAR%XRHDBC = XRHDBC +CONVPAR%XRCONV = XRCONV +CONVPAR%XSTABT = XSTABT +CONVPAR%XSTABC = XSTABC +CONVPAR%XUSRDPTH = XUSRDPTH +CONVPAR%XMELDPTH = XMELDPTH +CONVPAR%XUVDP = XUVDP + +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR1',1,ZHOOK_HANDLE) + +END SUBROUTINE INI_CONVPAR1 + +SUBROUTINE INI_CONVPAR0 +USE YOMHOOK , ONLY : LHOOK, JPHOOK, DR_HOOK +! ###################### +! +!!**** *INI_CONVPAR * - routine to initialize the constants modules +!! +!! PURPOSE +!! ------- +! The purpose of this routine is to initialize the constants +! stored in modules MODD_CONVPAR, MODD_CST, MODD_CONVPAREXT. +! +! +!!** METHOD +!! ------ +!! The deep convection constants are set to their numerical values +!! +!! +!! EXTERNAL +!! -------- +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +!! Module MODD_CONVPAR : contains deep convection constants +!! +!! REFERENCE +!! --------- +!! Book2 of the documentation (module MODD_CONVPAR, routine INI_CONVPAR) +!! +!! +!! AUTHOR +!! ------ +!! P. BECHTOLD * Laboratoire d'Aerologie * +!! +!! MODIFICATIONS +!! ------------- +!! Original 26/03/96 +!! Last modified 15/04/98 adapted for ARPEGE +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +! +! +IMPLICIT NONE +! +!------------------------------------------------------------------------------- +! +!* 1. Set the thermodynamical and numerical constants for +! the deep convection parameterization +! --------------------------------------------------- +! +! +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR0',0,ZHOOK_HANDLE) +XA25 = 625.E6 ! 25 km x 25 km reference grid area +! +XCRAD = 1500. ! cloud radius +XCDEPTH = 2.5E3 ! minimum necessary cloud depth +XENTR = 0.03 ! entrainment constant (m/Pa) = 0.2 (m) +! +XZLCL = 3.5E3 ! maximum allowed allowed height + ! difference between the surface and the LCL +XZPBL = 60.E2 ! minimum mixed layer depth to sustain convection +XWTRIG = 6.00 ! constant in vertical velocity trigger +! +! +XNHGAM = 1.3333 ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +XTFRZ1 = 268.16 ! begin of freezing interval +XTFRZ2 = 248.16 ! end of freezing interval +! +XRHDBC = 0.9 ! relative humidity below cloud in downdraft + +XRCONV = 0.015 ! constant in precipitation conversion +XSTABT = 0.75 ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +XSTABC = 0.95 ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +XUSRDPTH = 165.E2 ! pressure thickness used to compute updraft + ! moisture supply rate for downdraft +XMELDPTH = 100.E2 ! layer (Pa) through which precipitation melt is + ! allowed below downdraft +XUVDP = 0.7 ! constant for pressure perturb in momentum transport +! +! +IF (LHOOK) CALL DR_HOOK('INI_CONVPAR0',1,ZHOOK_HANDLE) +END SUBROUTINE INI_CONVPAR0 ! END MODULE MODD_CONVPAR diff --git a/src/arome/conv/modd_convpar_shal.F90 b/src/arome/conv/modd_convpar_shal.F90 index e79e422440db829938741f724fef523cc3a1ea8a..82a7a53a7f12fa251004ebac8f5f33266d049b24 100644 --- a/src/arome/conv/modd_convpar_shal.F90 +++ b/src/arome/conv/modd_convpar_shal.F90 @@ -34,36 +34,70 @@ ! IMPLICIT NONE ! -REAL, SAVE :: XA25 ! 25 km x 25 km reference grid area -! -REAL, SAVE :: XCRAD ! cloud radius -REAL, SAVE :: XCTIME_SHAL ! convective adjustment time -REAL, SAVE :: XCDEPTH ! minimum necessary cloud depth -REAL, SAVE :: XCDEPTH_D ! maximum allowed cloud thickness -REAL, SAVE :: XDTPERT ! add small Temp perturb. at LCL -REAL, SAVE :: XATPERT ! Parameter for temp Perturb -REAL, SAVE :: XBTPERT ! Parameter for temp Perturb - ! (XATPERT* TKE/Cp + XBTPERT) * XDTPERT -REAL, SAVE :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) -! -REAL, SAVE :: XZLCL ! maximum allowed allowed height - ! difference between departure level and surface -REAL, SAVE :: XZPBL ! minimum mixed layer depth to sustain convection -REAL, SAVE :: XWTRIG ! constant in vertical velocity trigger -! -! -REAL, SAVE :: XNHGAM ! accounts for non-hydrost. pressure - ! in buoyancy term of w equation - ! = 2 / (1+gamma) -REAL, SAVE :: XTFRZ1 ! begin of freezing interval -REAL, SAVE :: XTFRZ2 ! end of freezing interval -! -! -REAL, SAVE :: XSTABT ! factor to assure stability in fractional time - ! integration, routine CONVECT_CLOSURE -REAL, SAVE :: XSTABC ! factor to assure stability in CAPE adjustment, - ! routine CONVECT_CLOSURE -REAL, SAVE :: XAW,XBW ! Parameters for WLCL = XAW * W + XBW -LOGICAL, SAVE :: LLSMOOTH ! Default=TRUE but not necessary +TYPE CONVPAR_SHAL +REAL :: XA25 ! 25 km x 25 km reference grid area +! +REAL :: XCRAD ! cloud radius +REAL :: XCTIME_SHAL ! convective adjustment time +REAL :: XCDEPTH ! minimum necessary cloud depth +REAL :: XCDEPTH_D ! maximum allowed cloud thickness +REAL :: XDTPERT ! add small Temp perturb. at LCL +REAL :: XATPERT ! Parameter for temp Perturb +REAL :: XBTPERT ! Parameter for temp Perturb + ! (XATPERT* TKE/Cp + XBTPERT) * XDTPERT +REAL :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) +! +REAL :: XZLCL ! maximum allowed allowed height + ! difference between departure level and surface +REAL :: XZPBL ! minimum mixed layer depth to sustain convection +REAL :: XWTRIG ! constant in vertical velocity trigger +! +! +REAL :: XNHGAM ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +REAL :: XTFRZ1 ! begin of freezing interval +REAL :: XTFRZ2 ! end of freezing interval +! +! +REAL :: XSTABT ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +REAL :: XSTABC ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +REAL :: XAW,XBW ! Parameters for WLCL = XAW * W + XBW +LOGICAL :: LLSMOOTH ! Default=TRUE but not necessary +END TYPE CONVPAR_SHAL +!Keep global variables for parts of the code not ported to the type ye +REAL :: XA25 ! 25 km x 25 km reference grid area +! +REAL :: XCRAD ! cloud radius +REAL :: XCTIME_SHAL ! convective adjustment time +REAL :: XCDEPTH ! minimum necessary cloud depth +REAL :: XCDEPTH_D ! maximum allowed cloud thickness +REAL :: XDTPERT ! add small Temp perturb. at LCL +REAL :: XATPERT ! Parameter for temp Perturb +REAL :: XBTPERT ! Parameter for temp Perturb + ! (XATPERT* TKE/Cp + XBTPERT) * XDTPERT +REAL :: XENTR ! entrainment constant (m/Pa) = 0.2 (m) +! +REAL :: XZLCL ! maximum allowed allowed height + ! difference between departure level and surface +REAL :: XZPBL ! minimum mixed layer depth to sustain convection +REAL :: XWTRIG ! constant in vertical velocity trigger +! +! +REAL :: XNHGAM ! accounts for non-hydrost. pressure + ! in buoyancy term of w equation + ! = 2 / (1+gamma) +REAL :: XTFRZ1 ! begin of freezing interval +REAL :: XTFRZ2 ! end of freezing interval +! +! +REAL :: XSTABT ! factor to assure stability in fractional time + ! integration, routine CONVECT_CLOSURE +REAL :: XSTABC ! factor to assure stability in CAPE adjustment, + ! routine CONVECT_CLOSURE +REAL :: XAW,XBW ! Parameters for WLCL = XAW * W + XBW +LOGICAL :: LLSMOOTH ! Default=TRUE but not necessary ! END MODULE MODD_CONVPAR_SHAL diff --git a/src/arome/conv/modd_convparext.F90 b/src/arome/conv/modd_convparext.F90 index 9d869bdf28cda819b91ca208b42a400ff95dcba0..578d9852d588f69487c068384599d51d936f6c4c 100644 --- a/src/arome/conv/modd_convparext.F90 +++ b/src/arome/conv/modd_convparext.F90 @@ -4,9 +4,16 @@ ! IMPLICIT NONE ! -INTEGER, SAVE :: JCVEXB ! start vertical computations at +TYPE CONVPAREXT +INTEGER :: JCVEXB ! start vertical computations at ! 1 + JCVEXB = 1 + ( KBDIA - 1 ) -INTEGER, SAVE :: JCVEXT ! limit vertical computations to +INTEGER :: JCVEXT ! limit vertical computations to + ! KLEV - JCVEXT = KLEV - ( KTDIA - 1 ) +END TYPE CONVPAREXT +!Keep global variables for parts of the code not ported to the type ye +INTEGER :: JCVEXB ! start vertical computations at + ! 1 + JCVEXB = 1 + ( KBDIA - 1 ) +INTEGER :: JCVEXT ! limit vertical computations to ! KLEV - JCVEXT = KLEV - ( KTDIA - 1 ) ! END MODULE MODD_CONVPAREXT diff --git a/src/arome/conv/mode_ini_convpar.F90 b/src/arome/conv/mode_ini_convpar.F90 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/arome/conv/shallow_convection.F90 b/src/arome/conv/shallow_convection.F90 index ba40743d07d5acfa98fb831b4e1111ff2f315773..3b9766dee6b863717fc902401da56279262b8c8a 100644 --- a/src/arome/conv/shallow_convection.F90 +++ b/src/arome/conv/shallow_convection.F90 @@ -1,13 +1,11 @@ ! ######spl - SUBROUTINE SHALLOW_CONVECTION( KLON, KLEV, KIDIA, KFDIA, KBDIA, KTDIA, & - PDTCONV, KICE, OSETTADJ, PTADJS, & - PPABST, PZZ, PTKECLS, & - PTT, PRVT, PRCT, PRIT, PWT, & - PTTEN, PRVTEN, PRCTEN, PRITEN, & - KCLTOP, KCLBAS, PUMF, & - OCH1CONV, KCH1, PCH1, PCH1TEN ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + SUBROUTINE SHALLOW_CONVECTION(CVP_SHAL, CST, D, NSV, CONVPAR, KBDIA, KTDIA, & + KICE, OSETTADJ, PTADJS, PPABST, PZZ, & + PTKECLS, PTT, PRVT, PRCT, PRIT, PWT, & + PTTEN, PRVTEN, PRCTEN, PRITEN, & + KCLTOP, KCLBAS, PUMF, OCH1CONV, KCH1,& + PCH1, PCH1TEN) + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################### ! !!**** Monitor routine to compute all convective tendencies by calls @@ -94,10 +92,15 @@ !* 0. DECLARATIONS ! ------------ ! -USE MODD_CST, ONLY : XALPW, XBETAW, XCI, XCL, XCPD, XCPV, XG, XGAMW, XLSTT, XLVTT, XP00, XRD, XRV, XTT -USE MODD_CONVPAREXT, ONLY : JCVEXB, JCVEXT -USE MODD_CONVPAR_SHAL, ONLY : LLSMOOTH, XA25, XCTIME_SHAL -USE MODD_NSV, ONLY : NSV_LGBEG,NSV_LGEND +USE MODD_CST, ONLY : CST_T +USE MODD_CONVPAREXT, ONLY : CONVPAREXT +USE MODD_CONVPAR, ONLY: CONVPAR_T +USE MODD_CONVPAR_SHAL, ONLY: CONVPAR_SHAL +USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T +USE MODD_NSV, ONLY: NSV_T +USE MODI_SHALLOW_CONVECTION_PART1 +USE MODI_SHALLOW_CONVECTION_PART2 +USE MODI_SHALLOW_CONVECTION_PART2_SELECT ! ! IMPLICIT NONE @@ -105,152 +108,72 @@ IMPLICIT NONE !* 0.1 Declarations of dummy arguments : ! ! -INTEGER, INTENT(IN) :: KLON ! horizontal dimension -INTEGER, INTENT(IN) :: KLEV ! vertical dimension -INTEGER, INTENT(IN) :: KIDIA ! value of the first point in x -INTEGER, INTENT(IN) :: KFDIA ! value of the last point in x -INTEGER, INTENT(IN) :: KBDIA ! vertical computations start at -! ! KBDIA that is at least 1 -INTEGER, INTENT(IN) :: KTDIA ! vertical computations can be - ! limited to KLEV + 1 - KTDIA - ! default=1 -REAL, INTENT(IN) :: PDTCONV ! Interval of time between two - ! calls of the deep convection - ! scheme -INTEGER, INTENT(IN) :: KICE ! flag for ice ( 1 = yes, - ! 0 = no ice ) -LOGICAL, INTENT(IN) :: OSETTADJ ! logical to set convective - ! adjustment time by user -REAL, INTENT(IN) :: PTADJS ! user defined adjustment time -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PTT ! grid scale temperature at t -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PRVT ! grid scale water vapor " -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PRCT ! grid scale r_c " -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PRIT ! grid scale r_i " -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PWT ! grid scale vertical - ! velocity (m/s) -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PPABST ! grid scale pressure at t -REAL, DIMENSION(KLON,KLEV), INTENT(IN) :: PZZ ! height of model layer (m) -REAL, DIMENSION(KLON), INTENT(IN) :: PTKECLS ! TKE in the CLS (m2/s2) -! -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PTTEN ! convective temperature - ! tendency (K/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PRVTEN ! convective r_v tendency (1/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PRCTEN ! convective r_c tendency (1/s) -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PRITEN ! convective r_i tendency (1/s) -INTEGER, DIMENSION(KLON), INTENT(INOUT):: KCLTOP ! cloud top level -INTEGER, DIMENSION(KLON), INTENT(INOUT):: KCLBAS ! cloud base level +TYPE(CONVPAR_SHAL) ,INTENT(IN) :: CVP_SHAL +TYPE(CST_T) ,INTENT(IN) :: CST +TYPE(DIMPHYEX_T) ,INTENT(IN) :: D +TYPE(NSV_T) ,INTENT(IN) :: NSV +TYPE(CONVPAR_T) ,INTENT(IN) :: CONVPAR +INTEGER ,INTENT(IN) :: KBDIA ! vertical computations start at +! ! KBDIA that is at least 1 +INTEGER ,INTENT(IN) :: KTDIA ! vertical computations can be + ! limited to D%NKT + 1 - KTDIA + ! default=1 + ! scheme +INTEGER ,INTENT(IN) :: KICE ! flag for ice ( 1 = yes, + ! 0 = no ice ) +LOGICAL ,INTENT(IN) :: OSETTADJ ! logical to set convective + ! adjustment time by user +REAL ,INTENT(IN) :: PTADJS ! user defined adjustment time +REAL ,INTENT(IN) :: PPABST(D%NIT,D%NKT) ! grid scale pressure at t +REAL ,INTENT(IN) :: PZZ(D%NIT,D%NKT) ! height of model layer (m) +REAL ,INTENT(IN) :: PTKECLS(D%NIT) ! TKE in the CLS (m2/s2) +REAL ,INTENT(IN) :: PTT(D%NIT,D%NKT) ! grid scale temperature at t +REAL ,INTENT(IN) :: PRVT(D%NIT,D%NKT) ! grid scale water vapor " +REAL ,INTENT(IN) :: PRCT(D%NIT,D%NKT) ! grid scale r_c " +REAL ,INTENT(IN) :: PRIT(D%NIT,D%NKT) ! grid scale r_i " +REAL ,INTENT(IN) :: PWT(D%NIT,D%NKT) ! grid scale vertical + ! velocity (m/s) +! +REAL ,INTENT(INOUT) :: PTTEN(D%NIT,D%NKT) ! convective temperature + ! tendency (K/s) +REAL ,INTENT(INOUT) :: PRVTEN(D%NIT,D%NKT) ! convective r_v tendency (1/s) +REAL ,INTENT(INOUT) :: PRCTEN(D%NIT,D%NKT) ! convective r_c tendency (1/s) +REAL ,INTENT(INOUT) :: PRITEN(D%NIT,D%NKT) ! convective r_i tendency (1/s) +INTEGER ,INTENT(INOUT) :: KCLTOP(D%NIT) ! cloud top level +INTEGER ,INTENT(INOUT) :: KCLBAS(D%NIT) ! cloud base level ! they are given a value of ! 0 if no convection -REAL, DIMENSION(KLON,KLEV), INTENT(INOUT):: PUMF ! updraft mass flux (kg/s m2) +REAL ,INTENT(INOUT) :: PUMF(D%NIT,D%NKT) ! updraft mass flux (kg/s m2) ! -LOGICAL, INTENT(IN) :: OCH1CONV ! include tracer transport -INTEGER, INTENT(IN) :: KCH1 ! number of species -REAL, DIMENSION(KLON,KLEV,KCH1), INTENT(IN) :: PCH1! grid scale chemical species -REAL, DIMENSION(KLON,KLEV,KCH1), INTENT(INOUT):: PCH1TEN! species conv. tendency (1/s) +LOGICAL ,INTENT(IN) :: OCH1CONV ! include tracer transport +INTEGER ,INTENT(IN) :: KCH1 ! number of species +REAL ,INTENT(IN) :: PCH1(D%NIT,D%NKT,KCH1)! grid scale chemical species +REAL ,INTENT(INOUT) :: PCH1TEN(D%NIT,D%NKT,KCH1)! species conv. tendency (1/s) ! ! !* 0.2 Declarations of local fixed memory variables : ! -INTEGER :: ITEST, ICONV ! number of convective columns -INTEGER :: IIB, IIE ! horizontal loop bounds -INTEGER :: IKB, IKE ! vertical loop bounds -INTEGER :: IKS ! vertical dimension -INTEGER :: JI, JL ! horizontal loop index -INTEGER :: JN ! number of tracers -INTEGER :: JK, JKM, JKP ! vertical loop index -INTEGER :: IFTSTEPS ! only used for chemical tracers -REAL :: ZEPS, ZEPSA ! R_d / R_v, R_v / R_d +INTEGER :: ICONV REAL :: ZRDOCP ! R_d/C_p ! -LOGICAL, DIMENSION(KLON, KLEV) :: GTRIG3 ! 3D logical mask for convection -LOGICAL, DIMENSION(KLON) :: GTRIG ! 2D logical mask for trigger test -REAL, DIMENSION(KLON,KLEV) :: ZTHT, ZSTHV, ZSTHES ! grid scale theta, theta_v -REAL, DIMENSION(KLON) :: ZWORK2, ZWORK2B ! work array -REAL :: ZW1 ! work variable +REAL :: ZTHT(D%NIT,D%NKT), ZSTHV(D%NIT,D%NKT), ZSTHES(D%NIT,D%NKT) ! grid scale theta, theta_v ! ! !* 0.2 Declarations of local allocatable variables : ! -INTEGER, DIMENSION(:),ALLOCATABLE :: IDPL ! index for parcel departure level -INTEGER, DIMENSION(:),ALLOCATABLE :: IPBL ! index for source layer top -INTEGER, DIMENSION(:),ALLOCATABLE :: ILCL ! index for lifting condensation level -INTEGER, DIMENSION(:),ALLOCATABLE :: IETL ! index for zero buoyancy level -INTEGER, DIMENSION(:),ALLOCATABLE :: ICTL ! index for cloud top level -INTEGER, DIMENSION(:),ALLOCATABLE :: ILFS ! index for level of free sink -! -INTEGER, DIMENSION(:), ALLOCATABLE :: ISDPL ! index for parcel departure level -INTEGER, DIMENSION(:),ALLOCATABLE :: ISPBL ! index for source layer top -INTEGER, DIMENSION(:), ALLOCATABLE :: ISLCL ! index for lifting condensation level -REAL, DIMENSION(:), ALLOCATABLE :: ZSTHLCL ! updraft theta at LCL/L -REAL, DIMENSION(:), ALLOCATABLE :: ZSTLCL ! updraft temp. at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZSRVLCL ! updraft rv at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZSWLCL ! updraft w at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZSZLCL ! LCL height -REAL, DIMENSION(:), ALLOCATABLE :: ZSTHVELCL! envir. theta_v at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZSDXDY ! grid area (m^2) -! -! grid scale variables -REAL, DIMENSION(:,:), ALLOCATABLE :: ZZ ! height of model layer (m) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZPRES ! grid scale pressure -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDPRES ! pressure difference between - ! bottom and top of layer (Pa) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZW ! grid scale vertical velocity on theta grid -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTT ! temperature -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTH ! grid scale theta -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTHV ! grid scale theta_v -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTHL ! grid scale enthalpy (J/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTHES, ZTHEST ! grid scale saturated theta_e -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRW ! grid scale total water (kg/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRV ! grid scale water vapor (kg/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRC ! grid scale cloud water (kg/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRI ! grid scale cloud ice (kg/kg) -REAL, DIMENSION(:), ALLOCATABLE :: ZDXDY ! grid area (m^2) -! -! updraft variables -REAL, DIMENSION(:,:), ALLOCATABLE :: ZUMF ! updraft mass flux (kg/s) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZUER ! updraft entrainment (kg/s) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZUDR ! updraft detrainment (kg/s) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZUTHL ! updraft enthalpy (J/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZUTHV ! updraft theta_v (K) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZURW ! updraft total water (kg/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZURC ! updraft cloud water (kg/kg) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZURI ! updraft cloud ice (kg/kg) -REAL, DIMENSION(:), ALLOCATABLE :: ZMFLCL ! cloud base unit mass flux(kg/s) -REAL, DIMENSION(:), ALLOCATABLE :: ZCAPE ! available potent. energy -REAL, DIMENSION(:), ALLOCATABLE :: ZTHLCL ! updraft theta at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZTLCL ! updraft temp. at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZRVLCL ! updraft rv at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZWLCL ! updraft w at LCL -REAL, DIMENSION(:), ALLOCATABLE :: ZZLCL ! LCL height -REAL, DIMENSION(:), ALLOCATABLE :: ZTHVELCL! envir. theta_v at LCL -! -! downdraft variables -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDMF ! downdraft mass flux (kg/s) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDER ! downdraft entrainment (kg/s) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDDR ! downdraft detrainment (kg/s) +INTEGER :: ISDPL(D%NIT) ! index for parcel departure level +INTEGER :: ISPBL(D%NIT) ! index for source layer top +INTEGER :: ISLCL(D%NIT) ! index for lifting condensation level +REAL :: ZSTHLCL(D%NIT) ! updraft theta at LCL/L +REAL :: ZSTLCL(D%NIT) ! updraft temp. at LCL +REAL :: ZSRVLCL(D%NIT) ! updraft rv at LCL +REAL :: ZSWLCL(D%NIT) ! updraft w at LCL +REAL :: ZSZLCL(D%NIT) ! LCL height +REAL :: ZSTHVELCL(D%NIT)! envir. theta_v at LCL ! -! closure variables -REAL, DIMENSION(:,:), ALLOCATABLE :: ZLMASS ! mass of model layer (kg) -REAL, DIMENSION(:), ALLOCATABLE :: ZTIMEC ! advective time period +LOGICAL :: GTRIG1(D%NIT) ! logical mask for convection ! -REAL, DIMENSION(:,:), ALLOCATABLE :: ZTHC ! conv. adj. grid scale theta -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRVC ! conv. adj. grid scale r_w -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRCC ! conv. adj. grid scale r_c -REAL, DIMENSION(:,:), ALLOCATABLE :: ZRIC ! conv. adj. grid scale r_i -REAL, DIMENSION(:,:), ALLOCATABLE :: ZWSUB ! envir. compensating subsidence (Pa/s) -! -LOGICAL, DIMENSION(:),ALLOCATABLE :: GTRIG1 ! logical mask for convection -LOGICAL, DIMENSION(:),ALLOCATABLE :: GWORK ! logical work array -INTEGER, DIMENSION(:),ALLOCATABLE :: IINDEX, IJINDEX, IJSINDEX, IJPINDEX!hor.index -REAL, DIMENSION(:), ALLOCATABLE :: ZCPH ! specific heat C_ph -REAL, DIMENSION(:), ALLOCATABLE :: ZLV, ZLS! latent heat of vaporis., sublim. -REAL :: ZES ! saturation vapor mixng ratio -! -! Chemical Tracers: -REAL, DIMENSION(:,:,:), ALLOCATABLE:: ZCH1 ! grid scale chemical specy (kg/kg) -REAL, DIMENSION(:,:,:), ALLOCATABLE:: ZCH1C ! conv. adjust. chemical specy 1 -REAL, DIMENSION(:,:), ALLOCATABLE:: ZWORK3 ! conv. adjust. chemical specy 1 -LOGICAL, DIMENSION(:,:,:),ALLOCATABLE::GTRIG4 ! logical mask +TYPE(CONVPAREXT) :: CVPEXT ! !------------------------------------------------------------------------------- ! @@ -258,697 +181,51 @@ LOGICAL, DIMENSION(:,:,:),ALLOCATABLE::GTRIG4 ! logical mask !* 0.3 Compute loop bounds ! ------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + IF (LHOOK) CALL DR_HOOK('SHALLOW_CONVECTION',0,ZHOOK_HANDLE) -IIB = KIDIA -IIE = KFDIA -JCVEXB = MAX( 0, KBDIA - 1 ) -IKB = 1 + JCVEXB -IKS = KLEV -JCVEXT = MAX( 0, KTDIA - 1) -IKE = IKS - JCVEXT -! -! -!* 0.5 Update convective counter ( where KCOUNT > 0 -! convection is still active ). -! --------------------------------------------- -! -GTRIG(:) = .FALSE. -GTRIG(IIB:IIE) = .TRUE. -ITEST = COUNT( GTRIG(:) ) -IF ( ITEST == 0 ) THEN - IF (LHOOK) CALL DR_HOOK('SHALLOW_CONVECTION',1,ZHOOK_HANDLE) - RETURN -ENDIF -! -! -!* 0.7 Reset convective tendencies to zero if convective -! counter becomes negative -! ------------------------------------------------- -! -GTRIG3(:,:) = SPREAD( GTRIG(:), DIM=2, NCOPIES=IKS ) -WHERE ( GTRIG3(:,:) ) - PTTEN(:,:) = 0. - PRVTEN(:,:) = 0. - PRCTEN(:,:) = 0. - PRITEN(:,:) = 0. -! PUTEN(:,:) = 0. -! PVTEN(:,:) = 0. - PUMF(:,:) = 0. -END WHERE -WHERE ( GTRIG(:) ) - KCLTOP(:) = 0 - KCLBAS(:) = 0 -END WHERE -IF ( OCH1CONV ) THEN - ALLOCATE( GTRIG4(KLON,KLEV,KCH1) ) - GTRIG4(:,:,:) = SPREAD( GTRIG3(:,:), DIM=3, NCOPIES=KCH1 ) - WHERE( GTRIG4(:,:,:) ) PCH1TEN(:,:,:) = 0. - DEALLOCATE( GTRIG4 ) -END IF -! -! -!* 1. Initialize local variables -! ---------------------------- -! -ZEPS = XRD / XRV -ZEPSA = XRV / XRD -ZRDOCP = XRD / XCPD -! -!------------------------------------------------------------------------------- -! -!* 1.1 Set up grid scale theta, theta_v, theta_es -! ------------------------------------------ -! -ZTHT(:,:) = 300. -ZSTHV(:,:)= 300. -ZSTHES(:,:)= 400. -DO JK = IKB, IKE -DO JI = IIB, IIE - IF ( PPABST(JI,JK) > 40.E2 ) THEN - ZTHT(JI,JK) = PTT(JI,JK) * ( XP00 / PPABST(JI,JK) ) ** ZRDOCP - ZSTHV(JI,JK) = ZTHT(JI,JK) * ( 1. + ZEPSA * PRVT(JI,JK) ) / & - ( 1. + PRVT(JI,JK) + PRCT(JI,JK) + PRIT(JI,JK) ) -! - ! use conservative Bolton (1980) formula for theta_e - ! it is used to compute CAPE for undilute parcel ascent - ! For economical reasons we do not use routine CONVECT_SATMIXRATIO here -! - ZES = EXP( XALPW - XBETAW / PTT(JI,JK) - XGAMW * LOG( PTT(JI,JK) ) ) - ZES = MIN( 1., ZEPS * ZES / ( PPABST(JI,JK) - ZES ) ) - ZSTHES(JI,JK) = PTT(JI,JK) * ( ZTHT(JI,JK) / PTT(JI,JK) ) ** & - ( 1. - 0.28 * ZES ) * EXP( ( 3374.6525 / PTT(JI,JK) - 2.5403 ) & - * ZES * ( 1. + 0.81 * ZES ) ) - END IF -END DO -END DO -! -!------------------------------------------------------------------------------- -! -!* 2. Test for convective columns and determine properties at the LCL -! -------------------------------------------------------------- -! -!* 2.1 Allocate arrays depending on number of model columns that need -! to be tested for convection (i.e. where no convection is present -! at the moment. -! -------------------------------------------------------------- -! -ALLOCATE( ZPRES(ITEST,IKS) ) -ALLOCATE( ZZ(ITEST,IKS) ) -ALLOCATE( ZW(ITEST,IKS) ) -ALLOCATE( ZTH(ITEST,IKS) ) -ALLOCATE( ZTHV(ITEST,IKS) ) -ALLOCATE( ZTHEST(ITEST,IKS) ) -ALLOCATE( ZRV(ITEST,IKS) ) -ALLOCATE( ZSTHLCL(ITEST) ) -ALLOCATE( ZSTLCL(ITEST) ) -ALLOCATE( ZSRVLCL(ITEST) ) -ALLOCATE( ZSWLCL(ITEST) ) -ALLOCATE( ZSZLCL(ITEST) ) -ALLOCATE( ZSTHVELCL(ITEST) ) -ALLOCATE( ISDPL(ITEST) ) -ALLOCATE( ISPBL(ITEST) ) -ALLOCATE( ISLCL(ITEST) ) -ALLOCATE( ZSDXDY(ITEST) ) -ALLOCATE( GTRIG1(ITEST) ) -ALLOCATE( IINDEX(KLON) ) -ALLOCATE( IJSINDEX(ITEST) ) -DO JI = 1, KLON - IINDEX(JI) = JI -END DO -IJSINDEX(:) = PACK( IINDEX(:), MASK=GTRIG(:) ) -! -DO JK = IKB, IKE -DO JI = 1, ITEST - JL = IJSINDEX(JI) - ZPRES(JI,JK) = PPABST(JL,JK) - ZZ(JI,JK) = PZZ(JL,JK) - ZTH(JI,JK) = ZTHT(JL,JK) - ZTHV(JI,JK) = ZSTHV(JL,JK) - ZTHEST(JI,JK) = ZSTHES(JL,JK) - ZRV(JI,JK) = MAX( 0., PRVT(JL,JK) ) - ZW(JI,JK) = PWT(JL,JK) -END DO -END DO -DO JI = 1, ITEST - JL = IJSINDEX(JI) - ZSDXDY(JI) = XA25 -END DO -! -!* 2.2 Compute environm. enthalpy and total water = r_v + r_i + r_c -! and envir. saturation theta_e -! ------------------------------------------------------------ -! -! -!* 2.3 Test for convective columns and determine properties at the LCL -! -------------------------------------------------------------- -! -ISLCL(:) = MAX( IKB, 2 ) ! initialize DPL PBL and LCL -ISDPL(:) = IKB -ISPBL(:) = IKB -! -CALL CONVECT_TRIGGER_SHAL( ITEST, KLEV, & - ZPRES, ZTH, ZTHV, ZTHEST, & - ZRV, ZW, ZZ, ZSDXDY, PTKECLS, & - ZSTHLCL, ZSTLCL, ZSRVLCL, ZSWLCL, ZSZLCL, & - ZSTHVELCL, ISLCL, ISDPL, ISPBL, GTRIG1 ) -! +CVPEXT%JCVEXB = MAX( 0, KBDIA - 1 ) +CVPEXT%JCVEXT = MAX( 0, KTDIA - 1) -DEALLOCATE( ZPRES ) -DEALLOCATE( ZZ ) -DEALLOCATE( ZTH ) -DEALLOCATE( ZTHV ) -DEALLOCATE( ZTHEST ) -DEALLOCATE( ZRV ) -DEALLOCATE( ZW ) -! -!------------------------------------------------------------------------------- -! -!* 3. After the call of TRIGGER_FUNCT we allocate all the dynamic -! arrays used in the convection scheme using the mask GTRIG, i.e. -! we do calculus only in convective columns. This corresponds to -! a GATHER operation. -! -------------------------------------------------------------- +ZRDOCP = CST%XRD / CST%XCPD -! -ICONV = COUNT( GTRIG1(:) ) -IF ( ICONV == 0 ) THEN - DEALLOCATE( ZSTHLCL ) - DEALLOCATE( ZSTLCL ) - DEALLOCATE( ZSRVLCL ) - DEALLOCATE( ZSWLCL ) - DEALLOCATE( ZSZLCL ) - DEALLOCATE( ZSTHVELCL ) - DEALLOCATE( ZSDXDY ) - DEALLOCATE( ISLCL ) - DEALLOCATE( ISDPL ) - DEALLOCATE( ISPBL ) - DEALLOCATE( GTRIG1 ) - DEALLOCATE( IINDEX ) - DEALLOCATE( IJSINDEX ) - IF (LHOOK) CALL DR_HOOK('SHALLOW_CONVECTION',1,ZHOOK_HANDLE) - RETURN ! no convective column has been found, exit DEEP_CONVECTION -ENDIF -! - ! vertical index variables -! -ALLOCATE( IDPL(ICONV) ) -ALLOCATE( IPBL(ICONV) ) -ALLOCATE( ILCL(ICONV) ) -ALLOCATE( ICTL(ICONV) ) -ALLOCATE( IETL(ICONV) ) -! - ! grid scale variables -! -ALLOCATE( ZZ(ICONV,IKS) ) ; ZZ = 0.0 -ALLOCATE( ZPRES(ICONV,IKS) ); ZPRES = 0.0 -ALLOCATE( ZDPRES(ICONV,IKS) ) ; ZDPRES = 0.0 -ALLOCATE( ZTT(ICONV, IKS) ) ; ZTT = 0.0 -ALLOCATE( ZTH(ICONV,IKS) ) ; ZTH = 0.0 -ALLOCATE( ZTHV(ICONV,IKS) ) ; ZTHV = 0.0 -ALLOCATE( ZTHL(ICONV,IKS) ) ; ZTHL = 0.0 -ALLOCATE( ZTHES(ICONV,IKS) ) ; ZTHES = 0.0 -ALLOCATE( ZRV(ICONV,IKS) ) ; ZRV = 0.0 -ALLOCATE( ZRC(ICONV,IKS) ) ; ZRC = 0.0 -ALLOCATE( ZRI(ICONV,IKS) ) ; ZRI = 0.0 -ALLOCATE( ZRW(ICONV,IKS) ) ; ZRW = 0.0 -ALLOCATE( ZDXDY(ICONV) ) ; ZDXDY = 0.0 -! - ! updraft variables -! -ALLOCATE( ZUMF(ICONV,IKS) ) -ALLOCATE( ZUER(ICONV,IKS) ) -ALLOCATE( ZUDR(ICONV,IKS) ) -ALLOCATE( ZUTHL(ICONV,IKS) ) -ALLOCATE( ZUTHV(ICONV,IKS) ) -ALLOCATE( ZURW(ICONV,IKS) ) -ALLOCATE( ZURC(ICONV,IKS) ) -ALLOCATE( ZURI(ICONV,IKS) ) -ALLOCATE( ZTHLCL(ICONV) ) -ALLOCATE( ZTLCL(ICONV) ) -ALLOCATE( ZRVLCL(ICONV) ) -ALLOCATE( ZWLCL(ICONV) ) -ALLOCATE( ZMFLCL(ICONV) ) -ALLOCATE( ZZLCL(ICONV) ) -ALLOCATE( ZTHVELCL(ICONV) ) -ALLOCATE( ZCAPE(ICONV) ) -! - ! work variables -! -ALLOCATE( IJINDEX(ICONV) ) -ALLOCATE( IJPINDEX(ICONV) ) -ALLOCATE( ZCPH(ICONV) ) -ALLOCATE( ZLV(ICONV) ) -ALLOCATE( ZLS(ICONV) ) -! -! -!* 3.1 Gather grid scale and updraft base variables in -! arrays using mask GTRIG -! --------------------------------------------------- -! -GTRIG(:) = UNPACK( GTRIG1(:), MASK=GTRIG, FIELD=.FALSE. ) -IJINDEX(:) = PACK( IINDEX(:), MASK=GTRIG(:) ) -! -DO JK = IKB, IKE -DO JI = 1, ICONV - JL = IJINDEX(JI) - ZZ(JI,JK) = PZZ(JL,JK) - ZPRES(JI,JK) = PPABST(JL,JK) - ZTT(JI,JK) = PTT(JL,JK) - ZTH(JI,JK) = ZTHT(JL,JK) - ZTHES(JI,JK) = ZSTHES(JL,JK) - ZRV(JI,JK) = MAX( 0., PRVT(JL,JK) ) - ZRC(JI,JK) = MAX( 0., PRCT(JL,JK) ) - ZRI(JI,JK) = MAX( 0., PRIT(JL,JK) ) - ZTHV(JI,JK) = ZSTHV(JL,JK) -END DO -END DO -! -DO JI = 1, ITEST - IJSINDEX(JI) = JI -END DO -IJPINDEX(:) = PACK( IJSINDEX(:), MASK=GTRIG1(:) ) -DO JI = 1, ICONV - JL = IJPINDEX(JI) - IDPL(JI) = ISDPL(JL) - IPBL(JI) = ISPBL(JL) - ILCL(JI) = ISLCL(JL) - ZTHLCL(JI) = ZSTHLCL(JL) - ZTLCL(JI) = ZSTLCL(JL) - ZRVLCL(JI) = ZSRVLCL(JL) - ZWLCL(JI) = ZSWLCL(JL) - ZZLCL(JI) = ZSZLCL(JL) - ZTHVELCL(JI) = ZSTHVELCL(JL) - ZDXDY(JI) = ZSDXDY(JL) -END DO -ALLOCATE( GWORK(ICONV) ) -GWORK(:) = PACK( GTRIG1(:), MASK=GTRIG1(:) ) -DEALLOCATE( GTRIG1 ) -ALLOCATE( GTRIG1(ICONV) ) -GTRIG1(:) = GWORK(:) -! -DEALLOCATE( GWORK ) -DEALLOCATE( IJPINDEX ) -DEALLOCATE( ISDPL ) -DEALLOCATE( ISPBL ) -DEALLOCATE( ISLCL ) -DEALLOCATE( ZSTHLCL ) -DEALLOCATE( ZSTLCL ) -DEALLOCATE( ZSRVLCL ) -DEALLOCATE( ZSWLCL ) -DEALLOCATE( ZSZLCL ) -DEALLOCATE( ZSTHVELCL ) -DEALLOCATE( ZSDXDY ) -! -! -!* 3.2 Compute pressure difference -! --------------------------------------------------- -! -ZDPRES(:,IKB) = 0. -DO JK = IKB + 1, IKE - ZDPRES(:,JK) = ZPRES(:,JK-1) - ZPRES(:,JK) -END DO -! -!* 3.3 Compute environm. enthalpy and total water = r_v + r_i + r_c -! ---------------------------------------------------------- -! -DO JK = IKB, IKE, 1 - ZRW(:,JK) = ZRV(:,JK) + ZRC(:,JK) + ZRI(:,JK) - ZCPH(:) = XCPD + XCPV * ZRW(:,JK) - ZLV(:) = XLVTT + ( XCPV - XCL ) * ( ZTT(:,JK) - XTT ) ! compute L_v - ZLS(:) = XLSTT + ( XCPV - XCI ) * ( ZTT(:,JK) - XTT ) ! compute L_i - ZTHL(:,JK) = ZCPH(:) * ZTT(:,JK) + ( 1. + ZRW(:,JK) ) * XG * ZZ(:,JK) & - - ZLV(:) * ZRC(:,JK) - ZLS(:) * ZRI(:,JK) -END DO -! -DEALLOCATE( ZCPH ) -DEALLOCATE( ZLV ) -DEALLOCATE( ZLS ) -! -!------------------------------------------------------------------------------- -! -!* 4. Compute updraft properties -! ---------------------------- -! -!* 4.1 Set mass flux at LCL ( here a unit mass flux with w = 1 m/s ) -! ------------------------------------------------------------- -! -ZDXDY(:) = XA25 -ZMFLCL(:) = XA25 * 1.E-3 -! -! -! -CALL CONVECT_UPDRAFT_SHAL( ICONV, KLEV, & - KICE, ZPRES, ZDPRES, ZZ, ZTHL, ZTHV, ZTHES, ZRW, & - ZTHLCL, ZTLCL, ZRVLCL, ZWLCL, ZZLCL, ZTHVELCL, & - ZMFLCL, GTRIG1, ILCL, IDPL, IPBL, & - ZUMF, ZUER, ZUDR, ZUTHL, ZUTHV, ZURW, & - ZURC, ZURI, ZCAPE, ICTL, IETL ) -! -! -! -!* 4.2 In routine UPDRAFT GTRIG1 has been set to false when cloud -! thickness is smaller than 3 km -! ----------------------------------------------------------- -! -! -! -!* 4.3 Allocate memory for downdraft variables -! --------------------------------------- -! -! downdraft variables -! - ALLOCATE( ZDMF(ICONV,IKS) ) - ALLOCATE( ZDER(ICONV,IKS) ) - ALLOCATE( ZDDR(ICONV,IKS) ) - ALLOCATE( ILFS(ICONV) ) - ALLOCATE( ZLMASS(ICONV,IKS) ) - ZDMF(:,:) = 0. - ZDER(:,:) = 0. - ZDDR(:,:) = 0. - ILFS(:) = IKB - DO JK = IKB, IKE - ZLMASS(:,JK) = ZDXDY(:) * ZDPRES(:,JK) / XG ! mass of model layer - END DO - ZLMASS(:,IKB) = ZLMASS(:,IKB+1) -! -! closure variables -! - ALLOCATE( ZTIMEC(ICONV) ) - ALLOCATE( ZTHC(ICONV,IKS) ) - ALLOCATE( ZRVC(ICONV,IKS) ) - ALLOCATE( ZRCC(ICONV,IKS) ) - ALLOCATE( ZRIC(ICONV,IKS) ) - ALLOCATE( ZWSUB(ICONV,IKS) ) -! -!------------------------------------------------------------------------------- -! -!* 5. Compute downdraft properties -! ---------------------------- -! - ZTIMEC(:) = XCTIME_SHAL - IF ( OSETTADJ ) ZTIMEC(:) = PTADJS -! -!* 7. Determine adjusted environmental values assuming -! that all available buoyant energy must be removed -! within an advective time step ZTIMEC. -! --------------------------------------------------- -! - CALL CONVECT_CLOSURE_SHAL( ICONV, KLEV, & - ZPRES, ZDPRES, ZZ, ZDXDY, ZLMASS, & - ZTHL, ZTH, ZRW, ZRC, ZRI, GTRIG1, & - ZTHC, ZRVC, ZRCC, ZRIC, ZWSUB, & - ILCL, IDPL, IPBL, ICTL, & - ZUMF, ZUER, ZUDR, ZUTHL, ZURW, & - ZURC, ZURI, ZCAPE, ZTIMEC, IFTSTEPS ) -! -!------------------------------------------------------------------------------- -! -!* 8. Determine the final grid-scale (environmental) convective -! tendencies and set convective counter -! -------------------------------------------------------- -! -! -!* 8.1 Grid scale tendencies -! --------------------- -! - ! in order to save memory, the tendencies are temporarily stored - ! in the tables for the adjusted grid-scale values -! - DO JK = IKB, IKE - ZTHC(:,JK) = ( ZTHC(:,JK) - ZTH(:,JK) ) / ZTIMEC(:) & - * ( ZPRES(:,JK) / XP00 ) ** ZRDOCP ! change theta in temperature - ZRVC(:,JK) = ( ZRVC(:,JK) - ZRW(:,JK) + ZRC(:,JK) + ZRI(:,JK) ) & - / ZTIMEC(:) +CALL SHALLOW_CONVECTION_PART1& + (CVPEXT, CVP_SHAL, CST, D, NSV, CONVPAR, KBDIA, KTDIA, & + KICE, OSETTADJ, PTADJS, PPABST, PZZ, & + PTKECLS, PTT, PRVT, PRCT, PRIT, PWT, & + PTTEN, PRVTEN, PRCTEN, PRITEN, & + KCLTOP, KCLBAS, PUMF, OCH1CONV, KCH1,& + PCH1, PCH1TEN, ZTHT, ZSTHV, ZSTHES, & + ISDPL, ISPBL, ISLCL, ZSTHLCL, ZSTLCL,& + ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, GTRIG1) - ZRCC(:,JK) = ( ZRCC(:,JK) - ZRC(:,JK) ) / ZTIMEC(:) - ZRIC(:,JK) = ( ZRIC(:,JK) - ZRI(:,JK) ) / ZTIMEC(:) -! - END DO -! -! -!* 8.2 Apply conservation correction -! ----------------------------- -! - ! adjustment at cloud top to smooth possible discontinuous profiles at PBL inversions - ! (+ - - tendencies for moisture ) -! -! -IF (LLSMOOTH) THEN - DO JI = 1, ICONV - JK = ICTL(JI) - JKM= MAX(2,ICTL(JI)-1) - JKP= MAX(2,ICTL(JI)-2) - ZRVC(JI,JKM) = ZRVC(JI,JKM) + .5 * ZRVC(JI,JK) - ZRCC(JI,JKM) = ZRCC(JI,JKM) + .5 * ZRCC(JI,JK) - ZRIC(JI,JKM) = ZRIC(JI,JKM) + .5 * ZRIC(JI,JK) - ZTHC(JI,JKM) = ZTHC(JI,JKM) + .5 * ZTHC(JI,JK) - ZRVC(JI,JKP) = ZRVC(JI,JKP) + .3 * ZRVC(JI,JK) - ZRCC(JI,JKP) = ZRCC(JI,JKP) + .3 * ZRCC(JI,JK) - ZRIC(JI,JKP) = ZRIC(JI,JKP) + .3 * ZRIC(JI,JK) - ZTHC(JI,JKP) = ZTHC(JI,JKP) + .3 * ZTHC(JI,JK) - ZRVC(JI,JK) = .2 * ZRVC(JI,JK) - ZRCC(JI,JK) = .2 * ZRCC(JI,JK) - ZRIC(JI,JK) = .2 * ZRIC(JI,JK) - ZTHC(JI,JK) = .2 * ZTHC(JI,JK) - END DO +ICONV = COUNT(GTRIG1(D%NIB:D%NIE)) + +IF(ICONV==0)THEN + ! Do nothing if there are no selected columns +ELSE IF (ICONV < D%NIT*9/10) THEN + CALL SHALLOW_CONVECTION_PART2_SELECT & + & (CVP_SHAL, CVPEXT, CST, D, NSV, CONVPAR, KICE, & + OSETTADJ, PTADJS, PPABST, PZZ, PTT, & + PRVT, PRCT, PRIT, OCH1CONV, KCH1, & + PCH1, ZRDOCP, ZTHT, ZSTHV, ZSTHES, & + ISDPL, ISPBL, ISLCL, ZSTHLCL, ZSTLCL,& + ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, & + GTRIG1, PUMF, PTTEN, PRVTEN, PRCTEN, & + PRITEN, KCLTOP, KCLBAS, PCH1TEN, ICONV) +ELSE + CALL SHALLOW_CONVECTION_PART2 & + & (CVP_SHAL, CVPEXT, CST, D, NSV, CONVPAR, KICE, & + OSETTADJ, PTADJS, PPABST, PZZ, PTT, & + PRVT, PRCT, PRIT, OCH1CONV, KCH1, & + PCH1, ZRDOCP, ZTHT, ZSTHV, ZSTHES, & + ISDPL, ISPBL, ISLCL, ZSTHLCL, ZSTLCL,& + ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, & + GTRIG1, PUMF, PTTEN, PRVTEN, PRCTEN, & + PRITEN, KCLTOP, KCLBAS, PCH1TEN) ENDIF -! -! - ! Compute vertical integrals - Fluxes -! - !JKM = MAXVAL( ICTL(:) ) - JKM = IKE - ZWORK2(:) = 0. - ZWORK2B(:) = 0. - DO JK = IKB+1, JKM - JKP = JK + 1 - DO JI = 1, ICONV - IF ( JK <= ICTL(JI) ) THEN - ZW1 = ZRVC(JI,JK) + ZRCC(JI,JK) + ZRIC(JI,JK) - ZWORK2(JI) = ZWORK2(JI) + ZW1 * & ! moisture - .5 * (ZPRES(JI,JK-1) - ZPRES(JI,JKP)) / XG - ZW1 = ( XCPD + XCPV * ZRW(JI,JK) )* ZTHC(JI,JK) - & - ( XLVTT + ( XCPV - XCL ) * ( ZTT(JI,JK) - XTT ) ) * ZRCC(JI,JK) - & - ( XLSTT + ( XCPV - XCL ) * ( ZTT(JI,JK) - XTT ) ) * ZRIC(JI,JK) - ZWORK2B(JI) = ZWORK2B(JI) + ZW1 * & ! energy - .5 * (ZPRES(JI,JK-1) - ZPRES(JI,JKP)) / XG - END IF - END DO - END DO -! - ! Budget error (integral must be zero) -! - DO JI = 1, ICONV - IF ( ICTL(JI) > IKB+1 ) THEN - JKP = ICTL(JI) - ZW1 = XG / ( ZPRES(JI,IKB) - ZPRES(JI,JKP) - & - .5 * (ZDPRES(JI,IKB+1) - ZDPRES(JI,JKP+1)) ) - ZWORK2(JI) = ZWORK2(JI) * ZW1 - ZWORK2B(JI) = ZWORK2B(JI)* ZW1 - END IF - END DO -! - ! Apply uniform correction -! - DO JK = JKM, IKB+1, -1 - DO JI = 1, ICONV - IF ( ICTL(JI) > IKB+1 .AND. JK <= ICTL(JI) ) THEN - ! ZW1 = ABS(ZRVC(JI,JK)) + ABS(ZRCC(JI,JK)) + ABS(ZRIC(JI,JK)) + 1.E-12 - ! ZRVC(JI,JK) = ZRVC(JI,JK) - ABS(ZRVC(JI,JK))/ZW1*ZWORK2(JI) ! moisture - ZRVC(JI,JK) = ZRVC(JI,JK) - ZWORK2(JI) ! moisture - ! ZRCC(JI,JK) = ZRCC(JI,JK) - ABS(ZRCC(JI,JK))/ZW1*ZWORK2(JI) - ! ZRIC(JI,JK) = ZRIC(JI,JK) - ABS(ZRIC(JI,JK))/ZW1*ZWORK2(JI) - ZTHC(JI,JK) = ZTHC(JI,JK) - ZWORK2B(JI) / XCPD ! enthalpy - END IF - END DO - END DO -! - ! execute a "scatter"= pack command to store the tendencies in - ! the final 2D tables -! - DO JK = IKB, IKE - DO JI = 1, ICONV - JL = IJINDEX(JI) - PTTEN(JL,JK) = ZTHC(JI,JK) - PRVTEN(JL,JK) = ZRVC(JI,JK) - PRCTEN(JL,JK) = ZRCC(JI,JK) - PRITEN(JL,JK) = ZRIC(JI,JK) - END DO - END DO -! -! -! Cloud base and top levels -! ------------------------- -! - ILCL(:) = MIN( ILCL(:), ICTL(:) ) - DO JI = 1, ICONV - JL = IJINDEX(JI) - KCLTOP(JL) = ICTL(JI) - KCLBAS(JL) = ILCL(JI) - END DO -! -! -!* 8.7 Compute convective tendencies for Tracers -! ------------------------------------------ -! - IF ( OCH1CONV ) THEN -! - ALLOCATE( ZCH1(ICONV,IKS,KCH1) ) - ALLOCATE( ZCH1C(ICONV,IKS,KCH1) ) - ALLOCATE( ZWORK3(ICONV,KCH1) ) -! - DO JK = IKB, IKE - DO JI = 1, ICONV - JL = IJINDEX(JI) - ZCH1(JI,JK,:) = PCH1(JL,JK,:) - END DO - END DO -! - CALL CONVECT_CHEM_TRANSPORT( ICONV, KLEV, KCH1, ZCH1, ZCH1C, & - IDPL, IPBL, ILCL, ICTL, ILFS, ILFS, & - ZUMF, ZUER, ZUDR, ZDMF, ZDER, ZDDR, & - ZTIMEC, ZDXDY, ZDMF(:,1), ZLMASS, ZWSUB, & - IFTSTEPS ) -! -! -!* 8.8 Apply conservation correction -! ----------------------------- -! - ! Compute vertical integrals -! - !JKM = MAXVAL( ICTL(:) ) - JKM = IKE - DO JN = 1, KCH1 - IF(JN < NSV_LGBEG .OR. JN>NSV_LGEND-1) THEN ! no correction for xy lagrangian variables - ZWORK3(:,JN) = 0. - ZWORK2(:) = 0. - DO JK = IKB+1, JKM - JKP = JK + 1 - DO JI = 1, ICONV - ZW1 = .5 * (ZPRES(JI,JK-1) - ZPRES(JI,JKP)) - ZWORK3(JI,JN) = ZWORK3(JI,JN) + (ZCH1C(JI,JK,JN)-ZCH1(JI,JK,JN)) * ZW1 - ZWORK2(JI) = ZWORK2(JI) + ABS(ZCH1C(JI,JK,JN)) * ZW1 - END DO - END DO -! - ! Apply concentration weighted correction -! - DO JK = JKM, IKB+1, -1 - DO JI = 1, ICONV - IF ( ICTL(JI) > IKB+1 .AND. JK <= ICTL(JI) ) THEN - ZCH1C(JI,JK,JN) = ZCH1C(JI,JK,JN) - & - ZWORK3(JI,JN)*ABS(ZCH1C(JI,JK,JN))/MAX(1.E-30,ZWORK2(JI)) - END IF - END DO - END DO - END IF -! - DO JK = IKB, IKE - DO JI = 1, ICONV - JL = IJINDEX(JI) - PCH1TEN(JL,JK,JN) = (ZCH1C(JI,JK,JN)-ZCH1(JI,JK,JN) ) / ZTIMEC(JI) - END DO - END DO - END DO - END IF -! -!------------------------------------------------------------------------------- -! -!* 9. Write up- and downdraft mass fluxes -! ------------------------------------ -! - DO JK = IKB, IKE - ZUMF(:,JK) = ZUMF(:,JK) / ZDXDY(:) ! Mass flux per unit area - END DO - ZWORK2(:) = 1. - DO JK = IKB, IKE - DO JI = 1, ICONV - JL = IJINDEX(JI) - IF ( KCLTOP(JL) <= IKB+1 ) ZWORK2(JL) = 0. - PUMF(JL,JK) = ZUMF(JI,JK) * ZWORK2(JL) - END DO - END DO -! -!------------------------------------------------------------------------------- -! -!* 10. Deallocate all local arrays -! --------------------------- -! -! downdraft variables -! - DEALLOCATE( ZDMF ) - DEALLOCATE( ZDER ) - DEALLOCATE( ZDDR ) - DEALLOCATE( ILFS ) - DEALLOCATE( ZLMASS ) -! -! closure variables -! - DEALLOCATE( ZTIMEC ) - DEALLOCATE( ZTHC ) - DEALLOCATE( ZRVC ) - DEALLOCATE( ZRCC ) - DEALLOCATE( ZRIC ) - DEALLOCATE( ZWSUB ) -! - IF ( OCH1CONV ) THEN - DEALLOCATE( ZCH1 ) - DEALLOCATE( ZCH1C ) - DEALLOCATE( ZWORK3 ) - END IF -! -! vertical index -! -DEALLOCATE( IDPL ) -DEALLOCATE( IPBL ) -DEALLOCATE( ILCL ) -DEALLOCATE( ICTL ) -DEALLOCATE( IETL ) -! -! grid scale variables -! -DEALLOCATE( ZZ ) -DEALLOCATE( ZPRES ) -DEALLOCATE( ZDPRES ) -DEALLOCATE( ZTT ) -DEALLOCATE( ZTH ) -DEALLOCATE( ZTHV ) -DEALLOCATE( ZTHL ) -DEALLOCATE( ZTHES ) -DEALLOCATE( ZRW ) -DEALLOCATE( ZRV ) -DEALLOCATE( ZRC ) -DEALLOCATE( ZRI ) -DEALLOCATE( ZDXDY ) -! -! updraft variables -! -DEALLOCATE( ZUMF ) -DEALLOCATE( ZUER ) -DEALLOCATE( ZUDR ) -DEALLOCATE( ZUTHL ) -DEALLOCATE( ZUTHV ) -DEALLOCATE( ZURW ) -DEALLOCATE( ZURC ) -DEALLOCATE( ZURI ) -DEALLOCATE( ZTHLCL ) -DEALLOCATE( ZTLCL ) -DEALLOCATE( ZRVLCL ) -DEALLOCATE( ZWLCL ) -DEALLOCATE( ZZLCL ) -DEALLOCATE( ZTHVELCL ) -DEALLOCATE( ZMFLCL ) -DEALLOCATE( ZCAPE ) -! -! work arrays -! -DEALLOCATE( IINDEX ) -DEALLOCATE( IJINDEX ) -DEALLOCATE( IJSINDEX ) -DEALLOCATE( GTRIG1 ) -! -! + IF (LHOOK) CALL DR_HOOK('SHALLOW_CONVECTION',1,ZHOOK_HANDLE) END SUBROUTINE SHALLOW_CONVECTION + diff --git a/src/arome/ext/acvppkf.F90 b/src/arome/ext/acvppkf.F90 new file mode 100644 index 0000000000000000000000000000000000000000..e1de125a62a9e37a3c6c4735cced1779b02eda19 --- /dev/null +++ b/src/arome/ext/acvppkf.F90 @@ -0,0 +1,577 @@ +!OPTIONS XOPT(NOEVAL) +!----------------------------------------------------------------- +SUBROUTINE ACVPPKF(YDCST, YDML_PHY_MF, YDCPG_BNDS, YDCPG_OPTS, KTDIA, PAPRSF, PAPHIF, PDELP, PR, PT, & +& PQ, PQL, PQI, PU, PV, PCP, PTKE, PDIFCQ, PDIFCS, PFCCQL, PFCCQN, PPRODTH, KNLAB, PQCPP, PNEBPP, & +& KNND) + +!----------------------------------------------------------------- + +! Authors : E. Bazile and P. Bechtold (CNRM/GMAP et L.A.) + +!----------------------------------------------------------------- + +! Modified : +! 05/2002 phased with CONVECTION call for IFS/ECMWF +! (routine cucalln.F90 calling both Tiedtke convection scheme +! and present scheme) +! ouput of present scheme (updraft QL and QV) provides also +! necessary parameters for Tiedtke prognostic cloud scheme +! 03/2002 P. Marquet. new ZFHMLTS, ZFHEVPP in CPFHPRS (for Lopez) +! 03/2002 P. Marquet. new LKFDEEP, LKFSHAL +! 03/2002 P. Marquet. "call deep_convection" +! > "call convection" (deep + shallow) +! 09/2006 E. Bazile : Appel de la routine de shallow convection d'AROME +! uniquement +! 04/2008 E. Bazile : calcul du terme de production thermique PPROTH +! 10/2008 Y. Bouteloup & F. Bouyssel : Correction of bugs in initialization +! 07/2009 E. Bazile : TKE en entree de KFB et W fct de W_conv +! K. Yessad (Jul 2009): remove CDLOCK + some cleanings +! 10/2009 F. Bouyssel : Limitation on maximal TKE value +! 02/2010 E. Bazile : Correction for W without TKE scheme. +! 04/2010 F. Bouyssel : Bug correction on KNLAB computation +! 09/2010 O. Spaniel : Bug correction in expression SQRT(MIN) +! 04/2011 F. Bouyssel : Correction of a jlon loop (kidia,kfdia) +! 12/2012 E. Bazile : Modif of W_turb and qc and cc fct of mass flux. +! R. El Khatib 22-Jun-2022 A contribution to simplify phasing after the refactoring of YOMCLI/YOMCST/YOETHF. + +! Peter.Bechtold@ecmwf.int + +! Sequence de routines : +! aplpar > acvppkf > convection_shal + +! iv) Momentum transport: +! Option LLUVTRANS: c'est possible d'utiliser maintenant +! mais pas encore bien teste. Donc par defaut mettre +! LLUVTRANS=.FALSE. + +! vi) Traceurs passifs - chimie: +! Cette partie est utilisee uniquement dans MOCAGE et dans MESONH +! Si on ne veut pas de transport de traceurs (ex. Ozone,CO) dans +! ARPEGE/ECMWF IFS, mettre tout siplement OCHTRANS=FALSE et KCH1=0 +! (nombre de traceurs). PCH1 (traceur) et PCH1TEN (tendance +! convective du traceur) ont alors les dimensions +! (KLON,KLEV,KCH1=0) qui ne prennent pas de place. + +!----------------------------------------------------------------- + +USE MODEL_PHYSICS_MF_MOD, ONLY : MODEL_PHYSICS_MF_TYPE +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK + +USE YOMCST , ONLY : TCST +USE YOMLSFORC , ONLY : LMUSCLFA, NMUSCLFA +USE MODD_CONVPAR_SHAL , ONLY : CONVPAR_SHAL + +USE MODD_NSV , ONLY : NSV_LGBEG, NSV_LGEND, NSV_T +USE MODD_DIMPHYEX , ONLY : DIMPHYEX_T +USE MODD_CONVPAR , ONLY : CONVPAR_T, INI_CONVPAR +USE CPG_OPTS_TYPE_MOD , ONLY : CPG_BNDS_TYPE, CPG_OPTS_TYPE +USE MODD_CST , ONLY : CST_T, CST + +USE MODD_CONVPAR , ONLY : CONVPAR_T, INI_CONVPAR +USE MODD_CONVPAR_SHAL , ONLY : CONVPAR_SHAL +USE MODD_CONVPAREXT , ONLY : CONVPAREXT +USE MODD_DIMPHYEX , ONLY : DIMPHYEX_T +USE MODD_NSV , ONLY : NSV_LGBEG, NSV_LGEND, NSV_T + +USE MODI_SHALLOW_CONVECTION_PART1 +USE MODI_SHALLOW_CONVECTION_PART2 +USE MODI_SHALLOW_CONVECTION_PART2_SELECT + + +!----------------------------------------------------------------- + +IMPLICIT NONE + +TYPE(TCST) ,INTENT(IN) :: YDCST +TYPE(MODEL_PHYSICS_MF_TYPE) ,INTENT(IN) :: YDML_PHY_MF +TYPE(CPG_BNDS_TYPE) ,INTENT(IN) :: YDCPG_BNDS +TYPE(CPG_OPTS_TYPE) ,INTENT(IN) :: YDCPG_OPTS +INTEGER(KIND=JPIM) ,INTENT(IN) :: KTDIA +REAL(KIND=JPRB) ,INTENT(IN) :: PAPRSF(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PAPHIF(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PDELP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PR(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PT(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PQ(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PQL(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PQI(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PU(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PV(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PTKE(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PDIFCQ(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PDIFCS(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PFCCQL(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PFCCQN(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PPRODTH(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) +INTEGER(KIND=JPIM) ,INTENT(OUT) :: KNLAB(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PQCPP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) ,INTENT(INOUT) :: PNEBPP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +INTEGER(KIND=JPIM) ,INTENT(OUT) :: KNND(YDCPG_OPTS%KLON) + +!----------------------------------------------------------------- + +#include "fcttrm.func.h" +#include "wrscmr.intfb.h" + +INTEGER(KIND=JPIM), PARAMETER :: I_KCH1 = 0 + +LOGICAL :: LLREFRESH_ALL, LLDOWN, LLUVTRANS, LLOCHTRANS, LLCONDWT + + +REAL(KIND=JPRB) :: ZDTCONV, ZVMD, ZWMD, ZSMD, ZTDCP, ZEPS, ZDQCDT, ZDTLDT + +INTEGER(KIND=JPIM) :: JLON, JLEV, I_KBDIA, IKICE + +INTEGER(KIND=JPIM) :: I_KCOUNT(YDCPG_OPTS%KLON) +INTEGER(KIND=JPIM) :: I_KCLTOP(YDCPG_OPTS%KLON) +INTEGER(KIND=JPIM) :: I_KCLBAS(YDCPG_OPTS%KLON) + +REAL(KIND=JPRB) :: ZCAPE(YDCPG_OPTS%KLON) + +REAL(KIND=JPRB) :: ZW (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDTDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDQVDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDQLDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDQIDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDUDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDVDT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZUMF (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZUQV (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZUQL (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZDPSG (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZLV (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZLS (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZQC (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZBETA (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZAPHIF (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) + +REAL(KIND=JPRB) :: ZTHETA (YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG+1) +REAL(KIND=JPRB) :: ZRHO (YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG+1) + +REAL(KIND=JPRB) :: ZCH1 (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,I_KCH1) +REAL(KIND=JPRB) :: ZCH1TEN(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,I_KCH1) +REAL(KIND=JPRB) :: ZTKECLS(YDCPG_OPTS%KLON) +REAL(KIND=JPRB) :: ZUMFMAX(YDCPG_OPTS%KLON) + +INTEGER :: JKP, JN ! loop index +! Local arrays (upside/down) necessary for change of ECMWF arrays to convection arrays +REAL(KIND=JPRB) :: ZT (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale T at time t (K) +REAL(KIND=JPRB) :: ZRV (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale water vapor (kg/kg) +REAL(KIND=JPRB) :: ZRC (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale r_c mixing ratio (kg/kg) +REAL(KIND=JPRB) :: ZRI (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale r_i mixing ratio (kg/kg) +REAL(KIND=JPRB) :: ZU (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale horiz. wind u (m/s) +REAL(KIND=JPRB) :: ZV (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale horiz. wind v (m/s) +REAL(KIND=JPRB) :: ZZW (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale vertical velocity (m/s) +REAL(KIND=JPRB) :: ZPABS (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale pressure (Pa) +REAL(KIND=JPRB) :: ZZZ (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! height of model layer (m) + +REAL(KIND=JPRB) :: ZTTEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective temperat. tendency (K/s) +REAL(KIND=JPRB) :: ZRVTEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective r_v tendency (1/s) +REAL(KIND=JPRB) :: ZRCTEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective r_c tendency (1/s) +REAL(KIND=JPRB) :: ZRITEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective r_i tendency (1/s) +REAL(KIND=JPRB) :: ZUTEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective u tendency (m/s^2) +REAL(KIND=JPRB) :: ZVTEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! convective m tendency (m/s^2) +REAL(KIND=JPRB) :: ZZUMF (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! updraft mass flux (kg/s m2) +REAL(KIND=JPRB) :: ZURV (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! water vapor in updrafts (kg/kg) +REAL(KIND=JPRB) :: ZURCI (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! total condensate in updrafts (kg/kg) +INTEGER(KIND=JPIM) :: ICLTOP (YDCPG_OPTS%KLON) ! cloud top level (number of model level) +INTEGER(KIND=JPIM) :: ICLBAS (YDCPG_OPTS%KLON) ! cloud base level(number of model level) +REAL(KIND=JPRB) :: ZSHAL_ZCH1 (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,I_KCH1) ! grid scale chemical species +REAL(KIND=JPRB) :: ZSHAL_ZCH1TEN (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,I_KCH1) ! chemical convective tendency +! special for shallow convection +REAL(KIND=JPRB) :: ZSHAL_ZCH1TENS (YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,I_KCH1) +INTEGER(KIND=JPIM) :: ICLBASS (YDCPG_OPTS%KLON), ICLTOPS (YDCPG_OPTS%KLON) + +! Declarations of local fixed memory variables : +INTEGER(KIND=JPIM) :: ICONV +REAL (KIND=JPRB) :: ZRDOCP ! R_d/C_p + +REAL (KIND=JPRB) :: ZTHT(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL (KIND=JPRB) :: ZSTHV(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL (KIND=JPRB) :: ZSTHES(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) ! grid scale theta, theta_v +! Declarations of local allocatable variables : +INTEGER (KIND=JPIM) :: ISDPL(YDCPG_OPTS%KLON) ! index for parcel departure level +INTEGER (KIND=JPIM) :: ISPBL(YDCPG_OPTS%KLON) ! index for source layer top +INTEGER (KIND=JPIM) :: ISLCL(YDCPG_OPTS%KLON) ! index for lifting condensation level +REAL (KIND=JPRB) :: ZSTHLCL(YDCPG_OPTS%KLON) ! updraft theta at LCL/L +REAL (KIND=JPRB) :: ZSTLCL(YDCPG_OPTS%KLON) ! updraft temp. at LCL +REAL (KIND=JPRB) :: ZSRVLCL(YDCPG_OPTS%KLON) ! updraft rv at LCL +REAL (KIND=JPRB) :: ZSWLCL(YDCPG_OPTS%KLON) ! updraft w at LCL +REAL (KIND=JPRB) :: ZSZLCL(YDCPG_OPTS%KLON) ! LCL height +REAL (KIND=JPRB) :: ZSTHVELCL(YDCPG_OPTS%KLON)! envir. theta_v at LCL + +LOGICAL :: LLTRIG1(YDCPG_OPTS%KLON) ! logical mask for convection + +! Following structures should be attached to YDMODEL and initialized in the setup +TYPE(CONVPAREXT) :: YLCVPEXT +TYPE(CONVPAR_SHAL) :: YLCVP_SHAL +TYPE(CST_T) :: YLCST_MNH +TYPE(NSV_T) :: YLNSV +TYPE(CONVPAR_T) :: YLCONVPAR +TYPE(DIMPHYEX_T) :: YDDIMS_MNH + +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +IF (LHOOK) CALL DR_HOOK('ACVPPKF',0,ZHOOK_HANDLE) +ASSOCIATE(RKFBNBX=>YDML_PHY_MF%YRPHY0%RKFBNBX, RKFBTAU=>YDML_PHY_MF%YRPHY0%RKFBTAU, RQLCR=>YDML_PHY_MF%YRPHY0%RQLCR, & + & RPRTH=>YDML_PHY_MF%YRPHY0%RPRTH, ECTMIN=>YDML_PHY_MF%YRPHY0%ECTMIN, AECLS4=>YDML_PHY_MF%YRPHY0%AECLS4, & + & TSPHY=>YDML_PHY_MF%YRPHY2%TSPHY, & + & LSMOOTH=>YDML_PHY_MF%YRCVMNH%LSMOOTH, & + & OTADJS=>YDML_PHY_MF%YRCVMNH%OTADJS, & + & LSETTADJ=>YDML_PHY_MF%YRCVMNH%LSETTADJ, & + & RATM=>YDCST%RATM, RCPD=>YDCST%RCPD, RCPV=>YDCST%RCPV, RCS=>YDCST%RCS, RCW=>YDCST%RCW, & + & RG=>YDCST%RG, RKAPPA=>YDCST%RKAPPA, RLSZER=>YDCST%RLSZER, RLVZER=>YDCST%RLVZER, & + & LECT=>YDML_PHY_MF%YRPHY%LECT, LCVDD=>YDML_PHY_MF%YRPHY%LCVDD) +!----------------------------------------------------------------- + +!$ACDC SERIAL { + +! Most of this should got in a setup; in particular, all structures should be +! attached to YDMODEL + +CALL INI_CONVPAR ! Should be called in setup +CALL INI_CONVPAR (YLCONVPAR) +YLNSV%NSV_LGBEG = NSV_LGBEG +YLNSV%NSV_LGEND = NSV_LGEND +YLCST_MNH = CST + +YLCVP_SHAL%XA25=YDML_PHY_MF%YRCVMNH%XA25 +YLCVP_SHAL%XCRAD=YDML_PHY_MF%YRCVMNH%XCRAD +YLCVP_SHAL%XCDEPTH=YDML_PHY_MF%YRCVMNH%XCDEPTH +YLCVP_SHAL%XCDEPTH_D=YDML_PHY_MF%YRCVMNH%XCDEPTH_D +YLCVP_SHAL%XDTPERT=YDML_PHY_MF%YRCVMNH%XDTPERT +YLCVP_SHAL%XATPERT=YDML_PHY_MF%YRCVMNH%XATPERT +YLCVP_SHAL%XBTPERT=YDML_PHY_MF%YRCVMNH%XBTPERT +YLCVP_SHAL%XENTR=YDML_PHY_MF%YRCVMNH%XENTR +YLCVP_SHAL%XZLCL=YDML_PHY_MF%YRCVMNH%XZLCL +YLCVP_SHAL%XZPBL=YDML_PHY_MF%YRCVMNH%XZPBL +YLCVP_SHAL%XWTRIG=YDML_PHY_MF%YRCVMNH%XWTRIG +YLCVP_SHAL%XNHGAM=YDML_PHY_MF%YRCVMNH%XNHGAM +YLCVP_SHAL%XTFRZ1=YDML_PHY_MF%YRCVMNH%XTFRZ1 +YLCVP_SHAL%XTFRZ2=YDML_PHY_MF%YRCVMNH%XTFRZ2 +YLCVP_SHAL%XSTABT=YDML_PHY_MF%YRCVMNH%XSTABT +YLCVP_SHAL%XSTABC=YDML_PHY_MF%YRCVMNH%XSTABC +YLCVP_SHAL%XAW=YDML_PHY_MF%YRCVMNH%XAW +YLCVP_SHAL%XBW=YDML_PHY_MF%YRCVMNH%XBW +YLCVP_SHAL%LLSMOOTH=LSMOOTH + +YDDIMS_MNH%NIT = YDCPG_OPTS%KLON +YDDIMS_MNH%NIB = YDCPG_BNDS%KIDIA +YDDIMS_MNH%NIE = YDCPG_BNDS%KFDIA +YDDIMS_MNH%NKT = YDCPG_OPTS%KFLEVG + +ZVMD=RCPV-RCPD +ZWMD=RCW-RCPD +ZSMD=RCS-RCPD + +I_KBDIA=1 +IKICE=1 +LLREFRESH_ALL=.TRUE. +LLDOWN=LCVDD +LLUVTRANS=.FALSE. ! not yet well tested but possible to use +LLOCHTRANS=.FALSE. +ZDTCONV=TSPHY +ZEPS=1.E-12_JPRB + +YLCVPEXT%JCVEXB = MAX( 0, I_KBDIA - 1) +YLCVPEXT%JCVEXT = MAX( 0, KTDIA - 1) + +ZRDOCP = YLCST_MNH%XRD / YLCST_MNH%XCPD + +LLCONDWT=.FALSE. + +!$ACDC } + +!$ACDC PARALLEL { + +ZUMFMAX(:)=1.E-12_JPRB +ZW(:,:)=0.0_JPRB +ZTKECLS(:)=0.0_JPRB +IF (LECT) THEN + DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZW(JLON,JLEV) = SQRT(MIN(3.0_JPRB,MAX(ECTMIN,PTKE(JLON,JLEV)))/AECLS4) + ENDDO + ENDDO + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZTKECLS(JLON)=PTKE(JLON,YDCPG_OPTS%KFLEVG) + ENDDO +ENDIF +DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZDPSG (JLON,JLEV) = PDELP(JLON,JLEV)/RG + ZAPHIF(JLON,JLEV) = PAPHIF(JLON,JLEV)/RG + ENDDO +ENDDO + +DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZDTDT (JLON,JLEV) = 0.0_JPRB + ZDQVDT(JLON,JLEV) = 0.0_JPRB + ZDQLDT(JLON,JLEV) = 0.0_JPRB + ZDQIDT(JLON,JLEV) = 0.0_JPRB + ZDUDT (JLON,JLEV) = 0.0_JPRB + ZDVDT (JLON,JLEV) = 0.0_JPRB + ZUMF (JLON,JLEV) = 0.0_JPRB + ZUQV (JLON,JLEV) = 0.0_JPRB + ZUQL (JLON,JLEV) = 0.0_JPRB + ZLV (JLON,JLEV) = FOLH(PT(JLON,JLEV),0.0_JPRB) + ZLS (JLON,JLEV) = FOLH(PT(JLON,JLEV),1.0_JPRB) + ZQC (JLON,JLEV) = PQL(JLON,JLEV)+PQI(JLON,JLEV) + ENDDO +ENDDO + +DO JLON=1,YDCPG_BNDS%KFDIA + I_KCOUNT(JLON) = 0 + ZCAPE (JLON) = 0.0_JPRB +ENDDO + +I_KCLTOP(:) = 1 ! set default value when no convection +I_KCLBAS(:) = 1 ! can be changed depending on user +ICLTOP(:) = 1 +ICLBAS(:) = 1 +ICLTOPS(:) = 1 +ICLBASS(:) = 1 + +!* 2. Flip arrays upside-down as first vertical level in convection is 1 +! -------------------------------------------------------------------- + +DO JLEV = 1, YDCPG_OPTS%KFLEVG + JKP = YDCPG_OPTS%KFLEVG - JLEV + 1 + DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ZPABS(JLON,JKP) = PAPRSF(JLON,JLEV) + ZZZ(JLON,JKP) = ZAPHIF(JLON,JLEV) + ZT(JLON,JKP) = PT(JLON,JLEV) + ZRV(JLON,JKP) = PQ(JLON,JLEV) / ( 1.0 - PQ(JLON,JLEV) ) ! transform specific humidity + ZRC(JLON,JKP) = PQL(JLON,JLEV) / ( 1.0 - PQL(JLON,JLEV) ) ! in mixing ratio + ZRI(JLON,JKP) = PQI(JLON,JLEV) / ( 1.0 - PQI(JLON,JLEV) ) + ZU(JLON,JKP) = PU(JLON,JLEV) + ZV(JLON,JKP) = PV(JLON,JLEV) + ZZW(JLON,JKP) = ZW(JLON,JLEV) + ENDDO +ENDDO + +IF ( LLOCHTRANS ) THEN + DO JLEV = 1, YDCPG_OPTS%KFLEVG + JKP = YDCPG_OPTS%KFLEVG - JLEV + 1 + DO JN = 1, I_KCH1 + DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ZSHAL_ZCH1(JLON,JKP,JN) = ZCH1(JLON,JLEV,JN) + ENDDO + ENDDO + ENDDO +ENDIF + +I_KCOUNT(:) =0 +ZTTEN(:,:) =0.0 +ZRVTEN(:,:) =0.0 +ZRCTEN(:,:) =0.0 +ZRITEN(:,:) =0.0 +ZUTEN(:,:) =0.0 +ZVTEN(:,:) =0.0 +ZZUMF(:,:) =0.0 +ZURV(:,:) =0.0 +ZURCI(:,:) =0.0 +ZSHAL_ZCH1TEN(:,:,:)=0.0 +ZCAPE(:) =0.0 + +!* 4.b Call shallow convection routine +! ------------------------------- + +CALL SHALLOW_CONVECTION_PART1 (YLCVPEXT, YLCVP_SHAL, YLCST_MNH, YDDIMS_MNH, YLNSV, YLCONVPAR, & +& I_KBDIA, KTDIA, IKICE, LSETTADJ, OTADJS, ZPABS, ZZZ, ZTKECLS, ZT, ZRV, ZRC, ZRI, ZZW, ZTTEN, ZRVTEN, & +& ZRCTEN, ZRITEN, ICLTOPS, ICLBASS, ZZUMF, LLOCHTRANS, I_KCH1, ZSHAL_ZCH1, ZSHAL_ZCH1TENS, & +& ZTHT, ZSTHV, ZSTHES, ISDPL, ISPBL, ISLCL, ZSTHLCL, ZSTLCL, ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, LLTRIG1) + +!$ACDC } + +ICONV = COUNT(LLTRIG1(YDDIMS_MNH%NIB:YDDIMS_MNH%NIE)) + +!$ACDC PARALLEL { + + +IF(ICONV==0)THEN + ! Do nothing if there are no selected columns +ELSE IF (ICONV < YDDIMS_MNH%NIT*9/10) THEN + CALL SHALLOW_CONVECTION_PART2_SELECT & + & (YLCVP_SHAL, YLCVPEXT, YLCST_MNH, YDDIMS_MNH, YLNSV, YLCONVPAR, & + & IKICE, LSETTADJ, OTADJS, ZPABS, ZZZ, ZT, ZRV, ZRC, ZRI, & + & LLOCHTRANS, I_KCH1, ZSHAL_ZCH1, ZRDOCP, ZTHT, ZSTHV, ZSTHES, ISDPL, ISPBL, & + & ISLCL, ZSTHLCL, ZSTLCL, ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, LLTRIG1, & + & ZZUMF, ZTTEN, ZRVTEN, ZRCTEN, ZRITEN, ICLTOPS, ICLBASS, ZSHAL_ZCH1TENS, ICONV) +ELSE + CALL SHALLOW_CONVECTION_PART2 & + & (YLCVP_SHAL, YLCVPEXT, YLCST_MNH, YDDIMS_MNH, YLNSV, YLCONVPAR, & + & IKICE, LSETTADJ, OTADJS, ZPABS, ZZZ, ZT, ZRV, ZRC, ZRI, & + & LLOCHTRANS, I_KCH1, ZSHAL_ZCH1, ZRDOCP, ZTHT, ZSTHV, ZSTHES, ISDPL, ISPBL, & + & ISLCL, ZSTHLCL, ZSTLCL, ZSRVLCL, ZSWLCL, ZSZLCL, ZSTHVELCL, LLTRIG1, & + & ZZUMF, ZTTEN, ZRVTEN, ZRCTEN, ZRITEN, ICLTOPS, ICLBASS, ZSHAL_ZCH1TENS) +ENDIF + +!$ACDC } + +!$ACDC PARALLEL { + +DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ICLTOP(JLON) = MAX(ICLTOP(JLON), ICLTOPS(JLON)) + ICLBAS(JLON) = MAX(ICLBAS(JLON), ICLBASS(JLON)) +ENDDO + +!* 6. Reflip arrays to ECMWF/ARPEGE vertical structure +! change mixing ratios to sepcific humidity + +DO JLEV = 1, YDCPG_OPTS%KFLEVG + JKP = YDCPG_OPTS%KFLEVG - JLEV + 1 + DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ZDTDT(JLON,JLEV) = ZTTEN(JLON,JKP) + ! don't transform back to specific hum, does not conserve integrals + ZDQVDT(JLON,JLEV) = ZRVTEN(JLON,JKP) ! / ( 1.0 + ZRV(JI,JKP) ) ** 2 + ZDQLDT(JLON,JLEV) = ZRCTEN(JLON,JKP) ! / ( 1.0 + ZRC(JI,JKP) ) ** 2 + ZDQIDT(JLON,JLEV) = ZRITEN(JLON,JKP) ! / ( 1.0 + ZRI(JI,JKP) ) ** 2 + ZDUDT(JLON,JLEV) = ZUTEN(JLON,JKP) + ZDVDT(JLON,JLEV) = ZVTEN(JLON,JKP) + ZUMF(JLON,JLEV) = ZZUMF(JLON,JKP) + ZUQV(JLON,JLEV) = ZURV(JLON,JKP) / ( 1.0 + ZURV(JLON,JKP) ) + ZUQL(JLON,JLEV) = ZURCI(JLON,JKP)/ ( 1.0 + ZURCI(JLON,JKP) ) + ENDDO +ENDDO + +DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + JLEV = ICLTOP(JLON) + I_KCLTOP(JLON) = YDCPG_OPTS%KFLEVG - JLEV + 1 + JLEV = ICLBAS(JLON) + I_KCLBAS(JLON) = YDCPG_OPTS%KFLEVG - JLEV + 1 + IF ( ICLTOP(JLON) == 1 ) I_KCLTOP(JLON) = 1 + IF ( ICLBAS(JLON) == 1 ) I_KCLBAS(JLON) = 1 +ENDDO + +IF ( LLOCHTRANS ) THEN + DO JLEV = 1, YDCPG_OPTS%KFLEVG + JKP = YDCPG_OPTS%KFLEVG - JLEV + 1 + DO JN = 1, I_KCH1 + DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ZCH1TEN(JLON,JLEV,JN) = ZSHAL_ZCH1TEN(JLON,JKP,JN) + ENDDO + ENDDO + ENDDO +ENDIF + +! Calcul de la production thermique pour la TKE +PPRODTH(:,:)=0.0_JPRB +IF (RPRTH > 0._JPRB) THEN + DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZBETA (JLON,JLEV) = (RATM/PAPRSF(JLON,JLEV))**(RKAPPA) + ZTHETA(JLON,JLEV) = PT(JLON,JLEV)*ZBETA(JLON,JLEV) + ZRHO (JLON,JLEV) = PAPRSF(JLON,JLEV)/(PR(JLON,JLEV)*PT(JLON,JLEV)) + ENDDO + ENDDO + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZTHETA(JLON,0) = ZTHETA(JLON,1) + ZRHO (JLON,0) = ZRHO (JLON,1) + ZTHETA(JLON,YDCPG_OPTS%KFLEVG+1) = ZTHETA(JLON,YDCPG_OPTS%KFLEVG) + ZRHO (JLON,YDCPG_OPTS%KFLEVG+1) = ZRHO (JLON,YDCPG_OPTS%KFLEVG) + ENDDO + + DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZTDCP=ZVMD*ZDQVDT(JLON,JLEV)+ZWMD*ZDQLDT(JLON,JLEV)+ZSMD*ZDQIDT(JLON,JLEV) + ZDQCDT=ZDQLDT(JLON,JLEV)+ZDQIDT(JLON,JLEV) + ZDTLDT=ZBETA (JLON,JLEV)& + & * ( ZDTDT(JLON,JLEV) + ZLV(JLON,JLEV)/PCP(JLON,JLEV)& + & * ( ZQC(JLON,JLEV)*ZTDCP/PCP(JLON,JLEV)-ZDQCDT ) ) + PPRODTH(JLON,JLEV)=PPRODTH(JLON,JLEV-1)-ZDPSG(JLON,JLEV)*ZDTLDT + ENDDO + ENDDO + + DO JLEV=0,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + PPRODTH(JLON,JLEV)=PPRODTH(JLON,JLEV)*RG*4._JPRB& + & / ( ZRHO (JLON,JLEV) + ZRHO (JLON,JLEV+1) )& + & / ( ZTHETA(JLON,JLEV) + ZTHETA(JLON,JLEV+1) ) + ENDDO + ENDDO +ENDIF ! Fin du calcul de la production thermique pour la TKE + +DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + DO JLEV=1,YDCPG_OPTS%KFLEVG + KNLAB(JLON,JLEV)=1-MAX(0,MIN(1,(I_KCLTOP(JLON)-JLEV)*(I_KCLBAS(JLON)-JLEV))) + ENDDO + KNND(JLON)=MIN(1,I_KCLTOP(JLON)-1) +ENDDO + +! Calcul de la nebulosite et de l'eau condensee +IF (RKFBTAU > 0._JPRB) THEN + DO JLEV=1,YDCPG_OPTS%KFLEVG +!DEC$ IVDEP + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZDQCDT=MAX(0.0_JPRB,ZDQLDT(JLON,JLEV)+ZDQIDT(JLON,JLEV)) + PQCPP (JLON,JLEV)=RKFBTAU*ZDQCDT*FLOAT(KNLAB(JLON,JLEV)) + PNEBPP(JLON,JLEV)=MAX(ZEPS,MIN(RKFBNBX,PQCPP(JLON,JLEV)/RQLCR)) + ZUMFMAX(JLON)=MAX(ZUMFMAX(JLON),ZUMF(JLON,JLEV)) + ENDDO + ENDDO + IF (.NOT.LSMOOTH) THEN + DO JLEV=1,YDCPG_OPTS%KFLEVG +!DEC$ IVDEP + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + PQCPP (JLON,JLEV)=PQCPP(JLON,JLEV)& + & *MIN(1.0_JPRB,ZUMF(JLON,JLEV)/ZUMFMAX(JLON)) + PNEBPP(JLON,JLEV)=MAX(ZEPS,MIN(RKFBNBX,PQCPP(JLON,JLEV)/RQLCR)) + ENDDO + ENDDO + ENDIF +ENDIF ! Fin du calcul de la nebulosite et de l'eau condensee + +IF (.NOT.LLCONDWT) THEN + DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + ZDQVDT(JLON,JLEV)=ZDQVDT(JLON,JLEV)+ZDQLDT(JLON,JLEV)+ZDQIDT(JLON,JLEV) + ZDTDT(JLON,JLEV)=ZDTDT(JLON,JLEV) - (ZLV(JLON,JLEV)*ZDQLDT(JLON,JLEV)& + & + ZLS(JLON,JLEV)*ZDQIDT(JLON,JLEV)) / PCP(JLON,JLEV) + ZDQLDT(JLON,JLEV)=0.0_JPRB + ZDQIDT(JLON,JLEV)=0.0_JPRB + ENDDO + ENDDO +ELSE + DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + PFCCQL(JLON,JLEV)=PFCCQL(JLON,JLEV-1)+ZDPSG(JLON,JLEV)*ZDQLDT(JLON,JLEV) + PFCCQN(JLON,JLEV)=PFCCQN(JLON,JLEV-1)+ZDPSG(JLON,JLEV)*ZDQIDT(JLON,JLEV) + ENDDO + ENDDO +ENDIF + +DO JLEV=1,YDCPG_OPTS%KFLEVG +!DEC$ IVDEP + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + PDIFCQ(JLON,JLEV)=PDIFCQ(JLON,JLEV-1)-ZDPSG(JLON,JLEV)*ZDQVDT(JLON,JLEV) + ZTDCP=ZVMD*ZDQVDT(JLON,JLEV)+ZWMD*ZDQLDT(JLON,JLEV)+ZSMD*ZDQIDT(JLON,JLEV) + PDIFCS(JLON,JLEV)=PDIFCS(JLON,JLEV-1)-ZDPSG(JLON,JLEV)& + & * (ZDTDT(JLON,JLEV)*(PCP(JLON,JLEV)+TSPHY*ZTDCP)+PT(JLON,JLEV)*ZTDCP) + ENDDO +ENDDO + +DO JLEV=1,YDCPG_OPTS%KFLEVG + DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA + PDIFCQ(JLON,JLEV)=PDIFCQ(JLON,JLEV)-PFCCQL(JLON,JLEV)-PFCCQN(JLON,JLEV) + PDIFCS(JLON,JLEV)=PDIFCS(JLON,JLEV)& + & + RLVZER*PFCCQL(JLON,JLEV) + RLSZER*PFCCQN(JLON,JLEV) + ENDDO +ENDDO + +!$ACDC } + +!$ACDC SKIP { + +IF(LMUSCLFA) CALL WRSCMR(NMUSCLFA,'ZMF_shal',ZUMF,YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) + +!$ACDC } + +!----------------------------------------------------------------- +END ASSOCIATE +IF (LHOOK) CALL DR_HOOK('ACVPPKF',1,ZHOOK_HANDLE) +END SUBROUTINE ACVPPKF + diff --git a/src/arome/ext/aer_effic.F90 b/src/arome/ext/aer_effic.F90 index 9028706410d588d3905e4a01805fff18f6dbf2ca..f30276efb4fd1b30d93a348c4075bc0ef2152242 100644 --- a/src/arome/ext/aer_effic.F90 +++ b/src/arome/ext/aer_effic.F90 @@ -7,8 +7,7 @@ SUBROUTINE AER_EFFIC(PRG,PVGG, & !aerosol radius/fall speed (m/s) KMODE, & ! Number of aerosol modes PTEMP, PCOR, & ! air temp, cunningham corr factor PDENSITY_AER ) ! aerosol density -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK !! ####################################### !!**********AER_EFFIC********** !! PURPOSE @@ -93,7 +92,7 @@ REAL, DIMENSION(SIZE(PRG,1),KMODE) :: ZT3, ZT4 INTEGER :: JI,JK ! !----------------------------------------------------------------- -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_EFFIC',0,ZHOOK_HANDLE) ZRRS(:)=PRRS(:) IKB = 1 + JPVEXT diff --git a/src/arome/ext/aer_wet_dep_kmt_warm.F90 b/src/arome/ext/aer_wet_dep_kmt_warm.F90 index 1faee2a84166ef59b02430e88f3be657927aed46..03a49e0819455c3ae5c3dde0b8d66d0c8d89f837 100644 --- a/src/arome/ext/aer_wet_dep_kmt_warm.F90 +++ b/src/arome/ext/aer_wet_dep_kmt_warm.F90 @@ -5,8 +5,7 @@ PPABST, PRGAER, PEVAP3D, KMODE, & PDENSITY_AER, PMASSMIN, PSEA, PTOWN, & PCCT, PCRT ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################### ! !!**** * - compute the explicit microphysical processes involved in the @@ -188,7 +187,7 @@ INTEGER :: IKE, IJE, IIE, IKB ! --------------------- ! ! Compute Effective cloud radius -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM',0,ZHOOK_HANDLE) ZRAY(:,:,:) = 0. ZLBC(:,:,:) = 0. @@ -274,7 +273,7 @@ INTEGER :: JKAQ ! counter for chemistry ! ! 1 Mass transfer Aerosol to cloud (Tost et al., 2006) ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:AER_WET_MASS_TRANSFER',0,ZHOOK_HANDLE) GCLOUD(:,:,:) = .FALSE. GCLOUD(:,:,:) = PRCS(:,:,:)>XRTMIN(2) @@ -493,7 +492,7 @@ INTEGER :: JKAQ ! counter for acquous aerosols !------------------------------------------------------------------------------- ! !* Time splitting initialization -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:AER_WET_DEP_KMT_WARM_SEDIMENT',0,ZHOOK_HANDLE) ZTSPLITR = PTSTEP / FLOAT(KSPLITR) ! @@ -577,7 +576,7 @@ IMPLICIT NONE ! !* 1. compute the autoconversion of r_c for r_r production: RCAUTR ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:AER_WET_DEP_KMT_ICE_WARM',0,ZHOOK_HANDLE) ZZW4(:,:,:)=0.0 ! to be sure no division by zero in case of ZZRCT = 0. @@ -655,7 +654,7 @@ INTEGER :: JKAQ ! counter for aerosols !half of the evaporation rate of water ! ! Rain water evaporated during PTSTEP in kg/kg -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:AER_WET_DEP_KMT_EVAP',0,ZHOOK_HANDLE) ZZEVAP(:,:,:) = PEVAP3D(:,:,:) * PTSTEP ! Fraction of rain water evaporated @@ -718,7 +717,7 @@ IMPLICIT NONE !* 1.1 compute gravitational velocities ! !initialize - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:AER_WET_DEP_KMT_EFFIC',0,ZHOOK_HANDLE) ZTEMP(:)=ZTHT(:)*(ZPABST(:)/XP00)**(XRD/XCPD) ZTEMP(:)=MAX(ZTEMP(:),1.e-12) @@ -786,7 +785,7 @@ INTEGER :: JI,JJ,JK,IC ! !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AER_WET_DEP_KMT_WARM:COUNTJV',0,ZHOOK_HANDLE) I1(:)=0 I2(:)=0 diff --git a/src/arome/ext/apl_arome.F90 b/src/arome/ext/apl_arome.F90 index 9b83e1efcb4868f0488fb96c0a046363bd79e144..a2ffae4aa86d83ccedd8e9aa9d5dcbbd07009419 100644 --- a/src/arome/ext/apl_arome.F90 +++ b/src/arome/ext/apl_arome.F90 @@ -2,7 +2,7 @@ @PROCESS NOCHECK #endif SUBROUTINE APL_AROME(YDCST, YDMF_PHYS_BASE_STATE, YDMF_PHYS_NEXT_STATE, YDGEOMETRY, YDCPG_BNDS, YDCPG_OPTS, & -& YDCPG_MISC, YDCPG_GPAR, YDCPG_PHY0, YDCPG_PHY9, YDMF_PHYS, YDCPG_DYN0, YDCPG_DYN9, YDMF_PHYS_SURF, & +& YDCPG_MISC, YDCPG_GPAR, YDCPG_PHY0, YDMF_PHYS, YDCPG_DYN0, YDMF_PHYS_SURF, & & YDCPG_SL1, YDVARS, YDGMV, YDSURF, YDCFU, YDXFU, YDMODEL, PGFL, PGP2DSDT, PGMVT1, & & PGFLT1, PTRAJ_PHYS, YDDDH) @@ -202,11 +202,10 @@ USE YOMXFU , ONLY : TXFU USE YOMCFU , ONLY : TCFU USE TYPE_MODEL , ONLY : MODEL USE PARKIND1 , ONLY : JPIM ,JPRB ,JPRD -USE YOMHOOK , ONLY : LHOOK ,DR_HOOK -USE YOESW , ONLY : RSUN2 +USE YOMHOOK , ONLY : LHOOK ,DR_HOOK, JPHOOK USE YOMCST , ONLY : TCST USE YOMLUN , ONLY : NULOUT -USE YOMCT0 , ONLY : LTWOTL, LSFORCS, LSLAG, LNHDYN, LAROME, LELAM +USE YOMCT0 , ONLY : LSFORCS, LAROME USE YOMVERT , ONLY : VP00 USE YOMRIP0 , ONLY : NINDAT USE YOMNUDGLH , ONLY : LNUDGLH, NSTARTNUDGLH, NSTOPNUDGLH, NINTNUDGLH, NTAUNUDGLH, & @@ -214,8 +213,7 @@ USE YOMNUDGLH , ONLY : LNUDGLH, NSTARTNUDGLH, NSTOPNUDGLH, NINTNUDGLH, NTAUNUDG USE YOMNSV , ONLY : NSV_CO2 USE DDH_MIX , ONLY : NEW_ADD_FIELD_3D, NEW_ADD_FIELD_2D,& & NTOTSVAR, NTOTSURF, NTOTSVFS, TYP_DDH ! for new data flow -USE YOMSPSDT , ONLY : YSPPT_CONFIG, YSPPT -USE SPP_MOD , ONLY : YSPP_CONFIG, YSPP +!USE SPP_MOD , ONLY : YSPP_CONFIG, YSPP USE SPP_MOD_TYPE, ONLY : ALL_SPP_VARS, SET_ALL_SPP, CLEAR_ALL_SPP, APPLY_SPP USE YOMLSFORC , ONLY : LMUSCLFA, NMUSCLFA, REMIS_FORC, RALB_FORC USE INTFLEX_MOD, ONLY : LINTFLEX, LRADFLEX,& @@ -230,8 +228,6 @@ USE MF_PHYS_NEXT_STATE_TYPE_MOD & USE YOMGMV , ONLY : TGMV USE SC2PRG_MOD , ONLY : SC2PRG -USE YOMCVER , ONLY : LVERTFE ,LVFE_GWMPA -USE YOMDYNA , ONLY : LGWADV, L_RDRY_VD USE YOMSCM , ONLY : LGSCM USE YOMTRAJ , ONLY : TRAJ_PHYS_TYPE @@ -248,10 +244,8 @@ TYPE(CPG_OPTS_TYPE), INTENT(IN) :: YDCPG_OPTS TYPE(CPG_MISC_TYPE), INTENT(INOUT) :: YDCPG_MISC TYPE(CPG_GPAR_TYPE), INTENT(INOUT) :: YDCPG_GPAR TYPE(CPG_PHY_TYPE), INTENT(IN) :: YDCPG_PHY0 -TYPE(CPG_PHY_TYPE), INTENT(IN) :: YDCPG_PHY9 TYPE(MF_PHYS_TYPE), INTENT(IN) :: YDMF_PHYS TYPE(CPG_DYN_TYPE), INTENT(IN) :: YDCPG_DYN0 -TYPE(CPG_DYN_TYPE), INTENT(IN) :: YDCPG_DYN9 TYPE(MF_PHYS_SURF_TYPE), INTENT(INOUT) :: YDMF_PHYS_SURF TYPE(CPG_SL1_TYPE), INTENT(INOUT) :: YDCPG_SL1 TYPE(FIELD_VARIABLES), INTENT(INOUT) :: YDVARS @@ -263,7 +257,7 @@ TYPE(MODEL), INTENT(IN) :: YDMODEL REAL(KIND=JPRB), INTENT(INOUT) :: PGFL(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,YDMODEL%YRML_GCONF%YGFL%NDIM) -REAL(KIND=JPRB), INTENT(IN) :: PGP2DSDT(YDCPG_OPTS%KLON,YSPPT%YGPSDT(1)%NG2D,YSPPT%N2D) +REAL(KIND=JPRB), INTENT(IN) :: PGP2DSDT(YDCPG_OPTS%KLON,YDMODEL%YRML_SPPT%YGPSDT(1)%NG2D,YDMODEL%YRML_SPPT%N2D) REAL(KIND=JPRB), INTENT(INOUT) :: PGMVT1(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,YDGMV%YT1%NDIM) REAL(KIND=JPRB), INTENT(INOUT) :: PGFLT1(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,YDMODEL%YRML_GCONF%YGFL%NDIM1) TYPE (TRAJ_PHYS_TYPE), INTENT(INOUT) :: PTRAJ_PHYS @@ -524,9 +518,8 @@ REAL(KIND=JPRB) :: ZQN2O(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZQNO2(YDCPG_OPTS%KL REAL(KIND=JPRB) :: ZQC12(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZQC22(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZQCL4(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZCHTIX(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG+1), ZCAPH(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG+1), ZTH(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG+1) REAL(KIND=JPRB) :: ZDUM(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZGELAM(YDCPG_OPTS%KLON) -REAL(KIND=JPRB), TARGET :: ZTKEM4SLDDH(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) -REAL(KIND=JPRB), POINTER :: ZTKEM(:,:) +REAL(KIND=JPRB) :: ZTKEM(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZQW(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZTW(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZTENT(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) @@ -754,7 +747,7 @@ REAL (KIND=JPRB) :: ZSAV_FHPS (YDCPG_OPTS%KLON) TYPE(TYPE_INTPROCSET) :: YLPROCSET ! SPP -REAL(KIND=JPRB) :: ZGP2DSPP(YDCPG_OPTS%KLON,YSPP%N2D) +REAL(KIND=JPRB) :: ZGP2DSPP(YDCPG_OPTS%KLON,YDMODEL%YRML_GCONF%YRSPP_CONFIG%SM%NRFTOTAL) REAL(KIND=JPRB), POINTER, CONTIGUOUS :: ZTEND_Q (:,:) REAL(KIND=JPRB), POINTER, CONTIGUOUS :: ZTEND_L (:,:) @@ -776,7 +769,7 @@ REAL(KIND=JPRB), POINTER, CONTIGUOUS :: ZTENDEXT (:,:,:) REAL(KIND=JPRB), POINTER :: ZP1EZDIAG(:,:,:) -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ------------------------------------------------------------------ @@ -801,7 +794,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE #include "acnpart.intfb.h" #include "bri2acconv.intfb.h" #include "gpgeo.intfb.h" -#include "gprcp.intfb.h" +#include "gprcp_qlirsg.intfb.h" #include "radheat.intfb.h" #include "radghg.intfb.h" #include "suozon.intfb.h" @@ -852,8 +845,9 @@ ASSOCIATE(YDDIM=>YDGEOMETRY%YRDIM, YDGEM=>YDGEOMETRY%YRGEM, YDSTA=>YDGEOMETRY%YR & YDVISI=>YDMODEL%YRML_PHY_MF%YRPHY%YRDVISI, YDPHY2=>YDMODEL%YRML_PHY_MF%YRPHY2, YGFL=>YDMODEL%YRML_GCONF%YGFL, & & YDMSE=>YDMODEL%YRML_PHY_MF%YRMSE, YDPARAR=>YDMODEL%YRML_PHY_MF%YRPARAR, YDPRECIPS=>YDMODEL%YRML_PHY_MF%YRPHY%YRDPRECIPS, & & YDSTOPH=>YDMODEL%YRML_PHY_STOCH%YRSTOPH, YDPTRSLB1=>YDMODEL%YRML_DYN%YRPTRSLB1, YDMDDH=>YDMODEL%YRML_DIAG%YRMDDH, & -& YDDPHY=>YDMODEL%YRML_PHY_G%YRDPHY, YDLDDH=>YDMODEL%YRML_DIAG%YRLDDH, YDEPHY=> YDMODEL%YRML_PHY_EC%YREPHY & -& ) +& YDDPHY=>YDMODEL%YRML_PHY_G%YRDPHY, YDLDDH=>YDMODEL%YRML_DIAG%YRLDDH, YDEPHY=> YDMODEL%YRML_PHY_EC%YREPHY, & +& YDDYNA=>YDMODEL%YRML_DYN%YRDYNA, YDSPPT_CONFIG=>YDMODEL%YRML_GCONF%YRSPPT_CONFIG, YDSPPT=>YDMODEL%YRML_SPPT, & +& YDSPP_CONFIG=>YDMODEL%YRML_GCONF%YRSPP_CONFIG,YDSPP=>YDMODEL%YRML_SPP,YDCVER=>YDGEOMETRY%YRCVER) ASSOCIATE(MINPRR=>YDPARAR%MINPRR, MINPRS=>YDPARAR%MINPRS, MVQS=>YDPARAR%MVQS, MINPRG=>YDPARAR%MINPRG, & & LOTOWNC=>YDPARAR%LOTOWNC, LFPREC3D=>YDPARAR%LFPREC3D, NRRI=>YDPARAR%NRRI, NRRL=>YDPARAR%NRRL, & @@ -887,14 +881,16 @@ ASSOCIATE(MINPRR=>YDPARAR%MINPRR, MINPRS=>YDPARAR%MINPRS, MVQS=>YDPARAR%MVQS, MI & LDPRECIPS=>YDPHY%LDPRECIPS, LDPRECIPS2=>YDPHY%LDPRECIPS2, NDTPREC=>YDPRECIPS%NDTPREC, NDTPREC2=>YDPRECIPS%NDTPREC2, & & NGPTOT=>YDGEM%NGPTOT, NGPBLKS=>YDDIM%NGPBLKS, NTSSG=>YDDPHY%NTSSG, YEZDIAG=>YGFL%YEZDIAG, YEXT=>YGFL%YEXT, & & YNOGW=>YGFL%YNOGW, YCHEM=>YGFL%YCHEM, YSP_SBD=>YDSURF%YSP_SBD, LEDR=>YDPHY%LEDR, LAGPHY=>YDEPHY%LAGPHY, & -& YLIMA=>YGFL%YLIMA, LSPSDT => YSPPT_CONFIG%LSPSDT, LKOGAN=>YDPARAR%LKOGAN, & -& LMODICEDEP=>YDPARAR%LMODICEDEP, LWINDFARM=>YDPHY%LWINDFARM, & +& YLIMA=>YGFL%YLIMA, LSPSDT => YDSPPT_CONFIG%LSPSDT, LKOGAN=>YDPARAR%LKOGAN, & +& LMODICEDEP=>YDPARAR%LMODICEDEP, LWINDFARM=>YDPHY%LWINDFARM, & & RG=>YDCST%RG, RCPD=>YDCST%RCPD, RATM=>YDCST%RATM, RTT=>YDCST%RTT, RPI=>YDCST%RPI, & & RCW=>YDCST%RCW, RCPV=>YDCST%RCPV, RLVTT=>YDCST%RLVTT, RCS=>YDCST%RCS, RLSTT=>YDCST%RLSTT, & & RGAMW=>YDCST%RGAMW, RBETW=>YDCST%RBETW, RALPW=>YDCST%RALPW, RGAMS=>YDCST%RGAMS, & & RBETS=>YDCST%RBETS, RALPS=>YDCST%RALPS, RGAMD=>YDCST%RGAMD, RBETD=>YDCST%RBETD, & & RALPD=>YDCST%RALPD, RETV=>YDCST%RETV, RKAPPA=>YDCST%RKAPPA, RHOUR=>YDCST%RHOUR, RV=>YDCST%RV, RD=>YDCST%RD, & -& LTOTPRECL=>YDPARAR%LTOTPRECL) +& LTOTPRECL=>YDPARAR%LTOTPRECL, RSUN2=>YDMODEL%YRML_PHY_RAD%YRESWRT%RSUN2,& +& LSLAG=>YDDYNA%LSLAG, LGWADV=>YDDYNA%LGWADV, L_RDRY_VD=>YDDYNA%L_RDRY_VD,& +& LVERTFE=>YDCVER%LVERTFE, LVFE_GWMPA=>YDCVER%LVFE_GWMPA) CALL SC2PRG(1, YEZDIAG(:)%MP, YDMODEL%YRML_GCONF%YGFL%NGFL_EZDIAG, PGFL, ZP1EZDIAG) @@ -917,9 +913,9 @@ IF (YDCPG_OPTS%LCONFX) THEN ENDIF ! SPP -IF ( YSPP_CONFIG%LSPP ) THEN - DO JSPP=1,YSPP%N2D - ZGP2DSPP(:,JSPP) = YSPP%GP_ARP(JSPP)%GP2D(:,1,YDCPG_BNDS%KBL) +IF ( YDSPP_CONFIG%LSPP ) THEN + DO JSPP=1,YDMODEL%YRML_GCONF%YRSPP_CONFIG%SM%NRFTOTAL + ZGP2DSPP(:,JSPP) = YDSPP%GP_ARP(JSPP)%GP2D(:,1,YDCPG_BNDS%KBL) ENDDO ENDIF @@ -927,7 +923,7 @@ ENDIF LLDIAB=(.NOT.LAGPHY) IF (LLDIAB) THEN - CALL CPPHINP(YDCPG_OPTS%LVERTFE, YDGEOMETRY, YDMODEL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDVARS%GEOMETRY%GEMU%T0, & + CALL CPPHINP(YDGEOMETRY, YDMODEL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDVARS%GEOMETRY%GEMU%T0, & & YDVARS%GEOMETRY%GELAM%T0, YDVARS%U%T0, YDVARS%V%T0, YDVARS%Q%T0, YDVARS%Q%DL, YDVARS%Q%DM, YDVARS%CVGQ%DL, YDVARS%CVGQ%DM, & & YDCPG_PHY0%XYB%RDELP, YDCPG_DYN0%CTY%EVEL, YDVARS%CVGQ%T0, ZRDG_MU0, ZRDG_MU0LU, ZRDG_MU0M, & & ZRDG_MU0N, ZRDG_CVGQ) @@ -1038,10 +1034,10 @@ ENDIF ! for leap frog scheme ! !!! be carefull for 2TL or 3TL -IF (LTWOTL) THEN +IF (YDDYNA%LTWOTL) THEN ZDT=YDCPG_OPTS%ZDTPHY/2._JPRB ELSE - IF (YDCPG_OPTS%KSTEP/=0) THEN + IF (YDCPG_OPTS%NSTEP/=0) THEN ZDT=YDCPG_OPTS%ZDTPHY/2._JPRB ELSE ZDT=YDCPG_OPTS%ZDTPHY @@ -1054,7 +1050,7 @@ ZINVG=1._JPRB/RG !set concentration for LIMA LLIMAINIT=.FALSE. -IF (YDCPG_OPTS%KSTEP==0 .AND. CMICRO=='LIMA') THEN +IF (YDCPG_OPTS%NSTEP==0 .AND. CMICRO=='LIMA') THEN LLIMAINIT=.TRUE. ZP1EZDIAG(:,:,1)=0._JPRB ZP1EZDIAG(:,:,2)=0._JPRB @@ -1074,7 +1070,7 @@ ELSE ZADTMS=ZDTMSE ENDIF -IF(LTWOTL) THEN +IF(YDDYNA%LTWOTL) THEN ZRHGMT=REAL(RHGMT,JPRB)-ZDTMSE*.5_JPRB ELSE ZRHGMT=REAL(RHGMT,JPRB) @@ -1275,30 +1271,22 @@ DO JLEV = 1,YDCPG_OPTS%KFLEVG ENDDO ! adhoc solution to avoid negative tke values -! when SL advective ddh is activated -IF (LRSLDDH) THEN - DO JLEV=1, YDCPG_OPTS%KFLEVG - DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA - ZTKEM4SLDDH(JLON,JLEV)=MAX(YDMF_PHYS_BASE_STATE%TKE(JLON,JLEV),PPTKEMIN) - ENDDO +DO JLEV=1, YDCPG_OPTS%KFLEVG + DO JLON = YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA + ZTKEM(JLON,JLEV)=MAX(YDMF_PHYS_BASE_STATE%TKE(JLON,JLEV),PPTKEMIN) ENDDO - ZTKEM => ZTKEM4SLDDH(:,:) -ELSE - ZTKEM => YDMF_PHYS_BASE_STATE%TKE(:,:) - !test TKE > 0. - IF (MINVAL(ZTKEM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)) <= 0._JPRB) THEN - CALL ABOR1('TKE < 0 under APL_AROME check YTKE_NL%NREQIN') - ENDIF -ENDIF +ENDDO !initialisation of first useful field for EZDIAG use in Chemistry/Dust IOFF_MFSHAL=1 IF(LFPREC3D) IOFF_MFSHAL=2 ! 1.5 SPP settings -IF (YSPP_CONFIG%LSPP) THEN +IF (YDSPP_CONFIG%LSPP) THEN CALL SET_ALL_SPP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,NGFL_EZDIAG, & - & YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA,ZGP2DSPP,ZP1EZDIAG,ZSPP_ALL) + & YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA,YDSPP_CONFIG%SM%NRFTOTAL, & + & ZGP2DSPP,ZP1EZDIAG, & + & YDSPP_CONFIG,ZSPP_ALL) ENDIF ! ------------------------------------------------------------------ @@ -1478,7 +1466,7 @@ IF (LMICRO.OR.LTURB.OR.LLMSE.OR.LKFBCONV) THEN !initialisation de ZZI_THRAD IF (CMICRO=='LIMA') THEN - IF (YDCPG_OPTS%KSTEP==0) THEN + IF (YDCPG_OPTS%NSTEP==0) THEN DO JLEV = 1, YDCPG_OPTS%KFLEVG ZDTHRAD_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=0._JPRB ENDDO @@ -1499,7 +1487,7 @@ ZFRTH => YDMF_PHYS%OUT%FRTH(:,:,1) ! 3 - PRINTS FOR DIAGNOSTICS IF NEEDED ! ------------------------------------------------------------------ IF (LDIAGWMAX) THEN - IF (MOD(YDCPG_OPTS%KSTEP+1,NDIAGWMAX)==0) THEN + IF (MOD(YDCPG_OPTS%NSTEP+1,NDIAGWMAX)==0) THEN ! calcul de wmax DO JLEV = 1 , YDCPG_OPTS%KFLEVG Z_WMAX=0._JPRB @@ -1537,7 +1525,7 @@ IF (LMICRO) THEN IF (LMFSHAL .AND. (PHYEX%PARAM_MFSHALLN%CMF_CLOUD=='DIRE'.OR.PHYEX%PARAM_MFSHALLN%CMF_CLOUD=='BIGA')) THEN IOFF_MFSHAL=IOFF_MFSHAL+3 - IF (YDCPG_OPTS%KSTEP==0) THEN + IF (YDCPG_OPTS%NSTEP==0) THEN DO JLEV = 1, YDCPG_OPTS%KFLEVG ZRC_MF_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=0._JPRB ZRI_MF_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=0._JPRB @@ -1559,7 +1547,7 @@ IF (LMICRO) THEN ENDDO ENDIF - IF (MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF (MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'avant aro_adjust sous apl_arome' WRITE(NULOUT,*)'JLEV ZZZ_F_ RHODJM EXNREFM PABSM THM SIGM MFM ' DO JLEV=1,YDCPG_OPTS%KFLEVG @@ -1601,7 +1589,7 @@ IF (LMICRO) THEN CALL ARO_ADJUST_LIMA (PHYEX, & & YDCPG_OPTS%KFLEVG, IKU, IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_BNDS%KFDIA, NRR, & - & NLIMA, YDCPG_OPTS%KSTEP+1, PHYEX%NEBN%LSUBG_COND, PHYEX%NEBN%LSIGMAS, ZDT, PHYEX%NEBN%VSIGQSAT, ZZZ_F_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), & + & NLIMA, YDCPG_OPTS%NSTEP+1, PHYEX%NEBN%LSUBG_COND, PHYEX%NEBN%LSIGMAS, ZDT, PHYEX%NEBN%VSIGQSAT, ZZZ_F_, ZRHODJM__(:, 1:YDCPG_OPTS%KFLEVG), & & ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), ZEXNREFM_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), & & ZRM_, ZLIMAM_, ZSIGM_, ZPTRWNU_, ZDTHRAD_, ZMFM_, ZRC_MF_, ZRI_MF_, ZCF_MF_, ZTHS__(:, 1:YDCPG_OPTS%KFLEVG), ZRS_, & & ZLIMAS_, ZSRCS__(:, 1:YDCPG_OPTS%KFLEVG), ZNEBMNH_, ZICEFR_, ZPRCFR_, YDDDH, YDMODEL%YRML_DIAG%YRLDDH, YDMODEL%YRML_DIAG%YRMDDH, & @@ -1623,7 +1611,7 @@ IF (LMICRO) THEN ENDIF - IF (MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF (MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'apres aro_adjust sous apl_arome' WRITE(NULOUT,*)'JLEV ZZZ_F_ RHODJM EXNREFM PABSM THM SIGM MFM ' DO JLEV=1,YDCPG_OPTS%KFLEVG @@ -1715,7 +1703,7 @@ IF (LMICRO) THEN !modif de R et CP ZQHGM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:)=ZQHM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:)+ZQGM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:) - CALL GPRCP(YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, PQ=ZQVM, PQI=ZQIM, & + CALL GPRCP_QLIRSG(YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, PQ=ZQVM, PQI=ZQIM, & & PQL=ZQCM, PQR=ZQRM, PQS=ZQSM, PQG=ZQHGM, PCP=ZCPM, PR=ZRHM) DO JLEV = 1,YDCPG_OPTS%KFLEVG @@ -1844,7 +1832,7 @@ IF (LFLEXDIA) THEN ENDDO ENDDO ! missing interface !!! REK - CALL ARO_SUINTBUDGET_OMP(YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, ZCON1, ZCON2, & + CALL ARO_SUINTBUDGET_OMP(YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, ZCON1, ZCON2, & & ZCON3, YDDDH) ENDIF @@ -1872,7 +1860,7 @@ IF (LRDUST) THEN ! input dust scalar concentration in ppp from CALL ARO_MNHDUST (IKL, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, NGFL_EXT, YDCPG_OPTS%ZDTPHY, ZSVMIN_, ZZZ_, ZDZZ_, & & ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), & - & NSWB_MNH, YDCPG_OPTS%KSTEP+1, ZSVM_, ZPIZA_DST_, ZCGA_DST_, ZTAUREL_DST_, ZAERD_, IEZDIAG_CHEM, ZPEZDIAG_(:, :, IOFF_MFSHAL:NGFL_EZDIAG)& + & NSWB_MNH, YDCPG_OPTS%NSTEP+1, ZSVM_, ZPIZA_DST_, ZCGA_DST_, ZTAUREL_DST_, ZAERD_, IEZDIAG_CHEM, ZPEZDIAG_(:, :, IOFF_MFSHAL:NGFL_EZDIAG)& & ) ZP1EZDIAG(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,IOFF_MFSHAL:NGFL_EZDIAG)=ZPEZDIAG_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,IOFF_MFSHAL:NGFL_EZDIAG) ! return to tendency @@ -2108,7 +2096,7 @@ IF (LRAYFM.OR.LRAY) THEN ZCHTIX(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1)=ZTH(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1) IAERO=SIZE(ZAERO,3) ZGEMU_D=REAL(YDVARS%GEOMETRY%GEMU%T0,JPRD) - CALL RADACT(YDMODEL%YRML_PHY_RAD%YREAERD,YDERAD,YDMODEL%YRML_PHY_AER%YREAERSNK,YDRIP, & + CALL RADACT(YDMODEL%YRML_PHY_RAD%YREAERD,YDERAD,YDMODEL%YRML_PHY_AER%YREAERSNK,YDRIP, YDSPP_CONFIG,& & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG,& & 1 , YDCPG_OPTS%KLON , YDCPG_OPTS%KLON ,0 , 1,& & YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE , ZGELAM, ZGEMU_D, YDVARS%GEOMETRY%GECLO%T0, YDVARS%GEOMETRY%GESLO%T0, ZCHTIX,& @@ -2134,7 +2122,7 @@ IF (LRAYFM.OR.LRAY) THEN ! initialization of ozone IF (NOZOCL == 1) THEN ! as in IFS - CALL RADOZC(YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, 1, YDCPG_OPTS%KLON, & + CALL RADOZC(YDRIP%YREOZOC,YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, 1, YDCPG_OPTS%KLON, & & 0, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, YDVARS%GEOMETRY%GEMU%T0, ZROZ) DO JK=1,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA @@ -2171,7 +2159,7 @@ ENDIF IF (LRAYFM) THEN ! Intermittent call to radiation interface - IF (MOD(YDCPG_OPTS%KSTEP,NRADFR) == 0) THEN + IF (MOD(YDCPG_OPTS%NSTEP,NRADFR) == 0) THEN CALL RECMWF (YDGEOMETRY%YRDIMV, YDMODEL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, & & YDCPG_OPTS%KSW, & & NOZOCL ,NAERMACC, IAERO, & @@ -2208,7 +2196,7 @@ ENDIF ZSUDU(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=0.0_JPRB - CALL RADHEAT ( YDERAD, YDERDI, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & + CALL RADHEAT (YDMODEL%YRCST, YDMODEL%YRML_PHY_EC%YRTHF, YDERAD, YDERDI, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & & YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, ZEMIS, YDMF_PHYS%RAD%EMTD, ZRDG_MU0, ZQVM, & & ZTENT, YDMF_PHYS%RAD%TRSW, ZTRSOD, ZTSURF, YDCPG_OPTS%ZDTPHY, ZTRSODIR, ZTRSODIF, ZALBD, ZALBP, ZFRSO, & & ZFRTH, YDMF_PHYS%OUT%FRSODS, YDMF_PHYS%OUT%FRTHDS, ZCEMTR, ZCTRSO, YDMF_PHYS%OUT%FRSOC, YDMF_PHYS%OUT%FRTHC, & @@ -2254,7 +2242,7 @@ ENDIF ENDIF ENDDO - IF( MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF( MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'sous apl_arome apres rayonnement ZTENT=',ZTENT(NPTP,30:41) IF (LLMSE) THEN DO JSW=1, NSW @@ -2313,7 +2301,7 @@ IF (LRAY.AND.NRAY == 2.AND.LRADFLEX) THEN ! initialization of ozone IF (NOZOCL == 1) THEN ! as in IFS - CALL RADOZC(YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, 1, YDCPG_OPTS%KLON, & + CALL RADOZC(YDRIP%YREOZOC,YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, 1, YDCPG_OPTS%KLON, & & 0, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, YDVARS%GEOMETRY%GEMU%T0, ZROZ) DO JK=1,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA @@ -2405,7 +2393,7 @@ IF (LRAY.AND.NRAY == 2.AND.LRADFLEX) THEN ! call radiation scheme IJN=YDCPG_OPTS%KLON CALL ACRANEB2(YDERDI, YDRIP, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & - & NTRADI, YDCPG_OPTS%KFLEVG, IJN, YDCPG_OPTS%KSTEP, YDCFU%NFRRC, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, & + & NTRADI, YDCPG_OPTS%KFLEVG, IJN, YDCPG_OPTS%NSTEP, YDCFU%NFRRC, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREF, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, ZNEB0, ZQV, ZQCO2, ZQICE, ZQLIQ, ZQO3, YDMF_PHYS_BASE_STATE%T, & & ZALBD1, ZALBP1, ZEMIS, YDVARS%GEOMETRY%GELAM%T0, YDVARS%GEOMETRY%GEMU%T0, ZRDG_MU0, ZRDG_MU0LU, & @@ -2489,7 +2477,7 @@ IF(LKFBCONV) THEN & ZUM__(:, 1:YDCPG_OPTS%KFLEVG), ZVM__(:, 1:YDCPG_OPTS%KFLEVG), ZWM__(:, 1:YDCPG_OPTS%KFLEVG), & & ZMFS_, ZCVTENDT_, ZCVTENDRV_, ZCVTENDRC_, ZCVTENDRI_, ZCVTENDPR_, ZCVTENDPRS_ ) - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)"Pluie conv au sol", ZCVTENDPR_(NPTP), & & MAXVAL(ZCVTENDPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)) ,MINVAL(ZCVTENDPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)) ENDIF @@ -2518,7 +2506,7 @@ IF(LKFBCONV) THEN IF (PHYEX%NEBN%LSUBG_COND.AND..NOT.PHYEX%NEBN%LSIGMAS) THEN YDVARS%SRC%T1(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)=ZMFS_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG) ENDIF - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)"aps CONV, TENRV, TENRC, TENRI" DO JLEV=1,YDCPG_OPTS%KFLEVG WRITE(NULOUT,*)ZTEND_Q(NPTP,JLEV),ZTEND_L(NPTP,JLEV),ZTEND_I(NPTP,JLEV) @@ -2558,7 +2546,7 @@ IF (LLMSE) THEN IF (LLMSE_PARAM) THEN CALL ARO_GROUND_PARAM( YDCPG_BNDS%KBL, YDCPG_OPTS%KGPCOMP, YDCPG_BNDS%KFDIA, YDCPG_BNDS%KIDIA, & - & YDCPG_BNDS%KFDIA, YDCPG_OPTS%KSTEP, NRR, NSW, NGFL_EXT, NDGUNG, NDGUXG, NDLUNG, NDLUXG, & + & YDCPG_BNDS%KFDIA, YDCPG_OPTS%NSTEP, NRR, NSW, NGFL_EXT, NDGUNG, NDGUXG, NDLUNG, NDLUXG, & & LSURFEX_KFROM, LMPA, CCOUPLING, LLXFUMSE, NINDAT, ZRHGMT, ZSTATI, RSOVR, RCODEC, RSIDEC, YDVARS%GEOMETRY%RINDX%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & & YDVARS%GEOMETRY%RINDY%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), ZUM__(:, IKB), ZVM__(:, IKB), ZTM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG), & & ZRM_(:, IKB, 1), ZSVMB_, RCARDI, ZRHODREFM__(:, IKB), ZPABSM__(:, IKB), YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG), & @@ -2706,7 +2694,7 @@ IF (LMFSHAL) THEN ENDIF CALL VDFHGHTHL(YDMODEL%YRML_PHY_G%YRVDF, YDMODEL%YRML_PHY_SLIN%YREPHLI, YDMODEL%YRML_PHY_EC%YRECUMF, & - & YDMODEL%YRML_PHY_EC%YREPHY, YDPARAR, YDCPG_OPTS%KSTEP, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & + & YDMODEL%YRML_PHY_EC%YREPHY, YDPARAR, YDCPG_OPTS%NSTEP, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & & YDCPG_OPTS%KFLEVG, INDRAFT, YDCPG_OPTS%ZDTPHY, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, ZTM, ZQVM, & & ZQCM, ZQIM, ZZWCLDFR, YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREF, & & ZAPHIFM, ZAPHIM, ZZEXNREFM, ZZS_FTH_, ZZS_FRV_, ZZS_FU_, ZZS_FV_, ZMF_UP, ZTHETAL_UP, ZQT_UP, ZTHTV_UP, & @@ -2791,7 +2779,7 @@ IF (LMFSHAL) THEN ENDDO ENDIF ENDIF - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)"apres surface zsfth zsfrv",ZSFTH_(NPTP),ZSFRV_(NPTP) ENDIF @@ -2887,7 +2875,7 @@ IF (LTURB) THEN ENDIF !prints - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'avant d entrer dans turb sous apl_arome U' WRITE(NULOUT,*)MAXVAL(ZUM__(:,IKB)), MINVAL(ZUM__(:,IKB)) WRITE(NULOUT,*)'avant d entrer dans turb sous apl_arome V' @@ -3023,7 +3011,7 @@ IF (LTURB) THEN ENDIF - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'u v w a S apres turb' DO JLEV=1,YDCPG_OPTS%KFLEVG WRITE(NULOUT,*)JLEV,ZUS__(NPTP,JLEV),ZVS__(NPTP,JLEV),ZWS__(NPTP,JLEV),ZTKES_OUT__(NPTP,JLEV) @@ -3110,12 +3098,12 @@ IF(LWINDFARM)THEN JGFL=INT(GFL_WKA2(1,6,YDCPG_BNDS%KBL))*1_JPIM CALL ARO_WINDFARM(YDGEOMETRY,YDMODEL,YDVARS%GEOMETRY%OROG%T0(JLON), & & YDMF_PHYS_BASE_STATE%U(JLON,1:YDCPG_OPTS%KFLEVG),YDMF_PHYS_BASE_STATE%V(JLON,1:YDCPG_OPTS%KFLEVG),& - & YDMF_PHYS_BASE_STATE%YCPG_PHY%W(JLON,1:YDCPG_OPTS%KFLEVG),YDMF_PHYS_BASE_STATE%TKE(JLON,1:YDCPG_OPTS%KFLEVG),& + & YDMF_PHYS_BASE_STATE%YCPG_PHY%W(JLON,1:YDCPG_OPTS%KFLEVG),ZTKEM(JLON,1:YDCPG_OPTS%KFLEVG),& & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI(JLON,0:YDCPG_OPTS%KFLEVG),& & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREF(JLON,1:YDCPG_OPTS%KFLEVG),ZTENDU_TURB__(JLON,1:YDCPG_OPTS%KFLEVG),& & ZTENDV_TURB__(JLON,1:YDCPG_OPTS%KFLEVG),ZTKES_OUT__(JLON,1:YDCPG_OPTS%KFLEVG),& & GFL_WKA(JLON,YDCPG_BNDS%KBL),GFL_WKA2(1:JGFL,1:6,YDCPG_BNDS%KBL),YDCPG_OPTS%KFLEVG,& - & YDCPG_OPTS%KSTEP,JGFL,ZP1EZDIAG(JLON,1,5)) + & YDCPG_OPTS%NSTEP,JGFL,ZP1EZDIAG(JLON,1,5)) DO JLEV=1,YDCPG_OPTS%KFLEVG YDMF_PHYS%OUT%TENDU(JLON,JLEV)=YDMF_PHYS%OUT%TENDU(JLON,JLEV)+ZTENDU_TURB__(JLON,JLEV) YDMF_PHYS%OUT%TENDV(JLON,JLEV)=YDMF_PHYS%OUT%TENDV(JLON,JLEV)+ZTENDV_TURB__(JLON,JLEV) @@ -3145,7 +3133,7 @@ IF (LMICRO) THEN ZLIMAS_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,1:NLIMA)=ZLIMASIN_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,1:NLIMA) !prints - IF (MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF (MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'avant rain_ice sous apl_arome' WRITE(NULOUT,*)'JLEV ZZZ_F_ ZZZ_ ZRHODREF',& & ' ZRHODJ ZPABSM__ ZTHSIN_ ZTHM__ ' @@ -3173,7 +3161,7 @@ IF (LMICRO) THEN & ZRSIN_(NPTP,JLEV,3),ZRSIN_(NPTP,JLEV,4),ZRSIN_(NPTP,JLEV,5), ZRSIN_(NPTP,JLEV,6) ENDDO WRITE(NULOUT,*)'ZDT=',ZDT - WRITE(NULOUT,*)'NRR and co',NRR,YDCPG_OPTS%KSTEP+1 + WRITE(NULOUT,*)'NRR and co',NRR,YDCPG_OPTS%NSTEP+1 ENDIF ZSEA_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=0.0_JPRB @@ -3280,7 +3268,7 @@ IF (LMICRO) THEN ENDDO ENDIF !prints - IF(MOD(YDCPG_OPTS%KSTEP+1,NPRINTFR)==0) THEN + IF(MOD(YDCPG_OPTS%NSTEP+1,NPRINTFR)==0) THEN WRITE(NULOUT,*)'PTENDT en sortie de rain_ice' WRITE(NULOUT,*)'ZTHS__ en sortie de rain_ice' DO JLEV=1,YDCPG_OPTS%KFLEVG @@ -3298,7 +3286,7 @@ IF (LMICRO) THEN ! Swapp because IN and OUT will be needed simultaneously CALL SWAP_SVM CALL ARO_RAINAERO(YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, NGFL_EXT, NRR, YDCPG_OPTS%ZDTPHY, ZSVMIN_, ZZZ_, ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), & - & ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), YDCPG_OPTS%KSTEP+1, ZRM_, & + & ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), YDCPG_OPTS%NSTEP+1, ZRM_, & & ZEVAP_, YDPARAR%PHYEX%CLOUDPARN%NSPLITR, ZSVM_ ) ! return to tendency DO JGFL=1,NGFL_EXT @@ -3315,20 +3303,20 @@ ENDIF ! LMICRO ! start LHN F.Meier 2020 ****** LNUDGLHNREAD=.TRUE. -IF(MYPROC==1.AND.YDCPG_OPTS%KSTEP==1.AND.LNUDGLH)THEN +IF(MYPROC==1.AND.YDCPG_OPTS%NSTEP==1.AND.LNUDGLH)THEN CALL NUDGLHCLIMPROF(YDCPG_OPTS%KFLEVG, LNUDGLHNREAD) ENDIF ! save accumulated precipitation for LHN -IF (LNUDGLH.AND.YDCPG_OPTS%KSTEP == NSTARTNUDGLH.AND.NSTARTNUDGLH > 0) THEN +IF (LNUDGLH.AND.YDCPG_OPTS%NSTEP == NSTARTNUDGLH.AND.NSTARTNUDGLH > 0) THEN !IF(MYPROC==1) WRITE(NULOUT,*)'save precip for LHN - STEP:',KSTEP, & ! & 'NUDGINGINT:',NINTNUDGLH,'NSTARTNUDGLH:',NSTARTNUDGLH CALL NUDGLHPRECIP(YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, ZACPRR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & & ZACPRS_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), ZACPRG_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), YDCPG_BNDS%KBL & & ) ENDIF -ISTEP=YDCPG_OPTS%KSTEP-NSTARTNUDGLH +ISTEP=YDCPG_OPTS%NSTEP-NSTARTNUDGLH ! if LNUDGLH and KSTEP in nudging interval -IF (LNUDGLH.AND.YDCPG_OPTS%KSTEP > NSTARTNUDGLH.AND.YDCPG_OPTS%KSTEP <= NSTOPNUDGLH) THEN +IF (LNUDGLH.AND.YDCPG_OPTS%NSTEP > NSTARTNUDGLH.AND.YDCPG_OPTS%NSTEP <= NSTOPNUDGLH) THEN ! safe LH profile for step before LHN step LLHN=.FALSE. IF(MOD(ISTEP+1,NINTNUDGLH)==0) THEN @@ -3383,7 +3371,7 @@ IF (LNUDGLH.AND.YDCPG_OPTS%KSTEP > NSTARTNUDGLH.AND.YDCPG_OPTS%KSTEP <= NSTOPNUD ELSEIF(MOD(ISTEP,NINTNUDGLH)<NTAUNUDGLH.AND.MOD(ISTEP,NINTNUDGLH)>0 & & .AND.ISTEP>NINTNUDGLH) THEN IF(MYPROC==1)THEN - WRITE(NULOUT,*)'LH nudging applied-STEP:',YDCPG_OPTS%KSTEP,'NUDGINGINT:',NINTNUDGLH + WRITE(NULOUT,*)'LH nudging applied-STEP:',YDCPG_OPTS%NSTEP,'NUDGINGINT:',NINTNUDGLH WRITE(NULOUT,*)'NTAUNUDGLH:',NTAUNUDGLH ENDIF ! get index for reading correctly most recent obs @@ -3470,7 +3458,7 @@ IF (LUSECHEM) THEN CALL ARO_MNHC(ZSVSIN_, ZRHODREFM__(:, 1:YDCPG_OPTS%KFLEVG), YDCPG_OPTS%ZDTPHY, ZTHM__(:, 1:YDCPG_OPTS%KFLEVG), & & ZPABSM__(:, 1:YDCPG_OPTS%KFLEVG), ZRM_, ZLAT_, ZLON_, ZALB_UV_, ZZS_, ZZENITH_, ZZZ_, IYEAR, & & IMONTH, IDAY, REAL(RHGMT, JPRB)+YDCPG_OPTS%ZDTPHY/2._JPRB, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, NGFL_EXT, & - & NRR, YDCPG_OPTS%KSTEP+1, NULOUT, IEZDIAG_CHEM, ZPEZDIAG_(:, :, IOFF_MFSHAL:NGFL_EZDIAG), ZSVS_ ) + & NRR, YDCPG_OPTS%NSTEP+1, NULOUT, IEZDIAG_CHEM, ZPEZDIAG_(:, :, IOFF_MFSHAL:NGFL_EZDIAG), ZSVS_ ) ZP1EZDIAG(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,IOFF_MFSHAL:NGFL_EZDIAG)=ZPEZDIAG_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG,IOFF_MFSHAL:NGFL_EZDIAG) @@ -3496,7 +3484,7 @@ IF(LSPSDT) THEN ENDDO ZDUMMY(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)=0.0_JPRB ! Dummy nonphys tendency for compatibility with ecmwf stochphy - CALL SPPTEN (YDMODEL%YRML_PHY_EC%YRECLDP, YGFL, & + CALL SPPTEN (YDMODEL, YGFL, & & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, 1, YDCPG_OPTS%ZDTPHY, & ! In: block indices, physicstimestep & PTSL=YDMF_PHYS_BASE_STATE%T, PQSL=YDMF_PHYS_BASE_STATE%Q, PA=YDVARS%A%T1, & ! In: (T,Q,cloud) forsupersatcheck & PAP=YDMF_PHYS_BASE_STATE%YCPG_PHY%PREF, PAPH=YDMF_PHYS_BASE_STATE%YCPG_PHY%PRE, & ! In: Pfull, Phalf @@ -3508,8 +3496,8 @@ IF(LSPSDT) THEN ENDIF -IF(LFORCENL.AND.(YDCPG_OPTS%KSTEP*(TSPHY/RHOUR)>=NFORCESTART).AND.& - & (YDCPG_OPTS%KSTEP*(TSPHY/RHOUR)<=NFORCEEND)) THEN +IF(LFORCENL.AND.(YDCPG_OPTS%NSTEP*(TSPHY/RHOUR)>=NFORCESTART).AND.& + & (YDCPG_OPTS%NSTEP*(TSPHY/RHOUR)<=NFORCEEND)) THEN DO JLEV=1,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS%OUT%TENDU(JLON,JLEV)=YDMF_PHYS%OUT%TENDU(JLON,JLEV)+AMAGSTOPH_CASBS*YDMF_PHYS%FOR%U(JLON,JLEV) @@ -3526,12 +3514,12 @@ ENDIF !forcage pour declencher la ligne de grain IF (LSQUALL) THEN - IF (LTWOTL) THEN + IF (YDDYNA%LTWOTL) THEN ZDT2=2*ZDT ELSE ZDT2=ZDT ENDIF - IF((YDCPG_OPTS%KSTEP+1)*ZDT2 < 600._JPRB) THEN + IF((YDCPG_OPTS%NSTEP+1)*ZDT2 < 600._JPRB) THEN WRITE(NULOUT, *)'refroidissement impose de',NREFROI1,' a ',NREFROI2 DO JLEV=YDCPG_OPTS%KFLEVG,YDCPG_OPTS%KFLEVG-20,-1 ZTENDT(NREFROI1:NREFROI2,JLEV)=-0.01_JPRB @@ -3584,9 +3572,9 @@ IF (LXXDIAGH) THEN ENDIF ! lightening density IF (LFLASH) THEN - IF (YDCPG_OPTS%KSTEP==0) YDMF_PHYS%OUT%FLASH=0._JPRB + IF (YDCPG_OPTS%NSTEP==0) YDMF_PHYS%OUT%FLASH=0._JPRB - CALL DIAGFLASH(YDCFU,YDMODEL%YRML_PHY_MF,YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA,YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,YDCPG_OPTS%KSTEP,& + CALL DIAGFLASH(YDCFU,YDMODEL%YRML_PHY_MF,YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA,YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,YDCPG_OPTS%NSTEP,& &ZQCM,ZQIM,ZQRM,ZQSM,ZQGM,ZQHM,YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP,ZTM,YDMF_PHYS_BASE_STATE%YCPG_PHY%W,ZDUMMY,ZDUMMY,ZDUMMY,ZDUMMY,& &YDMF_PHYS_SURF%GSD_VF%PLSM, YDMF_PHYS%OUT%FLASH) ENDIF @@ -3681,17 +3669,17 @@ IF (LFLEXDIA) THEN ! WRITE(NULOUT,*) 'LFLEXDIA ARPEGE WITH NTOTSURF = ',NTOTSURF,& ! & ' AND NTOTSVAR = ',NTOTSVAR, ' AND NTOTSVFS = ',NTOTSVFS ! 3D Variables : - ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,0)=0._JPRB - DO JLEV=1,YDCPG_OPTS%KFLEVG - ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,2)+ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,4) - ENDDO - !ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:)=ZFPR(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:,2)+ZFPR(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:,3) - CALL NEW_ADD_FIELD_3D(YDMODEL%YRML_DIAG%YRMDDH,ZTMP2(:,:),'FQTPRECISTL',YDDDH) - DO JLEV=1,YDCPG_OPTS%KFLEVG - ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,4)+ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,5) - ENDDO - !ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:)=ZFPR(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:,4)+ZFPR(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,:,5) - CALL NEW_ADD_FIELD_3D(YDMODEL%YRML_DIAG%YRMDDH,ZTMP2(:,:),'FQTPRECISTN',YDDDH) + IF (LINTFLEX) THEN + ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,0)=0._JPRB + DO JLEV=1,YDCPG_OPTS%KFLEVG + ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,2)+ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,4) + ENDDO + CALL NEW_ADD_FIELD_3D(YDMODEL%YRML_DIAG%YRMDDH,ZTMP2(:,:),'FQTPRECISTL',YDDDH) + DO JLEV=1,YDCPG_OPTS%KFLEVG + ZTMP2(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV)=ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,4)+ZPFPR_(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV,5) + ENDDO + CALL NEW_ADD_FIELD_3D(YDMODEL%YRML_DIAG%YRMDDH,ZTMP2(:,:),'FQTPRECISTN',YDDDH) + ENDIF ENDIF @@ -3788,7 +3776,7 @@ IF (LVERTFE.AND.LVFE_GWMPA) THEN ENDIF ! * compute ZTT1: -IF (LSLAG.AND.LTWOTL) THEN +IF (LSLAG.AND.YDDYNA%LTWOTL) THEN DO JLEV=1,YDCPG_OPTS%KFLEVG DO JROF=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZTT1(JROF,JLEV)=YDVARS%T%T0(JROF,JLEV)+YDCPG_OPTS%ZDTPHY*ZTENDT(JROF,JLEV) @@ -3803,7 +3791,7 @@ ELSE ENDIF ! * compute ZGWT1 = tendency of gw: -IF (LNHDYN) THEN +IF (YDDYNA%LNHDYN) THEN ! Valid for LVFE_GWMPA=F only; ZGWT1 assumed to be half level values. DO JLEV=1,YDCPG_OPTS%KFLEVG-1 DO JROF=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA @@ -3817,7 +3805,7 @@ IF (LNHDYN) THEN ENDIF ! * convert gw tendency in d tendency: -IF(LNHDYN) THEN +IF(YDDYNA%LNHDYN) THEN IF (LGWADV) THEN ZTENDD(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)=ZGWT1(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG) @@ -3839,13 +3827,8 @@ IF(LNHDYN) THEN ENDIF ! * Do conversion: - IF (LSLAG.AND.LTWOTL) THEN - CALL GNHGW2SVDAROME(YDGEOMETRY, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_PHY0%PREHYDF, YDCPG_PHY0%XYB%LNPR, & - & ZRTT1, YDCPG_PHY0%PREF, ZGWT1, ZTENDD) - ELSE - CALL GNHGW2SVDAROME(YDGEOMETRY, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_PHY9%PREHYDF, YDCPG_PHY9%XYB%LNPR, & - & ZRTT1, YDCPG_PHY9%PREF, ZGWT1, ZTENDD) - ENDIF + CALL GNHGW2SVDAROME(YDGEOMETRY, YDDYNA%LNHEE, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, & + & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%LNPR, ZRTT1, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREF, ZGWT1, ZTENDD) ENDIF ELSE @@ -3863,7 +3846,7 @@ IF ( LINTFLEX ) THEN ! Set GFL tendencies to 0 ZTENDGFL(:,:,:) = 0.0_JPRB - CALL CPTEND_FLEX( YDLDDH, YDMDDH, YGFL, YDPHY, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & + CALL CPTEND_FLEX( YDLDDH, YDMDDH, YGFL, YDPHY, YDDYNA, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & & YDCPG_OPTS%KFLEVG, YDVARS%GEOMETRY%GNORDL%T0, YDVARS%GEOMETRY%GNORDM%T0, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%U, & & YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%T, YDMF_PHYS_BASE_STATE%YGSP_RR%T, PGFL, YLPROCSET, & @@ -3872,7 +3855,7 @@ IF ( LINTFLEX ) THEN & YDMF_PHYS%OUT%FHPSN, PFEPFP =YDMF_PHYS%OUT%FEPFP, PFCMPCQ=YDMF_PHYS%OUT%FCMPCQ, PFCMPSN=YDMF_PHYS%OUT%FCMPSN, & & PFCMPSL=YDMF_PHYS%OUT%FCMPSL, YDDDH=YDDDH ) - CALL CPUTQY(YDGEOMETRY%YRDIMV, YDGMV, YGFL, YDPTRSLB1, YDPHY, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & + CALL CPUTQY(YDGEOMETRY%YRDIMV, YDGMV, YGFL, YDPTRSLB1, YDPHY, YDDYNA, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%ZDTPHY, IPGFL, ISLB1T9, ISLB1U9, ISLB1V9, ISLB1VD9, ISLB1GFL9, ZTENDH, ZTENDT, & & YDMF_PHYS%OUT%TENDU, YDMF_PHYS%OUT%TENDV, ZTENDU, ZTENDV, ZTENDD, ZTENDGFL, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, YDMF_PHYS_BASE_STATE%T, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, & @@ -3920,7 +3903,7 @@ IF(LGSCM.OR.LMUSCLFA) THEN ENDIF CALL WRITEPHYSIO(YDGEOMETRY, YDCPG_MISC, YDCPG_PHY0, YDMF_PHYS, YDCPG_DYN0, YDMF_PHYS_SURF, YDVARS, & & YDSURF, YDDPHY, YDRIP, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KFDIA, YDCPG_BNDS%KIDIA, YDCPG_OPTS%KGL1, & - & YDCPG_OPTS%KGL2, YDCPG_BNDS%KSTGLO, YDCPG_OPTS%KSTEP, NTSSG, YSP_SBD%NLEVS, YDVARS%GEOMETRY%GELAM%T0, & + & YDCPG_OPTS%KGL2, YDCPG_BNDS%KSTGLO, YDCPG_OPTS%NSTEP, NTSSG, YSP_SBD%NLEVS, YDVARS%GEOMETRY%GELAM%T0, & & YDVARS%GEOMETRY%GEMU%T0, YDVARS%GEOMETRY%GM%T0, YDVARS%GEOMETRY%OROG%T0, YDVARS%GEOMETRY%RCORI%T0, & & YDVARS%GEOMETRY%RATATH%T0, YDVARS%GEOMETRY%RATATX%T0, YDVARS%GEOMETRY%GECLO%T0, YDVARS%GEOMETRY%GESLO%T0, & & ZRDG_CVGQ, ZRDG_LCVQ, ZRDG_MU0 ) @@ -3937,7 +3920,7 @@ CALL MF_PHYS_PRECIPS (YDCPG_BNDS, YDCPG_OPTS, ZPRC_DPRECIPS, ZPRC_DPRECIPS2, YDM IF (LINTFLEX) CALL CLEANINTPROCSET(YLPROCSET) ! Clear SPP -IF (YSPP_CONFIG%LSPP) CALL CLEAR_ALL_SPP(ZSPP_ALL) +IF (YDSPP_CONFIG%LSPP) CALL CLEAR_ALL_SPP(ZSPP_ALL) ! ------------------------------------------------------------------ diff --git a/src/arome/ext/aplpar.F90 b/src/arome/ext/aplpar.F90 index 281d5b31a9d251af6fcc1fb0a82d259bf89ee762..b885076aacc86f7be1feb82de67714e9ec551e38 100644 --- a/src/arome/ext/aplpar.F90 +++ b/src/arome/ext/aplpar.F90 @@ -215,17 +215,16 @@ USE SURFACE_FIELDS_MIX , ONLY : TSURF USE YOMXFU , ONLY : TXFU USE TYPE_MODEL , ONLY : MODEL USE PARKIND1 , ONLY : JPIM ,JPRB -USE YOMHOOK , ONLY : LHOOK ,DR_HOOK +USE YOMHOOK , ONLY : LHOOK ,DR_HOOK, JPHOOK USE YOMVERT , ONLY : VP00 USE YOMCST , ONLY : TCST -USE YOMDYNA , ONLY : L3DTURB USE YOMRIP0 , ONLY : NINDAT USE DDH_MIX , ONLY : TYP_DDH USE YOMLUN , ONLY : NULOUT USE YOMLSFORC , ONLY : LMUSCLFA,NMUSCLFA USE YOMTRAJ , ONLY : TRAJ_PHYS_TYPE, LPRTTRAJ USE YOMCFU , ONLY : TCFU !!! for parameters of FLASH -USE SPP_MOD , ONLY : YSPP, YSPP_CONFIG +!USE SPP_MOD , ONLY : YSPP, YSPP_CONFIG USE MF_PHYS_BASE_STATE_TYPE_MOD & & , ONLY : MF_PHYS_BASE_STATE_TYPE USE MF_PHYS_NEXT_STATE_TYPE_MOD & @@ -235,7 +234,7 @@ USE MF_PHYS_NEXT_STATE_TYPE_MOD & USE YOMGMV , ONLY : TGMV USE SC2PRG_MOD , ONLY : SC2PRG -USE YOMCT0 , ONLY : LCALLSFX ,LSFORCS, LELAM, LTWOTL, LAROME, LCORWAT +USE YOMCT0 , ONLY : LCALLSFX ,LSFORCS, LELAM, LAROME, LCORWAT USE YOMNUD , ONLY : NFNUDG ,LNUDG USE YOMSNU , ONLY : XPNUDG USE YOMSCM , ONLY : LGSCM @@ -314,7 +313,7 @@ REAL(KIND=JPRB) :: ZAC_HC(YDCPG_OPTS%KFLEVG+1,YDCPG_OPTS%KFLEVG+1) ! h TYPE(TYPE_INTPROCSET) :: YLPROCSET ! SPP -REAL(KIND=JPRB) :: ZGP2DSPP(YDCPG_OPTS%KLON,YSPP%N2D) +REAL(KIND=JPRB) :: ZGP2DSPP(YDCPG_OPTS%KLON,YDMODEL%YRML_GCONF%YRSPP_CONFIG%SM%NRFTOTAL) REAL(KIND=JPRB), POINTER :: ZPTENDEFB11(:,:), ZPTENDEFB21(:,:) @@ -815,15 +814,18 @@ REAL(KIND=JPRB) :: ZDQG ! -------------------------------- INTEGER(KIND=JPIM) :: ITOPC(YDCPG_OPTS%KLON),IBASC(YDCPG_OPTS%KLON),ITYPE(YDCPG_OPTS%KLON),ISPPN2D INTEGER(KIND=JPIM) :: ICBOT(YDCPG_OPTS%KLON),ICTOP(YDCPG_OPTS%KLON),IBOTSC(YDCPG_OPTS%KLON) +INTEGER(KIND=JPIM) :: ICBOT_LIG(YDCPG_OPTS%KLON),ICTOP_LIG(YDCPG_OPTS%KLON) LOGICAL :: LLDSLPHY,LLPTQ,LLLAND(YDCPG_OPTS%KLON),LLCUM(YDCPG_OPTS%KLON),LLSC(YDCPG_OPTS%KLON),LLSHCV(YDCPG_OPTS%KLON),LLLINOX(YDCPG_OPTS%KLON) +LOGICAL :: LLCUM_LIG(YDCPG_OPTS%KLON) REAL(KIND=JPRB) :: ZLIGH_CTG(YDCPG_OPTS%KLON),ZCTOPH(YDCPG_OPTS%KLON),ZPRECMX(YDCPG_OPTS%KLON),ZICE(YDCPG_OPTS%KLON),ZCDEPTH(YDCPG_OPTS%KLON),ZWMFU(YDCPG_OPTS%KLON) REAL(KIND=JPRB) :: ZVERVEL(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZGEOM1(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZGEOMH(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZTENQ(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZTENU(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZTENV(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZTENTA(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZTENQA(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZLCRIT_AER(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZSNDE(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,2) REAL(KIND=JPRB) :: ZCUCONVCA(YDCPG_OPTS%KLON),ZGAW(YDCPG_OPTS%KLON),ZVDIFTS,ZDXTDK(YDCPG_OPTS%KLON) REAL(KIND=JPRB) :: ZLU(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZLUDE(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZMFU(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZLISUM(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZMFD(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) -REAL(KIND=JPRB) :: ZWMEAN(YDCPG_OPTS%KLON),ZACPR(YDCPG_OPTS%KLON),ZDIFF(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) +REAL(KIND=JPRB) :: ZWMEAN(YDCPG_OPTS%KLON),ZACPR(YDCPG_OPTS%KLON),ZDIFF(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZVDISCU(YDCPG_OPTS%KLON) REAL(KIND=JPRB) :: ZMFUDE_RATE(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG),ZMFDDE_RATE(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZFHPCL(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG),ZFHPCN(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) REAL(KIND=JPRB) :: ZFCQLF(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG),ZFCQLI(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG),ZFRSO(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG),ZFRTH(YDCPG_OPTS%KLON,0:YDCPG_OPTS%KFLEVG) @@ -924,7 +926,7 @@ REAL (KIND=JPRB) :: ZSAV_UDGRO (YDCPG_OPTS%KLON) REAL (KIND=JPRB) :: ZSAV_UDOM (YDCPG_OPTS%KLON, 1:YDCPG_OPTS%KFLEVG) REAL (KIND=JPRB) :: ZSAV_UNEBH (YDCPG_OPTS%KLON, 1:YDCPG_OPTS%KFLEVG) -REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_1 +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE, ZHOOK_HANDLE_1 ! ------------------------------------------------------------------ @@ -1020,7 +1022,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_1 #include "cputqy_aplpar_loop.intfb.h" #include "cpwts.intfb.h" #include "cucalln_mf.intfb.h" -#include "culight.intfb.h" +!#include "culight.intfb.h" #include "dprecips.intfb.h" #include "mean_rad_temp.intfb.h" #include "mf_phys_bayrad.intfb.h" @@ -1067,7 +1069,9 @@ ASSOCIATE(YDDIM=>YDGEOMETRY%YRDIM, YDDIMV=>YDGEOMETRY%YRDIMV, YDVAB=>YDGEOMETRY% & YDGEM=>YDGEOMETRY%YRGEM, YDSTA=>YDGEOMETRY%YRSTA, YDERDI=>YDMODEL%YRML_PHY_RAD%YRERDI, YDMCC=>YDMODEL%YRML_AOC%YRMCC, & & YDERAD=>YDMODEL%YRML_PHY_RAD%YRERAD, YDPHY3=>YDMODEL%YRML_PHY_MF%YRPHY3, YDPHY1=>YDMODEL%YRML_PHY_MF%YRPHY1, & & YDPHY0=>YDMODEL%YRML_PHY_MF%YRPHY0, YDNORGWD=>YDMODEL%YRML_PHY_MF%YRNORGWD, YDMSE=>YDMODEL%YRML_PHY_MF%YRMSE, & -& YDPHYDS=>YDMODEL%YRML_PHY_MF%YRPHYDS ) +& YDPHYDS=>YDMODEL%YRML_PHY_MF%YRPHYDS, YDDYNA=>YDMODEL%YRML_DYN%YRDYNA, & +& YDSPP_CONFIG=>YDMODEL%YRML_GCONF%YRSPP_CONFIG, YDECUMF=>YDMODEL%YRML_PHY_EC%YRECUMF) + ASSOCIATE(CMF_UPDRAFT=>YDPARAR%PHYEX%PARAM_MFSHALLN%CMF_UPDRAFT, TSPHY=>YDPHY2%TSPHY, NTSSG=>YDDPHY%NTSSG, LMDUST=>YDARPHY%LMDUST, & @@ -1157,15 +1161,16 @@ IF (LINTFLEX) YLPROCSET=NEWINTPROCSET() INSTEP_DEB=1 INSTEP_FIN=1 -! SPP -IF ( YSPP_CONFIG%LSPP ) THEN - DO JSPP=1,YSPP%N2D - ZGP2DSPP(:,JSPP) = YSPP%GP_ARP(JSPP)%GP2D(:,1,YDCPG_BNDS%KBL) - ENDDO -ENDIF - -CALL CPPHINP(YDCPG_OPTS%LVERTFE, YDGEOMETRY, YDMODEL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDVARS%GEOMETRY%GEMU%T0, YDVARS%GEOMETRY%GELAM%T0, & -& YDVARS%U%T0, YDVARS%V%T0, YDVARS%Q%T0, YDVARS%Q%DL, YDVARS%Q%DM, YDVARS%CVGQ%DL, YDVARS%CVGQ%DM, YDCPG_PHY0%XYB%RDELP, & +! SPP +! am:phasing 49 : dead piece of code ? +!IF ( YDSPP_CONFIG%LSPP ) THEN +! DO JSPP=1,YDMODEL%YRML_GCONF%YRSPP_CONFIG%SM%NRFTOTAL +! ZGP2DSPP(:,JSPP) = YSPP%GP_ARP(JSPP)%GP2D(:,1,YDCPG_BNDS%KBL) +! ENDDO +!ENDIF + +CALL CPPHINP(YDGEOMETRY, YDMODEL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDVARS%GEOMETRY%GEMU%T0, YDVARS%GEOMETRY%GELAM%T0, & +& YDVARS%U%T0, YDVARS%V%T0, YDVARS%Q%T0, YDVARS%Q%DL, YDVARS%Q%DM, YDVARS%CVGQ%DL, YDVARS%CVGQ%DM, YDCPG_PHY0%XYB%RDELP, & & YDCPG_DYN0%CTY%EVEL, YDVARS%CVGQ%T0, ZRDG_MU0, ZRDG_MU0LU, ZRDG_MU0M, ZRDG_MU0N, ZRDG_CVGQ) ZRDG_LCVQ(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG)=ZRDG_CVGQ(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:YDCPG_OPTS%KFLEVG) @@ -1235,7 +1240,7 @@ DO JROF=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS_SURF%GSD_VF%PLSM(JROF)=REAL(NINT(YDMF_PHYS_SURF%GSD_VF%PLSM(JROF)),JPRB) ENDDO -IF (LTWOTL) THEN +IF (YDDYNA%LTWOTL) THEN IF (LAJUCV) THEN DO JLEV=1,YDCPG_OPTS%KFLEVG DO JROF=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA @@ -1264,7 +1269,7 @@ ENDIF !------------------------------------------------- ! IF(LGCHECKMV) CALL CHECKMV(YDCPG_OPTS%NINDAT, YDCST, YDRIP, YDPHY0, YDPHY2, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & - & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & + & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDVARS%GEOMETRY%GELAM%T0, & & YDVARS%GEOMETRY%GEMU%T0, ZRDG_MU0, YDMF_PHYS_SURF%GSD_VF%PLSM, YDMF_PHYS_BASE_STATE%T, & & YDMF_PHYS_BASE_STATE%Q, YDMF_PHYS_BASE_STATE%YGSP_RR%T ) @@ -1350,8 +1355,8 @@ IF (LMPHYS) THEN ENDDO ELSEIF ((LO3FL).AND.(NOZOCL == 1).AND.(LRAYFM)) THEN - IF (MOD(YDCPG_OPTS%KSTEP,NRADFR) == 0) THEN - CALL RADOZCMF(YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & + IF (MOD(YDCPG_OPTS%NSTEP,NRADFR) == 0) THEN + CALL RADOZCMF(YDMODEL%YRCST,YDRIP%YREOZOC, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDVARS%GEOMETRY%GEMU%T0, ZROZ) DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZQO3(JLON,0)=1.E-9_JPRB @@ -1865,13 +1870,13 @@ ENDDO ! ------------------------------------------------------- IF((LNEBR.OR.(TRIM(CGMIXLEN) == 'TM')& - & .OR.(TRIM(CGMIXLEN) == 'TMC')).AND.YDCPG_OPTS%KSTEP == 0) THEN + & .OR.(TRIM(CGMIXLEN) == 'TMC')).AND.YDCPG_OPTS%NSTEP == 0) THEN !DEC$ IVDEP DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS_SURF%GSD_VH%PPBLH(JLON)=(XMINLM+XMAXLM)*0.5_JPRB ENDDO ENDIF -IF((LNEBCO.OR.LGWDC).AND.YDCPG_OPTS%KSTEP == 0) THEN +IF((LNEBCO.OR.LGWDC).AND.YDCPG_OPTS%NSTEP == 0) THEN DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS_SURF%GSD_VH%PTCCH(JLON)=0.0_JPRB YDMF_PHYS_SURF%GSD_VH%PSCCH(JLON)=0.0_JPRB @@ -1879,37 +1884,37 @@ IF((LNEBCO.OR.LGWDC).AND.YDCPG_OPTS%KSTEP == 0) THEN ENDDO ENDIF -IF((LNEBN.OR.LNEBR.OR.LRRGUST).AND.YDCPG_OPTS%KSTEP == 0) THEN +IF((LNEBN.OR.LNEBR.OR.LRRGUST).AND.YDCPG_OPTS%NSTEP == 0) THEN DO JLEV=YDCPG_OPTS%KTDIA-1,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZPFL_FPLCH(JLON,JLEV)=0.0_JPRB ENDDO ENDDO ENDIF -IF(LRRGUST.AND.YDCPG_OPTS%KSTEP == 0) THEN +IF(LRRGUST.AND.YDCPG_OPTS%NSTEP == 0) THEN DO JLEV=YDCPG_OPTS%KTDIA-1,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZPFL_FPLSH(JLON,JLEV)=0.0_JPRB ENDDO ENDDO ENDIF -IF(LCVPGY.AND.YDCPG_OPTS%KSTEP == 0) THEN +IF(LCVPGY.AND.YDCPG_OPTS%NSTEP == 0) THEN DO JLEV=YDCPG_OPTS%KTDIA,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS_BASE_STATE%CVV(JLON,JLEV)=0.0_JPRB ENDDO ENDDO ENDIF -IF(LPHSPSH.AND.YDCPG_OPTS%KSTEP == 0) THEN +IF(LPHSPSH.AND.YDCPG_OPTS%NSTEP == 0) THEN YDMF_PHYS_SURF%GSD_VH%PSPSH(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=0._JPRB ENDIF -IF(LCOEFKTKE.AND.YDCPG_OPTS%KSTEP == 0) THEN +IF(LCOEFKTKE.AND.YDCPG_OPTS%NSTEP == 0) THEN YDMF_PHYS_SURF%GSD_VH%PQSH(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=YDMF_PHYS_BASE_STATE%Q(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,YDCPG_OPTS%KFLEVG) ENDIF -IF(LCVCSD.AND.LUDEVOL.AND.YDCPG_OPTS%KSTEP==0) THEN +IF(LCVCSD.AND.LUDEVOL.AND.YDCPG_OPTS%NSTEP==0) THEN YDMF_PHYS_SURF%GSD_VK%PUDGRO(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=0._JPRB ENDIF -IF(LRKCDEV.AND.YDCPG_OPTS%KSTEP == 0) THEN +IF(LRKCDEV.AND.YDCPG_OPTS%NSTEP == 0) THEN DO JLEV=YDCPG_OPTS%KTDIA,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZDTRAD(JLON,JLEV)=0.0_JPRB @@ -2066,7 +2071,7 @@ IF(LMPHYS) THEN ! ! Define z0;z0h if it's necessary ! - IF (LMSE.AND.(.NOT.LCOEFKTKE).AND.(.NOT.LCOEFK_TOMS).AND.YDCPG_OPTS%KSTEP == 0) THEN + IF (LMSE.AND.(.NOT.LCOEFKTKE).AND.(.NOT.LCOEFK_TOMS).AND.YDCPG_OPTS%NSTEP == 0) THEN CALL ARO_GROUND_DIAG_Z0( YDCPG_BNDS%KBL, YDCPG_OPTS%KGPCOMP, YDCPG_BNDS%KFDIA-YDCPG_BNDS%KIDIA+1, YDCPG_BNDS%KIDIA, & & YDCPG_BNDS%KFDIA, NDGUNG, NDGUXG, NDLUNG, NDLUXG, YDVARS%GEOMETRY%RINDX%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & & YDVARS%GEOMETRY%RINDY%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), LSURFEX_KFROM, YDMF_PHYS%OUT%GZ0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & @@ -2092,7 +2097,7 @@ IF(LMPHYS) THEN IF (LMSE) THEN IF(LCOEFKTKE.AND.LCOEFKSURF) THEN - IF (YDCPG_OPTS%KSTEP == 0) THEN + IF (YDCPG_OPTS%NSTEP == 0) THEN CALL ARO_GROUND_DIAG_Z0( YDCPG_BNDS%KBL, YDCPG_OPTS%KGPCOMP, YDCPG_BNDS%KFDIA-YDCPG_BNDS%KIDIA+1, & & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, NDGUNG, NDGUXG, NDLUNG, NDLUXG, YDVARS%GEOMETRY%RINDX%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & & YDVARS%GEOMETRY%RINDY%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), LSURFEX_KFROM, YDMF_PHYS%OUT%GZ0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & @@ -2280,7 +2285,7 @@ IF(LMPHYS) THEN IF( LCOEFK_RIS) THEN LLMAF=.TRUE. CALL ACMIXELEN(YGFL, YDPHY, YDPHY0, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, & - & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, IMLTYPE, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & + & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, IMLTYPE, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%T, & & ZQV, ZQL, ZQI, YDMF_PHYS_BASE_STATE%R, YDMF_PHYS_BASE_STATE%S, YDMF_PHYS_BASE_STATE%TKE, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%LNPR, & @@ -2308,7 +2313,7 @@ IF(LMPHYS) THEN ENDIF CALL ACMRIP(YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, NTCOEF, YDCPG_OPTS%KFLEVG, & - & YDCPG_OPTS%KSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & + & YDCPG_OPTS%NSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, ZQV, ZQL, ZQI, ZCP, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%LNPR, ZFLU_QSAT, ZMSC_QW, ZMSC_TW, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%T, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDVARS%FQTUR%T0, YDVARS%FSTUR%T0, & @@ -2332,7 +2337,7 @@ IF(LMPHYS) THEN ENDIF LLMAF=.FALSE. CALL ACMIXELEN(YGFL, YDPHY, YDPHY0, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, & - & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, IMLTYPE, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & + & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, IMLTYPE, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%T, & & ZQV, ZQL, ZQI, YDMF_PHYS_BASE_STATE%R, YDMF_PHYS_BASE_STATE%S, YDMF_PHYS_BASE_STATE%TKE, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%LNPR, & @@ -2401,10 +2406,10 @@ IF(LMPHYS) THEN ENDIF IF (LCVPPKF) THEN - CALL ACVPPKF(YDCST,YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, NTCVIM, YDCPG_OPTS%KFLEVG, & + CALL ACVPPKF(YDCST,YDMODEL%YRML_PHY_MF, YDCPG_BNDS, YDCPG_OPTS, NTCVIM, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, YDMF_PHYS_BASE_STATE%T, ZQV, ZQL, ZQI, YDMF_PHYS_BASE_STATE%U, & - & YDMF_PHYS_BASE_STATE%V, YDCPG_DYN0%CTY%VVEL(:, 1:), YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%TKE, & + & YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%TKE, & & ZDIFCVPPQ, ZDIFCVPPS, ZCONDCVPPL, ZCONDCVPPI, ZPRODTH_CVPP, INLAB_CVPP, ZQLI_CVPP, ZNEB_CVPP, & & INND) ENDIF @@ -2420,7 +2425,7 @@ IF(LMPHYS) THEN ENDIF CALL ABOR1('APLPAR: CODE MUST BE UPDATED, IMPL_MF IS NOW SET IN NAMELIST') - IF (YDCPG_OPTS%KSTEP == 0) YDMF_PHYS_SURF%GSD_SFL%PGROUP(:,:) = 0.0_JPRB + IF (YDCPG_OPTS%NSTEP == 0) YDMF_PHYS_SURF%GSD_SFL%PGROUP(:,:) = 0.0_JPRB CALL ARP_SHALLOW_MF( YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, YDCPG_OPTS%KFLEVG, & & TSPHY, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, CMF_UPDRAFT, CMF_CLOUD, LMIXUV, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, & @@ -2495,7 +2500,7 @@ IF(LMPHYS) THEN CALL ARO_MNHDUST (1, ILONMNH, YDCPG_OPTS%KFLEVG, NGFL_EXT, YDCPG_OPTS%ZDTPHY, ZZI_SVM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, 1:NGFL_EXT), & & ZZZ(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZDZZ(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZZI_PABSM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & & ZZI_THM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZZI_RHODREFM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & - & NSWB_MNH, YDCPG_OPTS%KSTEP+1, ZZI_SVM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, 1:NGFL_EXT), ZPIZA_DST(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & + & NSWB_MNH, YDCPG_OPTS%NSTEP+1, ZZI_SVM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, 1:NGFL_EXT), ZPIZA_DST(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & & ZCGA_DST(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZTAUREL_DST(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & & ZAERD(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :), NGFL_EZDIAG, ZZI_PEZDIAG(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :) & & ) @@ -2617,7 +2622,7 @@ IF(LMPHYS) THEN LLAERO=LAEROSEA.AND.LAEROLAN.AND.LAEROSOO.AND.LAERODES - IF ( (LRAYFM.AND.(MOD(YDCPG_OPTS%KSTEP,NRADFR) == 0)) & + IF ( (LRAYFM.AND.(MOD(YDCPG_OPTS%NSTEP,NRADFR) == 0)) & & .OR. ( (LRAY.OR.LRAYSP).AND.(.NOT.LRSTAER)) ) THEN IF (LLAERO) THEN @@ -2684,7 +2689,7 @@ IF(LMPHYS) THEN ! separate clearsky call is kept only for old ACRANEB; for ACRANEB2 ! duplicit calculation of gaseous transmissions is avoided IF (LRAY.AND.NRAY == 1.AND.YDCFU%NFRRC /= 0) THEN - IF (MOD(YDCPG_OPTS%KSTEP,YDCFU%NFRRC) == 0) THEN + IF (MOD(YDCPG_OPTS%NSTEP,YDCFU%NFRRC) == 0) THEN CALL ACRANEB(YDRIP, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & & NTRADI, YDCPG_OPTS%KFLEVG, IJN, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & @@ -2861,7 +2866,7 @@ IF(LMPHYS) THEN IF(LFLASH) THEN ! Lightning flashes: interface between PCMT and CULIGHT input data. CALL ACLIGHT(YDMODEL%YRML_PHY_MF,YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA,YDCPG_OPTS%KLON,NTCVIM,YDCPG_OPTS%KFLEVG,& - & ZQLC,ZQIC,ZLU,ICBOT,ICTOP,LLCUM,YDMF_PHYS%OUT%CAPE) + & ZQLC,ZQIC,ZLU,ICBOT_LIG,ICTOP_LIG,LLCUM_LIG,YDMF_PHYS%OUT%CAPE) DO JLEV=YDCPG_OPTS%KTDIA,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZMFU(JLON,JLEV)=ZMF_UP(JLON,JLEV) @@ -2908,7 +2913,7 @@ IF(LMPHYS) THEN ! 7.3.5 Computation of the equivalent coefficients for simplified ! radiation scheme - IF ( LRAYSP .AND.(YDCPG_OPTS%KSTEP == 1).AND.LRCOEF ) THEN + IF ( LRAYSP .AND.(YDCPG_OPTS%NSTEP == 1).AND.LRCOEF ) THEN DO JLEV=YDCPG_OPTS%KTDIA,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA ZZNEB(JLON,JLEV)=0.0_JPRB @@ -2937,7 +2942,7 @@ IF(LMPHYS) THEN ALLOCATE(ZCFLX(YDCPG_OPTS%KLON,NCHEM), ZCFLXO(YDCPG_OPTS%KLON,NCHEM), ZCHEMDV(YDCPG_OPTS%KLON,0)) ! no species with dry deposition in ARPCLIM ALLOCATE(ZAEROP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,NACTAERO),ZTENC(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,NCHEM)) ALLOCATE(ZDELP(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZWND(YDCPG_OPTS%KLON),ZDUMMY1(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG), ZGELAT(YDCPG_OPTS%KLON)) - ALLOCATE(ZNEEFLX(YDCPG_OPTS%KLON),ZCHEM2AER(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,4)) + ALLOCATE(ZNEEFLX(YDCPG_OPTS%KLON),ZCHEM2AER(YDCPG_OPTS%KLON,YDCPG_OPTS%KFLEVG,6)) INDCHEM(:) = 1_JPIM ! we should have here the indexes of the chemical species in the YCHEM array, to be implemented later IGPLAT (:) = 1_JPIM ZSD_XA (:,:,:) = 0._JPRB @@ -2999,7 +3004,7 @@ IF(LMPHYS) THEN ENDDO CASE(2) CALL ACRANEB2(YDERDI, YDRIP, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & - & NTRADI, YDCPG_OPTS%KFLEVG, IJN, YDCPG_OPTS%KSTEP, YDCFU%NFRRC, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & + & NTRADI, YDCPG_OPTS%KFLEVG, IJN, YDCPG_OPTS%NSTEP, YDCFU%NFRRC, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, YDCPG_MISC%NEB, ZQV, ZQCO2, YDCPG_MISC%QICE, YDCPG_MISC%QLI, & & ZQO3, YDMF_PHYS_BASE_STATE%T, YDMF_PHYS%OUT%ALB, ZALBDIR, ZFLU_EMIS, YDVARS%GEOMETRY%GELAM%T0, & @@ -3022,9 +3027,9 @@ IF(LMPHYS) THEN ELSEIF ( LRAYFM ) THEN - LLCALLRAD=(MOD(YDCPG_OPTS%KSTEP,NRADFR) == 0 ) + LLCALLRAD=(MOD(YDCPG_OPTS%NSTEP,NRADFR) == 0 ) ! IF (NCALLRAD==1) ! <== not yet - IF (NCALLRAD==2) LLCALLRAD=(LLCALLRAD.AND.(YDCPG_OPTS%KSTEP<=NSTOP-1)) + IF (NCALLRAD==2) LLCALLRAD=(LLCALLRAD.AND.(YDCPG_OPTS%NSTEP<=NSTOP-1)) ! IF (NCALLRAD==3) ! <== not yet IAERO=SIZE(ZAERO,3) ! ---- Intermittent call to radiation scheme @@ -3056,7 +3061,7 @@ IF(LMPHYS) THEN IF (LRAYLU) YDMF_PHYS%OUT%FRSOLU(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=YDMF_PHYS%RAD%RMOON(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA) ! ---- Flux update and radiative heating rates - CALL RADHEAT ( YDERAD, YDERDI, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & + CALL RADHEAT (YDMODEL%YRCST, YDMODEL%YRML_PHY_EC%YRTHF, YDERAD, YDERDI, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & & YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, ZFLU_EMIS, YDMF_PHYS%RAD%EMTD, & & ZRDG_MU0, ZQV, ZTENT, YDMF_PHYS%RAD%TRSW, ZTRSOD, YDMF_PHYS_BASE_STATE%YGSP_RR%T, TSPHY, & & ZTRSODIR, ZTRSODIF, ZALBD, ZALBP, YDMF_PHYS%OUT%FRSO, YDMF_PHYS%OUT%FRTH, YDMF_PHYS%OUT%FRSODS, & @@ -3088,7 +3093,8 @@ IF(LMPHYS) THEN !DEC$ IVDEP DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA IF(YDMF_PHYS%OUT%FRSODS(JLON) >= RSUNDUR) THEN - YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)=YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)+1.0_JPRB*TSTEP + !YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)=YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)+1.0_JPRB*TSTEP + YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)=YDMF_PHYS_SURF%GSD_VD%PSUND(JLON)+1.0_JPRB*ZADTMS ! fix stepx case ENDIF ENDDO @@ -3179,14 +3185,14 @@ IF(LMPHYS) THEN IF ( LPTKE ) THEN IF ( LMSE.AND.LCALLSFX ) THEN - IF (YDCPG_OPTS%KSTEP == 0) THEN + IF (YDCPG_OPTS%NSTEP == 0) THEN ZFLU_CD(:)=ZFLU_CDN(:) ! very first approximation ELSE ZFLU_CD(:)=MAX(YDCPG_GPAR%CD(:),ZEPS0) ENDIF ENDIF CALL ACPTKE(YGFL, YDLDDH, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, & - & YDCPG_OPTS%KTDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & + & YDCPG_OPTS%KTDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP, ZKNROV, YDMF_PHYS_BASE_STATE%T, & & YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, YDMF_PHYS_BASE_STATE%TKE, & @@ -3225,7 +3231,7 @@ IF(LMPHYS) THEN IRR=2 CALL ARO_GROUND_PARAM( YDCPG_BNDS%KBL, YDCPG_OPTS%KGPCOMP, YDCPG_BNDS%KFDIA-YDCPG_BNDS%KIDIA+1, & - & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KSTEP, IRR, NSW, NGFL_EXT, NDGUNG, NDGUXG, & + & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%NSTEP, IRR, NSW, NGFL_EXT, NDGUNG, NDGUXG, & & NDLUNG, NDLUXG, LSURFEX_KFROM, LMPA, CCOUPLING, YDCPG_OPTS%LCONFX, NINDAT, ZRHGMT, ZSTATI, RSOVR, & & RCODEC, RSIDEC, YDVARS%GEOMETRY%RINDX%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), YDVARS%GEOMETRY%RINDY%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & & YDMF_PHYS_BASE_STATE%U(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG:YDCPG_OPTS%KFLEVG), & @@ -3399,8 +3405,9 @@ IF(LMPHYS) THEN ! First compute horizontal exchange coefficients for momentum: ! (there's mo TOMs contribution, thus has to be done at latest here) - IF (L3DTURB) THEN - CALL ACTKECOEFKH(YDRIP, YDMODEL%YRML_PHY_MF, YDGEOMETRY%YREGEO, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & + IF (YDDYNA%L3DTURB) THEN + CALL ACTKECOEFKH(YDRIP, YDMODEL%YRML_PHY_MF, YDDYNA, YDGEOMETRY%YREGEO, & + & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & & YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%TKE, ZTENDPTKE, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%T, & & YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, YDMF_PHYS_BASE_STATE%DIV, & @@ -3417,7 +3424,7 @@ IF(LMPHYS) THEN ZCOEFA(:,:) = ZBNEBCVPP(:,:) ENDIF CALL ACDIFV3 ( YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, & - & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, & + & YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, ZCP, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, ZKTROV, & & ZXTROV, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP, & & ZCHROV, ZXHROV, ZCOEFA, ZQV, ZQL, ZQI, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%T, & @@ -3443,8 +3450,9 @@ IF(LMPHYS) THEN ! Now the heat coefficient can be completed by TKE+ containing ! the TOMs contribution. - IF (L3DTURB) THEN - CALL ACTKECOEFKH(YDRIP, YDMODEL%YRML_PHY_MF, YDGEOMETRY%YREGEO, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & + IF (YDDYNA%L3DTURB) THEN + CALL ACTKECOEFKH(YDRIP, YDMODEL%YRML_PHY_MF, YDDYNA, YDGEOMETRY%YREGEO, & + & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & & YDCPG_OPTS%KLON, YDCPG_OPTS%KTDIA, YDCPG_OPTS%KFLEVG, YDMF_PHYS_BASE_STATE%TKE, ZTENDPTKE, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, YDMF_PHYS_BASE_STATE%T, & & YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%ALPH, YDMF_PHYS_BASE_STATE%DIV, & @@ -3522,7 +3530,7 @@ IF(LMPHYS) THEN ZDQVDIFF(JLON,JLEV)=ZDQV+ZQX1-ZQX0 ZFCQVNG(JLON,JLEV)=ZFCQVNG(JLON,JLEV-1)-ZDQV*ZPOID(JLON,JLEV) YDMF_PHYS%OUT%FCQNG(JLON,JLEV)=YDMF_PHYS%OUT%FCQNG(JLON,JLEV)+ZFCQVNG(JLON,JLEV) - IF(LRKCDEV.AND.YDCPG_OPTS%KSTEP>0) THEN + IF(LRKCDEV.AND.YDCPG_OPTS%NSTEP>0) THEN ZDTRAD(JLON,JLEV)=ZIPOI(JLON,JLEV)/YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP(JLON,JLEV)* (& & YDMF_PHYS%OUT%FRSO(JLON,JLEV-1,1)-YDMF_PHYS%OUT%FRSO(JLON,JLEV,1)& & +YDMF_PHYS%OUT%FRTH(JLON,JLEV-1,1)-YDMF_PHYS%OUT%FRTH(JLON,JLEV,1) ) @@ -4131,22 +4139,26 @@ IF(LMPHYS) THEN ZTENQ(JLON,JLEV) = ZTENQVA(JLON,JLEV) ZTENU(JLON,JLEV) = 0.0_JPRB ZTENV(JLON,JLEV) = 0.0_JPRB + ZTENTA(JLON,JLEV) = 0.0_JPRB + ZTENQA(JLON,JLEV) = 0.0_JPRB ENDDO ENDDO LLDSLPHY=.TRUE. ZVDIFTS = 0._JPRB ISPPN2D = 0 - CALL CUCALLN_MF (RPLDARE, RPLRG, YDCPG_OPTS%KSTEP, YDMODEL%YRML_PHY_EC%YRTHF, YDCST, YDMODEL%YRML_PHY_RAD%YRERAD, & + CALL CUCALLN_MF (RPLDARE, RPLRG, YDCPG_OPTS%NSTEP, YDMODEL%YRML_PHY_EC%YRTHF, YDCST, YDMODEL%YRML_PHY_RAD%YRERAD, & & YDMODEL%YRML_PHY_SLIN, YDMODEL%YRML_PHY_EC, YDMODEL%YRML_GCONF%YGFL, & + & YDMODEL%YRML_CHEM%YRCHEM, YDMODEL%YRML_GCONF%YRSPP_CONFIG, & & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, 0, YDCPG_OPTS%KFLEVG, ZDXTDK, ISPPN2D, & - & LLLAND, LLDSLPHY, TSPHY, ZVDIFTS, YDMF_PHYS_BASE_STATE%T, ZQV, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, & + & YDMODEL%YRML_PHY_MF%YRPHY%YRCAPE%LMCAPEA, LLLAND, LLDSLPHY, TSPHY, ZVDIFTS, YDMF_PHYS_BASE_STATE%T, ZQV, YDMF_PHYS_BASE_STATE%U, YDMF_PHYS_BASE_STATE%V, & & ZLISUM, ZVERVEL, YDMF_PHYS%OUT%DIFTQ, YDMF_PHYS%OUT%DIFTS, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, ZGEOM1, ZGEOMH, YDVARS%GEOMETRY%GM%T0, & - & ZCUCONVCA, ZGP2DSPPA, ZTENT, ZTENQ, ZTENU, ZTENV, ZACPR, ITOPC, IBASC, ITYPE, ICBOT, ICTOP, & - & IBOTSC, LLCUM, LLSC, LLSHCV, ZLCRIT_AER, ZLU, ZLUDE, ZLUDELI, ZSNDE, ZMFU, ZMFD, YDMF_PHYS%OUT%DIFCQ, & + & ZCUCONVCA, ZGP2DSPPA, ZTENT, ZTENQ, ZTENU, ZTENV, ZTENTA, ZTENQA, ZACPR, ITOPC, IBASC, ITYPE, ICBOT, ICTOP, & + & IBOTSC, LLCUM, LLSC, ICBOT_LIG, ICTOP_LIG, LLCUM_LIG, & + & LLSHCV, ZLCRIT_AER, ZLU, ZLUDE, ZLUDELI, ZSNDE, ZMFU, ZMFD, YDMF_PHYS%OUT%DIFCQ, & & YDMF_PHYS%OUT%DIFCS, ZFHPCL, ZFHPCN, YDMF_PHYS%OUT%FPLCL, YDMF_PHYS%OUT%FPLCN, ZLRAIN, ZRSUD, YDMF_PHYS%OUT%STRCU, & - & YDMF_PHYS%OUT%STRCV, ZFCQLF, ZFCQLI, ZMFUDE_RATE, ZMFDDE_RATE, YDMF_PHYS%OUT%CAPE, ZWMEAN, & + & YDMF_PHYS%OUT%STRCV, ZFCQLF, ZFCQLI, ZMFUDE_RATE, ZMFDDE_RATE, YDMF_PHYS%OUT%CAPE, ZWMEAN, ZVDISCU, & & ZDIFF, 0, ZCEN, ZTENC, ZSCAV) DO JLEV=0,YDCPG_OPTS%KFLEVG DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA @@ -4164,12 +4176,13 @@ IF(LMPHYS) THEN IF(LFLASH .AND. (LCVTDK .OR. LGPCMT)) THEN ! LIGHTNING PARAMETERIZATION. OUTPUT IS PFLASH, TOTAL LIGHTNING FLASH RATES. ZGAW(:)=0._JPRB - CALL CULIGHT (RPLDARE, RPLRG, YDMODEL%YRML_PHY_EC%YRTHF, YDCST, YDEPHY, YGFL, & - & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, & - & ZGAW, ZGAW, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, & - & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, LLLAND, YDMF_PHYS_BASE_STATE%T, ZLU, ZMFU, YDMF_PHYS%OUT%CAPE, & - & YDMF_PHYS%OUT%FPLCL, YDMF_PHYS%OUT%FPLCN, LLCUM, ICBOT, ICTOP, LLLINOX, YDMF_PHYS%OUT%FLASH, & - & ZLIGH_CTG, ZCTOPH, ZPRECMX, ZICE, ZCDEPTH, ZWMFU) + CALL ABOR1("Call to CULIGHT is not phased wrt 48R1 (ZQPFROZ, CHARGE)") + !CALL CULIGHT (RPLDARE, RPLRG, YDMODEL%YRML_PHY_EC%YRTHF, YDCST, YDEPHY, YGFL, YDECUMF,& + !& YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, & + !& ZGAW, ZGAW, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, & + !& YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, LLLAND, YDMF_PHYS_BASE_STATE%T, ZLU, ZMFU, YDMF_PHYS%OUT%CAPE, & + !& YDMF_PHYS%OUT%FPLCL, YDMF_PHYS%OUT%FPLCN, ZQPFROZ, LLCUM_LIG, ICBOT_LIG, ICTOP_LIG, LLLINOX, YDMF_PHYS%OUT%FLASH, & + !& ZLIGH_CTG, ZCTOPH, ZPRECMX, ZICE, ZCDEPTH, ZWMFU, YDMF_PHYS%OUT%CHARGE) ! LIGHTNING FLASH RATES ARE CONVERTED IN fl/km2/s BEFORE ENTERING CFU TIME ACCUMULATION. DO JLON=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA YDMF_PHYS%OUT%FLASH(JLON)=YDMF_PHYS%OUT%FLASH(JLON)/86400._JPRB @@ -4493,7 +4506,7 @@ IF(LMPHYS) THEN ! computing w from the mass flux. See transport in ACCVUD. ! CALL DIAGFLASH(YDCFU,YDMODEL%YRML_PHY_MF,YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA,YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG,& - & YDCPG_OPTS%KSTEP,& + & YDCPG_OPTS%NSTEP,& & ZQL,ZQI,YDMF_PHYS_BASE_STATE%R,YDMF_PHYS_BASE_STATE%S,ZQG,ZQH,YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP,& & YDMF_PHYS_BASE_STATE%T,YDMF_PHYS_BASE_STATE%YCPG_PHY%W,YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%R,& & YDVARS%UAL%T0,YDVARS%UOM%T0,YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF,& @@ -4544,7 +4557,7 @@ IF(LMPHYS) THEN !------------------------------------------------- IF (YDPHY%LGCHECKNAN) THEN CALL CHECKNAN(YDRIP,YDPHY0,YDPHY2, YDCPG_OPTS%NINDAT, & - & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, & + & YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KLON, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, & & YDMF_PHYS_BASE_STATE%YCPG_DYN%PHI, YDMF_PHYS_BASE_STATE%YCPG_DYN%PHIF, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYDF, & & YDVARS%GEOMETRY%GELAM%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), YDVARS%GEOMETRY%GEMU%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA), & @@ -4623,7 +4636,7 @@ ZZDEP=0.0_JPRB CALL ARO_WETDEP(ILONMNH, YDCPG_OPTS%KFLEVG, NGFL_EXT, IKRR, YDCPG_OPTS%ZDTPHY, ZZI_SVM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, 1:NGFL_EXT), & & ZZDEP(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZZI_PABSM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & & ZZI_THM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), ZZI_RHODREFM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & - & YDCPG_OPTS%KSTEP+1, ZZI_RM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, :), ZEVAP(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & + & YDCPG_OPTS%NSTEP+1, ZZI_RM(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :, :), ZEVAP(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, :, :), & & ISPLITR ) ! return to tendency DO JGFL=1,NGFL_EXT @@ -4764,7 +4777,7 @@ IF (LAJUCV) THEN ENDDO DO JLEV=1,YDCPG_OPTS%KFLEVG DO JROF=YDCPG_BNDS%KIDIA,YDCPG_BNDS%KFDIA - YDMF_PHYS_NEXT_STATE%T (JROF, JLEV) = YDMF_PHYS_NEXT_STATE%T (JROF, JLEV) + ZADJ_DTAJU(JROF,JLEV) + YDMF_PHYS_NEXT_STATE%T%P (JROF, JLEV) = YDMF_PHYS_NEXT_STATE%T%P (JROF, JLEV) + ZADJ_DTAJU(JROF,JLEV) ENDDO ENDDO ENDIF @@ -4802,7 +4815,7 @@ ENDIF ! * writes grid-point transmission coefficients for simplified physics. -IF (LRCOEF.AND.(YDCPG_OPTS%KSTEP == 1)) THEN +IF (LRCOEF.AND.(YDCPG_OPTS%NSTEP == 1)) THEN IFIELDSS=NG3SR*YDCPG_OPTS%KFLEVG CALL WRRADCOEF(YDGEOMETRY, YDRCOEF, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_BNDS%KSTGLO, & & IFIELDSS, ZRDT_COR, ZRDT_RAB3C, ZRDT_RAB3N, ZRDT_RAB4C, ZRDT_RAB4N, ZRDT_RAB6C, ZRDT_RAB6N, & @@ -4821,7 +4834,7 @@ IF (LOZONE) THEN ! the GFL ozone is activated as a prognostic and advected ! variable. CALL CPOZO (YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%ZDTPHY, YDMF_PHYS%OUT%FCHOZ, & - & YDMF_PHYS_NEXT_STATE%O3 (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP) + & YDMF_PHYS_NEXT_STATE%O3%P (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP) ENDIF ! 2.5.1 Chemical species @@ -4852,7 +4865,7 @@ ZTENDGFL(:,:,:) = 0.0_JPRB ! eventuelles de W et de OMEGA/P IF (LINTFLEX.AND.(.NOT.YDCPG_OPTS%LCONFX)) THEN - CALL CPTEND_FLEX( YDLDDH, YDMDDH, YGFL, YDPHY, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & + CALL CPTEND_FLEX( YDLDDH, YDMDDH, YGFL, YDPHY, YDDYNA, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, & & YDCPG_OPTS%KFLEVG, YDVARS%GEOMETRY%GNORDL%T0, YDVARS%GEOMETRY%GNORDM%T0, YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%DELP, & & YDMF_PHYS_BASE_STATE%YCPG_PHY%XYB%RDELP, YDMF_PHYS_BASE_STATE%YCPG_DYN%RCP%CP, YDMF_PHYS_BASE_STATE%U, & & YDMF_PHYS_BASE_STATE%V, YDMF_PHYS_BASE_STATE%T, YDMF_PHYS_BASE_STATE%YGSP_RR%T, PGFL, YLPROCSET, & @@ -4887,7 +4900,7 @@ ELSE & ZPTENDEFB21, ZPTENDEFB31, ZTENDEXT, YDDDH) ENDIF -IF (LTWOTL) THEN +IF (YDDYNA%LTWOTL) THEN ELSE @@ -4913,7 +4926,7 @@ ENDIF IF (.NOT.YDCPG_OPTS%LCONFX) THEN IF ((GCHETN%LFREQD).OR.(GCHETN%LCOORD).OR.(GCHETN%LPROFV)) THEN CALL CPCHET (YDMF_PHYS, YDMF_PHYS_BASE_STATE, YDCPG_MISC, YDRIP, YDPHY, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, & - & YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%KSTEP, ZMSC_FRMQ, ZDSA_CPS, ZTENDH, ZPTENDQ1, & + & YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%NSTEP, ZMSC_FRMQ, ZDSA_CPS, ZTENDH, ZPTENDQ1, & & ZPTENDI1, ZPTENDL1, ZPTENDR1, ZPTENDS1, YDVARS%GEOMETRY%GEMU%T0, YDVARS%GEOMETRY%GELAM%T0) ENDIF @@ -4938,7 +4951,7 @@ ENDIF IF (NDPSFI == 1) THEN CALL CPMVVPS(YDCST, YDVAB, YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%ZDTPHY, & & ZPFL_FP, YDMF_PHYS_BASE_STATE%YCPG_PHY%PREHYD(:, YDCPG_OPTS%KFLEVG), YDMF_PHYS%OUT%FEVL, YDMF_PHYS%OUT%FEVN, & - & YDCPG_DYN0%CTY%EVEL, YDCPG_DYN0%CTY%PSDVBC, YDMF_PHYS_NEXT_STATE%SP) + & YDCPG_DYN0%CTY%EVEL, YDCPG_DYN0%CTY%PSDVBC, YDMF_PHYS_NEXT_STATE%SP%P) ENDIF ! 2.9 Computation of evolution of T, u, v and Q. @@ -4977,13 +4990,14 @@ ZTENDD=0.0_JPRB IF (LHOOK) CALL DR_HOOK ('CPUTQY',0,ZHOOK_HANDLE_1) -CALL CPUTQY_APLPAR_EXPL(YDCST, YDCPG_BNDS, YDCPG_OPTS, YDMF_PHYS_NEXT_STATE, YDMF_PHYS_BASE_STATE, YDVARS, & -& YDPHY, YDCPG_OPTS%ZDTPHY, ZTENDH, YDMF_PHYS%OUT%TENDU, YDMF_PHYS%OUT%TENDV, ZTENDU, ZTENDV, ZTENDD, & -& ZPTENDEFB11, ZPTENDEFB21, ZPTENDEFB31, ZPTENDG1, ZPTENDICONV1, ZPTENDI1, ZPTENDLCONV1, ZPTENDL1, & +CALL CPUTQY_APLPAR_EXPL(YDCST, YDCPG_BNDS, YDCPG_OPTS, YDDYNA, YDMF_PHYS_NEXT_STATE, YDMF_PHYS_BASE_STATE, YDVARS, & +& YDPHY, YDCPG_OPTS%ZDTPHY, ZTENDH, YDMF_PHYS%OUT%TENDU, YDMF_PHYS%OUT%TENDV, ZTENDU, ZTENDV, ZTENDD, & +& ZPTENDEFB11, ZPTENDEFB21, ZPTENDEFB31, ZPTENDG1, ZPTENDICONV1, ZPTENDI1, ZPTENDLCONV1, ZPTENDL1, & & ZPTENDQ1, ZPTENDRCONV1, ZPTENDR1, ZPTENDSCONV1, ZPTENDS1, ZPTENDTKE1, YDMF_PHYS%OUT%FDIS) -CALL CPUTQY_APLPAR_LOOP(YDMODEL%YRML_DYN%YRDYN, YDGEOMETRY%YRDIMV, YDGMV, YGFL, YDPTRSLB1, YDPHY, YDCPG_OPTS%KLON, & -& YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, YDCPG_OPTS%ZDTPHY, ZTENDGFL, YDCPG_SL1%ZVIEW, PGMVT1, & +CALL CPUTQY_APLPAR_LOOP(YDMODEL%YRML_DYN%YRDYN, YDMODEL%YRML_DYN%YRDYNA, YDGEOMETRY%YRDIMV, YDGMV, YGFL, YDPTRSLB1, YDPHY, & +& YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, YDCPG_OPTS%KFLEVG, & +& YDCPG_OPTS%ZDTPHY, ZTENDGFL, YDCPG_SL1%ZVIEW, PGMVT1, & & PGFLT1) IF (LHOOK) CALL DR_HOOK ('CPUTQY',1,ZHOOK_HANDLE_1) @@ -5039,9 +5053,9 @@ IF ((.NOT.LSFORCS)) THEN IF(LNUDG)THEN CALL CPNUDG ( YDCPG_OPTS%KLON, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, NFNUDG, YDCPG_OPTS%KFLEVG, YDCPG_BNDS%KBL, & & XPNUDG, YDMF_PHYS_SURF%GSD_VF%PNUDM, YDMF_PHYS_SURF%GSP_RR%PT_T1, YDMF_PHYS_SURF%GSP_RR%PW_T1, & - & YDMF_PHYS_SURF%GSP_SB%PQ_T1, YDMF_PHYS_SURF%GSP_SG%PF_T1, YDMF_PHYS_NEXT_STATE%T (:, 1:YDCPG_OPTS%KFLEVG), & - & YDMF_PHYS_NEXT_STATE%Q (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_NEXT_STATE%U (:, 1:YDCPG_OPTS%KFLEVG), & - & YDMF_PHYS_NEXT_STATE%V (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_NEXT_STATE%SP, YDVARS%T%T0, YDVARS%Q%T0, & + & YDMF_PHYS_SURF%GSP_SB%PQ_T1, YDMF_PHYS_SURF%GSP_SG%PF_T1, YDMF_PHYS_NEXT_STATE%T%P (:, 1:YDCPG_OPTS%KFLEVG), & + & YDMF_PHYS_NEXT_STATE%Q%P (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_NEXT_STATE%U%P (:, 1:YDCPG_OPTS%KFLEVG), & + & YDMF_PHYS_NEXT_STATE%V%P (:, 1:YDCPG_OPTS%KFLEVG), YDMF_PHYS_NEXT_STATE%SP%P, YDVARS%T%T0, YDVARS%Q%T0, & & YDVARS%U%T0, YDVARS%V%T0, YDCPG_PHY0%PREHYD(:, YDCPG_OPTS%KFLEVG), YDVARS%GEOMETRY%GM%T0, YDMF_PHYS_SURF%GSD_VF%PLSM& & ) ENDIF @@ -5060,7 +5074,7 @@ IF (LTRAJPS) THEN PTRAJ_PHYS%PTSMF(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA) =YDMF_PHYS_BASE_STATE%YGSP_RR%T(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA) PTRAJ_PHYS%PSNSMF(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=YDMF_PHYS_BASE_STATE%YGSP_SG%F(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1) - IF (.NOT. LTWOTL) THEN + IF (.NOT. YDDYNA%LTWOTL) THEN CALL WRPHTRAJM(YDGEOMETRY, YDSIMPHL, YDCPG_BNDS%KIDIA, YDCPG_BNDS%KFDIA, PTRAJ_PHYS, YDVARS%U%T9, & & YDVARS%V%T9, YDVARS%T%T9, YDVARS%Q%T9, YDVARS%L%T9, YDVARS%I%T9, YDVARS%SP%T9) ENDIF @@ -5085,7 +5099,7 @@ IF (LL_SAVE_PHSURF) THEN ENDIF ! Store horizontal exchange coefficients (3D turbulence) to SL2 buffers -IF (L3DTURB) THEN +IF (YDDYNA%L3DTURB) THEN DO JLEV=1,YDCPG_OPTS%KFLEVG YDCPG_SL2%KAPPAM (YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, JLEV) = ZKUR_KUROV_H(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV) YDCPG_SL2%KAPPAH (YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA, JLEV) = ZKUR_KTROV_H(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,JLEV) @@ -5110,7 +5124,7 @@ IF(LGSCM.OR.LMUSCLFA) THEN ENDIF CALL WRITEPHYSIO(YDGEOMETRY, YDCPG_MISC, YDCPG_PHY0, YDMF_PHYS, YDCPG_DYN0, YDMF_PHYS_SURF, YDVARS, & & YDSURF, YDDPHY, YDRIP, YDMODEL%YRML_PHY_MF, YDCPG_BNDS%KFDIA, YDCPG_BNDS%KIDIA, YDCPG_OPTS%KGL1, & - & YDCPG_OPTS%KGL2, YDCPG_BNDS%KSTGLO, YDCPG_OPTS%KSTEP, NTSSG, YSP_SBD%NLEVS, YDVARS%GEOMETRY%GELAM%T0, & + & YDCPG_OPTS%KGL2, YDCPG_BNDS%KSTGLO, YDCPG_OPTS%NSTEP, NTSSG, YSP_SBD%NLEVS, YDVARS%GEOMETRY%GELAM%T0, & & YDVARS%GEOMETRY%GEMU%T0, YDVARS%GEOMETRY%GM%T0, YDVARS%GEOMETRY%OROG%T0, YDVARS%GEOMETRY%RCORI%T0, & & YDVARS%GEOMETRY%RATATH%T0, YDVARS%GEOMETRY%RATATX%T0, YDVARS%GEOMETRY%GECLO%T0, YDVARS%GEOMETRY%GESLO%T0, & & ZRDG_CVGQ, ZRDG_LCVQ, ZRDG_MU0, ZDSA_C1, ZDSA_C2, ZDSA_CPS, ZDSA_LHS, ZDSA_RS, ZFLU_CD, ZFLU_CDN, & diff --git a/src/arome/ext/aro_adjust.F90 b/src/arome/ext/aro_adjust.F90 index ed3db928fefa28ef216dc2bfe0c1002bf3bdba72..34ec5e5ebaca9ce87a721fc7e2f1fe7c3fdf8bee 100644 --- a/src/arome/ext/aro_adjust.F90 +++ b/src/arome/ext/aro_adjust.F90 @@ -11,8 +11,7 @@ PHLC_HRC, PHLC_HCF, PHLI_HRI, PHLI_HCF,& YDDDH,YDLDDH,YDMDDH,& YSPP_PSIGQSAT,YSPP_ICE_CLD_WGT) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - compute the resolved clouds and precipitation @@ -180,7 +179,7 @@ TYPE(TBUDGETDATA), DIMENSION(NBUDGET_RI) :: YLBUDGET !NBUDGET_RI is the one with TYPE(DIMPHYEX_t) :: YLDIMPHYEX ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------ ! !* 1. PRELIMINARY COMPUTATIONS diff --git a/src/arome/ext/aro_adjust_lima.F90 b/src/arome/ext/aro_adjust_lima.F90 index 755dc0360f121b801602e784fe2b45ad8774317f..94828bc76de7bc05e82f1f2d626331ee869607ac 100644 --- a/src/arome/ext/aro_adjust_lima.F90 +++ b/src/arome/ext/aro_adjust_lima.F90 @@ -10,7 +10,7 @@ PTHS, PRS, PSVS, PSRCS, PCLDFR, PICEFR, PPRCFR, & YDDDH, YDLDDH, YDMDDH, LLIMAINIT ) USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - compute the resolved clouds and precipitation @@ -185,7 +185,7 @@ TYPE(DIMPHYEX_t) :: YLDIMPHYEX !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ARO_ADJUST_LIMA',0,ZHOOK_HANDLE) CALL FILL_DIMPHYEX(YLDIMPHYEX, KLON, 1, KLEV, 0, KFDIA) diff --git a/src/arome/ext/aro_convbu.F90 b/src/arome/ext/aro_convbu.F90 index 06d195d23d961020f056e99f94ab0be57c7b91de..ff39b2d2b2100c5350bd0a39f4c86ed11ed7b5d8 100644 --- a/src/arome/ext/aro_convbu.F90 +++ b/src/arome/ext/aro_convbu.F90 @@ -1,6 +1,6 @@ SUBROUTINE ARO_CONVBU(KFDIA,KLEV,KRR,PRHODJ,PRRS,PTHS,YDDDH, YDLDDH, YDMDDH) USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_BUDGET,ONLY: LBU_ENABLE, LBUDGET_TH, LBUDGET_RV, LBUDGET_RC, LBUDGET_RI USE MODE_BUDGET_PHY, ONLY: BUDGET_DDH @@ -20,7 +20,7 @@ TYPE(TYP_DDH), INTENT(INOUT) :: YDDDH TYPE(TLDDH), INTENT(IN) :: YDLDDH TYPE(TMDDH), INTENT(IN) :: YDMDDH -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ARO_CONVBU',0,ZHOOK_HANDLE) IF (LBU_ENABLE) THEN IF (LBUDGET_TH) CALL BUDGET_DDH (PTHS(:,:,:)*PRHODJ(:,:,:),4,'DCONV_BU_RTH',YDDDH, YDLDDH, YDMDDH) diff --git a/src/arome/ext/aro_lima.F90 b/src/arome/ext/aro_lima.F90 index 7b5351b2daa16da82ef8837093e50790df644021..60d4874ebbaec2eab7b22fd007600f78b42ae841 100644 --- a/src/arome/ext/aro_lima.F90 +++ b/src/arome/ext/aro_lima.F90 @@ -9,7 +9,7 @@ YDDDH, YDLDDH, YDMDDH ) USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - compute the resolved clouds and precipitation @@ -143,7 +143,7 @@ TYPE(DIMPHYEX_t) :: YLDIMPHYEX !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ARO_LIMA',0,ZHOOK_HANDLE) !Dimensions diff --git a/src/arome/ext/aro_rain_ice.F90 b/src/arome/ext/aro_rain_ice.F90 index dd83db6e9d6f21e94eb3b4c73aae56380dab6381..18f7a19ce13c70df2e83e1adf3c76cc952bc9ea3 100644 --- a/src/arome/ext/aro_rain_ice.F90 +++ b/src/arome/ext/aro_rain_ice.F90 @@ -11,8 +11,7 @@ PINPRR,PINPRS,PINPRG,PINPRH,PFPR, & YDDDH, YDLDDH, YDMDDH, & YSPP_ICENU,YSPP_KGN_ACON,YSPP_KGN_SBGR) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - compute the resolved clouds and precipitation @@ -200,7 +199,7 @@ TYPE(DIMPHYEX_t) :: YLDIMPHYEX LOGICAL, DIMENSION(KLON,1,KLEV) :: LLMICRO INTEGER :: ISIZE ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE #include "abor1.intfb.h" !------------------------------------------------------------------------------ diff --git a/src/arome/ext/aro_shallow_mf.F90 b/src/arome/ext/aro_shallow_mf.F90 index 1b30c02c183dc98d35e2925b6b19941487a9cde5..9da5365df1cc44f3e8b69276514db3a93cadb336 100644 --- a/src/arome/ext/aro_shallow_mf.F90 +++ b/src/arome/ext/aro_shallow_mf.F90 @@ -16,8 +16,7 @@ PU_UP, PV_UP, PTHV_UP, PW_UP, PFRAC_UP, PEMF, & YDDDH,YDLDDH,YDMDDH ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - interface to call SHALLOW_MF : @@ -153,7 +152,7 @@ INTEGER, DIMENSION(size(PRHODJ,1)) :: IKLCL,IKETL,IKCTL REAL,DIMENSION(size(PRHODJ,1),size(PRHODJ,2)) :: ZFLXZTHMF,ZFLXZRMF,ZFLXZUMF,ZFLXZVMF REAL,DIMENSION(size(PRHODJ,1),size(PRHODJ,2)) :: ZDETR,ZENTR TYPE(DIMPHYEX_t) :: YLDIMPHYEX -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JBU ! Loop index for budgets ! ! diff --git a/src/arome/ext/aro_startbu.F90 b/src/arome/ext/aro_startbu.F90 index c9b10fcdeb1cf54c83f74f8466f8e16a4efdf7d4..8bbd6d06a15b5e80f47ddffe574b54cc0cd67c09 100644 --- a/src/arome/ext/aro_startbu.F90 +++ b/src/arome/ext/aro_startbu.F90 @@ -2,7 +2,7 @@ SUBROUTINE ARO_STARTBU( KIDIA, KFDIA, KLEV, KRR,KSV,PRHODJ,& & PRUS,PRVS,PRWS,PRTHS,PRRS,PRTKES,YDDDH, YDLDDH, YDMDDH) USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! Purpose. ! -------- @@ -77,7 +77,7 @@ TYPE(TMDDH) , INTENT(IN) :: YDMDDH LOGICAL :: LL_BUDGET_RR INTEGER :: JR -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE diff --git a/src/arome/ext/aro_turb_mnh.F90 b/src/arome/ext/aro_turb_mnh.F90 index a19d04ff89f83dac5da242b4b0be9a5d4014cdca..e589a535e53118f477e8fd4347773a612fb3385e 100644 --- a/src/arome/ext/aro_turb_mnh.F90 +++ b/src/arome/ext/aro_turb_mnh.F90 @@ -16,7 +16,7 @@ USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * - compute the turbulence sources and the TKE evolution for Arome @@ -213,7 +213,7 @@ TYPE(TLES_t) :: YLTLES !* 1. PRELIMINARY COMPUTATIONS ! ------------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ARO_TURB_MNH',0,ZHOOK_HANDLE) CALL FILL_DIMPHYEX(YLDIMPHYEX, KLON, 1, KLEV+2, JPVEXT_TURB, KLON) YLTLES%LLES=.FALSE. diff --git a/src/arome/ext/aroini_conf.F90 b/src/arome/ext/aroini_conf.F90 index 7f445c61487e7d7296388f53f25e1fe684c7e0fa..d71480890770954f1910061c642636fda5d2471f 100644 --- a/src/arome/ext/aroini_conf.F90 +++ b/src/arome/ext/aroini_conf.F90 @@ -1,7 +1,6 @@ ! ######spl SUBROUTINE AROINI_CONF(KULOUT,OWTOTL,OCARTESIAN) -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK !**** INI_CSTMNH * - Initiallize MesoNH Physics configuration module !** Interface. @@ -56,7 +55,7 @@ LOGICAL, INTENT(IN) :: OCARTESIAN ! 1.1 Set implicit default values for MODD_PARAMETERS ! the variables are initialised in the module itself ! 1.2 Set implicit default values for MODD_CST -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AROINI_CONF',0,ZHOOK_HANDLE) ! 1.3 Set implicit default values for MODD_CONF diff --git a/src/arome/ext/aroini_nsv.F90 b/src/arome/ext/aroini_nsv.F90 index d5b66ed4f59a59e68f0fadeca405da6d39f6ec29..5826d4a126c0b522f597dad0fe0474b77cd09b45 100644 --- a/src/arome/ext/aroini_nsv.F90 +++ b/src/arome/ext/aroini_nsv.F90 @@ -3,7 +3,7 @@ KSV_DSTBEG, KSV_DSTEND,KSV_DSTDEPBEG, KSV_DSTDEPEND,& KSV_CO2) USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK !! ############################## !! !!*** *AROINI_MNHC* @@ -48,7 +48,7 @@ INTEGER :: JN, ICO2 ! ! Initialize NSV ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('AROINI_NSV',0,ZHOOK_HANDLE) NSV=KSV ! for LIMA case IF (LUSECHEM) THEN diff --git a/src/arome/ext/cpg_opts_type_mod.fypp b/src/arome/ext/cpg_opts_type_mod.fypp index 4738600331ddb1c9901b8374dda47660ab6d9e98..7d486b3847a72930eb5755f8ea05f4dd95979449 100644 --- a/src/arome/ext/cpg_opts_type_mod.fypp +++ b/src/arome/ext/cpg_opts_type_mod.fypp @@ -13,8 +13,7 @@ MODULE CPG_OPTS_TYPE_MOD USE PARKIND1, ONLY : JPIM, JPRB USE GEOMETRY_MOD, ONLY : GEOMETRY -USE YOMCT3, ONLY : NSTEP -USE YOMCLI, ONLY : TCLI, YRCLI +USE YOMCLI, ONLY : TCLI USE SURFACE_FIELDS_MIX , ONLY : TYPE_SURF_GEN IMPLICIT NONE @@ -62,9 +61,9 @@ TYPE CPG_BNDS_TYPE INTEGER(KIND=JPIM) :: KBL INTEGER(KIND=JPIM) :: KSTGLO - INTEGER(KIND=JPIM), PRIVATE :: KLON - INTEGER(KIND=JPIM), PRIVATE :: KGPTOT - INTEGER(KIND=JPIM), PRIVATE :: KGPCOMP + INTEGER(KIND=JPIM) :: KLON + INTEGER(KIND=JPIM) :: KGPTOT + INTEGER(KIND=JPIM) :: KGPCOMP CONTAINS PROCEDURE :: INIT => CPG_BNDS_TYPE_INIT @@ -133,7 +132,7 @@ TYPE CPG_OPTS_TYPE INTEGER(KIND=JPIM) :: KGPCOMP INTEGER(KIND=JPIM) :: KGL1 INTEGER(KIND=JPIM) :: KGL2 - INTEGER(KIND=JPIM) :: KSTEP + INTEGER(KIND=JPIM) :: NSTEP INTEGER(KIND=JPIM) :: KTDIA INTEGER(KIND=JPIM) :: KVCLIS INTEGER(KIND=JPIM) :: NDTPREC @@ -154,25 +153,34 @@ TYPE CPG_OPTS_TYPE TYPE (TCLI) :: YRCLI - ! CFU - LOGICAL :: LFLASH - ! XFU - LOGICAL :: LXCLP - LOGICAL :: LXTGST - LOGICAL :: LXXGST - - LOGICAL :: L3DTURB + INTEGER (KIND=JPIM) :: NSSSSS + INTEGER (KIND=JPIM) :: NFNUDG + INTEGER (KIND=JPIM) :: NINDAT LOGICAL :: LAROME LOGICAL :: LCALLSFX LOGICAL :: LCORWAT + LOGICAL :: LECMWF + LOGICAL :: LINITER LOGICAL :: LELAM - LOGICAL :: LNHDYN + LOGICAL :: LFLASH + LOGICAL :: LNUDG + LOGICAL :: LRPLANE + LOGICAL :: LSFORC LOGICAL :: LSFORCS - LOGICAL :: LTWOTL - LOGICAL :: LVERTFE - INTEGER (KIND=JPIM) :: NINDAT - REAL (KIND=JPRB) :: RPLDARE - REAL (KIND=JPRB) :: RPLRG + LOGICAL :: LSOMEGA_FRC + LOGICAL :: LSPS_FRC + LOGICAL :: LSW_FRC + LOGICAL :: LXCLP + LOGICAL :: LXTGST + LOGICAL :: LXXGST + REAL (KIND=JPRB) :: RPLDARE + REAL (KIND=JPRB) :: RPLRG + REAL (KIND=JPRB) :: TOPPRES + REAL (KIND=JPRB) :: RPSTRA + REAL (KIND=JPRB) :: RPTROP + REAL (KIND=JPRB) :: RTSUR + REAL (KIND=JPRB), ALLOCATABLE :: XPNUDG (:) + CONTAINS PROCEDURE :: INIT => CPG_OPTS_TYPE_INIT @@ -182,15 +190,24 @@ CONTAINS SUBROUTINE CPG_OPTS_TYPE_INIT (SELF, YDGEOMETRY, YDMODEL, YDFIELDS, CDCONF, LD_DFISTEP) - USE YOMDYNA, ONLY : LPC_FULL, LPC_CHEAP, L3DTURB - USE YOMCT0, ONLY : LSLAG, LAROME, LCORWAT, LELAM, LSFORCS, LNHDYN, LTWOTL, LAROME, LCALLSFX - USE YOMCVER, ONLY : LVERTFE - USE YOMDYNCORE, ONLY : RPLDARE, RPLRG - USE YOMLUN, ONLY : NULOUT + + + USE FIELDS_MOD, ONLY : FIELDS USE TYPE_MODEL, ONLY : MODEL + USE YOMCT0, ONLY : LAROME, LCORWAT, LELAM, LSFORCS, LCALLSFX, LSFORC, LRPLANE, LECMWF USE YOMCT3, ONLY : NSTEP - USE FIELDS_MOD, ONLY : FIELDS + USE YOMSTA, ONLY : RPSTRA, RPTROP, RTSUR + USE YOMVERT, ONLY : TOPPRES + USE YOMDYNCORE, ONLY : RPLDARE, RPLRG + USE YOMLSFORC, ONLY : LSPS_FRC, LSW_FRC, LSOMEGA_FRC + USE YOMLUN, ONLY : NULOUT + USE YOMNUD, ONLY : NFNUDG, LNUDG USE YOMRIP0, ONLY : NINDAT + USE YOMSNU, ONLY : XPNUDG + USE YOMRIP0, ONLY : NSSSSS + USE YOMINI, ONLY : LINITER + USE YOMCLI, ONLY : YRCLI + CLASS(CPG_OPTS_TYPE) :: SELF TYPE(MODEL) , INTENT(IN) :: YDMODEL TYPE(GEOMETRY), INTENT(IN) :: YDGEOMETRY @@ -208,27 +225,40 @@ CONTAINS SELF%LXTGST = YDFIELDS%YRXFU%LXTGST SELF%LXXGST = YDFIELDS%YRXFU%LXXGST - SELF%L3DTURB = L3DTURB - SELF%LAROME = LAROME - SELF%LAROME = LAROME - SELF%LCALLSFX = LCALLSFX - SELF%LCORWAT = LCORWAT - SELF%LELAM = LELAM - SELF%LNHDYN = LNHDYN - SELF%LSFORCS = LSFORCS - SELF%LSFORCS = LSFORCS - SELF%LTWOTL = LTWOTL - SELF%LVERTFE = LVERTFE - SELF%NINDAT = NINDAT - SELF%RPLDARE = RPLDARE - SELF%RPLRG = RPLRG + SELF%LAROME = LAROME + SELF%LCALLSFX = LCALLSFX + SELF%LINITER = LINITER + SELF%LCORWAT = LCORWAT + SELF%LECMWF = LECMWF + SELF%LELAM = LELAM + + SELF%LNUDG = LNUDG + SELF%LRPLANE = LRPLANE + SELF%LSFORC = LSFORC + SELF%LSFORCS = LSFORCS + SELF%LSFORCS = LSFORCS + + SELF%LSPS_FRC = LSPS_FRC + SELF%LSW_FRC = LSW_FRC + SELF%NSSSSS = NSSSSS + SELF%NFNUDG = NFNUDG + SELF%NINDAT = NINDAT + SELF%RPLDARE = RPLDARE + SELF%RPLRG = RPLRG + SELF%TOPPRES = TOPPRES + IF (ALLOCATED (XPNUDG)) THEN + SELF%XPNUDG = XPNUDG + ENDIF + SELF%RPSTRA = RPSTRA + SELF%RPTROP = RPTROP + SELF%RTSUR = RTSUR SELF%YRCLI = YRCLI SELF%L_DFISTEP = LD_DFISTEP - LLCT =LPC_FULL.AND.(YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER > 0) - LLCTC=LPC_CHEAP.AND.(YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER > 0) + LLCT =YDMODEL%YRML_DYN%YRDYNA%LPC_FULL.AND.(YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER > 0) + LLCTC=YDMODEL%YRML_DYN%YRDYNA%LPC_CHEAP.AND.(YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER > 0) IF(NSTEP > 0) THEN SELF%LFSTEP=.FALSE. ELSE @@ -237,13 +267,13 @@ CONTAINS ! Physics is called in CPG SELF%LDIAB= (YDMODEL%YRML_PHY_MF%YRPHY%LMPHYS.OR.YDMODEL%YRML_PHY_EC%YREPHY%LEPHYS) .AND. .NOT. YDMODEL%YRML_PHY_EC%YREPHY%LAGPHY .AND. (YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER == 0) - SELF%LSLPHY = YDMODEL%YRML_PHY_EC%YREPHY%LSLPHY.AND.LSLAG.AND.(.NOT.LLCTC) + SELF%LSLPHY = YDMODEL%YRML_PHY_EC%YREPHY%LSLPHY.AND.YDMODEL%YRML_DYN%YRDYNA%LSLAG.AND.(.NOT.LLCTC) ! Initial fluxes IF (CDCONF == 'X') THEN SELF%LFSTEP=.TRUE. ENDIF - IF (LSLAG .AND. ((YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER == 0).OR.(LLCT.AND.(.NOT.LLCTC))) ) THEN + IF (YDMODEL%YRML_DYN%YRDYNA%LSLAG .AND. ((YDMODEL%YRML_DYN%YRDYN%NCURRENT_ITER == 0).OR.(LLCT.AND.(.NOT.LLCTC))) ) THEN SELF%LUSEPB1=.TRUE. ELSE SELF%LUSEPB1=.FALSE. @@ -273,7 +303,7 @@ CONTAINS SELF%KGPTOT = YDGEOMETRY%YRGEM%NGPTOT SELF%KGPBLKS = YDGEOMETRY%YRDIM%NGPBLKS SELF%KGPCOMP = YDGEOMETRY%YRGEM%NGPTOT_CAP - SELF%KSTEP = NSTEP + SELF%NSTEP = NSTEP SELF%KGL1 = 1 SELF%KGL2 = YDGEOMETRY%YRDIM%NDGENL SELF%KTDIA = 1 @@ -343,23 +373,18 @@ CONTAINS END SUBROUTINE CPG_OPTS_SURF_TYPE_INIT - SUBROUTINE CPG_BNDS_TYPE_INIT(SELF, YDGEOMETRY, YDMODEL, YDFIELDS) - USE TYPE_MODEL, ONLY : MODEL - USE FIELDS_MOD, ONLY : FIELDS - USE YOMCT0, ONLY : LSLAG, LTWOTL + SUBROUTINE CPG_BNDS_TYPE_INIT(SELF, YDCPG_OPTS) CLASS(CPG_BNDS_TYPE) :: SELF - TYPE(MODEL) , INTENT(IN) :: YDMODEL - TYPE(GEOMETRY), INTENT(IN) :: YDGEOMETRY - TYPE(FIELDS), INTENT(IN) :: YDFIELDS + TYPE(CPG_OPTS_TYPE), INTENT(IN) :: YDCPG_OPTS SELF%KBL = 1 - SELF%KLON = YDGEOMETRY%YRDIM%NPROMA + SELF%KLON = YDCPG_OPTS%KLON SELF%KIDIA = 1 SELF%KIDIE = 1 - SELF%KFDIA = YDGEOMETRY%YRDIM%NPROMA - SELF%KFDIE = YDGEOMETRY%YRDIM%NPROMA - SELF%KGPTOT = YDGEOMETRY%YRGEM%NGPTOT - SELF%KGPCOMP = YDGEOMETRY%YRGEM%NGPTOT_CAP + SELF%KFDIA = YDCPG_OPTS%KLON + SELF%KFDIE = YDCPG_OPTS%KLON + SELF%KGPTOT = YDCPG_OPTS%KGPTOT + SELF%KGPCOMP = YDCPG_OPTS%KGPCOMP END SUBROUTINE CPG_BNDS_TYPE_INIT @@ -394,13 +419,12 @@ CONTAINS SUBROUTINE CPG_DIMS_VARS_TYPE_INIT (SELF, YDGEOMETRY, YDMODEL, YDVARS) USE TYPE_MODEL, ONLY : MODEL USE FIELD_VARIABLES_MOD, ONLY: FIELD_VARIABLES - USE YOMCT0, ONLY : LSLAG, LTWOTL CLASS(CPG_DIMS_VARS_TYPE) :: SELF TYPE(MODEL) , INTENT(IN) :: YDMODEL TYPE(GEOMETRY), INTENT(IN) :: YDGEOMETRY TYPE(FIELD_VARIABLES), INTENT(IN) :: YDVARS - IF (LSLAG) THEN + IF (YDMODEL%YRML_DYN%YRDYNA%LSLAG) THEN SELF%U = CPG_DIM_VAR_TYPE (0, YDGEOMETRY%YRDIMV%NFLEVG+1) SELF%V = CPG_DIM_VAR_TYPE (0, YDGEOMETRY%YRDIMV%NFLEVG+1) diff --git a/src/arome/ext/cpg_pt_ulp_expl.fypp b/src/arome/ext/cpg_pt_ulp_expl.fypp new file mode 100644 index 0000000000000000000000000000000000000000..351d2591a899e3f1af44ea8d8cc2ee545b831bfb --- /dev/null +++ b/src/arome/ext/cpg_pt_ulp_expl.fypp @@ -0,0 +1,178 @@ +#:set config_file = os.path.dirname(_THIS_FILE_) + '/field_config.yaml' +#:set config = field_config.VariableConfiguration(config_file) +#:set gfl = config.groups['GFL'] +SUBROUTINE CPG_PT_ULP_EXPL (YDMODEL, YDGEOMETRY, YDMF_PHYS_NEXT_STATE, YDCPG_SL1, YDVARS, YDCPG_BNDS, LDGET, YDA_GFLPT) + +! ----------------------------------------------------------------------------- +! -------------------------------------------- +!**** *CPG_PT_ULP_EXPL* physics tendencies written to or extracted from GFLPT +! -------------------------------------------- + +! Purpose. +! -------- +! Copy the physics tendencies calculated (for ex in predictor) +! to GFLPT to be retrieved and used during corrector +! Designed for unlagged physics packages (LAGPHY=F). +! May be used for non advected GFL too. + +! This routine is called for lpc_full=true only. + +!** Interface. +! ---------- +! CALL CPG_PT_ULP_EXPL(...) + +! Input arguments +! ------------------ +! YDCPG_BNDS%KIDIA : start of horizontal loop +! YDCPG_BNDS%KFDIA : end of horizontal loop +! LDGET : T = get tendencies from buffers. +! F = save tendencies in buffers. +! KFLDN,KFLDX: for second dimension of PTENDEXT. + +! Input or Output according to LDGET +! ---------------------------------- +! PTEND[X]: tendency of X variable from phy (advected variables). +! PGFLPT : buffer for tendency of GFL variable from phy. +! PGFLT1 : tendency of X variable from phy (not advected variables). +! PGFL : GFL variables. +! PGMV : upper air GMV variables at time t. +! PGMVS : surface GMV variables at time t. + +! Implicit arguments +! -------------------- + +! Author. +! ------- +! Martina Tudor + Karim Yessad +! Original : Jan 2011 (from CPG_PT) + +! Modifications. +! -------------- +! ----------------------------------------------------------------------------- + +USE GEOMETRY_MOD , ONLY : GEOMETRY +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, JPHOOK, DR_HOOK +USE CPG_OPTS_TYPE_MOD , ONLY : CPG_BNDS_TYPE +USE FIELD_VARIABLES_MOD , ONLY : FIELD_VARIABLES +USE CPG_TYPE_MOD , ONLY : CPG_SL1_TYPE +USE TYPE_MODEL , ONLY : MODEL +USE MF_PHYS_NEXT_STATE_TYPE_MOD & + , ONLY : MF_PHYS_NEXT_STATE_TYPE +USE ARRAY_FIELD_WRAPPER_MOD , ONLY : ARRAY_4D + + +! ----------------------------------------------------------------------------- + +IMPLICIT NONE + +TYPE(MODEL) ,INTENT(IN) :: YDMODEL +TYPE(GEOMETRY) ,INTENT(IN) :: YDGEOMETRY +TYPE (MF_PHYS_NEXT_STATE_TYPE), INTENT(INOUT) :: YDMF_PHYS_NEXT_STATE +TYPE(CPG_SL1_TYPE) ,INTENT(INOUT) :: YDCPG_SL1 +TYPE(FIELD_VARIABLES) ,INTENT(INOUT) :: YDVARS +TYPE(CPG_BNDS_TYPE) ,INTENT(IN) :: YDCPG_BNDS +LOGICAL ,INTENT(IN) :: LDGET +TYPE(ARRAY_4D) ,INTENT(INOUT) :: YDA_GFLPT +! ----------------------------------------------------------------------------- + +INTEGER(KIND=JPIM) :: JGFL + +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +! ----------------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CPG_PT_ULP_EXPL',0,ZHOOK_HANDLE) +ASSOCIATE(YDDIM=>YDGEOMETRY%YRDIM,YDDIMV=>YDGEOMETRY%YRDIMV,YGFL=>YDMODEL%YRML_GCONF%YGFL) +ASSOCIATE(YCPF=>YDMODEL%YRML_GCONF%YGFL%YCPF, NFLEVG=>YDDIMV%NFLEVG) + +! ----------------------------------------------------------------------------- + +!* 1. PREDICTOR FOR LPC_FULL. +! --------------------------- + +IF (.NOT.LDGET) THEN + + ! * GMV: + YDVARS%CUPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDMF_PHYS_NEXT_STATE%U%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + YDVARS%CVPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDMF_PHYS_NEXT_STATE%V%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + YDVARS%CTPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDMF_PHYS_NEXT_STATE%T%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + IF (YDMODEL%YRML_DYN%YRDYNA%LNHDYN) THEN + YDVARS%CSVDPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDMF_PHYS_NEXT_STATE%SVD%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + ENDIF + + ! * GMVS: + YDVARS%CSPPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=YDCPG_SL1%SP9%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA) + + ! * GFL: +#:for v in gfl.variables +#:if v.array == 1 + IF (ALLOCATED (YDCPG_SL1%${v.name}$)) THEN + DO JGFL = 1, SIZE (YDCPG_SL1%${v.name}$) + IF (YGFL%Y${v.name}$(JGFL)%LT1 .AND. YGFL%Y${v.name}$(JGFL)%LPT) THEN + YDA_GFLPT%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG,YGFL%Y${v.name}$(JGFL)%MPPT) = YDMF_PHYS_NEXT_STATE%${v.name}$(JGFL)%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + ENDIF + ENDDO + ENDIF + +#:else + IF (YGFL%Y${v.name}$%LT1 .AND. YGFL%Y${v.name}$%LPT) THEN + YDA_GFLPT%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG,YGFL%Y${v.name}$%MPPT) = YDMF_PHYS_NEXT_STATE%${v.name}$%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + ENDIF + +#:endif +#:endfor + +ENDIF + +! ----------------------------------------------------------------------------- + +!* 2. CORRECTOR FOR LPC_FULL. +! --------------------------- + +IF (LDGET) THEN + + ! * GMV: + YDMF_PHYS_NEXT_STATE%U%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDVARS%CUPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + YDMF_PHYS_NEXT_STATE%V%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDVARS%CVPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + YDMF_PHYS_NEXT_STATE%T%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDVARS%CTPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + IF (YDMODEL%YRML_DYN%YRDYNA%LNHDYN) THEN + YDMF_PHYS_NEXT_STATE%SVD%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDVARS%CSVDPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + ENDIF + + ! * GMVS: + YDCPG_SL1%SP9%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA)=YDVARS%CSPPT%T9(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA) + + ! * GFL: +#:for v in gfl.variables +#:if v.array == 1 + IF (ALLOCATED (YDCPG_SL1%${v.name}$)) THEN + DO JGFL = 1, SIZE (YDCPG_SL1%${v.name}$) + IF (YGFL%Y${v.name}$(JGFL)%LT1 .AND. YGFL%Y${v.name}$(JGFL)%LPT) THEN + YDMF_PHYS_NEXT_STATE%${v.name}$(JGFL)%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) = YDA_GFLPT%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG,YGFL%Y${v.name}$(JGFL)%MPPT) + ENDIF + ENDDO + ENDIF + +#:else + IF (YGFL%Y${v.name}$%LT1 .AND. YGFL%Y${v.name}$%LPT) THEN + YDMF_PHYS_NEXT_STATE%${v.name}$%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) = YDA_GFLPT%P(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG,YGFL%Y${v.name}$%MPPT) + ENDIF + +#:endif +#:endfor + + IF (YCPF%LACTIVE) THEN + YDVARS%CPF%T1(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG)=YDVARS%CPF%T0(YDCPG_BNDS%KIDIA:YDCPG_BNDS%KFDIA,1:NFLEVG) + ENDIF + +ENDIF + +! ----------------------------------------------------------------------------- + +END ASSOCIATE +END ASSOCIATE + +IF (LHOOK) CALL DR_HOOK('CPG_PT_ULP_EXPL',1,ZHOOK_HANDLE) + +END SUBROUTINE CPG_PT_ULP_EXPL diff --git a/src/arome/ext/cpg_type_mod.fypp b/src/arome/ext/cpg_type_mod.fypp new file mode 100644 index 0000000000000000000000000000000000000000..d05cb1e1b7c3de8441bbe9c5ca53ecf11723272b --- /dev/null +++ b/src/arome/ext/cpg_type_mod.fypp @@ -0,0 +1,986 @@ +#:mute +#:set config_file = os.path.dirname(_THIS_FILE_) + '/field_config.yaml' +#:set config = field_config.VariableConfiguration(config_file) +#:set gfl = config.groups['GFL'] +#:include "cpg_macros.hypp" + +#:set AS_void = [] +#:set AS_0_nflevg = [ [ '0', 'NLEV' ] ] +#:set AS_1_nflevg = [ [ '1', 'NLEV' ] ] +#:set AS_1_KFLEVG = [ [ '1', 'YDCPG_OPTS%KFLEVG' ] ] +#:set AS_1_nflevg_2 = [ [ '1', 'NLEV' ], [ '1', '2' ] ] +#:set AS_0_KFLEVG_6 = [ [ '0', 'YDCPG_OPTS%KFLEVG' ], [ '1', '6' ] ] +#:set AS_1_KFLEVG_NVCLIS = [ [ '1', 'YDCPG_OPTS%KFLEVG' ], [ '1', 'YDCPG_OPTS%KVCLIS' ] ] +#:set AS_4D = [ [], [] ] +#:set AS_1_NSW = [ [ '1', 'YDCPG_OPTS%KSW' ] ] + +#:set vars_cpg_dyn = { & +& "OROGL" : [False, False, AS_void, None, "LLT0" ], & +& "OROGM" : [False, False, AS_void, None, "LLT0" ], & +& "PHI" : [False, False, AS_0_nflevg, None, None ], & +& "PRE" : [False, False, AS_0_nflevg, None, None ], & +& "PHIF" : [True, True, AS_1_nflevg, None, None ], & +& "PREF" : [True, True, AS_1_nflevg, None, None ], & +& "PREL" : [False, False, AS_void, None, None ], & +& "PREM" : [False, False, AS_void, None, None ], & +& "NHY" : [False, False, AS_0_nflevg, None, None ], & +& "GWFT" : [False, False, AS_1_nflevg, None, None ], & +& "KENE" : [False, False, AS_1_nflevg, None, "LLT0" ], & +& "NHX" : [False, False, AS_1_nflevg, None, None ], & +& "PHIFL" : [False, False, AS_1_nflevg, None, "LLT0" ], & +& "PHIFM" : [False, False, AS_1_nflevg, None, "LLT0" ], & +& "RTL" : [False, False, AS_1_nflevg, None, "LLT0" ], & +& "RTM" : [False, False, AS_1_nflevg, None, "LLT0" ], & +& "RCP" : [True, True, AS_4D, "CPG_RCP_TYPE", None , "YLTRCP" ], & +& "CTY" : [True, False, AS_4D, "CPG_CTY_TYPE", "LLT0" , "YLTCTY" ], & +& "UVH" : [False, False, AS_4D, "CPG_HWIND_TYPE", "LLT0" , "YLTHW" ], & +& "XYB" : [False, False, AS_4D, "CPG_XYB_TYPE", None , "YLTXYB" ], & +& "DBBC" : [False, False, AS_void, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "GWS" : [False, False, AS_void, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "GWFL" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "GWFM" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "GWT" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN" ], & +& "NHPREF" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN" ], & +& "NHPREH" : [False, False, AS_0_nflevg, None, "YDDYNA%LNHDYN" ], & +& "QCHAL" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "QCHAM" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& "RDPHI" : [False, False, AS_1_nflevg, None, "YDDYNA%LNHDYN .AND. LLT0" ], & +& } + +#:set vars_cpg_phy = { & +& "PRE" : [False, False, AS_0_nflevg, None, "LLMF_PHYS" ], & +& "PREF" : [False, False, AS_1_nflevg, None, "LLMF_PHYS" ], & +& "PREHYD" : [False, False, AS_0_nflevg, None, "LLMF_PHYS" ], & +& "PREHYDF" : [False, False, AS_1_nflevg, None, "LLMF_PHYS" ], & +& "WL" : [False, False, AS_1_nflevg, None, "LLMF_PHYS" ], & +& "WM" : [False, False, AS_1_nflevg, None, "LLMF_PHYS" ], & +& "W" : [False, False, AS_1_nflevg, None, "LLMF_PHYS" ], & +& "XYB" : [False, False, AS_4D, "CPG_XYB_TYPE", "LLMF_PHYS" , "YLTXYB_PHY" ], & +& } + +#:set vars_cpg_gpar = { & +& "INPRR" : [False, False, AS_void, None, None ], & +& "INPRS" : [False, False, AS_void, None, None ], & +& "INPRG" : [False, False, AS_void, None, None ], & +& "ACPRR" : [False, False, AS_void, None, None ], & +& "ACPRS" : [False, False, AS_void, None, None ], & +& "ACPRG" : [False, False, AS_void, None, None ], & +& "ALBDIR" : [False, False, AS_1_NSW, None, None ], & +& "ALBSCA" : [False, False, AS_1_NSW, None, None ], & +& "RAIN" : [False, False, AS_void, None, None ], & +& "SNOW" : [False, False, AS_void, None, None ], & +& "GZ0" : [False, False, AS_void, None, None ], & +& "GZ0H" : [False, False, AS_void, None, None ], & +& "VQS" : [False, False, AS_void, None, None ], & +& "VTS" : [False, False, AS_void, None, None ], & +& "VEMIS" : [False, False, AS_void, None, None ], & +& "SWDIR" : [False, False, AS_1_NSW, None, None ], & +& "SWDIF" : [False, False, AS_1_NSW, None, None ], & +& "LSM" : [False, False, AS_void, None, None ], & +& "CD" : [False, False, AS_void, None, None ], & +& } + +#:set vars_cpg_misc = { & +& "NEB" : [False, False, AS_1_KFLEVG, None, None ], & +& "QLI" : [False, False, AS_1_KFLEVG, None, None ], & +& "QICE" : [False, False, AS_1_KFLEVG, None, None ], & +& "QRAIN" : [False, False, AS_1_KFLEVG, None, None ], & +& "QSNOW" : [False, False, AS_1_KFLEVG, None, None ], & +& "QGRAUPEL" : [False, False, AS_1_KFLEVG, None, None ], & +& "RH" : [False, False, AS_1_KFLEVG, None, None ], & +& "QS" : [False, False, AS_void, None, None ], & +& "QSOL" : [False, False, AS_void, None, None ], & +& "DHSF" : [False, False, AS_void, None, None ], & +& "CLCT" : [False, False, AS_void, None, None ], & +& "LSM" : [False, False, AS_void, None, None ], & +& "TSOL" : [False, False, AS_void, None, None ], & +& "FTCNS" : [False, False, AS_0_KFLEVG_6, None, None ], & +& "KOZO" : [False, False, AS_1_KFLEVG_NVCLIS, None, None ], & +& } + + +#:set vars_cpg_dyn_xybder = { & +& "LNPRL" : [False, False, AS_1_nflevg, ], & +& "LNPRM" : [False, False, AS_1_nflevg, ], & +& "ALPHL" : [False, False, AS_1_nflevg, ], & +& "ALPHM" : [False, False, AS_1_nflevg, ], & +& "ALPHPLL" : [False, False, AS_1_nflevg, ], & +& "ALPHPLM" : [False, False, AS_1_nflevg, ], & +& "COEFD" : [False, False, AS_1_nflevg, ], & +& "COEFA" : [False, False, AS_1_nflevg, ], & +& "COEFAPL" : [False, False, AS_1_nflevg, ], & +& } + +#:set vars_cpg_dyn_xyb = { & +& "DELP" : [False, False, AS_1_nflevg, ], & +& "RDELP" : [False, False, AS_1_nflevg, ], & +& "LNPR" : [False, False, AS_1_nflevg, ], & +& "ALPH" : [False, False, AS_1_nflevg, ], & +& "RTGR" : [False, False, AS_1_nflevg, ], & +& "RPRE" : [False, False, AS_1_nflevg, ], & +& "RPP" : [False, False, AS_1_nflevg, ], & +& } + +#:set vars_cpg_dyn_hwind = { & +& "UH" : [False, False, AS_0_nflevg, ], & +& "VH" : [False, False, AS_0_nflevg, ], & +& "WWI" : [False, False, AS_0_nflevg, ], & +& } + +#:set vars_cpg_dyn_rcp = { & +& "CP" : [False, False, AS_1_nflevg, ], & +& "R" : [False, False, AS_1_nflevg, ], & +& "KAP" : [False, False, AS_1_nflevg, ], & +& } + +#:set vars_cpg_dyn_cty = { & +& "EVEL" : [False, False, AS_0_nflevg, ], & +& "VVEL" : [False, False, AS_0_nflevg, ], & +& "PSDIV" : [False, False, AS_0_nflevg, ], & +& "PSDVBC" : [False, False, AS_0_nflevg, ], & +& "DIVDP" : [False, False, AS_0_nflevg, ], & +& } + +#:set vars_cpg_dyn_tnd = { & +& "TNDU" : [False, False, AS_1_nflevg, ], & +& "TNDV" : [False, False, AS_1_nflevg, ], & +& "TNDU_NOC" : [False, False, AS_1_nflevg, ], & +& "TNDV_NOC" : [False, False, AS_1_nflevg, ], & +& "TNDT" : [False, False, AS_1_nflevg, ], & +& "TNDPD" : [False, False, AS_1_nflevg, ], & +& "TNDVD" : [False, False, AS_1_nflevg, ], & +& "TNDGW" : [False, False, AS_1_nflevg, ], & +& } + +#:endmute +MODULE CPG_TYPE_MOD + +USE FIELD_MODULE +USE FIELD_REGISTRY_MOD +USE PARKIND1, ONLY : JPRB, JPIM, JPIB +USE YOM_YGFL, ONLY : TYPE_GFL_COMP + +IMPLICIT NONE + +$:pcpg_intdyn_definition ("CPG_XYBDER_TYPE" ,vars_cpg_dyn_xybder) + +$:pcpg_intdyn_definition ("CPG_XYB_TYPE" ,vars_cpg_dyn_xyb ) + +$:pcpg_intdyn_definition ("CPG_HWIND_TYPE" ,vars_cpg_dyn_hwind ) + +$:pcpg_intdyn_definition ("CPG_RCP_TYPE" ,vars_cpg_dyn_rcp ) + +$:pcpg_intdyn_definition ("CPG_CTY_TYPE" ,vars_cpg_dyn_cty ) + +$:pcpg_intdyn_definition ("CPG_TND_TYPE" ,vars_cpg_dyn_tnd ) + +$:pcpg_struct1_definition ("CPG_GPAR_TYPE" , vars_cpg_gpar ) + +$:pcpg_type_definition ("CPG_DYN_TYPE" , vars_cpg_dyn ) + +$:pcpg_type_definition ("CPG_PHY_TYPE" , vars_cpg_phy ) + +$:pcpg_type_definition ("CPG_MISC_TYPE" , vars_cpg_misc ) + +TYPE CPG_DDH_TYPE + REAL(KIND=JPRB), POINTER, CONTIGUOUS :: AUX3D (:,:,:) => NULL () + TYPE (FIELD_4D), POINTER :: F_AUX3D => NULL () + + REAL(KIND=JPRB), POINTER, CONTIGUOUS :: AUX2D (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_AUX2D => NULL () + + REAL(KIND=JPRB), POINTER, CONTIGUOUS :: DHCV (:,:,:) => NULL () + TYPE (FIELD_4D), POINTER :: F_DHCV => NULL () + REAL(KIND=JPRB), POINTER, CONTIGUOUS :: AUXSM (:,:,:,:) => NULL () + TYPE (FIELD_5D), POINTER :: F_AUXSM => NULL () + INTEGER(KIND=JPIM), POINTER, CONTIGUOUS :: DDHI (:) => NULL () + TYPE (FIELD_INT2D), POINTER :: F_DDHI => NULL () +CONTAINS + PROCEDURE :: INIT => CPG_DDH_TYPE_INIT + PROCEDURE :: UPDATE_VIEW => CPG_DDH_TYPE_UPDATE_VIEW + PROCEDURE :: FINAL => CPG_DDH_TYPE_FINAL +END TYPE CPG_DDH_TYPE + +#:set N3D = 0 +#:set pb1_vars = { & +& 'U9' : [ True ], 'V9' : [ True ], & +& 'T9' : [ True ], 'PD9' : [ True ], & +& 'VD9' : [ True ], 'NHX9' : [ True ], & +& 'UR0' : [ True ], 'VR0' : [ True ], & +& 'ZR0' : [ True ], 'WR0' : [ True ], & +& 'UR00' : [ True ], 'VR00' : [ True ], & +& 'ZR00' : [ True ], 'WR00' : [ True ], & +& 'WRA' : [ True ], 'UR9' : [ True ], & +& 'VR9' : [ True ], 'DBBC9' : [ True ], & +& 'DPHI9' : [ True ], 'GWS9' : [ False ], & +& 'U0' : [ True ], 'V0' : [ True ], & +& 'T0' : [ True ], 'PD0' : [ True ], & +& 'VD0' : [ True ], 'C9' : [ True ], & +& 'SP9' : [ False ], 'SP0' : [ False ], & +& 'C0' : [ True ], 'UP9' : [ True ], & +& 'VP9' : [ True ], 'TP9' : [ True ], & +& 'U9_SI' : [ True ], 'V9_SI' : [ True ], & +& 'T9_SI' : [ True ], 'PD9_SI' : [ True ], & +& 'VD9_SI' : [ True ], 'C9_SI' : [ True ], & +& 'UF9' : [ True ], 'VF9' : [ True ], & +& 'TF9' : [ True ], 'VDF9' : [ True ], & +& 'U9_NL' : [ True ], 'V9_NL' : [ True ], & +& 'T9_NL' : [ True ], 'PD9_NL' : [ True ], & +& 'VD9_NL' : [ True ], 'C9_NL' : [ True ], & +& 'ZR9' : [ True ], 'Z9' : [ True ], & +& 'Z0' : [ True ], 'ZP9' : [ True ], & +& } + +#:set pb2_vars = { & +& 'DBBC1' : [ False ], 'DPHI1' : [ False ], & +& 'USI' : [ True ], 'VSI' : [ True ], & +& 'TSI' : [ True ], 'PDSI' : [ True ], & +& 'VDSI' : [ True ], 'SPSI' : [ False ], & +& 'VVEL' : [ True ], 'URL' : [ True ], & +& 'VRL' : [ True ], 'WRL' : [ True ], & +& 'URL5' : [ True ], 'VRL5' : [ True ], & +& 'WRL5' : [ True ], 'USI5' : [ True ], & +& 'VSI5' : [ True ], 'U15' : [ True ], & +& 'V15' : [ True ], 'T15' : [ True ], & +& 'Q15' : [ True ], 'KAPPA' : [ True ], & +& 'KAPPAT' : [ True ], 'KAPPAM' : [ True ], & +& 'KAPPAH' : [ True ], 'KAPPA5' : [ True ], & +& 'KAPPAT5' : [ True ], 'GWF' : [ True ], & +& 'GDW' : [ True ], 'GWS' : [ True ], & +& 'STDDISU' : [ True ], 'STDDISV' : [ True ], & +& 'STDDISW' : [ True ], 'ZRL' : [ True ], & +& } + +#:def pcpg_sl1_type_definition (vars) + +ABSTRACT INTERFACE + LOGICAL FUNCTION FUN_GREP (YDCOMP, YDMODEL) + USE YOM_YGFL, ONLY : TYPE_GFL_COMP + USE TYPE_MODEL, ONLY : MODEL + TYPE (TYPE_GFL_COMP), INTENT (IN) :: YDCOMP + TYPE (MODEL), INTENT (IN) :: YDMODEL + END FUNCTION +END INTERFACE + +PRIVATE :: FUN_GREP, GREPVARS + +TYPE CPG_SL1_TYPE + LOGICAL :: LOWNED = .FALSE. + INTEGER (KIND=JPIM) :: NLEV = -1 + INTEGER (KIND=JPIB) :: ISIZE = 0 + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ZVIEW (:,:) => NULL () + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ZDATA (:,:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_DATA => NULL () +#:for var in vars + #:if vars[var][N3D] + TYPE (CPG_SL1_3D_TYPE) :: ${var}$ + #:else + TYPE (CPG_SL1_2D_TYPE) :: ${var}$ + #:endif +#:endfor + +#:for v in gfl.variables + #:if v.array + TYPE (CPG_SL1_3D_TYPE), ALLOCATABLE :: ${v.name}$ (:) + #:elif v.dim == 3 + TYPE (CPG_SL1_3D_TYPE) :: ${v.name}$ + #:endif +#:endfor + + TYPE (CPG_SL1_3D_TYPE), ALLOCATABLE :: GFL (:) +CONTAINS + PROCEDURE :: INIT => CPG_SL1_TYPE_INIT + PROCEDURE :: UPDATE_VIEW => CPG_SL1_TYPE_UPDATE_VIEW + PROCEDURE :: FINAL => CPG_SL1_TYPE_FINAL + PROCEDURE :: ZERO => CPG_SL1_TYPE_ZERO +END TYPE CPG_SL1_TYPE +#:enddef + +#:def pcpg_sl2_type_definition (vars) +TYPE CPG_SL2_TYPE + LOGICAL :: LOWNED = .FALSE. + INTEGER (KIND=JPIM) :: NLEV = -1 + INTEGER (KIND=JPIB) :: ISIZE = 0 + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ZVIEW (:,:) => NULL () + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ZDATA (:,:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_DATA => NULL () +#:for var in vars + #:if vars[var][N3D] + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ${var}$ (:,:) => NULL () +!>REAL (KIND=JPRB) :: ${var}$ (NPROMA, 0:NLEV+1) + TYPE (FIELD_3D), POINTER :: F_${var}$ => NULL () + #:else + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: ${var}$ (:) => NULL () +!>REAL (KIND=JPRB) :: ${var}$ (NPROMA) + TYPE (FIELD_2D), POINTER :: F_${var}$ => NULL () + #:endif +#:endfor + +CONTAINS + PROCEDURE :: INIT => CPG_SL2_TYPE_INIT + PROCEDURE :: UPDATE_VIEW => CPG_SL2_TYPE_UPDATE_VIEW + PROCEDURE :: FINAL => CPG_SL2_TYPE_FINAL +END TYPE CPG_SL2_TYPE +#:enddef + +TYPE CPG_SL1_2D_TYPE + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_F (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P_F => NULL () + + + + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_SPF (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P_SPF => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_SP (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P_SP => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_P (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P_P => NULL () + +END TYPE + +TYPE CPG_SL1_3D_TYPE + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_P => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_F (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_P_F => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_SPF (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_P_SPF => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_SP (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_P_SP => NULL () + + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P_P (:,:) => NULL () + TYPE (FIELD_3D), POINTER :: F_P_P => NULL () + + TYPE (TYPE_GFL_COMP) :: YCOMP +END TYPE + +$:pcpg_sl1_type_definition (pb1_vars) + +$:pcpg_sl2_type_definition (pb2_vars) + +REAL(KIND=JPRB), PRIVATE, SAVE, TARGET :: ZDUM1 (1), ZDUM2 (1, 1), ZDUM3 (1,1,1) +INTEGER(KIND=JPIM), PRIVATE, SAVE, TARGET :: IDUM1 (1), IDUM2 (1, 1), IDUM3 (1,1,1) + +CONTAINS + +$:pcpg_intdyn_methods ("CPG_XYBDER_TYPE" , vars_cpg_dyn_xybder, "XYBDER", use_lbounds=True) + +$:pcpg_intdyn_methods ("CPG_XYB_TYPE" , vars_cpg_dyn_xyb , "XYB" , use_lbounds=True) + +$:pcpg_intdyn_methods ("CPG_HWIND_TYPE" , vars_cpg_dyn_hwind , "HWIND" , use_lbounds=True) + +$:pcpg_intdyn_methods ("CPG_RCP_TYPE" , vars_cpg_dyn_rcp , "RCP" , use_lbounds=True) + +$:pcpg_intdyn_methods ("CPG_CTY_TYPE" , vars_cpg_dyn_cty , "CTY" , use_lbounds=True) + +$:pcpg_intdyn_methods ("CPG_TND_TYPE" , vars_cpg_dyn_tnd , "TND" , use_lbounds=True) + +$:pcpg_struct1_methods ("CPG_GPAR_TYPE" , vars_cpg_gpar , "TPARAR", "YOMPARAR", "M", "NGPAR") + +$:pcpg_type_methods ("CPG_DYN_TYPE" , vars_cpg_dyn , use_intdyn=True, use_lbounds=True) + +$:pcpg_type_methods ("CPG_PHY_TYPE" , vars_cpg_phy , use_intdyn=True, use_lbounds=True) + +$:pcpg_type_methods ("CPG_MISC_TYPE" , vars_cpg_misc, use_lbounds=True) + +SUBROUTINE CPG_DDH_TYPE_INIT (SELF, REGISTRY, NLEV, PERSISTENT, YDMODEL, YDDDH) + +USE TYPE_MODEL, ONLY : MODEL +USE DDH_MIX, ONLY : TYP_DDH + +CLASS (CPG_DDH_TYPE) :: SELF +TYPE (FIELD_REGISTRY), INTENT (IN) :: REGISTRY +INTEGER (KIND=JPIM), INTENT (IN) :: NLEV +LOGICAL, OPTIONAL, INTENT (IN) :: PERSISTENT +TYPE (MODEL), INTENT (IN) :: YDMODEL +TYPE (TYP_DDH), INTENT (IN) :: YDDDH + + +ALLOCATE (SELF%F_AUX3D) +SELF%F_AUX3D = FIELD_4D (SHAPE=[NLEV+1, YDMODEL%YRML_DIAG%YRMDDH%NDHIDH, YDDDH%NFIELDS3D_AUTO], & + & NBLOCKS=REGISTRY%GEOM%YRDIM%NGPBLKS, PERSISTENT=PERSISTENT) +ALLOCATE (SELF%F_AUX2D) +SELF%F_AUX2D = FIELD_3D (SHAPE=[YDMODEL%YRML_DIAG%YRMDDH%NDHIDH, YDDDH%NFIELDS2D_AUTO], & + & NBLOCKS=REGISTRY%GEOM%YRDIM%NGPBLKS, PERSISTENT=PERSISTENT) + +SELF%F_DHCV => CREATE_TEMPORARY (GEOM=REGISTRY%GEOM, NLEV=NLEV+1, PERSISTENT=PERSISTENT, NDIM=YDMODEL%YRML_DIAG%YRMDDH%NDHCVSUN) +SELF%F_AUXSM => CREATE_TEMPORARY (GEOM=REGISTRY%GEOM, NLEV=1, PERSISTENT=PERSISTENT, NDIM=NLEV, NDIM2=13) +SELF%F_DDHI => CREATE_TEMPORARY_INT (GEOM=REGISTRY%GEOM, PERSISTENT=PERSISTENT) + +END SUBROUTINE CPG_DDH_TYPE_INIT + +SUBROUTINE CPG_DDH_TYPE_UPDATE_VIEW (SELF, BLOCK_INDEX) + +CLASS (CPG_DDH_TYPE) :: SELF +INTEGER(KIND=JPIM), INTENT (IN) :: BLOCK_INDEX + +IF (ASSOCIATED (SELF%F_AUX3D)) SELF%AUX3D (0:, 1:, 1:) => SELF%F_AUX3D%GET_VIEW (BLOCK_INDEX) +IF (ASSOCIATED (SELF%F_AUX2D)) SELF%AUX2D => SELF%F_AUX2D%GET_VIEW (BLOCK_INDEX) +IF (ASSOCIATED (SELF%F_DHCV )) SELF%DHCV (1:, 0:, 1:) => SELF%F_DHCV %GET_VIEW (BLOCK_INDEX) +IF (ASSOCIATED (SELF%F_AUXSM)) SELF%AUXSM => SELF%F_AUXSM%GET_VIEW (BLOCK_INDEX) +IF (ASSOCIATED (SELF%F_DDHI )) SELF%DDHI => SELF%F_DDHI %GET_VIEW (BLOCK_INDEX) + +END SUBROUTINE CPG_DDH_TYPE_UPDATE_VIEW + +SUBROUTINE CPG_DDH_TYPE_FINAL (SELF) + +CLASS (CPG_DDH_TYPE) :: SELF + +CALL DELETE_TEMPORARY (SELF%F_AUX3D) +CALL DELETE_TEMPORARY (SELF%F_AUX2D) +CALL DELETE_TEMPORARY (SELF%F_DHCV) +CALL DELETE_TEMPORARY (SELF%F_AUXSM) +CALL DELETE_TEMPORARY (SELF%F_DDHI) + +SELF%AUX3D => NULL () +SELF%AUX2D => NULL () +SELF%DHCV => NULL () +SELF%AUXSM => NULL () +SELF%DDHI => NULL () + +END SUBROUTINE CPG_DDH_TYPE_FINAL + +#:def pcpg_sl1_type_methods (vars) + +SUBROUTINE GREPVARS (YDCPG_SL1, YDMODEL, COND, YDVARS_LIST) +USE TYPE_MODEL, ONLY : MODEL +TYPE(CPG_SL1_TYPE), INTENT(INOUT) :: YDCPG_SL1 +TYPE(MODEL), INTENT(IN) :: YDMODEL +PROCEDURE (FUN_GREP) :: COND +TYPE (CPG_SL1_3D_TYPE), ALLOCATABLE :: YDVARS_LIST (:) + +INTEGER (KIND=JPIM) :: ISIZE, JFLD, IPNTR + +ISIZE = 0 + +#:for v in gfl.variables +#:if v.array == 1 +IF (ALLOCATED (YDCPG_SL1%${v.name}$)) THEN + DO JFLD = 1, SIZE (YDCPG_SL1%${v.name}$) + IF (COND (YDMODEL%YRML_GCONF%YGFL%Y${v.name}$(JFLD), YDMODEL)) ISIZE = ISIZE + 1 + ENDDO +ENDIF +#:else +IF (COND (YDMODEL%YRML_GCONF%YGFL%Y${v.name}$, YDMODEL)) ISIZE = ISIZE + 1 +#:endif +#:endfor + +ALLOCATE (YDVARS_LIST (ISIZE)) + +IPNTR = 1 + +#:for v in gfl.variables +#:if v.array == 1 +IF (ALLOCATED (YDCPG_SL1%${v.name}$)) THEN + DO JFLD = 1, SIZE (YDCPG_SL1%${v.name}$) + IF (COND (YDMODEL%YRML_GCONF%YGFL%Y${v.name}$(JFLD), YDMODEL)) THEN + YDVARS_LIST (IPNTR) = YDCPG_SL1%${v.name}$(JFLD) + IPNTR = IPNTR + 1 + ENDIF + ENDDO +ENDIF +#:else +IF (COND (YDMODEL%YRML_GCONF%YGFL%Y${v.name}$, YDMODEL)) THEN + YDVARS_LIST (IPNTR) = YDCPG_SL1%${v.name}$ + IPNTR = IPNTR + 1 +ENDIF +#:endif +#:endfor + +END SUBROUTINE + +#:set extra_levels=1 +SUBROUTINE CPG_SL1_TYPE_ZERO (SELF) + +CLASS (CPG_SL1_TYPE) :: SELF + +END SUBROUTINE + +SUBROUTINE CPG_SL1_TYPE_INIT (SELF, REGISTRY, NLEV, YDTPTRSLB1 & + & , YDMODEL & + & , YGFL & + & , PERSISTENT, PB1) + +USE PTRSLB1, ONLY : TPTRSLB1 +USE OML_MOD, ONLY: OML_MAX_THREADS + +USE YOM_YGFL, ONLY: TYPE_GFLD +USE TYPE_MODEL, ONLY : MODEL + +CLASS (CPG_SL1_TYPE) :: SELF +TYPE (FIELD_REGISTRY), INTENT (IN) :: REGISTRY +INTEGER (KIND=JPIM), INTENT (IN) :: NLEV +TYPE (TPTRSLB1), INTENT (IN) :: YDTPTRSLB1 +TYPE (TYPE_GFLD), INTENT (IN) :: YGFL +TYPE (MODEL), INTENT (IN) :: YDMODEL +LOGICAL, OPTIONAL, INTENT (IN) :: PERSISTENT +REAL (KIND=JPRB), OPTIONAL, TARGET, INTENT (IN) :: PB1 (:, :, :) + +INTEGER (KIND=JPIM) :: JFLD +INTEGER (KIND=JPIM) :: JGFL +INTEGER (KIND=JPIM) :: ISIZE, IPNTR +INTEGER (KIND=JPIM) :: ISIZE_1, IPNTR_1 +INTEGER (KIND=JPIM) :: ISIZE_2, IPNTR_2 + +INTEGER (KIND=JPIM) :: ISLB1GFL9 + +LOGICAL :: LLPERSISTENT + +LLPERSISTENT = .FALSE. +IF (PRESENT (PERSISTENT)) LLPERSISTENT = PERSISTENT + +SELF%NLEV = NLEV + +IF (PRESENT (PB1)) THEN + SELF%ZDATA => PB1 + SELF%LOWNED = .FALSE. + LLPERSISTENT = .TRUE. +ELSEIF (LLPERSISTENT) THEN + ALLOCATE (SELF%ZDATA (REGISTRY%GEOM%YRDIM%NPROMA, YDTPTRSLB1%NFLDSLB1, REGISTRY%GEOM%YRDIM%NGPBLKS)) + SELF%LOWNED = .TRUE. +ELSE + ALLOCATE (SELF%ZDATA (REGISTRY%GEOM%YRDIM%NPROMA, YDTPTRSLB1%NFLDSLB1, OML_MAX_THREADS ())) + SELF%LOWNED = .TRUE. +ENDIF + +SELF%F_DATA => CREATE_FIELD_WRAP (SELF%ZDATA, PERSISTENT=LLPERSISTENT) + +IF (YDMODEL%YRML_DYN%YRDYN%LSPLTHOIGFL .OR. (YDMODEL%YRML_DYN%YRDYN%NSPLTHOI /= 0)) THEN + ISLB1GFL9 = YDTPTRSLB1%MSLB1GFLF9 +ELSE + ISLB1GFL9 = YDTPTRSLB1%MSLB1GFL9 +ENDIF + +#:set lbound_lev = 1-extra_levels +#:set extra_levels2 = 2*extra_levels +#:set ubound_lev = -1+extra_levels2 +#:if ubound_lev == 0 + #:set ubound_lev = '' +#:elif ubound_lev > 0 + #:set ubound_lev = '+' + str (ubound_lev) +#:endif + +#:for var in vars +IF (YDTPTRSLB1%MSLB1${var}$ > 0) THEN + JFLD = YDTPTRSLB1%MSLB1${var}$ + #:if vars[var][N3D] + SELF%${var}$%F_P => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) + #:else + SELF%${var}$%F_P => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD, :), PERSISTENT=LLPERSISTENT) + #:endif +ELSE + SELF%${var}$%F_P => NULL () +ENDIF +#:endfor + +#:for v in gfl.variables + #:if v.array + +IF (ASSOCIATED (YGFL%Y${v.name}$)) THEN + ALLOCATE (SELF%${v.name}$ (SIZE (YGFL%Y${v.name}$))) + + DO JGFL = 1, SIZE (YGFL%Y${v.name}$) + CALL CPG_SL1_TYPE_INIT_F3D (SELF%${v.name}$(JGFL), YGFL%Y${v.name}$(JGFL)) + ENDDO +ENDIF + + #:elif v.dim == 3 +CALL CPG_SL1_TYPE_INIT_F3D (SELF%${v.name}$, YGFL%Y${v.name}$) + + #:endif +#:endfor + + +CALL GREPVARS (SELF, YDMODEL, COND_GFL, SELF%GFL) + +CONTAINS + +LOGICAL FUNCTION COND_GFL (YDCOMP, YDMODEL) + USE YOM_YGFL, ONLY : TYPE_GFL_COMP + TYPE (TYPE_GFL_COMP), INTENT (IN) :: YDCOMP + TYPE (MODEL), INTENT(IN) :: YDMODEL + COND_GFL = .TRUE. +END FUNCTION + +SUBROUTINE CPG_SL1_TYPE_INIT_F3D (YDF3D, YDGFC) + +USE YOM_YGFL, ONLY : TYPE_GFL_COMP + +TYPE (CPG_SL1_3D_TYPE), INTENT (INOUT) :: YDF3D +TYPE(TYPE_GFL_COMP), INTENT (IN) :: YDGFC + +YDF3D%YCOMP = YDGFC + +IF (YDGFC%MP_SL1 > 0 .AND. YDGFC%MP1 > 0) THEN + JFLD = YDTPTRSLB1%MSLB1GFL9 + (YDGFC%MP_SL1-1)*(NLEV+${extra_levels2}$) +!WRITE (0, *) "CPG_SL1_TYPE_INIT_F3D ", JFLD, TRIM(YDGFC%CNAME)//"P" + YDF3D%F_P => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) +ELSE + YDF3D%F_P => NULL () +ENDIF + +IF (YDMODEL%YRML_DYN%YRDYN%LSPLTHOIGFL .OR. (YDMODEL%YRML_DYN%YRDYN%NSPLTHOI /= 0)) THEN + IF (YDGFC%MP_SL1 > 0 .AND. YDGFC%MP1 > 0) THEN + JFLD = YDTPTRSLB1%MSLB1GFLF9 + (YDGFC%MP_SL1-1)*(NLEV+${extra_levels2}$) + YDF3D%F_P_F => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) + ELSE + YDF3D%F_P_F => NULL () + ENDIF +ENDIF + +IF (YDGFC%MP_SPL > 0 .AND. YDGFC%MP1 > 0) THEN + JFLD = YDTPTRSLB1%MSLB1GFLSPF9 + (YDGFC%MP_SPL-1)*(NLEV+${extra_levels2}$) + YDF3D%F_P_SPF => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) +ELSE + YDF3D%F_P_SPF => NULL () +ENDIF + +IF (YDGFC%MP_SPL > 0 .AND. YDGFC%MP1 > 0) THEN + JFLD = YDTPTRSLB1%MSLB1GFLSP9 + (YDGFC%MP_SPL-1)*(NLEV+${extra_levels2}$) + YDF3D%F_P_SP => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) +ELSE + YDF3D%F_P_SP => NULL () +ENDIF + +IF (YDGFC%LPHY) THEN + JFLD = YDTPTRSLB1%MSLB1GFLP9 + (YDGFC%MPSLP-1)*(NLEV+${extra_levels2}$) + YDF3D%F_P_P => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV${ubound_lev}$, :), PERSISTENT=LLPERSISTENT, LBOUNDS=[1,${lbound_lev}$,1]) +ELSE + YDF3D%F_P_P => NULL () +ENDIF + +END SUBROUTINE CPG_SL1_TYPE_INIT_F3D + +END SUBROUTINE CPG_SL1_TYPE_INIT + +SUBROUTINE CPG_SL1_TYPE_UPDATE_VIEW (SELF, BLOCK_INDEX) + +CLASS (CPG_SL1_TYPE) :: SELF +INTEGER(KIND=JPIM), INTENT (IN) :: BLOCK_INDEX + +INTEGER (KIND=JPIM) :: JGFL + +IF (ASSOCIATED (SELF%F_DATA)) THEN + SELF%ZVIEW => SELF%F_DATA%GET_VIEW (BLOCK_INDEX) +#:for var in vars + #:if vars[var][N3D] + IF (ASSOCIATED (SELF%${var}$%F_P)) THEN + IF ((.NOT. SELF%${var}$%F_P%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (SELF%${var}$%P))) THEN + SELF%${var}$%P => SELF%${var}$%F_P%GET_VIEW (BLOCK_INDEX) + ENDIF + ELSEIF (.NOT. ASSOCIATED (SELF%${var}$%P)) THEN + SELF%${var}$%P => ZDUM2 + ENDIF + #:else + IF (ASSOCIATED (SELF%${var}$%F_P)) THEN + IF ((.NOT. SELF%${var}$%F_P%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (SELF%${var}$%P))) THEN + SELF%${var}$%P => SELF%${var}$%F_P%GET_VIEW (BLOCK_INDEX) + ENDIF + ELSEIF (.NOT. ASSOCIATED (SELF%${var}$%P)) THEN + SELF%${var}$%P => ZDUM1 + ENDIF + #:endif +#:endfor + +#:for v in gfl.variables + #:if v.array + IF (ALLOCATED (SELF%${v.name}$)) THEN + DO JGFL = 1, SIZE (SELF%${v.name}$) + CALL CPG_SL1_TYPE_UPDATE_VIEW_F3D (SELF%${v.name}$(JGFL)) + ENDDO + ENDIF + + #:elif v.dim == 3 + CALL CPG_SL1_TYPE_UPDATE_VIEW_F3D (SELF%${v.name}$) + + #:endif +#:endfor + +ELSE + SELF%ZVIEW => ZDUM2 + +#:for var in vars + #:if vars[var][N3D] + IF (.NOT. ASSOCIATED (SELF%${var}$%F_P)) SELF%${var}$%P => ZDUM2 + #:else + IF (.NOT. ASSOCIATED (SELF%${var}$%F_P)) SELF%${var}$%P => ZDUM1 + #:endif +#:endfor + +#:for v in gfl.variables + #:if v.array + IF (ALLOCATED (SELF%${v.name}$)) THEN + DO JGFL = 1, SIZE (SELF%${v.name}$) + CALL NULLIFY_F3D (SELF%${v.name}$(JGFL)) + ENDDO + ENDIF + #:elif v.dim == 3 + CALL NULLIFY_F3D (SELF%${v.name}$) + #:endif +#:endfor + +ENDIF + +DO JGFL = 1, SIZE (SELF%GFL) + CALL CPG_SL1_TYPE_UPDATE_VIEW_F3D (SELF%GFL(JGFL)) +ENDDO + +CONTAINS + +SUBROUTINE NULLIFY_F3D (YDF3D) + +TYPE (CPG_SL1_3D_TYPE), INTENT (INOUT) :: YDF3D + +IF (.NOT. ASSOCIATED (YDF3D%F_P )) YDF3D%P => ZDUM2 +IF (.NOT. ASSOCIATED (YDF3D%F_P_F )) YDF3D%P_F => ZDUM2 +IF (.NOT. ASSOCIATED (YDF3D%F_P_SPF)) YDF3D%P_SPF => ZDUM2 +IF (.NOT. ASSOCIATED (YDF3D%F_P_SP )) YDF3D%P_SP => ZDUM2 +IF (.NOT. ASSOCIATED (YDF3D%F_P_P )) YDF3D%P_P => ZDUM2 + +END SUBROUTINE NULLIFY_F3D + +SUBROUTINE CPG_SL1_TYPE_UPDATE_VIEW_F3D (YDF3D) + +TYPE (CPG_SL1_3D_TYPE), INTENT (INOUT) :: YDF3D + +IF (ASSOCIATED (YDF3D%F_P)) THEN + IF ((.NOT. YDF3D%F_P%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (YDF3D%P))) THEN + YDF3D%P => YDF3D%F_P%GET_VIEW (BLOCK_INDEX) + ENDIF +ELSEIF (.NOT. ASSOCIATED (YDF3D%P)) THEN + YDF3D%P => ZDUM2 +ENDIF + +IF (ASSOCIATED (YDF3D%F_P_F)) THEN + IF ((.NOT. YDF3D%F_P_F%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (YDF3D%P_F))) THEN + YDF3D%P_F => YDF3D%F_P_F%GET_VIEW (BLOCK_INDEX) + ENDIF +ELSEIF (.NOT. ASSOCIATED (YDF3D%P_F)) THEN + YDF3D%P_F => ZDUM2 +ENDIF + +IF (ASSOCIATED (YDF3D%F_P_SPF)) THEN + IF ((.NOT. YDF3D%F_P_SPF%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (YDF3D%P_SPF))) THEN + YDF3D%P_SPF => YDF3D%F_P_SPF%GET_VIEW (BLOCK_INDEX) + ENDIF +ELSEIF (.NOT. ASSOCIATED (YDF3D%P_SPF)) THEN + YDF3D%P_SPF => ZDUM2 +ENDIF + +IF (ASSOCIATED (YDF3D%F_P_SP)) THEN + IF ((.NOT. YDF3D%F_P_SP%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (YDF3D%P_SP))) THEN + YDF3D%P_SP => YDF3D%F_P_SP%GET_VIEW (BLOCK_INDEX) + ENDIF +ELSEIF (.NOT. ASSOCIATED (YDF3D%P_SP)) THEN + YDF3D%P_SP => ZDUM2 +ENDIF + +IF (ASSOCIATED (YDF3D%F_P_P)) THEN + IF ((.NOT. YDF3D%F_P_P%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (YDF3D%P_P))) THEN + YDF3D%P_P => YDF3D%F_P_P%GET_VIEW (BLOCK_INDEX) + ENDIF +ELSEIF (.NOT. ASSOCIATED (YDF3D%P_P)) THEN + YDF3D%P_P => ZDUM2 +ENDIF + +END SUBROUTINE CPG_SL1_TYPE_UPDATE_VIEW_F3D + +END SUBROUTINE CPG_SL1_TYPE_UPDATE_VIEW + +SUBROUTINE CPG_SL1_TYPE_FINAL (SELF) +CLASS (CPG_SL1_TYPE) :: SELF + +INTEGER (KIND=JPIM) :: JGFL + +IF (ASSOCIATED (SELF%F_DATA)) CALL DELETE_TEMPORARY (SELF%F_DATA) +SELF%F_DATA => NULL () + +IF (SELF%LOWNED) THEN + DEALLOCATE (SELF%ZDATA) +ENDIF + +SELF%ZDATA => NULL () +SELF%ZVIEW => NULL () + +#:for var in reversed (list (vars.keys ())) +IF (ASSOCIATED (SELF%${var}$%F_P)) CALL DELETE_TEMPORARY (SELF%${var}$%F_P) +SELF%${var}$%F_P => NULL () +SELF%${var}$%P => NULL () +#:endfor + +#:for v in reversed (gfl.variables) + #:if v.array +IF (ALLOCATED (SELF%${v.name}$)) THEN + DO JGFL = 1, SIZE (SELF%${v.name}$) + CALL CPG_SL1_TYPE_FINAL_F3D (SELF%${v.name}$(JGFL)) + ENDDO +ENDIF + #:elif v.dim == 3 +CALL CPG_SL1_TYPE_FINAL_F3D (SELF%${v.name}$) + + #:endif +#:endfor + +CONTAINS + +SUBROUTINE CPG_SL1_TYPE_FINAL_F3D (YDF3D) + +TYPE (CPG_SL1_3D_TYPE), INTENT (INOUT) :: YDF3D + +IF (ASSOCIATED (YDF3D%F_P)) CALL DELETE_TEMPORARY (YDF3D%F_P) +YDF3D%F_P => NULL () +YDF3D%P => NULL () + +IF (ASSOCIATED (YDF3D%F_P_F)) CALL DELETE_TEMPORARY (YDF3D%F_P_F) +YDF3D%F_P_F => NULL () +YDF3D%P_F => NULL () + +IF (ASSOCIATED (YDF3D%F_P_SPF)) CALL DELETE_TEMPORARY (YDF3D%F_P_SPF) +YDF3D%F_P_SPF => NULL () +YDF3D%P_SPF => NULL () + +IF (ASSOCIATED (YDF3D%F_P_SP)) CALL DELETE_TEMPORARY (YDF3D%F_P_SP) +YDF3D%F_P_SP => NULL () +YDF3D%P_SP => NULL () + +IF (ASSOCIATED (YDF3D%F_P_P)) CALL DELETE_TEMPORARY (YDF3D%F_P_P) +YDF3D%F_P_P => NULL () +YDF3D%P_P => NULL () + +END SUBROUTINE CPG_SL1_TYPE_FINAL_F3D + +END SUBROUTINE CPG_SL1_TYPE_FINAL +#:enddef + +#:def pcpg_sl2_type_methods (vars) +SUBROUTINE CPG_SL2_TYPE_INIT (SELF, REGISTRY, NLEV, YDTPTRSLB2 & + & , PERSISTENT, PB2) + +USE PTRSLB2, ONLY : TPTRSLB2 +USE OML_MOD, ONLY: OML_MAX_THREADS + +CLASS (CPG_SL2_TYPE) :: SELF +TYPE (FIELD_REGISTRY), INTENT (IN) :: REGISTRY +INTEGER (KIND=JPIM), INTENT (IN) :: NLEV +TYPE (TPTRSLB2), INTENT (IN) :: YDTPTRSLB2 +LOGICAL, OPTIONAL, INTENT (IN) :: PERSISTENT +REAL (KIND=JPRB), OPTIONAL, TARGET, INTENT (IN) :: PB2 (:, :, :) + +INTEGER (KIND=JPIM) :: JFLD + +LOGICAL :: LLPERSISTENT + +LLPERSISTENT = .FALSE. +IF (PRESENT (PERSISTENT)) LLPERSISTENT = PERSISTENT + +SELF%NLEV = NLEV + +IF (PRESENT (PB2)) THEN + SELF%ZDATA => PB2 + SELF%LOWNED = .FALSE. + LLPERSISTENT = .TRUE. +ELSEIF (LLPERSISTENT) THEN + ALLOCATE (SELF%ZDATA (REGISTRY%GEOM%YRDIM%NPROMA, YDTPTRSLB2%NFLDSLB2, REGISTRY%GEOM%YRDIM%NGPBLKS)) + SELF%LOWNED = .TRUE. +ELSE + ALLOCATE (SELF%ZDATA (REGISTRY%GEOM%YRDIM%NPROMA, YDTPTRSLB2%NFLDSLB2, OML_MAX_THREADS ())) + SELF%LOWNED = .TRUE. +ENDIF + +SELF%F_DATA => CREATE_FIELD_WRAP (SELF%ZDATA, PERSISTENT=LLPERSISTENT) + + +#:for var in vars +IF (YDTPTRSLB2%MSLB2${var}$ > 0) THEN + JFLD = YDTPTRSLB2%MSLB2${var}$ + #:if vars[var][N3D] + SELF%F_${var}$ => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD:JFLD+NLEV-1, :), PERSISTENT=LLPERSISTENT) + #:else + SELF%F_${var}$ => CREATE_FIELD_WRAP (SELF%ZDATA (:, JFLD, :), PERSISTENT=LLPERSISTENT) + #:endif +ELSE + SELF%F_${var}$ => NULL () +ENDIF +#:endfor + +END SUBROUTINE CPG_SL2_TYPE_INIT + +SUBROUTINE CPG_SL2_TYPE_UPDATE_VIEW (SELF, BLOCK_INDEX) + +CLASS (CPG_SL2_TYPE) :: SELF +INTEGER(KIND=JPIM), INTENT (IN) :: BLOCK_INDEX + +IF (ASSOCIATED (SELF%F_DATA)) THEN + SELF%ZVIEW => SELF%F_DATA%GET_VIEW (BLOCK_INDEX) +#:for var in vars + #:if vars[var][N3D] + IF (ASSOCIATED (SELF%F_${var}$)) THEN + IF ((.NOT. SELF%F_${var}$%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (SELF%${var}$))) THEN + SELF%${var}$ => SELF%F_${var}$%GET_VIEW (BLOCK_INDEX) + ENDIF + ELSEIF (.NOT. ASSOCIATED (SELF%${var}$)) THEN + SELF%${var}$ => ZDUM2 + ENDIF + #:else + IF (ASSOCIATED (SELF%F_${var}$)) THEN + IF ((.NOT. SELF%F_${var}$%THREAD_BUFFER) .OR. (.NOT. ASSOCIATED (SELF%${var}$))) THEN + SELF%${var}$ => SELF%F_${var}$%GET_VIEW (BLOCK_INDEX) + ENDIF + ELSEIF (.NOT. ASSOCIATED (SELF%${var}$)) THEN + SELF%${var}$ => ZDUM1 + ENDIF + #:endif +#:endfor + +ELSE + SELF%ZVIEW => ZDUM2 + +#:for var in vars + #:if vars[var][N3D] + IF (.NOT. ASSOCIATED (SELF%${var}$)) SELF%${var}$ => ZDUM2 + #:else + IF (.NOT. ASSOCIATED (SELF%${var}$)) SELF%${var}$ => ZDUM1 + #:endif +#:endfor + +ENDIF + +END SUBROUTINE CPG_SL2_TYPE_UPDATE_VIEW + +SUBROUTINE CPG_SL2_TYPE_FINAL (SELF) +CLASS (CPG_SL2_TYPE) :: SELF + +IF (ASSOCIATED (SELF%F_DATA)) CALL DELETE_TEMPORARY (SELF%F_DATA) +SELF%F_DATA => NULL () + +IF (SELF%LOWNED) THEN + DEALLOCATE (SELF%ZDATA) +ENDIF + +SELF%ZDATA => NULL () +SELF%ZVIEW => NULL () + +#:for v in reversed (gfl.variables) +IF (ASSOCIATED (SELF%F_${var}$)) CALL DELETE_TEMPORARY (SELF%F_${var}$) +SELF%F_${var}$ => NULL () +SELF%${var}$ => NULL () +#:endfor + +END SUBROUTINE CPG_SL2_TYPE_FINAL +#:enddef + +$:pcpg_sl1_type_methods (pb1_vars) + +$:pcpg_sl2_type_methods (pb2_vars) + +END MODULE CPG_TYPE_MOD + diff --git a/src/arome/ext/field_registry_mod.fypp b/src/arome/ext/field_registry_mod.fypp new file mode 100644 index 0000000000000000000000000000000000000000..5deab7ffcddc260601f20635e83a062f0f98bf30 --- /dev/null +++ b/src/arome/ext/field_registry_mod.fypp @@ -0,0 +1,997 @@ +#:set surface_config_file = os.path.dirname(_THIS_FILE_) + '/surface_fields_config.yaml' +#:set surface_config = field_config.VariableConfiguration(surface_config_file) +#:set surface_prognostic = [field_config.VariableGroup(**group) for group in surface_config.schema['prognostic']] +#:set surface_diagnostic = [field_config.VariableGroup(**group) for group in surface_config.schema['diagnostic']] +#:set surface_variable_groups = surface_prognostic + surface_diagnostic + +#:set config_file = os.path.dirname(_THIS_FILE_) + '/field_config.yaml' + + +#:set config = field_config.VariableConfiguration(config_file) +#:set gfl = config.groups['GFL'] +MODULE FIELD_REGISTRY_MOD + +USE PARKIND1, ONLY : JPIM, JPRB, JPRD +USE FIELD_MODULE, ONLY: FIELD_2D, FIELD_INT2D, FIELD_LOG2D, FIELD_3D, FIELD_INT3D, FIELD_4D, FIELD_5D, & + & FIELD_2D_EMPTY, FIELD_3D_EMPTY, FIELD_4D_EMPTY, ALLOCATE_FIELD +USE GEOMETRY_MOD, ONLY: GEOMETRY +USE VARIABLE_MODULE, ONLY: VARIABLE_2D, VARIABLE_3D, VARIABLE_4D, VARIABLE_3D_PTR +#ifdef PARKIND1_SINGLE +USE FIELD_MODULE, ONLY: FIELD_D2D, FIELD_D3D, FIELD_D4D, FIELD_D5D, & + & FIELD_D2D_EMPTY, FIELD_D3D_EMPTY, FIELD_D4D_EMPTY +#endif +USE FIELD_MANAGEMENT_MOD +USE GEOMETRY_MOD, ONLY: GEOMETRY +USE VARIABLE_MODULE, ONLY: VARIABLE_2D, VARIABLE_3D, VARIABLE_4D +#ifdef PARKIND1_SINGLE +USE VARIABLE_MODULE, ONLY: VARIABLE_D2D, VARIABLE_D3D, VARIABLE_D4D +#endif +USE FIELD_VARIABLES_MOD, ONLY: FIELD_VARIABLES +USE SURFACE_VARIABLES_MOD, ONLY: SURFACE_VARIABLES +USE YOMGMV, ONLY: TGMV +USE YOM_YGFL, ONLY: TYPE_GFL_COMP, TYPE_GFLD +USE YOMGFL, ONLY: TGFL +USE SURFACE_FIELDS_MIX, ONLY: TSURF, TYPE_SURF_MTL_2D, TYPE_SURF_MTL_3D, TYPE_SURF_GEN +USE EC_PHYS_FIELDS_MOD, ONLY: TEC_PHYS_FIELDS +USE MODEL_PHYSICS_RADIATION_MOD, ONLY : MODEL_PHYSICS_RADIATION_TYPE + +IMPLICIT NONE + +TYPE :: FIELD_REGISTRY + TYPE(GEOMETRY), POINTER :: GEOM => NULL() + INTEGER(KIND=JPIM) :: NPROMA, NBLOCKS + +CONTAINS + PROCEDURE :: INIT => FIELD_REGISTRY_INIT + PROCEDURE :: FINAL => FIELD_REGISTRY_FINAL + + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_2D_GMV, FIELD_REGISTRY_CREATE_VARIABLE_3D_GMV + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_GFL, FIELD_REGISTRY_CREATE_VARIABLE_ARRAY_GFL + + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_WRAP_2D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_2D + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_WRAP_3D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_3D + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_WRAP_4D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_4D + +#ifdef PARKIND1_SINGLE + PROCEDURE :: FIELD_REGISTRY_CREATE_VARIABLE_WRAP_D2D +#endif + + GENERIC :: CREATE_VARIABLE => & + & FIELD_REGISTRY_CREATE_VARIABLE_2D_GMV, FIELD_REGISTRY_CREATE_VARIABLE_3D_GMV, & + & FIELD_REGISTRY_CREATE_VARIABLE_GFL, FIELD_REGISTRY_CREATE_VARIABLE_ARRAY_GFL, & + & FIELD_REGISTRY_CREATE_VARIABLE_WRAP_2D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_2D, & + & FIELD_REGISTRY_CREATE_VARIABLE_WRAP_3D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_3D, & + & FIELD_REGISTRY_CREATE_VARIABLE_WRAP_4D, FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_4D + +#ifdef PARKIND1_SINGLE + GENERIC :: CREATE_VARIABLE => & + & FIELD_REGISTRY_CREATE_VARIABLE_WRAP_D2D +#endif + + PROCEDURE :: CREATE_SURFACE_VARIABLE_2D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_2D + PROCEDURE :: CREATE_SURFACE_VARIABLE_ARRAY_2D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_2D + PROCEDURE :: CREATE_SURFACE_VARIABLE_ARRAY2_2D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_2D + PROCEDURE :: CREATE_SURFACE_VARIABLE_3D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_3D + PROCEDURE :: CREATE_SURFACE_VARIABLE_ARRAY_3D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_3D + PROCEDURE :: CREATE_SURFACE_VARIABLE_ARRAY2_3D => FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_3D + PROCEDURE :: REGISTER_GEOMETRY => FIELD_REGISTRY_REGISTER_GEOMETRY + PROCEDURE :: REGISTER_GMV_FIELDS => FIELD_REGISTRY_REGISTER_GMV_FIELDS + PROCEDURE :: REGISTER_GFL_FIELDS => FIELD_REGISTRY_REGISTER_GFL_FIELDS + PROCEDURE :: REGISTER_SURFACE_FIELDS => FIELD_REGISTRY_REGISTER_SURFACE_FIELDS + PROCEDURE :: REGISTER_EC_PHYS_FIELDS => FIELD_REGISTRY_REGISTER_EC_PHYS_FIELDS + PROCEDURE :: REGISTER_PHYSICS_RADIATION_FIELDS => FIELD_REGISTRY_REGISTER_PHYSICS_RADIATION_FIELDS + +END TYPE FIELD_REGISTRY + +ABSTRACT INTERFACE + LOGICAL FUNCTION FUN_GREP (YDVAR, YDCOMP, YDMODEL) + USE VARIABLE_MODULE, ONLY : VARIABLE_3D + USE YOM_YGFL, ONLY : TYPE_GFL_COMP + USE TYPE_MODEL, ONLY : MODEL + TYPE (VARIABLE_3D), INTENT (IN) :: YDVAR + TYPE (TYPE_GFL_COMP), INTENT (IN) :: YDCOMP + TYPE (MODEL), INTENT (IN) :: YDMODEL + END FUNCTION +END INTERFACE + +PRIVATE :: FUN_GREP, GREPVARS_PTR + +CONTAINS + + FUNCTION CREATE_FIELD_EMPTY_2D(SHAPE) RESULT(FIELD_PTR) + ! Create an empty 2D field object with NULL data pointers + TYPE(FIELD_2D), POINTER :: FIELD_PTR + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: SHAPE(1) + + ALLOCATE(FIELD_PTR) + FIELD_PTR = FIELD_2D_EMPTY(SHAPE=SHAPE) + END FUNCTION CREATE_FIELD_EMPTY_2D + + FUNCTION CREATE_FIELD_EMPTY_3D(SHAPE) RESULT(FIELD_PTR) + ! Create an empty 3D field object with NULL data pointers + TYPE(FIELD_3D), POINTER :: FIELD_PTR + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: SHAPE(2) + + ALLOCATE(FIELD_PTR) + FIELD_PTR = FIELD_3D_EMPTY(SHAPE=SHAPE) + END FUNCTION CREATE_FIELD_EMPTY_3D + + FUNCTION CREATE_FIELD_EMPTY_4D(SHAPE) RESULT(FIELD_PTR) + ! Create an empty 4D field object with NULL data pointers + TYPE(FIELD_4D), POINTER :: FIELD_PTR + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: SHAPE(3) + + ALLOCATE(FIELD_PTR) + FIELD_PTR = FIELD_4D_EMPTY(SHAPE=SHAPE) + END FUNCTION CREATE_FIELD_EMPTY_4D + + + SUBROUTINE FIELD_REGISTRY_INIT(SELF, GEOM) + ! Constructor for global field registry + CLASS(FIELD_REGISTRY) :: SELF + TYPE(GEOMETRY), TARGET, INTENT(IN) :: GEOM + + SELF%GEOM => GEOM + SELF%NBLOCKS = GEOM%YRDIM%NGPBLKS + SELF%NPROMA = GEOM%YRDIM%NPROMA + END SUBROUTINE FIELD_REGISTRY_INIT + + SUBROUTINE FIELD_REGISTRY_FINAL(SELF) + ! Finalize and tear down the global field registry + CLASS(FIELD_REGISTRY) :: SELF + INTEGER(KIND=JPIM) :: I + + END SUBROUTINE FIELD_REGISTRY_FINAL + + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_2D(SELF, NAME, DATA) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_2D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:) + + VARIABLE = VARIABLE_2D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_2D + +#ifdef PARKIND1_SINGLE + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_D2D(SELF, NAME, DATA) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_D2D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRD), TARGET, INTENT(IN) :: DATA(:,:) + + VARIABLE = VARIABLE_D2D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_D2D +#endif + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_3D(SELF, NAME, DATA) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_3D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:,:) + + VARIABLE = VARIABLE_3D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_3D + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_4D(SELF, NAME, DATA) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_4D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:,:,:) + + VARIABLE = VARIABLE_4D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_4D + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_2D(SELF, NAME, DATA, IDX) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_2D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:,:) + INTEGER(KIND=JPIM), INTENT(IN) :: IDX + + VARIABLE = VARIABLE_2D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA, IDX=IDX) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_2D + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_3D(SELF, NAME, DATA, IDX) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_3D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:,:,:) + INTEGER(KIND=JPIM), INTENT(IN) :: IDX + + VARIABLE = VARIABLE_3D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA, IDX=IDX) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_3D + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_4D(SELF, NAME, DATA, IDX) RESULT(VARIABLE) + ! Create the VARIABLE and FIELD metadata type and associate it with existing data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_4D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: DATA(:,:,:,:,:) + INTEGER(KIND=JPIM), INTENT(IN) :: IDX + + VARIABLE = VARIABLE_4D(NAME, LACTIVE=.TRUE.) + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=DATA, IDX=IDX) + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_WRAP_PACKED_4D + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_2D_GMV(SELF, NAME, GMV, GMVT1, PT0, PT1, PT9, PPH9, PDL, PDM, & + & PDL9, PDM9, PERSISTENT) RESULT(VARIABLE) + ! Create the VARIABLE metadata type and associate it with fields and data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_2D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: GMV(:,:,:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: GMVT1(:,:,:) + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: PT0, PT1, PT9, PPH9, PDL, PDM, PDL9, PDM9 + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + LOGICAL :: LT0, LT1, LT9, LPH9, LDL, LDM, LDL9, LDM9 + + LT0 = PRESENT_AND_ACTIVE(PT0) + LT1 = PRESENT_AND_ACTIVE(PT1) + LT9 = PRESENT_AND_ACTIVE(PT9) + LPH9 = PRESENT_AND_ACTIVE(PPH9) + LDL = PRESENT_AND_ACTIVE(PDL) + LDM = PRESENT_AND_ACTIVE(PDM) + LDL9 = PRESENT_AND_ACTIVE(PDL9) + LDM9 = PRESENT_AND_ACTIVE(PDM9) + VARIABLE = VARIABLE_2D(NAME, LACTIVE=.TRUE., LADV=.TRUE., LT1=LT1, LT9=LT9, LPH9=LPH9, LDL=LDL, LDM=LDM, & + & LDL9=LDL9, LDM9=LDM9) + + ! Associate FIELD objects with VARIABLE according to provided pointers + IF (LT0) THEN + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PT0) + ELSE + VARIABLE%FT0 => NULL () + ENDIF + IF (LT1) THEN + VARIABLE%FT1 => CREATE_FIELD_WRAP(DATA=GMVT1(:,:,:), IDX=PT1) + ELSE + VARIABLE%FT1 => NULL() + END IF + IF (LT9) THEN + VARIABLE%FT9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PT9) + ELSE + VARIABLE%FT9 => NULL() + END IF + IF (LPH9) THEN + VARIABLE%FPH9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PPH9) + ELSE + VARIABLE%FPH9 => NULL() + END IF + IF (LDL) THEN + VARIABLE%FDL => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PDL) + ELSE + VARIABLE%FDL => NULL() + END IF + IF (LDM) THEN + VARIABLE%FDM => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PDM) + ELSE + VARIABLE%FDM => NULL() + END IF + IF (LDL9) THEN + VARIABLE%FDL9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PDL9) + ELSE + VARIABLE%FDL9 => NULL() + END IF + IF (LDM9) THEN + VARIABLE%FDM9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:), IDX=PDM9) + ELSE + VARIABLE%FDM9 => NULL() + END IF + + CONTAINS + + FUNCTION PRESENT_AND_ACTIVE(PTR) + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: PTR + LOGICAL PRESENT_AND_ACTIVE + IF (PRESENT(PTR)) THEN + PRESENT_AND_ACTIVE = PTR >= 0 + ELSE + PRESENT_AND_ACTIVE = .FALSE. + END IF + END FUNCTION PRESENT_AND_ACTIVE + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_2D_GMV + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_3D_GMV(SELF, NAME, GMV, GMVT1, PT0, PT1, PT9, PPH9, PDL, PDM, & + & PDL9, PDM9, PERSISTENT) RESULT(VARIABLE) + ! Create the VARIABLE metadata type and associate it with fields and data. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_3D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + REAL(KIND=JPRB), TARGET, INTENT(IN) :: GMV(:,:,:,:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: GMVT1(:,:,:,:) + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: PT0, PT1, PT9, PPH9, PDL, PDM, PDL9, PDM9 + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + LOGICAL :: LT0, LT1, LT9, LPH9, LDL, LDM, LDL9, LDM9 + + LT0 = PRESENT_AND_ACTIVE(PT0) + LT1 = PRESENT_AND_ACTIVE(PT1) + LT9 = PRESENT_AND_ACTIVE(PT9) + LPH9 = PRESENT_AND_ACTIVE(PPH9) + LDL = PRESENT_AND_ACTIVE(PDL) + LDM = PRESENT_AND_ACTIVE(PDM) + LDL9 = PRESENT_AND_ACTIVE(PDL9) + LDM9 = PRESENT_AND_ACTIVE(PDM9) + VARIABLE = VARIABLE_3D(NAME, LACTIVE=.TRUE., LADV=.TRUE., LT1=LT1, LT9=LT9, LPH9=LPH9, & + & LDL=LDL, LDM=LDM, LDL9=LDL9, LDM9=LDM9) + + ! Associate FIELD objects with VARIABLE according to provided pointers + IF (LT0) THEN + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PT0) + ELSE + VARIABLE%FT0 => NULL () + ENDIF + + IF (LT1) THEN + VARIABLE%FT1 => CREATE_FIELD_WRAP(DATA=GMVT1(:,:,:,:), IDX=PT1) + ELSE + VARIABLE%FT1 => NULL() + END IF + IF (LT9) THEN + VARIABLE%FT9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PT9) + ELSE + VARIABLE%FT9 => NULL() + END IF + IF (LPH9) THEN + VARIABLE%FPH9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PPH9) + ELSE + VARIABLE%FPH9 => NULL() + END IF + IF (LDL) THEN + VARIABLE%FDL => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PDL) + ELSE + VARIABLE%FDL => NULL() + END IF + IF (LDM) THEN + VARIABLE%FDM => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PDM) + ELSE + VARIABLE%FDM => NULL() + END IF + IF (LDL9) THEN + VARIABLE%FDL9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PDL9) + ELSE + VARIABLE%FDL9 => NULL() + END IF + IF (LDM9) THEN + VARIABLE%FDM9 => CREATE_FIELD_WRAP(DATA=GMV(:,:,:,:), IDX=PDM9) + ELSE + VARIABLE%FDM9 => NULL() + END IF + + CONTAINS + + FUNCTION PRESENT_AND_ACTIVE(PTR) + INTEGER(KIND=JPIM), OPTIONAL, INTENT(IN) :: PTR + LOGICAL PRESENT_AND_ACTIVE + IF (PRESENT(PTR)) THEN + PRESENT_AND_ACTIVE = PTR >= 0 + ELSE + PRESENT_AND_ACTIVE = .FALSE. + END IF + END FUNCTION PRESENT_AND_ACTIVE + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_3D_GMV + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_GFL(SELF, NAME, YDCOMP, GFL, PERSISTENT) RESULT(VARIABLE) + ! Create a single field from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_3D) :: VARIABLE + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(TYPE_GFL_COMP), INTENT(IN) :: YDCOMP + TYPE(TGFL), TARGET, INTENT(INOUT) :: GFL + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + + VARIABLE = VARIABLE_3D(NAME, CNAME=YDCOMP%CNAME, IGRBCODE=YDCOMP%IGRBCODE, LACTIVE=YDCOMP%LACTIVE, & + & LADV=YDCOMP%LADV, LT1=YDCOMP%LT1, LT9=YDCOMP%LT9, LPH9=YDCOMP%LPHY, LGP=YDCOMP%LGP, LWATER=YDCOMP%LWATER,& + & LTHERMACT=YDCOMP%LTHERMACT,RCP=YDCOMP%RCP,R=YDCOMP%R,LCDERS=YDCOMP%LCDERS) + + VARIABLE%YCOMP = YDCOMP + + ! Associate FIELD objects with VARIABLE according to provided pointers + IF (YDCOMP%LACTIVE .AND. YDCOMP%MP > 0) THEN + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=GFL%GFL(:,:,:,:), IDX=YDCOMP%MP) + ELSE + VARIABLE%FT0 => NULL() + END IF + IF (YDCOMP%LACTIVE .AND. YDCOMP%MP1 > 0) THEN + VARIABLE%FT1 => CREATE_FIELD_WRAP(DATA=GFL%GFLT1(:,:,:,:), IDX=YDCOMP%MP1) + ELSE + VARIABLE%FT1 => NULL() + END IF + IF (YDCOMP%LACTIVE .AND. YDCOMP%MP9 > 0) THEN + VARIABLE%FT9 => CREATE_FIELD_WRAP(DATA=GFL%GFL(:,:,:,:), IDX=YDCOMP%MP9) + ELSE + VARIABLE%FT9 => NULL() + END IF + IF (YDCOMP%LACTIVE .AND. YDCOMP%MP9_PH > 0) THEN + VARIABLE%FPH9 => CREATE_FIELD_WRAP(DATA=GFL%GFL(:,:,:,:), IDX=YDCOMP%MP9_PH) + ELSE + VARIABLE%FPH9 => NULL() + END IF + IF (YDCOMP%LACTIVE .AND. YDCOMP%MPL > 0) THEN + VARIABLE%FDL => CREATE_FIELD_WRAP(DATA=GFL%GFL(:,:,:,:), IDX=YDCOMP%MPL) + ELSE + VARIABLE%FDL => NULL() + END IF + IF (YDCOMP%LACTIVE .AND. YDCOMP%MPM > 0) THEN + VARIABLE%FDM => CREATE_FIELD_WRAP(DATA=GFL%GFL(:,:,:,:), IDX=YDCOMP%MPM) + ELSE + VARIABLE%FDM => NULL() + END IF + + CONTAINS + + FUNCTION ACTIVE_AND_TRUE(LFLAG) + LOGICAL ACTIVE_AND_TRUE + LOGICAL, INTENT(IN) :: LFLAG + IF (YDCOMP%LACTIVE) THEN + ACTIVE_AND_TRUE = LFLAG + ELSE + ACTIVE_AND_TRUE = .FALSE. + END IF + END FUNCTION ACTIVE_AND_TRUE + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_GFL + + FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_ARRAY_GFL(SELF, NAME, YDCOMP, GFL, PERSISTENT) RESULT(VARIABLES) + ! Create a single field from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + TYPE(VARIABLE_3D), ALLOCATABLE :: VARIABLES(:) + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(TYPE_GFL_COMP), POINTER, INTENT(IN) :: YDCOMP(:) + TYPE(TGFL), TARGET, INTENT(INOUT) :: GFL + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + INTEGER(KIND=JPIM) :: I + CHARACTER(:), ALLOCATABLE :: VNAME + CHARACTER*8 :: CLI + + IF (ASSOCIATED(YDCOMP)) THEN + ALLOCATE(VARIABLES(SIZE(YDCOMP))) + DO I=1, SIZE(YDCOMP) + WRITE (CLI, '(I0)') I + VNAME = NAME//"_"//TRIM(CLI) + VARIABLES(I) = SELF%CREATE_VARIABLE(VNAME, YDCOMP(I), GFL, PERSISTENT=PERSISTENT) + VARIABLES(I)%YCOMP = YDCOMP (I) + END DO + ELSE + ALLOCATE(VARIABLES(0)) + END IF + + END FUNCTION FIELD_REGISTRY_CREATE_VARIABLE_ARRAY_GFL + + SUBROUTINE FIELD_REGISTRY_REGISTER_GEOMETRY(SELF, VARIABLES, GEOM) + ! Utility routine to register geometry fields in the current field container + ! + ! Note that this is not meant to stay forever. It is required for gradual + ! migration of existing arrays to an Atlas-based memory management system. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(FIELD_VARIABLES), POINTER, INTENT(INOUT) :: VARIABLES + TYPE(GEOMETRY), INTENT(IN) :: GEOM + + IF (.NOT. ASSOCIATED(VARIABLES)) ALLOCATE(VARIABLES) + + VARIABLES%GEOMETRY%RCORI = SELF%CREATE_VARIABLE(NAME='RCORI', DATA=GEOM%YRGSGEOM_B%RCORI) + VARIABLES%GEOMETRY%RCORIC = SELF%CREATE_VARIABLE(NAME='RCORIC', DATA=GEOM%YRGSGEOM_B%RCORIC) + VARIABLES%GEOMETRY%GEMU = SELF%CREATE_VARIABLE(NAME='GEMU', DATA=GEOM%YRGSGEOM_B%GEMU) + VARIABLES%GEOMETRY%GSQM2 = SELF%CREATE_VARIABLE(NAME='GSQM2', DATA=GEOM%YRGSGEOM_B%GSQM2) + VARIABLES%GEOMETRY%GELAM = SELF%CREATE_VARIABLE(NAME='GELAM', DATA=GEOM%YRGSGEOM_B%GELAM) + VARIABLES%GEOMETRY%GELAT = SELF%CREATE_VARIABLE(NAME='GELAT', DATA=GEOM%YRGSGEOM_B%GELAT) + VARIABLES%GEOMETRY%GECLO = SELF%CREATE_VARIABLE(NAME='GECLO', DATA=GEOM%YRGSGEOM_B%GECLO) + VARIABLES%GEOMETRY%GESLO = SELF%CREATE_VARIABLE(NAME='GESLO', DATA=GEOM%YRGSGEOM_B%GESLO) + VARIABLES%GEOMETRY%GM = SELF%CREATE_VARIABLE(NAME='GM', DATA=GEOM%YRGSGEOM_B%GM) + VARIABLES%GEOMETRY%GMAPPA = SELF%CREATE_VARIABLE(NAME='GMAPPA', DATA=GEOM%YRGSGEOM_B%GMAPPA) + VARIABLES%GEOMETRY%GOMVRL = SELF%CREATE_VARIABLE(NAME='GOMVRL', DATA=GEOM%YRGSGEOM_B%GOMVRL) + VARIABLES%GEOMETRY%GOMVRM = SELF%CREATE_VARIABLE(NAME='GOMVRM', DATA=GEOM%YRGSGEOM_B%GOMVRM) + VARIABLES%GEOMETRY%GNORDL = SELF%CREATE_VARIABLE(NAME='GNORDL', DATA=GEOM%YRGSGEOM_B%GNORDL) + VARIABLES%GEOMETRY%GNORDM = SELF%CREATE_VARIABLE(NAME='GNORDM', DATA=GEOM%YRGSGEOM_B%GNORDM) + VARIABLES%GEOMETRY%GNORDLCL = SELF%CREATE_VARIABLE(NAME='GNORDLCL', DATA=GEOM%YRGSGEOM_B%GNORDLCL) + VARIABLES%GEOMETRY%GNORDMCL = SELF%CREATE_VARIABLE(NAME='GNORDMCL', DATA=GEOM%YRGSGEOM_B%GNORDMCL) + VARIABLES%GEOMETRY%GNORDMCM = SELF%CREATE_VARIABLE(NAME='GNORDMCM', DATA=GEOM%YRGSGEOM_B%GNORDMCM) + VARIABLES%GEOMETRY%GAW = SELF%CREATE_VARIABLE(NAME='GAW', DATA=GEOM%YRGSGEOM_B%GAW) + ! INTEGER(KIND=JPIM), POINTER,CONTIGUOUS :: NGPLAT(:,:) => NULL() + ! INTEGER(KIND=JPIM), POINTER,CONTIGUOUS :: NUNIQUEGP(:,:) => NULL() + + VARIABLES%GEOMETRY%OROG = SELF%CREATE_VARIABLE(NAME='OROG', DATA=GEOM%YROROG_B%OROG) + VARIABLES%GEOMETRY%OROGL = SELF%CREATE_VARIABLE(NAME='OROGL', DATA=GEOM%YROROG_B%OROGL) + VARIABLES%GEOMETRY%OROGM = SELF%CREATE_VARIABLE(NAME='OROGM', DATA=GEOM%YROROG_B%OROGM) + + VARIABLES%GEOMETRY%OROGLL = SELF%CREATE_VARIABLE(NAME='OROGLL', DATA=GEOM%YROROG_B%OROGLL) + VARIABLES%GEOMETRY%OROGMM = SELF%CREATE_VARIABLE(NAME='OROGMM', DATA=GEOM%YROROG_B%OROGMM) + VARIABLES%GEOMETRY%OROGLM = SELF%CREATE_VARIABLE(NAME='OROGLM', DATA=GEOM%YROROG_B%OROGLM) + + VARIABLES%GEOMETRY%RCOLON = SELF%CREATE_VARIABLE (NAME='RCOLON', DATA=GEOM%YRCSGEOM_B%RCOLON) + VARIABLES%GEOMETRY%RSILON = SELF%CREATE_VARIABLE (NAME='RSILON', DATA=GEOM%YRCSGEOM_B%RSILON) + VARIABLES%GEOMETRY%RINDX = SELF%CREATE_VARIABLE (NAME='RINDX' , DATA=GEOM%YRCSGEOM_B%RINDX ) + VARIABLES%GEOMETRY%RINDY = SELF%CREATE_VARIABLE (NAME='RINDY' , DATA=GEOM%YRCSGEOM_B%RINDY ) + VARIABLES%GEOMETRY%RATATH = SELF%CREATE_VARIABLE (NAME='RATATH', DATA=GEOM%YRCSGEOM_B%RATATH) + VARIABLES%GEOMETRY%RATATX = SELF%CREATE_VARIABLE (NAME='RATATX', DATA=GEOM%YRCSGEOM_B%RATATX) + + IF (ASSOCIATED (GEOM%YRGSGEOM_B%GEXCO)) VARIABLES%GEOMETRY%GEXCO = SELF%CREATE_VARIABLE (NAME='GEXCO', DATA=GEOM%YRGSGEOM_B%GEXCO) + IF (ASSOCIATED (GEOM%YRGSGEOM_B%GEYCO)) VARIABLES%GEOMETRY%GEYCO = SELF%CREATE_VARIABLE (NAME='GEYCO', DATA=GEOM%YRGSGEOM_B%GEYCO) + IF (ASSOCIATED (GEOM%YRGSGEOM_B%GEZCO)) VARIABLES%GEOMETRY%GEZCO = SELF%CREATE_VARIABLE (NAME='GEZCO', DATA=GEOM%YRGSGEOM_B%GEZCO) + + END SUBROUTINE FIELD_REGISTRY_REGISTER_GEOMETRY + + SUBROUTINE FIELD_REGISTRY_REGISTER_GMV_FIELDS(SELF, VARIABLES, GMV) + ! Utility routine to register GMV fields with the global field registry + ! + ! Note that this is not meant to stay forever. It is required for gradual + ! migration of existing arrays to the new object-based data management system. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(FIELD_VARIABLES), POINTER, INTENT(INOUT) :: VARIABLES + TYPE(TGMV), INTENT(INOUT) :: GMV ! Allocated arrays and pointers + + IF (.NOT. ASSOCIATED(VARIABLES)) ALLOCATE(VARIABLES) + + ASSOCIATE(GMVT1=>GMV%GMVT1, GMVS=>GMV%GMVS, GMVT1S=>GMV%GMVT1S, & + & YT0=>GMV%YT0, YT1=>GMV%YT1, YT9=>GMV%YT9, YPH9=>GMV%YPH9) + VARIABLES%U = SELF%CREATE_VARIABLE('U', GMV%GMV, GMVT1, PT0=YT0%MU, PT1=YT1%MU, PT9=YT9%MU, PPH9=YPH9%MU, PDL=YT0%MUL, PDL9=YT9%MUL) + VARIABLES%V = SELF%CREATE_VARIABLE('V', GMV%GMV, GMVT1, PT0=YT0%MV, PT1=YT1%MV, PT9=YT9%MV, PPH9=YPH9%MV, PDL=YT0%MVL, PDL9=YT9%MVL) + VARIABLES%T = SELF%CREATE_VARIABLE('T', GMV%GMV, GMVT1, PT0=YT0%MT, PT1=YT1%MT, PT9=YT9%MT, PPH9=YPH9%MT, PDL=YT0%MTL, PDM=YT0%MTM, PDL9=YT9%MTL, PDM9=YT9%MTM) + VARIABLES%DIV = SELF%CREATE_VARIABLE('DIV', GMV%GMV, GMVT1, PT0=YT0%MDIV, PT1=YT1%MDIV, PT9=YT9%MDIV) + VARIABLES%VOR = SELF%CREATE_VARIABLE('VOR', GMV%GMV, GMVT1, PT0=YT0%MVOR, PT1=YT1%MVOR, PT9=YT9%MVOR) + VARIABLES%SPD = SELF%CREATE_VARIABLE('SPD', GMV%GMV, GMVT1, PT0=YT0%MSPD, PT1=YT1%MSPD, PT9=YT9%MSPD, PDL=YT0%MSPDL, PDM=YT0%MSPDM, PDL9=YT9%MSPDL, PDM9=YT9%MSPDM) + VARIABLES%SVD = SELF%CREATE_VARIABLE('SVD', GMV%GMV, GMVT1, PT0=YT0%MSVD, PT1=YT1%MSVD, PT9=YT9%MSVD, PDL=YT0%MSVDL, PDM=YT0%MSVDM, PDL9=YT9%MSVDL, PDM9=YT9%MSVDM) + + VARIABLES%CSPDNL = SELF%CREATE_VARIABLE('CSPDNL', GMV%GMV, GMVT1, PT9=YT9%MCSPDNL) + VARIABLES%CSVDPT = SELF%CREATE_VARIABLE('CSVDPT', GMV%GMV, GMVT1, PT9=YT9%MCSVDPT) + VARIABLES%CSPNL = SELF%CREATE_VARIABLE('CSPNL' , GMV%GMV, GMVT1, PT9=YT9%MCSPNL) + VARIABLES%CTNL = SELF%CREATE_VARIABLE('CTNL' , GMV%GMV, GMVT1, PT9=YT9%MCTNL) + VARIABLES%CTPT = SELF%CREATE_VARIABLE('CTPT' , GMV%GMV, GMVT1, PT9=YT9%MCTPT) + VARIABLES%CUNL = SELF%CREATE_VARIABLE('CUNL' , GMV%GMV, GMVT1, PT9=YT9%MCUNL) + VARIABLES%CUPT = SELF%CREATE_VARIABLE('CUPT' , GMV%GMV, GMVT1, PT9=YT9%MCUPT) + VARIABLES%CVNL = SELF%CREATE_VARIABLE('CVNL' , GMV%GMV, GMVT1, PT9=YT9%MCVNL) + VARIABLES%CVPT = SELF%CREATE_VARIABLE('CVPT' , GMV%GMV, GMVT1, PT9=YT9%MCVPT) + VARIABLES%CVWVNL = SELF%CREATE_VARIABLE('CVWVNL', GMV%GMV, GMVT1, PT9=YT9%MCVWVNL) + VARIABLES%DPHI = SELF%CREATE_VARIABLE('DPHI' , GMV%GMV, GMVT1, PT9=YT9%MDPHI) + + VARIABLES%EDOT = SELF%CREATE_VARIABLE('EDOT', GMV%GMV, GMVT1, PT0=YT0%MEDOT, PT9=YT9%MEDOT) + + VARIABLES%GW = SELF%CREATE_VARIABLE('GW' , GMV%GMV, GMVT1, PT9=YT9%MGW) + + VARIABLES%NHX = SELF%CREATE_VARIABLE('NHX', GMV%GMV, GMVT1, PT0=YT0%MNHX, PT1=YT1%MNHX, PT9=YT9%MNHX, & + & PDL=YT0%MNHXL, PDM=YT0%MNHXM) + + VARIABLES%NHY = SELF%CREATE_VARIABLE('NHY' , GMV%GMV, GMVT1, PT9=YT9%MNHY) + + VARIABLES%SGRTL = SELF%CREATE_VARIABLE('SGRTL', GMV%GMV, GMVT1, PT0=YT0%MSGRTL, PT9=YT9%MSGRTL) + VARIABLES%SGRTM = SELF%CREATE_VARIABLE('SGRTM', GMV%GMV, GMVT1, PT0=YT0%MSGRTM, PT9=YT9%MSGRTM) + + VARIABLES%SPDNL = SELF%CREATE_VARIABLE('SPDNL' , GMV%GMV, GMVT1, PT9=YT9%MSPDNL ) + VARIABLES%SPDNL_SI = SELF%CREATE_VARIABLE('SPDNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MSPDNL_SI ) + VARIABLES%SPNL = SELF%CREATE_VARIABLE('SPNL' , GMV%GMV, GMVT1, PT9=YT9%MSPNL ) + VARIABLES%SPNL_SI = SELF%CREATE_VARIABLE('SPNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MSPNL_SI ) + VARIABLES%SVDNL_SI = SELF%CREATE_VARIABLE('SVDNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MSVDNL_SI ) + VARIABLES%TNL = SELF%CREATE_VARIABLE('TNL' , GMV%GMV, GMVT1, PT9=YT9%MTNL ) + VARIABLES%TNL_SI = SELF%CREATE_VARIABLE('TNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MTNL_SI ) + VARIABLES%UNL = SELF%CREATE_VARIABLE('UNL' , GMV%GMV, GMVT1, PT9=YT9%MUNL ) + VARIABLES%UNL_SI = SELF%CREATE_VARIABLE('UNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MUNL_SI ) + VARIABLES%VNL = SELF%CREATE_VARIABLE('VNL' , GMV%GMV, GMVT1, PT9=YT9%MVNL ) + VARIABLES%VNL_SI = SELF%CREATE_VARIABLE('VNL_SI' , GMV%GMV, GMVT1, PT9=YT9%MVNL_SI ) + VARIABLES%VWVNL = SELF%CREATE_VARIABLE('VWVNL' , GMV%GMV, GMVT1, PT9=YT9%MVWVNL ) + VARIABLES%CURHS = SELF%CREATE_VARIABLE('CURHS' , GMV%GMV, GMVT1, PT9=YT9%MCURHS ) + VARIABLES%CVRHS = SELF%CREATE_VARIABLE('CVRHS' , GMV%GMV, GMVT1, PT9=YT9%MCVRHS ) + VARIABLES%CTRHS = SELF%CREATE_VARIABLE('CTRHS' , GMV%GMV, GMVT1, PT9=YT9%MCTRHS ) + VARIABLES%CSPDRHS = SELF%CREATE_VARIABLE('CSPDRHS' , GMV%GMV, GMVT1, PT9=YT9%MCSPDRHS ) + VARIABLES%CSVDRHS = SELF%CREATE_VARIABLE('CSVDRHS' , GMV%GMV, GMVT1, PT9=YT9%MCSVDRHS ) + VARIABLES%NHXNL = SELF%CREATE_VARIABLE('NHXNL' , GMV%GMV, GMVT1, PT9=YT9%MNHXNL ) + VARIABLES%CNHXNL = SELF%CREATE_VARIABLE('CNHXNL' , GMV%GMV, GMVT1, PT9=YT9%MCNHXNL ) + + ! Field pointers in GMVS + VARIABLES%SP = SELF%CREATE_VARIABLE('SP', GMVS, GMVT1S, PT0=YT0%MSP, PT1=YT1%MSP, PT9=YT9%MSP, & + & PPH9=YPH9%MSP, PDL=YT0%MSPL, PDM=YT0%MSPM, PDL9=YT9%MSPL, PDM9=YT9%MSPM) + + VARIABLES%SPNL2 = SELF%CREATE_VARIABLE('SPNL2' , GMVS, GMVT1S, PT9=YT9%MSPNL2 ) + VARIABLES%PREHYDS = SELF%CREATE_VARIABLE('PREHYDS' , GMVS, GMVT1S, PT9=YT9%MPREHYDS) + VARIABLES%DBBC = SELF%CREATE_VARIABLE('DBBC' , GMVS, GMVT1S, PT9=YT9%MDBBC ) + VARIABLES%CSPPT = SELF%CREATE_VARIABLE('CSPPT' , GMVS, GMVT1S, PT9=YT9%MCSPPT ) + VARIABLES%CSPNL2 = SELF%CREATE_VARIABLE('CSPNL2' , GMVS, GMVT1S, PT9=YT9%MCSPNL2 ) + VARIABLES%CSPRHS = SELF%CREATE_VARIABLE('CSPRHS' , GMVS, GMVT1S, PT9=YT9%MCSPRHS ) + VARIABLES%GWS = SELF%CREATE_VARIABLE('GWS' , GMVS, GMVT1S, PT9=YT9%MGWS ) + + + END ASSOCIATE + + END SUBROUTINE FIELD_REGISTRY_REGISTER_GMV_FIELDS + + SUBROUTINE FIELD_REGISTRY_REGISTER_GFL_FIELDS(SELF, VARIABLES, GFL_ARRAY, GFL_META, YDMODEL) + USE TYPE_MODEL, ONLY : MODEL + ! Utility routine to register GFL fields with the global field registry + ! + ! Note that this is not meant to stay forever. It is required for gradual + ! migration of existing arrays to an Atlas-based memory management system. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(FIELD_VARIABLES), POINTER, INTENT(INOUT) :: VARIABLES + TYPE(TGFL), INTENT(INOUT) :: GFL_ARRAY ! Actual allcoated arrays + TYPE(TYPE_GFLD), INTENT(INOUT) :: GFL_META ! Array of component metadata + TYPE (MODEL), INTENT(IN) :: YDMODEL + + IF (.NOT. ASSOCIATED(VARIABLES)) ALLOCATE(VARIABLES) + +#:for v in gfl.variables +#:if v.array == 1 + VARIABLES%${v.name}$_G = SELF%CREATE_VARIABLE('${v.name}$', GFL_META%Y${v.name}$, GFL_ARRAY) + VARIABLES%${v.name}$ => VARIABLES%${v.name}$_G +#:else + VARIABLES%${v.name}$ = SELF%CREATE_VARIABLE('${v.name}$', GFL_META%Y${v.name}$, GFL_ARRAY) +#:endif +#:endfor + + CALL GREPVARS_PTR (VARIABLES, YDMODEL, COND, VARIABLES%GFL_PTR_G) + + CONTAINS + + LOGICAL FUNCTION COND (YDVAR, YDCOMP, YDMODEL) + USE YOM_YGFL, ONLY : TYPE_GFL_COMP + TYPE (VARIABLE_3D), INTENT (IN) :: YDVAR + TYPE (TYPE_GFL_COMP), INTENT (IN) :: YDCOMP + TYPE (MODEL), INTENT(IN) :: YDMODEL + COND = .TRUE. + END FUNCTION + + END SUBROUTINE FIELD_REGISTRY_REGISTER_GFL_FIELDS + + SUBROUTINE FIELD_REGISTRY_REGISTER_EC_PHYS_FIELDS(SELF, VARIABLES, FIELDS) + ! Utility routine to register EC physics fields in the current field container + ! + ! Note that this is not meant to stay forever. It is required for gradual + ! migration of existing arrays to an Atlas-based memory management system. + CLASS(FIELD_REGISTRY) :: SELF + TYPE(FIELD_VARIABLES), INTENT(INOUT) :: VARIABLES + TYPE(TEC_PHYS_FIELDS), INTENT(INOUT) :: FIELDS + + VARIABLES%ECPHYS%USTRTI = SELF%CREATE_VARIABLE(NAME='USTRTI', DATA=FIELDS%YRTILEPROP%RUSTRTI) ! E-W SURFACE STRESS + VARIABLES%ECPHYS%VSTRTI = SELF%CREATE_VARIABLE(NAME='VSTRTI', DATA=FIELDS%YRTILEPROP%RVSTRTI) ! N-S SURFACE STRESS + VARIABLES%ECPHYS%AHFSTI = SELF%CREATE_VARIABLE(NAME='AHFSTI', DATA=FIELDS%YRTILEPROP%RAHFSTI) ! SURFACE SENSIBLE HEAT FLUX + VARIABLES%ECPHYS%EVAPTI = SELF%CREATE_VARIABLE(NAME='EVAPTI', DATA=FIELDS%YRTILEPROP%REVAPTI) ! EVAPORATION + VARIABLES%ECPHYS%TSKTI = SELF%CREATE_VARIABLE(NAME='TSKTI', DATA=FIELDS%YRTILEPROP%RTSKTI) ! SKIN TEMPERATURE + END SUBROUTINE FIELD_REGISTRY_REGISTER_EC_PHYS_FIELDS + + SUBROUTINE FIELD_REGISTRY_REGISTER_PHYSICS_RADIATION_FIELDS(SELF, VARIABLES, PHYS_RADI) + ! Utility routine to register EC physics fields in the current field container + CLASS(FIELD_REGISTRY) :: SELF + TYPE(FIELD_VARIABLES), INTENT(INOUT) :: VARIABLES + TYPE(MODEL_PHYSICS_RADIATION_TYPE), TARGET, INTENT(IN) :: PHYS_RADI + + VARIABLES%RADIATION%EMTD = SELF%CREATE_VARIABLE(NAME='EMTD', DATA=PHYS_RADI%YRRADF%EMTD) + VARIABLES%RADIATION%TRSW = SELF%CREATE_VARIABLE(NAME='TRSW', DATA=PHYS_RADI%YRRADF%TRSW) + VARIABLES%RADIATION%EMTC = SELF%CREATE_VARIABLE(NAME='EMTC', DATA=PHYS_RADI%YRRADF%EMTC) + VARIABLES%RADIATION%TRSC = SELF%CREATE_VARIABLE(NAME='TRSC', DATA=PHYS_RADI%YRRADF%TRSC) + VARIABLES%RADIATION%EMTU = SELF%CREATE_VARIABLE(NAME='EMTU', DATA=PHYS_RADI%YRRADF%EMTU) + VARIABLES%RADIATION%TAUAER = SELF%CREATE_VARIABLE(NAME='TAUAER', DATA=PHYS_RADI%YRRADF%TAUAER) + VARIABLES%RADIATION%SRSWD = SELF%CREATE_VARIABLE(NAME='SRSWD', DATA=PHYS_RADI%YRRADF%SRSWD) + VARIABLES%RADIATION%SRLWDC = SELF%CREATE_VARIABLE(NAME='SRLWDC', DATA=PHYS_RADI%YRRADF%SRLWDC) + VARIABLES%RADIATION%SRLWD = SELF%CREATE_VARIABLE(NAME='SRLWD', DATA=PHYS_RADI%YRRADF%SRLWD) + VARIABLES%RADIATION%SRSWDC = SELF%CREATE_VARIABLE(NAME='SRSWDC', DATA=PHYS_RADI%YRRADF%SRSWDC) + VARIABLES%RADIATION%SRSWDCS = SELF%CREATE_VARIABLE(NAME='SRSWDCS', DATA=PHYS_RADI%YRRADF%SRSWDCS) + VARIABLES%RADIATION%SRLWDCS = SELF%CREATE_VARIABLE(NAME='SRLWDCS', DATA=PHYS_RADI%YRRADF%SRLWDCS) + VARIABLES%RADIATION%SRSWDV = SELF%CREATE_VARIABLE(NAME='SRSWDV', DATA=PHYS_RADI%YRRADF%SRSWDV) + VARIABLES%RADIATION%SRSWDUV = SELF%CREATE_VARIABLE(NAME='SRSWDUV', DATA=PHYS_RADI%YRRADF%SRSWDUV) + VARIABLES%RADIATION%EDRO = SELF%CREATE_VARIABLE(NAME='EDRO', DATA=PHYS_RADI%YRRADF%EDRO) + VARIABLES%RADIATION%SRSWPAR = SELF%CREATE_VARIABLE(NAME='SRSWPAR', DATA=PHYS_RADI%YRRADF%SRSWPAR) + VARIABLES%RADIATION%SRSWUVB = SELF%CREATE_VARIABLE(NAME='SRSWUVB', DATA=PHYS_RADI%YRRADF%SRSWUVB) + VARIABLES%RADIATION%SRSWPARC = SELF%CREATE_VARIABLE(NAME='SRSWPARC', DATA=PHYS_RADI%YRRADF%SRSWPARC) + VARIABLES%RADIATION%SRSWTINC = SELF%CREATE_VARIABLE(NAME='SRSWTINC', DATA=PHYS_RADI%YRRADF%SRSWTINC) + VARIABLES%RADIATION%SRFDIR = SELF%CREATE_VARIABLE(NAME='SRFDIR', DATA=PHYS_RADI%YRRADF%SRFDIR) + VARIABLES%RADIATION%SRCDIR = SELF%CREATE_VARIABLE(NAME='SRCDIR', DATA=PHYS_RADI%YRRADF%SRCDIR) + VARIABLES%RADIATION%RMOON = SELF%CREATE_VARIABLE(NAME='RMOON', DATA=PHYS_RADI%YRRADF%RMOON) + VARIABLES%RADIATION%DERIVATIVELW = SELF%CREATE_VARIABLE(NAME='DERIVATIVELW', DATA=PHYS_RADI%YRRADF%DERIVATIVELW) + END SUBROUTINE FIELD_REGISTRY_REGISTER_PHYSICS_RADIATION_FIELDS + + + SUBROUTINE GREPVARS_PTR (VARIABLES, YDMODEL, COND, YDVARS_LIST) + USE TYPE_MODEL, ONLY : MODEL + TYPE(FIELD_VARIABLES), INTENT(INOUT), TARGET :: VARIABLES + TYPE(MODEL), INTENT(IN) :: YDMODEL + PROCEDURE (FUN_GREP) :: COND + TYPE(VARIABLE_3D_PTR), ALLOCATABLE :: YDVARS_LIST (:) + + INTEGER (KIND=JPIM) :: ISIZE, JFLD, IPNTR + + ISIZE = 0 + +#:for v in gfl.variables +#:if v.array == 1 + IF (ASSOCIATED (VARIABLES%${v.name}$)) THEN + DO JFLD = 1, SIZE (VARIABLES%${v.name}$) + IF (COND (VARIABLES%${v.name}$(JFLD), YDMODEL%YRML_GCONF%YGFL%Y${v.name}$(JFLD), YDMODEL)) ISIZE = ISIZE + 1 + ENDDO + ENDIF +#:else + IF (COND (VARIABLES%${v.name}$, YDMODEL%YRML_GCONF%YGFL%Y${v.name}$, YDMODEL)) ISIZE = ISIZE + 1 +#:endif +#:endfor + + ALLOCATE (YDVARS_LIST (ISIZE)) + + IPNTR = 1 + +#:for v in gfl.variables +#:if v.array == 1 + IF (ASSOCIATED (VARIABLES%${v.name}$)) THEN + DO JFLD = 1, SIZE (VARIABLES%${v.name}$) + IF (COND (VARIABLES%${v.name}$(JFLD), YDMODEL%YRML_GCONF%YGFL%Y${v.name}$(JFLD), YDMODEL)) THEN + YDVARS_LIST (IPNTR)%YV => VARIABLES%${v.name}$(JFLD) + YDVARS_LIST (IPNTR)%YCOMP = VARIABLES%${v.name}$(JFLD)%YCOMP + IPNTR = IPNTR + 1 + ENDIF + ENDDO + ENDIF +#:else + IF (COND (VARIABLES%${v.name}$, YDMODEL%YRML_GCONF%YGFL%Y${v.name}$, YDMODEL)) THEN + YDVARS_LIST (IPNTR)%YV => VARIABLES%${v.name}$ + YDVARS_LIST (IPNTR)%YCOMP = VARIABLES%${v.name}$%YCOMP + IPNTR = IPNTR + 1 + ENDIF +#:endif +#:endfor + + + END SUBROUTINE + + + !---- Utility wrapper routines for surface variables ----! + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_2D(SELF, NAME, VARIABLE, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create a single field from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_2D), INTENT(INOUT) :: VARIABLE + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:) + TYPE(TYPE_SURF_MTL_2D), INTENT(IN) :: META + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + + IF (.NOT. ACTIVE) THEN + ! For inactive variables we still create full-sized temporaries, + ! since the SURF module expects full NPROMA-sized buffers. + VARIABLE = VARIABLE_2D(NAME, LACTIVE=.FALSE., LT1=.FALSE., LT9=.FALSE.) + VARIABLE%FT0 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + VARIABLE%FT1 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + VARIABLE%FT9 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + ELSE + ! Create variable according to existing meta-data + VARIABLE = VARIABLE_2D(NAME, LACTIVE=META%MP > 0, LT1=META%MP1 > 0, LT9=META%MP9 > 0) + + IF (META%MP > 0) THEN + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:), IDX=META%MP) + ELSE + VARIABLE%FT0 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + END IF + IF (META%MP1 > 0) THEN + VARIABLE%FT1 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:), IDX=META%MP1) + ELSE + VARIABLE%FT1 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + END IF + IF (META%MP9 > 0) THEN + VARIABLE%FT9 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:), IDX=META%MP9) + ELSE + VARIABLE%FT9 => CREATE_TEMPORARY(GEOM=SELF%GEOM, PERSISTENT=PERSISTENT) + END IF + END IF + + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_2D + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_2D(SELF, NAME, VARIABLES, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create an array of fields from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_2D), ALLOCATABLE, INTENT(INOUT) :: VARIABLES(:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:) + TYPE(TYPE_SURF_MTL_2D), INTENT(IN) :: META(:) + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + INTEGER(KIND=JPIM) :: I + CHARACTER(:), ALLOCATABLE :: VNAME + + ALLOCATE(VARIABLES(SIZE(META))) + DO I=1, SIZE(META) + VNAME = NAME//"_"//CHAR(I) + CALL SELF%CREATE_SURFACE_VARIABLE_2D(VNAME, VARIABLES(I), ARRAY, META(I), DESCR, ACTIVE, PERSISTENT) + END DO + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_2D + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_2D(SELF, NAME, VARIABLES, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create an array of fields from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_2D), ALLOCATABLE, INTENT(INOUT) :: VARIABLES(:,:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:) + TYPE(TYPE_SURF_MTL_2D), INTENT(IN) :: META(:,:) + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + INTEGER(KIND=JPIM) :: I, J + CHARACTER(:), ALLOCATABLE :: VNAME + + ALLOCATE(VARIABLES(SIZE(META, DIM=1), SIZE(META, DIM=2))) + DO J=1, SIZE(META, DIM=2) + DO I=1, SIZE(META, DIM=1) + VNAME = NAME//"_"//CHAR(I)//"_"//CHAR(J) + CALL SELF%CREATE_SURFACE_VARIABLE_2D(VNAME, VARIABLES(I,J), ARRAY, META(I,J), DESCR, ACTIVE, PERSISTENT) + END DO + END DO + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_2D + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_3D(SELF, NAME, VARIABLE, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create a single field from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_3D), INTENT(INOUT) :: VARIABLE + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:,:) + TYPE(TYPE_SURF_MTL_3D), INTENT(IN) :: META + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + + IF (.NOT. ACTIVE) THEN + ! For inactive variables we still create full-sized temporaries, + ! since the SURF module expects full NPROMA-sized buffers. + VARIABLE = VARIABLE_3D(NAME, LACTIVE=.FALSE., LT1=.FALSE., LT9=.FALSE.) + VARIABLE%FT0 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + VARIABLE%FT1 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + VARIABLE%FT9 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + ELSE + ! Create variable according to existing meta-data + VARIABLE = VARIABLE_3D(NAME, LACTIVE=META%MP > 0, LT1=META%MP1 > 0, LT9=META%MP9 > 0) + + IF (META%MP > 0) THEN + VARIABLE%FT0 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:,:), IDX=META%MP) + ELSE + VARIABLE%FT0 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + END IF + IF (META%MP1 > 0) THEN + VARIABLE%FT1 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:,:), IDX=META%MP1) + ELSE + VARIABLE%FT1 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + END IF + IF (META%MP9 > 0) THEN + VARIABLE%FT9 => CREATE_FIELD_WRAP(DATA=ARRAY(:,:,:,:), IDX=META%MP9) + ELSE + VARIABLE%FT9 => CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=DESCR%NLEVS, PERSISTENT=PERSISTENT) + END IF + END IF + + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_3D + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_3D(SELF, NAME, VARIABLES, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create an array of fields from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_3D), ALLOCATABLE, INTENT(INOUT) :: VARIABLES(:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:,:) + TYPE(TYPE_SURF_MTL_3D), INTENT(IN) :: META(:) + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + INTEGER(KIND=JPIM) :: I + CHARACTER(:), ALLOCATABLE :: VNAME + + ALLOCATE(VARIABLES(SIZE(META))) + DO I=1, SIZE(META) + VNAME = NAME//"_"//CHAR(I) + CALL SELF%CREATE_SURFACE_VARIABLE_3D(VNAME, VARIABLES(I), ARRAY, META(I), DESCR, ACTIVE, PERSISTENT) + END DO + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY_3D + + SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_3D(SELF, NAME, VARIABLES, ARRAY, META, DESCR, ACTIVE, PERSISTENT) + ! Create an array of fields from a set of defaults and internalized field options + CLASS(FIELD_REGISTRY) :: SELF + CHARACTER(LEN=*), INTENT(IN) :: NAME + TYPE(VARIABLE_3D), ALLOCATABLE, INTENT(INOUT) :: VARIABLES(:,:) + REAL(KIND=JPRB), TARGET, INTENT(IN) :: ARRAY(:,:,:,:) + TYPE(TYPE_SURF_MTL_3D), INTENT(IN) :: META(:,:) + TYPE(TYPE_SURF_GEN), INTENT(IN) :: DESCR + LOGICAL, INTENT(IN) :: ACTIVE + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + INTEGER(KIND=JPIM) :: I, J + CHARACTER(:), ALLOCATABLE :: VNAME + + ALLOCATE(VARIABLES(SIZE(META, DIM=1), SIZE(META, DIM=2))) + DO J=1, SIZE(META, DIM=2) + DO I=1, SIZE(META, DIM=1) + VNAME = NAME//"_"//CHAR(I)//"_"//CHAR(J) + CALL SELF%CREATE_SURFACE_VARIABLE_3D(VNAME, VARIABLES(I,J), ARRAY, META(I,J), DESCR, ACTIVE, PERSISTENT) + END DO + END DO + END SUBROUTINE FIELD_REGISTRY_CREATE_SURFACE_VARIABLE_ARRAY2_3D + + SUBROUTINE FIELD_REGISTRY_REGISTER_SURFACE_FIELDS(SELF, SURFVARS, YDSURF, PERSISTENT) + ! Register all surface variables detailed in the configuration file + CLASS(FIELD_REGISTRY) :: SELF + TYPE(SURFACE_VARIABLES), POINTER, INTENT(INOUT) :: SURFVARS + TYPE(TSURF), TARGET, INTENT(INOUT) :: YDSURF + LOGICAL, OPTIONAL, INTENT(IN) :: PERSISTENT + + IF (.NOT. ASSOCIATED(SURFVARS)) ALLOCATE(SURFVARS) + +#:for group in surface_prognostic + ASSOCIATE(SP_${group.short}$=>YDSURF%SP_${group.short}$, YSP_${group.short}$=>YDSURF%YSP_${group.short}$, YSP_${group.short}$D=>YDSURF%YSP_${group.short}$D) +#:for v in group.variables +#:if v.array == 1 + IF (ASSOCIATED(YSP_${group.short}$%Y${v.name}$)) THEN + CALL SELF%CREATE_SURFACE_VARIABLE_ARRAY_${group.dimension}$D(NAME='SP_${group.short}$_${v.name}$', & + & VARIABLES=SURFVARS%GSP_${group.short}$%V${v.name}$, ARRAY=SP_${group.short}$, & + & META=YSP_${group.short}$%Y${v.name}$(:), DESCR=YSP_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSP_${group.short}$%Y${v.name}$)) + END IF +#:elif v.array == 2 + IF (ASSOCIATED(YSP_${group.short}$%Y${v.name}$)) THEN + CALL SELF%CREATE_SURFACE_VARIABLE_ARRAY_${group.dimension}$D(NAME='SP_${group.short}$_${v.name}$', & + & VARIABLES=SURFVARS%GSP_${group.short}$%V${v.name}$, ARRAY=SP_${group.short}$, & + & META=YSP_${group.short}$%Y${v.name}$(:,:), DESCR=YSP_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSP_${group.short}$%Y${v.name}$)) + END IF +#:else + CALL SELF%CREATE_SURFACE_VARIABLE_${group.dimension}$D(NAME='SP_${group.short}$_${v.name}$', & + & VARIABLE=SURFVARS%GSP_${group.short}$%V${v.name}$, ARRAY=SP_${group.short}$, & + & META=YSP_${group.short}$%Y${v.name}$, DESCR=YSP_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSP_${group.short}$%Y${v.name}$)) +#:endif +#:endfor + + IF (YSP_${group.short}$D%NDIM == 0) THEN +#:if group.dimension == 2 + SURFVARS%GSP_${group.short}$%F_GROUP = CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=1, PERSISTENT=PERSISTENT) +#:elif group.dimension == 3 + SURFVARS%GSP_${group.short}$%F_GROUP = CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=MAX(1,YSP_${group.short}$D%NLEVS), NDIM=1, PERSISTENT=PERSISTENT) +#:endif + ELSE + SURFVARS%GSP_${group.short}$%F_GROUP = FIELD_${group.dimension+1}$D(DATA=SP_${group.short}$) + END IF + END ASSOCIATE + +#:endfor + +#:for group in surface_diagnostic + ASSOCIATE(SD_${group.short}$=>YDSURF%SD_${group.short}$, YSD_${group.short}$=>YDSURF%YSD_${group.short}$, YSD_${group.short}$D=>YDSURF%YSD_${group.short}$D) +#:for v in group.variables +#:if v.array == 1 + IF (ASSOCIATED(YSD_${group.short}$%Y${v.name}$)) THEN + CALL SELF%CREATE_SURFACE_VARIABLE_ARRAY_${group.dimension}$D(NAME='SD_${group.short}$_${v.name}$', & + & VARIABLES=SURFVARS%GSD_${group.short}$%V${v.name}$, ARRAY=SD_${group.short}$, & + & META=YSD_${group.short}$%Y${v.name}$(:), DESCR=YSD_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSD_${group.short}$%Y${v.name}$)) + END IF +#:elif v.array == 2 + IF (ASSOCIATED(YSD_${group.short}$%Y${v.name}$)) THEN + CALL SELF%CREATE_SURFACE_VARIABLE_ARRAY2_${group.dimension}$D(NAME='SD_${group.short}$_${v.name}$', & + & VARIABLES=SURFVARS%GSD_${group.short}$%V${v.name}$, ARRAY=SD_${group.short}$, & + & META=YSD_${group.short}$%Y${v.name}$(:,:), DESCR=YSD_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSD_${group.short}$%Y${v.name}$)) + END IF +#:else + CALL SELF%CREATE_SURFACE_VARIABLE_${group.dimension}$D(NAME='SD_${group.short}$_${v.name}$', & + & VARIABLE=SURFVARS%GSD_${group.short}$%V${v.name}$, ARRAY=SD_${group.short}$, & + & META=YSD_${group.short}$%Y${v.name}$, DESCR=YSD_${group.short}$D, & + & ACTIVE=ASSOCIATED(YSD_${group.short}$%Y${v.name}$)) +#:endif +#:endfor + + IF (YSD_${group.short}$D%NDIM == 0) THEN +#:if group.dimension == 2 + SURFVARS%GSD_${group.short}$%F_GROUP = CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=1, PERSISTENT=PERSISTENT) +#:elif group.dimension == 3 + SURFVARS%GSD_${group.short}$%F_GROUP = CREATE_TEMPORARY(GEOM=SELF%GEOM, NLEV=MAX(1,YSD_${group.short}$D%NLEVS), NDIM=1, PERSISTENT=PERSISTENT) +#:endif + ELSE + SURFVARS%GSD_${group.short}$%F_GROUP = FIELD_${group.dimension+1}$D(DATA=SD_${group.short}$) + END IF + END ASSOCIATE +#:endfor + + END SUBROUTINE FIELD_REGISTRY_REGISTER_SURFACE_FIELDS + +END MODULE FIELD_REGISTRY_MOD diff --git a/src/arome/ext/field_variables_mod.fypp b/src/arome/ext/field_variables_mod.fypp new file mode 100644 index 0000000000000000000000000000000000000000..f383c0744ea60ab149d0fa7aa08bfad9fe5fad95 --- /dev/null +++ b/src/arome/ext/field_variables_mod.fypp @@ -0,0 +1,339 @@ +#! Read variable and field configurations from file +#:set config_file = os.path.dirname(_THIS_FILE_) + '/field_config.yaml' +#:set config = field_config.VariableConfiguration(config_file) +#:set gmv = config.groups['GMV'] +#:set gmvs = config.groups['GMVS'] +#:set gfl = config.groups['GFL'] +#:set variables = gmv.variables + gmvs.variables + gfl.variables + + +MODULE FIELD_VARIABLES_MOD + ! The FIELD_VARIABLES type provides namespaced access to all core + ! VARIABLE objects used. + ! + ! These VARIABLE objects are currently wrappers around GMV and GFL + ! fields and provide accessor methods to the individual FIELD + ! storage objects and NPROMA array views (sub-array blocks) in + ! OpenMP loops. The FIELD_VARIABLES%UPDATE_VIEW(BLOCK_INDEX) utility + ! ensures that all block pointers provided by the stored variable + ! objects are pointing to the correct sub-arrry block. + +USE PARKIND1, ONLY: JPIM, JPRB +USE VARIABLE_MODULE, ONLY: VARIABLE_2D, VARIABLE_3D, VARIABLE_4D +USE VARIABLE_MODULE, ONLY: VARIABLE_3D_PTR +#ifdef PARKIND1_SINGLE +USE VARIABLE_MODULE, ONLY: VARIABLE_D2D, VARIABLE_D3D, VARIABLE_D4D +#endif +USE YOMGMV, ONLY : TGMV +USE YOMGFL, ONLY : TGFL + +IMPLICIT NONE + +TYPE GEOMETRY_VARIABLES +#:set geometry_variables_s = ['RCORI', 'RCORIC', 'GEMU', 'GSQM2', 'GELAM', 'GELAT', & +& 'GECLO', 'GESLO', 'GM', 'GMAPPA', 'GOMVRL', 'GOMVRM', 'GNORDL', 'GNORDM', 'GNORDLCL', & +& 'GNORDMCL', 'GNORDMCM', 'GAW', 'OROG', 'OROGL', 'OROGM', 'RINDX', 'RINDY', 'RATATH', & +& 'RATATX', 'OROGLL', 'OROGMM', 'OROGLM', 'GEXCO', 'GEYCO', 'GEZCO'] +#:set geometry_variables_d = ['RCOLON', 'RSILON'] +#:set geometry_variables = geometry_variables_s + geometry_variables_d + + ! Variables for arrays specific to the geometry +#:for var in geometry_variables_s + TYPE(VARIABLE_2D) :: ${var}$ +#:endfor +#:for var in geometry_variables_d +#ifdef PARKIND1_SINGLE + TYPE(VARIABLE_D2D) :: ${var}$ +#else + TYPE(VARIABLE_2D) :: ${var}$ +#endif +#:endfor + +CONTAINS + PROCEDURE :: UPDATE_VIEW => GEOMETRY_VARIABLES_UPDATE_VIEW + PROCEDURE :: FINAL => GEOMETRY_VARIABLES_FINAL +END TYPE GEOMETRY_VARIABLES + +TYPE ECPHYS_VARIABLES + ! Variables for arrays in EC_PHYS_FIELDS_MOD + TYPE(VARIABLE_3D) :: USTRTI ! E-W SURFACE STRESS + TYPE(VARIABLE_3D) :: VSTRTI ! N-S SURFACE STRESS + TYPE(VARIABLE_3D) :: AHFSTI ! SURFACE SENSIBLE HEAT FLUX + TYPE(VARIABLE_3D) :: EVAPTI ! EVAPORATION + TYPE(VARIABLE_3D) :: TSKTI ! SKIN TEMPERATURE +END TYPE ECPHYS_VARIABLES + +TYPE RADIATION_VARIABLES + ! Variables for arrays specific to radiation + TYPE(VARIABLE_3D) :: EMTD ! longwave net flux + TYPE(VARIABLE_3D) :: TRSW ! shortwave net transmissivity (multiply by incoming SW to get flux) + TYPE(VARIABLE_3D) :: EMTC ! clear-sky net longwave flux + TYPE(VARIABLE_3D) :: TRSC ! clear-sky net shortwave transmissivity + TYPE(VARIABLE_3D) :: EMTU + TYPE(VARIABLE_4D) :: TAUAER ! prognostic aerosol variable for radiation and clouds + TYPE(VARIABLE_2D) :: SRSWD ! downward SW radiation at the surface + TYPE(VARIABLE_3D) :: SRLWD ! downward LW radiation at the surface + TYPE(VARIABLE_2D) :: SRLWDC ! clear-sky downward LW radiation at the surface + TYPE(VARIABLE_2D) :: SRSWDC ! clear-sky downward SW radiation at the surface + TYPE(VARIABLE_2D) :: SRSWDCS ! clear-sky NET SW radiation at the surface + TYPE(VARIABLE_2D) :: SRLWDCS ! clear-sky NET LW radiation at the surface + TYPE(VARIABLE_2D) :: SRSWDV ! downward SW visible radiation at the surface + TYPE(VARIABLE_2D) :: SRSWDUV ! downward SW ultraviolet/visible radiation at the surface + TYPE(VARIABLE_2D) :: EDRO + TYPE(VARIABLE_2D) :: SRSWPAR ! downward SW PAR radiation at the surface + TYPE(VARIABLE_2D) :: SRSWUVB ! downward UV-B radiation at the surface + TYPE(VARIABLE_2D) :: SRSWPARC ! downward clear-sky SW PAR radiation at the surface + TYPE(VARIABLE_2D) :: SRSWTINC ! TOA incident solar radiation + TYPE(VARIABLE_2D) :: RMOON ! M-F military application + TYPE(VARIABLE_2D) :: SRFDIR ! total sky direct downward SW radiation + TYPE(VARIABLE_2D) :: SRCDIR ! clear-sky direct downward SW radiation + TYPE(VARIABLE_3D) :: DERIVATIVELW ! derivative to update LW radiation between calls to full radiation scheme +END TYPE RADIATION_VARIABLES + +TYPE FIELD_VARIABLES +#:for v in variables +#:if v.array == 1 + TYPE(VARIABLE_${v.dim}$D), ALLOCATABLE :: ${v.name}$_G(:) ! ${v.comment}$ + TYPE(VARIABLE_${v.dim}$D), POINTER :: ${v.name}$(:) ! ${v.comment}$ +#:else + TYPE(VARIABLE_${v.dim}$D) :: ${v.name}$ ! ${v.comment}$ +#:endif +#:endfor + + TYPE(GEOMETRY_VARIABLES) :: GEOMETRY + TYPE(ECPHYS_VARIABLES) :: ECPHYS + TYPE(RADIATION_VARIABLES) :: RADIATION + + TYPE(VARIABLE_3D_PTR), ALLOCATABLE :: GFL_PTR_G (:) + TYPE(VARIABLE_3D_PTR), POINTER :: GFL_PTR (:) + +CONTAINS + ! PROCEDURE :: CLONE => FIELD_VARIABLES_CLONE + PROCEDURE :: CLONE_ARRAYS => FIELD_VARIABLES_CLONE_ARRAYS + PROCEDURE :: UPDATE_VIEW => FIELD_VARIABLES_UPDATE_VIEW + PROCEDURE :: RESET_ARRAYS => FIELD_VARIABLES_RESET_ARRAYS + PROCEDURE :: FINAL => FIELD_VARIABLES_FINAL + ! Timestepping utilities + PROCEDURE :: GFL_PH9TOT0 => FIELD_VARIABLES_GFL_PH9TOT0 + PROCEDURE :: GFL_PH9TOT9 => FIELD_VARIABLES_GFL_PH9TOT9 + PROCEDURE :: GMV_RESET_PH9 => FIELD_VARIABLES_GMV_RESET_PH9 +END TYPE FIELD_VARIABLES + +CONTAINS + +! FUNCTION FIELD_VARIABLES_CLONE(SELF) RESULT(NEWOBJ) +! ! Replicate objects by deep-copying through associated object pointers +! ! +! ! This is required create per-thread replication of the data view pointers +! ! under the fields associated with these variables. +! CLASS(FIELD_VARIABLES) :: SELF +! TYPE(FIELD_VARIABLES) :: NEWOBJ +! INTEGER(KIND=JPIM) :: I + +! #:for v in variables +! #:if v.array == 1 +! IF (ALLOCATED(SELF%${v.name}$)) THEN +! ALLOCATE(NEWOBJ%${v.name}$(SIZE(SELF%${v.name}$))) +! DO I=1, SIZE(SELF%${v.name}$) +! NEWOBJ%${v.name}$(I) = SELF%${v.name}$(I)%CLONE() +! END DO +! END IF +! #:else +! NEWOBJ%${v.name}$ = SELF%${v.name}$%CLONE() +! #:endif +! #:endfor +! END FUNCTION FIELD_VARIABLES_CLONE + + SUBROUTINE FIELD_VARIABLES_CLONE_ARRAYS(SELF) + ! Replicate variable arrays by allocating a thread-local copy and + ! associating its variables with the underpinning storage fields. + ! + ! This is required ensure that per-thread data view pointers under + ! variables don't alias. + CLASS(FIELD_VARIABLES), TARGET :: SELF + INTEGER(KIND=JPIM) :: I + INTEGER(KIND=JPIM) :: IPNTR + INTEGER(KIND=JPIM) :: JFLD + +#:for v in variables +#:if v.array == 1 + ! Allocate a thread-local copy of the array + NULLIFY(SELF%${v.name}$) + ALLOCATE(SELF%${v.name}$(SIZE(SELF%${v.name}$_G))) + SELF%${v.name}$ = SELF%${v.name}$_G +! DO I=1, SIZE(SELF%${v.name}$_G) +! ! Associate underpinning storage objects with thread-local variables +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FT0)) SELF%${v.name}$(I)%FT0 => SELF%${v.name}$_G(I)%FT0 +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FT1)) SELF%${v.name}$(I)%FT1 => SELF%${v.name}$_G(I)%FT1 +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FT9)) SELF%${v.name}$(I)%FT9 => SELF%${v.name}$_G(I)%FT9 +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FPH9)) SELF%${v.name}$(I)%FPH9=> SELF%${v.name}$_G(I)%FPH9 +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FDL)) SELF%${v.name}$(I)%FDL => SELF%${v.name}$_G(I)%FDL +! IF (ASSOCIATED(SELF%${v.name}$_G(I)%FDM)) SELF%${v.name}$(I)%FDM => SELF%${v.name}$_G(I)%FDM +! END DO +#:endif +#:endfor + + NULLIFY (SELF%GFL_PTR) + ALLOCATE (SELF%GFL_PTR (SIZE (SELF%GFL_PTR_G))) + + IPNTR = 1 + +#:for v in gfl.variables +#:if v.array == 1 + IF (ASSOCIATED (SELF%${v.name}$)) THEN + DO JFLD = 1, SIZE (SELF%${v.name}$) + SELF%GFL_PTR (IPNTR)%YV => SELF%${v.name}$(JFLD) + SELF%GFL_PTR (IPNTR)%YCOMP = SELF%${v.name}$(JFLD)%YCOMP + IPNTR = IPNTR + 1 + ENDDO + ENDIF +#:else + SELF%GFL_PTR (IPNTR)%YV => SELF%${v.name}$ + SELF%GFL_PTR (IPNTR)%YCOMP = SELF%${v.name}$%YCOMP + IPNTR = IPNTR + 1 +#:endif +#:endfor + + END SUBROUTINE FIELD_VARIABLES_CLONE_ARRAYS + + SUBROUTINE FIELD_VARIABLES_UPDATE_VIEW(SELF, BLOCK_INDEX) + ! Update the internal data view pointers of all associated variables + CLASS(FIELD_VARIABLES) :: SELF + INTEGER(KIND=JPIM), INTENT(IN) :: BLOCK_INDEX + INTEGER(KIND=JPIM) :: I + +#:for v in variables +#:if v.array == 1 + ! Note, we assume allocation of size 0 for inactive variables! + DO I=1, SIZE(SELF%${v.name}$) + CALL SELF%${v.name}$(I)%UPDATE_VIEW(BLOCK_INDEX) + END DO +#:else + CALL SELF%${v.name}$%UPDATE_VIEW(BLOCK_INDEX) +#:endif +#:endfor + + ! Manually update variables in ECPHYS sub-type + CALL SELF%ECPHYS%USTRTI%UPDATE_VIEW(BLOCK_INDEX) + CALL SELF%ECPHYS%VSTRTI%UPDATE_VIEW(BLOCK_INDEX) + CALL SELF%ECPHYS%AHFSTI%UPDATE_VIEW(BLOCK_INDEX) + CALL SELF%ECPHYS%EVAPTI%UPDATE_VIEW(BLOCK_INDEX) + CALL SELF%ECPHYS%TSKTI%UPDATE_VIEW(BLOCK_INDEX) + + CALL SELF%GEOMETRY%UPDATE_VIEW (BLOCK_INDEX) + + END SUBROUTINE FIELD_VARIABLES_UPDATE_VIEW + + SUBROUTINE FIELD_VARIABLES_FINAL(SELF) + ! Update the internal data view pointers of all associated variables + CLASS(FIELD_VARIABLES) :: SELF + INTEGER(KIND=JPIM) :: I + +#:for v in variables +#:if v.array == 1 + IF (ALLOCATED(SELF%${v.name}$_G)) THEN + DO I=1, SIZE(SELF%${v.name}$) + CALL SELF%${v.name}$(I)%FINAL() + END DO + DEALLOCATE(SELF%${v.name}$_G) + NULLIFY(SELF%${v.name}$) + END IF +#:else + CALL SELF%${v.name}$%FINAL() +#:endif +#:endfor + END SUBROUTINE FIELD_VARIABLES_FINAL + + SUBROUTINE FIELD_VARIABLES_RESET_ARRAYS(SELF) + ! Deallocate and reset thread-local variables arrays. + ! + ! This ensures we are not leaking thread-local objects and should + ! be done after parallel regions. + CLASS(FIELD_VARIABLES), TARGET :: SELF + INTEGER(KIND=JPIM) :: I + +#:for v in variables +#:if v.array == 1 + ! Deallocate and reset thread-local variables arrays + DEALLOCATE(SELF%${v.name}$) + SELF%${v.name}$ => SELF%${v.name}$_G +#:endif +#:endfor + + DEALLOCATE (SELF%GFL_PTR) + NULLIFY (SELF%GFL_PTR) + + END SUBROUTINE FIELD_VARIABLES_RESET_ARRAYS + + SUBROUTINE FIELD_VARIABLES_GFL_PH9TOT0(SELF) + ! Utility routine that aliases the PH9 field of GLF variables with T0 + CLASS(FIELD_VARIABLES) :: SELF + INTEGER(KIND=JPIM) :: I + +#:for v in gfl.variables +#:if v.array == 1 + DO I=1, SIZE(SELF%${v.name}$) + CALL SELF%${v.name}$(I)%PH9TOT0() + END DO +#:else + CALL SELF%${v.name}$%PH9TOT0() +#:endif +#:endfor + END SUBROUTINE FIELD_VARIABLES_GFL_PH9TOT0 + + SUBROUTINE FIELD_VARIABLES_GFL_PH9TOT9(SELF) + ! Utility routine that aliases the PH9 field of GLF variables with T9 + CLASS(FIELD_VARIABLES) :: SELF + INTEGER(KIND=JPIM) :: I + +#:for v in gfl.variables +#:if v.array == 1 + DO I=1, SIZE(SELF%${v.name}$) + CALL SELF%${v.name}$(I)%PH9TOT9() + END DO +#:else + CALL SELF%${v.name}$%PH9TOT9() +#:endif +#:endfor + END SUBROUTINE FIELD_VARIABLES_GFL_PH9TOT9 + + SUBROUTINE FIELD_VARIABLES_GMV_RESET_PH9(SELF, YDGMV, YDGFL) + ! Re-associate the PH9 field pointers of GMV variables + ! + ! This is needed to ensure that certain time-stepping + ! schemes pass the right fields into the physics routines. + CLASS(FIELD_VARIABLES) :: SELF + TYPE(TGMV), TARGET, INTENT(INOUT) :: YDGMV + TYPE(TGFL), TARGET, INTENT(INOUT) :: YDGFL + + SELF%U%FPH9%PTR => YDGMV%GMV(:,:,YDGMV%YPH9%MU,:) + SELF%V%FPH9%PTR => YDGMV%GMV(:,:,YDGMV%YPH9%MV,:) + SELF%T%FPH9%PTR => YDGMV%GMV(:,:,YDGMV%YPH9%MT,:) + SELF%SP%FPH9%PTR => YDGMV%GMVS(:,YDGMV%YPH9%MSP,:) + + IF(ASSOCIATED(SELF%Q%FPH9)) SELF%Q%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YQ%MP9_PH,:) + IF(ASSOCIATED(SELF%A%FPH9)) SELF%A%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YA%MP9_PH,:) + IF(ASSOCIATED(SELF%O3%FPH9)) SELF%A%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YO3%MP9_PH,:) + IF(ASSOCIATED(SELF%L%FPH9)) SELF%L%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YL%MP9_PH,:) + IF(ASSOCIATED(SELF%I%FPH9)) SELF%I%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YI%MP9_PH,:) + IF(ASSOCIATED(SELF%R%FPH9)) SELF%R%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YR%MP9_PH,:) + IF(ASSOCIATED(SELF%S%FPH9)) SELF%S%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YS%MP9_PH,:) + IF(ASSOCIATED(SELF%TKE%FPH9))SELF%S%FPH9%PTR => YDGFL%GFL(:,:,YDGFL%YGFL%YTKE%MP9_PH,:) + END SUBROUTINE FIELD_VARIABLES_GMV_RESET_PH9 + + SUBROUTINE GEOMETRY_VARIABLES_UPDATE_VIEW(SELF, BLOCK_INDEX) + CLASS (GEOMETRY_VARIABLES) :: SELF + INTEGER(KIND=JPIM), INTENT(IN) :: BLOCK_INDEX +#:for var in geometry_variables + CALL SELF%${var}$%UPDATE_VIEW (BLOCK_INDEX) +#:endfor + END SUBROUTINE GEOMETRY_VARIABLES_UPDATE_VIEW + + SUBROUTINE GEOMETRY_VARIABLES_FINAL (SELF) + CLASS (GEOMETRY_VARIABLES) :: SELF +#:for var in geometry_variables + CALL SELF%${var}$%FINAL +#:endfor + END SUBROUTINE GEOMETRY_VARIABLES_FINAL + +END MODULE FIELD_VARIABLES_MOD diff --git a/src/arome/ext/ini_wet_dep.F90 b/src/arome/ext/ini_wet_dep.F90 index 7bb24d1f0d014c3cf3211a44d07267b2cc7e42ac..197846d1b739b6e287fa7f98919645694c9df865 100644 --- a/src/arome/ext/ini_wet_dep.F90 +++ b/src/arome/ext/ini_wet_dep.F90 @@ -1,7 +1,7 @@ ! ######spl SUBROUTINE INI_WET_DEP USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################### ! !!**** *INI_RAIN_ICE * - initialize the constants necessary for the warm and @@ -132,7 +132,7 @@ REAL :: ZTHVREFZ !* 1.1 Set the hailstones maximum fall velocity ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('INI_WET_DEP',0,ZHOOK_HANDLE) IF (ALLOCATED(XRTMIN)) THEN ! In case of nesting microphysics constants of ! MODD_RAIN_ICE_PARAM are computed only once, diff --git a/src/arome/ext/mf_phys_next_state_type_mod.fypp b/src/arome/ext/mf_phys_next_state_type_mod.fypp new file mode 100644 index 0000000000000000000000000000000000000000..f2551685327f60224a69f404235bd67bda36ad2f --- /dev/null +++ b/src/arome/ext/mf_phys_next_state_type_mod.fypp @@ -0,0 +1,278 @@ +#:mute +#:set config_file = os.path.dirname(_THIS_FILE_) + '/field_config.yaml' +#:set config = field_config.VariableConfiguration(config_file) +#:set gfl = config.groups['GFL'] + +#:endmute +MODULE MF_PHYS_NEXT_STATE_TYPE_MOD + +USE PARKIND1, ONLY : JPIM, JPRB +USE FIELD_MODULE +USE CPG_OPTS_TYPE_MOD, ONLY : CPG_DIMS_VARS_TYPE +IMPLICIT NONE + +TYPE MF_PHYS_NEXT_STATE_2D_TYPE + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P (:) => NULL () + TYPE (FIELD_2D), POINTER :: F_P => NULL () +END TYPE MF_PHYS_NEXT_STATE_2D_TYPE + +TYPE MF_PHYS_NEXT_STATE_3D_TYPE + REAL (KIND=JPRB), POINTER, CONTIGUOUS :: P (:, :) => NULL () + TYPE (FIELD_3D), POINTER :: F_P => NULL () +END TYPE MF_PHYS_NEXT_STATE_3D_TYPE + +TYPE MF_PHYS_NEXT_STATE_TYPE + + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE) :: U + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE) :: V + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE) :: T + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE) :: SVD + TYPE (MF_PHYS_NEXT_STATE_2D_TYPE) :: SP + +#:for v in gfl.variables + #:if v.array + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE), ALLOCATABLE :: ${v.name}$ (:) + #:elif v.dim == 3 + TYPE (MF_PHYS_NEXT_STATE_3D_TYPE) :: ${v.name}$ + #:endif +#:endfor + + + TYPE (CPG_DIMS_VARS_TYPE) :: DIMS + +CONTAINS + + PROCEDURE :: INIT => MF_PHYS_NEXT_STATE_TYPE_INIT + PROCEDURE :: UPDATE_VIEW => MF_PHYS_NEXT_STATE_TYPE_UPDATE_VIEW + +END TYPE MF_PHYS_NEXT_STATE_TYPE + +CONTAINS + +SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_INIT (SELF, YDCPG_SL1, YDGEOMETRY, YDVARS, YDMODEL) + +USE GEOMETRY_MOD, ONLY : GEOMETRY +USE FIELD_VARIABLES_MOD, ONLY: FIELD_VARIABLES +USE CPG_TYPE_MOD, ONLY : CPG_SL1_TYPE +USE TYPE_MODEL , ONLY : MODEL + +CLASS (MF_PHYS_NEXT_STATE_TYPE) :: SELF +TYPE (CPG_SL1_TYPE), INTENT (IN) :: YDCPG_SL1 +TYPE(GEOMETRY), INTENT (IN) :: YDGEOMETRY +TYPE (FIELD_VARIABLES), INTENT (IN) :: YDVARS +TYPE(MODEL), INTENT (IN) :: YDMODEL + +INTEGER (KIND=JPIM) :: JGFL + +ASSOCIATE (YDDYN => YDMODEL%YRML_DYN%YRDYN) + +CALL SELF%DIMS%INIT (YDGEOMETRY, YDMODEL, YDVARS) + +IF (YDMODEL%YRML_DYN%YRDYNA%LSLAG) THEN + + ! Taken from cp_ptrslb1.F90 + + IF (YDDYN%NWLAG == 4) THEN + SELF%U%P => YDCPG_SL1%U0%P + SELF%U%F_P => YDCPG_SL1%U0%F_P + SELF%V%P => YDCPG_SL1%V0%P + SELF%V%F_P => YDCPG_SL1%V0%F_P + ELSE + IF (YDDYN%NSPLTHOI /= 0) THEN + SELF%U%P => YDCPG_SL1%UF9%P + SELF%U%F_P => YDCPG_SL1%UF9%F_P + SELF%V%P => YDCPG_SL1%VF9%P + SELF%V%F_P => YDCPG_SL1%VF9%F_P + ELSE + SELF%U%P => YDCPG_SL1%U9%P + SELF%U%F_P => YDCPG_SL1%U9%F_P + SELF%V%P => YDCPG_SL1%V9%P + SELF%V%F_P => YDCPG_SL1%V9%F_P + ENDIF + ENDIF + ! * temperature + IF (YDDYN%NTLAG == 4) THEN + SELF%T%P => YDCPG_SL1%T0%P + SELF%T%F_P => YDCPG_SL1%T0%F_P + ELSE + IF (YDDYN%NSPLTHOI /= 0) THEN + SELF%T%P => YDCPG_SL1%TF9%P + SELF%T%F_P => YDCPG_SL1%TF9%F_P + ELSE + SELF%T%P => YDCPG_SL1%T9%P + SELF%T%F_P => YDCPG_SL1%T9%F_P + ENDIF + ENDIF + ! * vertical divergence + IF (YDDYN%NSVDLAG == 4) THEN + SELF%SVD%P => YDCPG_SL1%VD0%P + SELF%SVD%F_P => YDCPG_SL1%VD0%F_P + ELSE + IF (YDDYN%NSPLTHOI /= 0) THEN + SELF%SVD%P => YDCPG_SL1%VDF9%P + SELF%SVD%F_P => YDCPG_SL1%VDF9%F_P + ELSE + SELF%SVD%P => YDCPG_SL1%VD9%P + SELF%SVD%F_P => YDCPG_SL1%VD9%F_P + ENDIF + ENDIF + + SELF%SP%P => YDCPG_SL1%SP9%P + SELF%SP%F_P => YDCPG_SL1%SP9%F_P + + ! * GFL arrays + IF (YDDYN%LSPLTHOIGFL.OR.(YDDYN%NSPLTHOI /= 0)) THEN +#:for v in gfl.variables + #:if v.array + IF (ASSOCIATED (YDVARS%${v.name}$)) THEN + ALLOCATE (SELF%${v.name}$ (SIZE (YDVARS%${v.name}$))) + DO JGFL = 1, SIZE (YDVARS%${v.name}$) + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_SPLTHOI_3D (YDVARS%${v.name}$(JGFL), SELF%${v.name}$(JGFL), YDCPG_SL1%${v.name}$(JGFL)) + ENDDO + ENDIF + #:elif v.dim == 3 + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_SPLTHOI_3D (YDVARS%${v.name}$, SELF%${v.name}$, YDCPG_SL1%${v.name}$) + #:endif +#:endfor + ELSE +#:for v in gfl.variables + #:if v.array + IF (ASSOCIATED (YDVARS%${v.name}$)) THEN + ALLOCATE (SELF%${v.name}$ (SIZE (YDVARS%${v.name}$))) + DO JGFL = 1, SIZE (YDVARS%${v.name}$) + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_3D (YDVARS%${v.name}$(JGFL), SELF%${v.name}$(JGFL), YDCPG_SL1%${v.name}$(JGFL)) + ENDDO + ENDIF + #:elif v.dim == 3 + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_3D (YDVARS%${v.name}$, SELF%${v.name}$, YDCPG_SL1%${v.name}$) + #:endif +#:endfor + ENDIF + +ELSE + + SELF%U%P => YDVARS%U%T1 + SELF%U%F_P => YDVARS%U%FT1 + SELF%V%P => YDVARS%V%T1 + SELF%V%F_P => YDVARS%V%FT1 + SELF%T%P => YDVARS%T%T1 + SELF%T%F_P => YDVARS%T%FT1 + SELF%SVD%P => YDVARS%SVD%T1 + SELF%SVD%F_P => YDVARS%SVD%FT1 + SELF%SP%P => YDVARS%SP%T1 + SELF%SP%F_P => YDVARS%SP%FT1 + +#:for v in gfl.variables + #:if v.array + IF (ASSOCIATED (YDVARS%${v.name}$)) THEN + ALLOCATE (SELF%${v.name}$ (SIZE (YDVARS%${v.name}$))) + DO JGFL = 1, SIZE (YDVARS%${v.name}$) + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_EUL_3D (YDVARS%${v.name}$(JGFL), SELF%${v.name}$(JGFL)) + ENDDO + ENDIF + #:elif v.dim == 3 + CALL MF_PHYS_NEXT_STATE_TYPE_INIT_EUL_3D (YDVARS%${v.name}$, SELF%${v.name}$) + #:endif +#:endfor + +ENDIF + +END ASSOCIATE + +CONTAINS + +SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_INIT_EUL_3D (YDV3D, YDN3D) + +USE VARIABLE_MODULE, ONLY: VARIABLE_3D + +TYPE (VARIABLE_3D), INTENT (IN) :: YDV3D +TYPE (MF_PHYS_NEXT_STATE_3D_TYPE), INTENT (INOUT) :: YDN3D + +YDN3D%P => YDV3D%T1 +YDN3D%F_P => YDV3D%FT1 + +END SUBROUTINE + +SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_INIT_3D (YDV3D, YDN3D, YDF3D) + +USE CPG_TYPE_MOD, ONLY : CPG_SL1_3D_TYPE +USE VARIABLE_MODULE, ONLY: VARIABLE_3D + +TYPE (VARIABLE_3D), INTENT (IN) :: YDV3D +TYPE (MF_PHYS_NEXT_STATE_3D_TYPE), INTENT (INOUT) :: YDN3D +TYPE (CPG_SL1_3D_TYPE), INTENT (IN) :: YDF3D + +IF (YDV3D%LADV) THEN + YDN3D%P => YDF3D%P + YDN3D%F_P => YDF3D%F_P +ELSE + YDN3D%P => YDV3D%T1 + YDN3D%F_P => YDV3D%FT1 +ENDIF + +END SUBROUTINE + +SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_INIT_SPLTHOI_3D (YDV3D, YDN3D, YDF3D) + +USE CPG_TYPE_MOD, ONLY : CPG_SL1_3D_TYPE +USE VARIABLE_MODULE, ONLY: VARIABLE_3D + +TYPE (VARIABLE_3D), INTENT (IN) :: YDV3D +TYPE (MF_PHYS_NEXT_STATE_3D_TYPE), INTENT (INOUT) :: YDN3D +TYPE (CPG_SL1_3D_TYPE), INTENT (IN) :: YDF3D + +IF (YDV3D%LADV) THEN + YDN3D%P => YDF3D%P_F + YDN3D%F_P => YDF3D%F_P_F +ELSE + YDN3D%P => YDV3D%T1 + YDN3D%F_P => YDV3D%FT1 +ENDIF + +END SUBROUTINE + +END SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_INIT + +SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_UPDATE_VIEW (SELF, BLOCK_INDEX) +CLASS (MF_PHYS_NEXT_STATE_TYPE) :: SELF +INTEGER(KIND=JPIM), INTENT (IN) :: BLOCK_INDEX + +INTEGER (KIND=JPIM) :: JGFL + +IF (ASSOCIATED (SELF%U%F_P)) THEN + SELF%U%P => SELF%U%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + +IF (ASSOCIATED (SELF%V%F_P)) THEN + SELF%V%P => SELF%V%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + +IF (ASSOCIATED (SELF%T%F_P)) THEN + SELF%T%P => SELF%T%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + +IF (ASSOCIATED (SELF%SVD%F_P)) THEN + SELF%SVD%P => SELF%SVD%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + +IF (ASSOCIATED (SELF%SP%F_P)) THEN + SELF%SP%P => SELF%SP%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + +#:for v in gfl.variables + #:if v.array +DO JGFL = 1, SIZE (SELF%${v.name}$) + IF (ASSOCIATED (SELF%${v.name}$(JGFL)%F_P)) THEN + SELF%${v.name}$(JGFL)%P => SELF%${v.name}$(JGFL)%F_P%GET_VIEW (BLOCK_INDEX) + ENDIF +ENDDO + #:elif v.dim == 3 +IF (ASSOCIATED (SELF%${v.name}$%F_P)) THEN + SELF%${v.name}$%P => SELF%${v.name}$%F_P%GET_VIEW (BLOCK_INDEX) +ENDIF + #:endif +#:endfor + +END SUBROUTINE MF_PHYS_NEXT_STATE_TYPE_UPDATE_VIEW + +END MODULE MF_PHYS_NEXT_STATE_TYPE_MOD diff --git a/src/arome/ext/spp_mod_type.F90 b/src/arome/ext/spp_mod_type.F90 deleted file mode 100644 index 9878fb5f795b5adaaaecdd8ead6c98015f905843..0000000000000000000000000000000000000000 --- a/src/arome/ext/spp_mod_type.F90 +++ /dev/null @@ -1,123 +0,0 @@ -MODULE SPP_MOD_TYPE - - USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL - IMPLICIT NONE - - TYPE TSPP_CONFIG_TYPE - - INTEGER :: MP_SELF=-1 - - LOGICAL :: LPERT=.FALSE. - LOGICAL :: LPRINT=.TRUE. - LOGICAL :: LLNN_MEAN1=.FALSE. - LOGICAL :: LPERT_UNIFORM=.FALSE. - - REAL :: CMPERT - REAL :: UNIFORM_OFFSET - REAL :: SDEV - REAL :: CLIP(2) - REAL, POINTER :: PGP2DSPP(:) => NULL(), & - PTRNDIAG(:) => NULL() - - CHARACTER(LEN=20) :: CTAG = '#' - - END TYPE TSPP_CONFIG_TYPE - - TYPE ALL_SPP_VARS - - ! Gather all parameter holders for convenience - - TYPE(TSPP_CONFIG_TYPE) :: YSPP_RADGR,YSPP_RADSN, & - YSPP_CLDDPTH,YSPP_CLDDPTHDP, & - YSPP_RFAC_TWOC,YSPP_RZC_H,YSPP_RZL_INF, & - YSPP_PSIGQSAT,YSPP_ICE_CLD_WGT, & - YSPP_RSWINHF,YSPP_RLWINHF, & - YSPP_ICENU,YSPP_KGN_ACON,YSPP_KGN_SBGR - - END TYPE ALL_SPP_VARS - - CONTAINS - - ! - !----------------------------------------------------------------------- - ! - - SUBROUTINE CLEAR_SPP_TYPE(TSPP) - IMPLICIT NONE - TYPE(TSPP_CONFIG_TYPE), INTENT(INOUT) :: TSPP - END SUBROUTINE CLEAR_SPP_TYPE - - ! - !----------------------------------------------------------------------- - ! - - SUBROUTINE SET_SPP_TYPE(TSPP,CTAG,LLNN_MEAN1_SELF, & - LPERT_UNIFORM, & - CMPERT,UNIFORM_OFFSET,SDEV,CLIP,MP_SELF, & - KLON,KLEV,NEZDIAG, & - KSTA,KEND, & - PGP2DSPP,PEZDIAG) - IMPLICIT NONE - TYPE(TSPP_CONFIG_TYPE), INTENT(INOUT) :: TSPP - CHARACTER(LEN=*), INTENT(IN ) :: CTAG - LOGICAL, INTENT(IN ) :: LLNN_MEAN1_SELF,LPERT_UNIFORM - REAL , INTENT(IN ) :: CMPERT,UNIFORM_OFFSET,SDEV,CLIP(2) - INTEGER , INTENT(IN ) :: MP_SELF,KLON,KLEV,KSTA,KEND, & - NEZDIAG - REAL , TARGET, INTENT(IN ) :: PGP2DSPP(KLON,0) - REAL , TARGET, INTENT(INOUT) :: PEZDIAG(KLON,KLEV,NEZDIAG) - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'SPP_MOD_TYPE', 'SET_SPP_TYPE is not implemented in PHYEX') - END SUBROUTINE SET_SPP_TYPE - - ! - !----------------------------------------------------------------------- - ! - - SUBROUTINE APPLY_SPP(TSPP, & - KLON,KSTA,KEND, & - PREFVAL,PFIELD) - IMPLICIT NONE - TYPE(TSPP_CONFIG_TYPE), INTENT(INOUT) :: TSPP - INTEGER , INTENT(IN ) :: KLON,KSTA,KEND - REAL , INTENT(IN ) :: PREFVAL - REAL , INTENT(INOUT) :: PFIELD(KLON) - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'SPP_MOD_TYPE', 'APPLY_SPP is not implemented in PHYEX') - END SUBROUTINE APPLY_SPP - - ! - !----------------------------------------------------------------------- - ! - - SUBROUTINE DIA_SPP(TSPP,KSTA,KEND) - IMPLICIT NONE - TYPE(TSPP_CONFIG_TYPE), INTENT(IN) :: TSPP - INTEGER , INTENT(IN) :: KSTA,KEND - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'SPP_MOD_TYPE', 'DIA_SPP is not implemented in PHYEX') - END SUBROUTINE DIA_SPP - - ! - !----------------------------------------------------------------------- - ! - SUBROUTINE SET_ALL_SPP(KLON,KLEV,NGFL_EZDIAG, & - KIDIA,KFDIA,PGP2DSPP,PEZDIAG,YSPP_ALL) - IMPLICIT NONE - INTEGER , INTENT(IN ) :: KLON,KLEV,NGFL_EZDIAG,KIDIA,KFDIA - REAL , TARGET, INTENT(IN ) :: PGP2DSPP(KLON,0) - REAL , INTENT(INOUT) :: PEZDIAG(KLON,KLEV,NGFL_EZDIAG) - TYPE(ALL_SPP_VARS), INTENT(INOUT) :: YSPP_ALL - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'SPP_MOD_TYPE', 'SET_ALL_SPP is not implemented in PHYEX') - END SUBROUTINE SET_ALL_SPP - - ! - !----------------------------------------------------------------------- - ! - - SUBROUTINE CLEAR_ALL_SPP(YSPP_ALL) - IMPLICIT NONE - TYPE(ALL_SPP_VARS), INTENT(INOUT) :: YSPP_ALL - CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'SPP_MOD_TYPE', 'CLEAR_ALL_SPP is not implemented in PHYEX') - END SUBROUTINE CLEAR_ALL_SPP - -END MODULE SPP_MOD_TYPE - - diff --git a/src/arome/ext/su0yomb.F90 b/src/arome/ext/su0yomb.F90 index ce54f09d5079a427a5feb4c7e85168e16aa02993..b2c81e8ed5c8c6c12d78ed3401f56158052d989b 100644 --- a/src/arome/ext/su0yomb.F90 +++ b/src/arome/ext/su0yomb.F90 @@ -102,8 +102,9 @@ SUBROUTINE SU0YOMB(YDFPOS,YDGEOMETRY,YDFIELDS,YDMTRAJ,YDMODEL,YDJOT,YDVARBC,YDTC ! S. Massart 19-Feb-2019 Augmented control variable ! Y. Michel, MF, Mar 2019 Extention of the control variable for sqrt EnVar ! C. Lupu 29-Mar-2019 Allow call to SUINSKTE -! R. El Khatib 20-Sep-2021 Manage dependency between post-processor and surface fields objects ! L. Descamps, MF, Feb 2020 : Add a call to random parameters scheme for PEARP +! M. Leutbecher Oct-2020 SPP abstraction +! R. El Khatib 20-Sep-2021 Manage dependency between post-processor and surface fields objects ! R. El Khatib 18-Jul-2022 LAPL_ARPEGE in YRPHY ! ------------------------------------------------------------------ @@ -113,17 +114,17 @@ USE VARIABLES_MOD , ONLY : VARIABLES, VARIABLES_CREATE, VARIABLES_DELETE USE FIELDS_MOD , ONLY : FIELDS, FIELDS_CREATE, FIELDS_DELETE, FIELDS_CONTAIN USE MTRAJ_MOD , ONLY : MTRAJ USE PARKIND1 , ONLY : JPIM, JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE YOMLUN , ONLY : NULOUT USE JO_TABLE_MOD , ONLY : JO_TABLE USE YOMCT0 , ONLY : LR2D ,NCONF, LBACKG, LSPBSBAL, LELAM,LARPEGEF,& & LOBS, LOBSC1, LSCREEN, LIFSTRAJ, LIFSMIN, NFPOS,& & NFRCO, LGRIB_API USE YOMARG , ONLY : NGRIBFILE -USE YOMVAR , ONLY : LMODERR , LVARBC, LJCDFI, LMONITOR_FCDEPAR,LBACKGERENORM, LACV,LENSCV +USE YOMVAR , ONLY : LMODERR , LVARBC, LJCDFI, LMONITOR_FCDEPAR,LBACKGERENORM, LECV,LENSCV USE ALGORITHM_STATE_MOD , ONLY : GET_NUPTRA USE YOMJG , ONLY : JB_STRUCT -USE YOMJQ , ONLY : LSTATMERR +USE YOMJQ , ONLY : YGERRMOD, LSTATMERR USE YOMLCZ , ONLY : L_SUBSPACE_SVS, LFORCEWR USE YOMCVA , ONLY : CVA_STRUCT, SCALP_STRUCT, CVA_DATA USE YOMSKTER , ONLY : YGSKTER @@ -132,10 +133,9 @@ USE TRAJECTORY_MOD , ONLY : LTRAJRESET, LTRAJHR, ALLOCATE_TRAJECTORY,& USE YOMGWDIAG , ONLY : SETUP_GWDIAG USE YEMJK , ONLY : LEJK USE YOMINI , ONLY : LDFI -USE YOMSPSDT , ONLY : YSPPT_CONFIG, YSPPT USE YOE_CUCONVCA , ONLY : INI_CUCONVCA USE MODULE_RADTC_MIX, ONLY : YM_RADTC ,SUPTRTC -USE YEMLBC_MODEL , ONLY : SUELBC_MODEL +USE YEMLBC_MODEL , ONLY : SUELBC_MODEL,SUELBC_INIT,SUELBC_FIELDS_DIM USE YEMLBC_FIELDS , ONLY : SUELBC_FIELDS USE YOMIO_SERV , ONLY : IO_SERV_C001 USE YOM_GRIB_CODES , ONLY : NGRBNOXLOG @@ -143,13 +143,13 @@ USE SPNG_MOD , ONLY : SUSPNG USE YOMTRAJ , ONLY : LTRAJALLOC, TRAJEC USE YOMMP0 , ONLY : NPROC USE TESTVAR_MIX , ONLY : SETUP_TESTVAR -USE SPP_MOD , ONLY : YSPP_CONFIG, YSPP USE VARBC_CLASS , ONLY : CLASS_VARBC -USE TOVSCV_MOD , ONLY : TOVSCV,CREATE_TOVSCV -USE TOVSCV_BGC_MOD , ONLY : TOVSCV_BGC,CREATE_TOVSCV_BGC +USE TOVSCV_MOD , ONLY : TOVSCV +USE TOVSCV_BGC_MOD , ONLY : TOVSCV_BGC USE YOMSPJB , ONLY : BACKGROUND, ALLOCATE_JB_REF_STATE -USE YOMJBACV , ONLY : LJB_HYBRID_ACV, LPAROPTIACV, READ_FG_ACV -USE YOMJBPAR1DACV , ONLY : SUPARACVMIN +USE YOMJBECV , ONLY : LJB_ALPHA_CV, LECPHYSPARECV, READ_FG_ECV +USE YOMJBPAR1DECV , ONLY : SUPARECVMIN +USE YOMJBECPHYSECV ,ONLY : SUINFCE_ECPHYS, LSOLARCST USE MPL_MODULE , ONLY : MPL_END, MPL_BARRIER USE IOSTREAM_MIX , ONLY : IOSTREAM_STATS,YGBH USE DBASE_MOD , ONLY : DBASE @@ -159,6 +159,8 @@ USE YOMXFU , ONLY : TXFU_KEYS USE YOMFP_SERV, ONLY : FP_SERV_C001 USE CONTROL_VECTORS_MOD USE SPECTRAL_FIELDS_MOD +USE YOMMODERR , ONLY : SPCTLMODERR +USE OBS_STORE_OPTIONS_MOD, ONLY : YDOBS_STORE_OPTIONS @@ -202,7 +204,7 @@ TYPE(VARIABLES) :: YL_VARS, YNLVARS TYPE(FIELDS) :: YL_TRAJ, YLINFCE !!$CHARACTER(LEN=9) :: CLCONF -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ------------------------------------------------------------------ #include "get_spp_conf.intfb.h" @@ -250,6 +252,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE #include "suinfce.intfb.h" #include "suinskte.intfb.h" #include "sueinfce.intfb.h" +#include "suinterpolator.intfb.h" #include "suensdim.intfb.h" #include "suenscov.intfb.h" #include "sufw.intfb.h" @@ -296,7 +299,7 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE #include "suallr.intfb.h" #include "fp_serv_suiosctmpl.intfb.h" #include "fp_serv_cpfpfilter.intfb.h" -#include "setjbhybacv.intfb.h" +#include "setjbalphacv.intfb.h" #include "suapl_arpege.intfb.h" #include "supertpar.intfb.h" #include "su_surf_flds.intfb.h" @@ -317,7 +320,9 @@ ASSOCIATE(YDGFL5=>YDMTRAJ%YRGFL5,YDGMV5=>YDMTRAJ%YRGMV5, YDGFL=>YDFIELDS%YRGFL,Y & YDLAP=>YDGEOMETRY%YRLAP, YDSTA=>YDGEOMETRY%YRSTA, YDVAB=>YDGEOMETRY%YRVAB, & & YDSIMPHL=>YDMODEL%YRML_PHY_MF%YRSIMPHL,YDLDDH=>YDMODEL%YRML_DIAG%YRLDDH, YDML_LBC=>YDMODEL%YRML_LBC, & & YDEWCOU=>YDMODEL%YREWCOU, & - & YDRCOEF=>YDMODEL%YRML_PHY_RAD%YRRCOEF,YGFL=>YDMODEL%YRML_GCONF%YGFL,YDDIMF=>YDMODEL%YRML_GCONF%YRDIMF) + & YDRCOEF=>YDMODEL%YRML_PHY_RAD%YRRCOEF,YGFL=>YDMODEL%YRML_GCONF%YGFL,YDDIMF=>YDMODEL%YRML_GCONF%YRDIMF, & + & YDSPPT_CONFIG=>YDMODEL%YRML_GCONF%YRSPPT_CONFIG, YDSPPT=>YDMODEL%YRML_SPPT, & + & YDSPP_CONFIG=>YDMODEL%YRML_GCONF%YRSPP_CONFIG, YDSPP=>YDMODEL%YRML_SPP) ASSOCIATE(NCHEM_ASSIM=>YGFL%NCHEM_ASSIM, NDIM5=>YGFL%NDIM5, YCOMP=>YGFL%YCOMP, & & NCMAX=>YDDIM%NCMAX, NGPBLKS=>YDDIM%NGPBLKS, NMSMAX=>YDDIM%NMSMAX, & @@ -331,7 +336,6 @@ ASSOCIATE(NCHEM_ASSIM=>YGFL%NCHEM_ASSIM, NDIM5=>YGFL%NDIM5, YCOMP=>YGFL%YCOMP, & & LSDDH=>YDLDDH%LSDDH, & & NALLMS=>YDMP%NALLMS, NPTRLL=>YDMP%NPTRLL, NPTRMS=>YDMP%NPTRMS, & & NUMLL=>YDMP%NUMLL, NPSURF=>YDMP%NPSURF, & - & LWCOU=>YDEWCOU%LWCOU, & & LRCOEF=>YDRCOEF%LRCOEF, & & LRAYSP=>YDSIMPHL%LRAYSP) ! ------------------------------------------------------------------ @@ -362,7 +366,7 @@ IF (LBACKG .OR. LOBSC1 .OR. NCONF == 401 .OR. NCONF == 501 .OR. NCONF == 601 .OR WRITE(NULOUT,*) '------ Set up Jb parameters ------------',CLINE ALLOCATE(JB_STRUCT) ALLOCATE(CVA_DATA) - CALL SUJB(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMACV,YGFL,JB_STRUCT,CVA_DATA) + CALL SUJB(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMECV,YGFL,JB_STRUCT,CVA_DATA) ENDIF ENDIF @@ -379,6 +383,8 @@ IF (LLDIMO) THEN ! OBSERVATION SETUP CAN BE SKIPPED WHEN COMPUTING JB ! Initialize dimensions for obs. processing, Jo and Jg related arrays + CALL YDOBS_STORE_OPTIONS%SETUP() + IWINLEN = YDMODEL%YRML_GCONF%YRRIP%NSTOP*YDMODEL%YRML_GCONF%YRRIP%TSTEP CALL SUDIMO(YDGEOMETRY,IWINLEN,NULOUT,YDODB) @@ -395,27 +401,29 @@ IF (LLDIMO) THEN ! OBSERVATION SETUP CAN BE SKIPPED WHEN COMPUTING JB IF (LOBS .AND. LVARBC) THEN IF (IABS(NCONF/100)==1) THEN IF (.NOT.ASSOCIATED(CVA_DATA)) CALL ABOR1('CVA_DATA has not been set up') - CALL YDVARBC%SETUP_MIN(CVA_DATA%NVAPARAM) + CALL YDVARBC%SETUP_MIN(CVA_DATA%NVAPARAM, YDODB) ENDIF ENDIF IF (LOBS) THEN IF (IABS(NCONF/100)==1) THEN - CALL CREATE_TOVSCV(YDTCV) - CALL CREATE_TOVSCV_BGC(YDTCV_BGC) + CALL YDTCV%CREATE_TOVSCV() + CALL YDTCV_BGC%CREATE_TOVSCV_BGC() ENDIF ENDIF ENDIF !* Allocate spectral arrays WRITE(NULOUT,*) '-- Set up spectral arrays allocation-',CLINE -CALL SUSPVARIABLES(YDMODEL%YRML_GCONF) +CALL SUSPVARIABLES(YDMODEL%YRML_GCONF,YDMODEL%YRML_DYN%YRDYNA%LNHX,& + & YDMODEL%YRML_DYN%YRDYNA%LNHDYN) IF(NCONF /= 901.AND.NCONF /= 923) THEN IGRIB(1:NS3D)=YDMODEL%YRML_GCONF%YRDIMF%NGRBSP3(:) IGRIB(NS3D+1:NS3D+NS2D)=YDMODEL%YRML_GCONF%YRDIMF%NGRBSP2(:) WRITE(NULOUT,*)'-- Calling ALLOCATE_SPEC ',IGRIB(1:NS3D+NS2D) - CALL ALLOCATE_SPEC(YDFIELDS%YRSPEC, NFLEVL, NFLEVG, NUMP, MYMS, NSMAX, NMSMAX, NALLMS,& +!! CALL ALLOCATE_SPEC(YDFIELDS%YRSPEC, NFLEVL, NFLEVG, NUMP, MYMS, NSMAX, NMSMAX, NALLMS,& + CALL CREATE_SPEC(YDFIELDS%YRSPEC, NFLEVL, NFLEVG, NUMP, MYMS, NSMAX, NMSMAX, NALLMS,& & NPTRMS, NUMLL, NPTRLL, NPSURF, NS3D, NS2D, IGRIB) - CALL SUALSPA(YDGEOMETRY) + CALL SUALSPA(YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA%LGRADSP) ELSE WRITE(NULOUT,*) 'SU0YOMB: No call for SUALSPA1' ENDIF @@ -445,7 +453,8 @@ SETUP_JB: IF (LBACKG .OR. LOBSC1 .OR. NCONF == 401 .OR. NCONF == 501 .OR. NCONF & (LTRAJHR .AND. LIFSTRAJ)) THEN ALLOCATE(BACKGROUND) ENDIF - CALL ALLOCATE_SPEC(JB_STRUCT%JB_DATA%SPJB, YDGEOMETRY, JB_STRUCT%CONFIG%SPVARS) +!! CALL ALLOCATE_SPEC(JB_STRUCT%JB_DATA%SPJB, YDGEOMETRY, JB_STRUCT%CONFIG%SPVARS) + CALL ALLOC_SPEC(JB_STRUCT%JB_DATA%SPJB, YDGEOMETRY, JB_STRUCT%CONFIG%SPVARS) IF(NCONF == 801)CALL SUALLR(YDGEOMETRY,JB_STRUCT) ! Setup dimensioning for wavelet Jb @@ -497,7 +506,8 @@ ENDIF !* Set up DFI (we need geometry for SSDFI) IF (LDFI .OR. LJCDFI) THEN WRITE(NULOUT,*) '---- Set up DFI: SUDFI -----',CLINE - CALL SUDFI(YDMODEL%YRML_PHY_EC%YREPHY,YDMODEL%YRML_GCONF%YRRIP,YDMODEL%YRML_PHY_MF%YRPHY) + CALL SUDFI(YDMODEL%YRML_PHY_EC%YREPHY,YDMODEL%YRML_GCONF%YRRIP,YDMODEL%YRML_PHY_MF%YRPHY, & + & YDMODEL%YRML_LBC%LTENC) ENDIF !* Allocate OI CANARI grid points arrays @@ -522,13 +532,17 @@ CALL SETUP_TESTVAR(YDMODEL%YRML_GCONF%YRRIP) WRITE(NULOUT,*) '---- Set up model dynamics ----------',CLINE CALL SUDYN(YDGEOMETRY,YDMODEL,NULOUT) +!* Initialize vertical interpolator +WRITE(NULOUT,*) '---- Set up vertical interpolator -------',CLINE +CALL SUINTERPOLATOR(YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA,YDMODEL%YRML_DYN%YRSLINT) + !* Initialize Relaxation WRITE(NULOUT,*) '------ Set up Relaxation ',CLINE CALL SURLX(YDDIM,YDDIMV,YDMODEL%YRML_GCONF%YRRIP,NULOUT) !* Initialize new sponge WRITE(NULOUT,*) '---- Set up new sponge ----------',CLINE -CALL SUSPNG(YDMODEL%YRML_DYN%YRSPNG,YDMODEL%YRML_GCONF%YRRIP,YDDIMV%NFLEVG,YDSTA%STZ) +CALL SUSPNG(YDMODEL%YRML_DYN%YRSPNG,YDMODEL%YRML_GCONF%YRRIP,YDMODEL%YRML_DYN%YRDYNA,YDDIMV%NFLEVG,YDSTA%STZ) !* Initialize control of DFI: SUFW IF (LDFI .OR. LJCDFI ) THEN @@ -552,7 +566,8 @@ IF (.NOT.LR2D) THEN !* Initialize special keys for the climate version 2nd part WRITE(NULOUT,*) '---- Set up MCC climate model keys (lagged part) --',CLINE CALL SUMCCLAG(YDGEM,YDMODEL%YRML_GCONF,YDMODEL%YRML_AOC,YDMODEL%YRML_CHEM%YRCOMPO, & - & YDMODEL%YRML_CHEM%YRCHEM, YDMODEL%YRML_PHY_EC%YREPHY, NULOUT, YDSURF=YDSURF) + & YDMODEL%YRML_CHEM%YRCHEM, YDMODEL%YRML_PHY_AER%YREAERSRC, & + & YDMODEL%YRML_PHY_EC%YREPHY, NULOUT, YDSURF=YDSURF) ENDIF !* Initialize variables for VAREPS (NB: must be called before SUGRIB) @@ -573,6 +588,11 @@ IF (NCONF /= 901 .AND. NCONF /= 903) THEN CALL SUSC2B(YDGEOMETRY,YDMODEL) ENDIF + + + + + !* Initialize IAU handling WRITE(NULOUT,*) '---- Set up IAU handling -',CLINE CALL SUIAU(YDMODEL%YRML_GCONF%YRRIP) @@ -646,7 +666,7 @@ CALL SU_SURF_FLDS(YDGEOMETRY%YRDIMV,YDFIELDS%YRSURF,YDMODEL,KPPVCLIX=IVCLIX,KPPE !* Initialize DDH (Horizontal domains diagnostics) WRITE(NULOUT,*) '------ Set up DDH diagnostics --------',CLINE -CALL SUNDDH(YDGEOMETRY,YDFIELDS%YRSURF,YDMODEL) +CALL SUNDDH(YDGEOMETRY,YDMODEL) !The call to SUNDDH is too late because the LSDDH key is needed in SUPHMPA !The folowing lines are a workaround for this problem (the call to @@ -672,20 +692,25 @@ ENDIF !* Initialize buffers for gridpoint scanning, part C WRITE(NULOUT,*) '---- Set up gridpoint scanning, part C ----',CLINE -CALL SUSC2C(YDGEOMETRY,YDMODEL%YRML_PHY_EC%YREPHY,YDMODEL%YRML_GCONF,YDMODEL%YRML_PHY_MF%YRPHY,YNLVARS,YDFIELDS%YRGFL, & +CALL SUSC2C(YDGEOMETRY,YDMODEL%YRML_PHY_EC%YREPHY,YDMODEL%YRML_GCONF,YDMODEL%YRML_PHY_MF%YRPHY, & + & YDMODEL%YRML_DYN%YRDYNA,YDMODEL%YRML_LBC%LTENC,YNLVARS,YDFIELDS%YRGFL, & & YDFIELDS%YRGMV,YDFIELDS%YRSURF) CALL VARIABLES_DELETE(YNLVARS) -!* Initialize forcing by coarser model: part C -IF (LELAM) THEN +!* Initialize forcing by coarser model +WRITE(NULOUT,*) '--- Set up forcing by coarser model part A ---------',CLINE +CALL SUELBC_INIT(YDMODEL%YRML_DYN%YRDYNA,YDMODEL%YRML_LBC) + +IF (LELAM .AND. NCONF /= 923) THEN WRITE(NULOUT,*) '--- Set up forcing by coarser model part C ---------',CLINE - CALL SUELBC_FIELDS(YDFIELDS%YRELBC_FIELDS,YDGEOMETRY,YDFIELDS%YRGMV,YDMODEL%YRML_GCONF%YGFL,YDDIMF%NFD2D,YDDIMF%NS3D) -ENDIF + CALL SUELBC_FIELDS_DIM(YDMODEL%YRML_LBC,YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA, & + & YDMODEL%YRML_GCONF%YGFL,YDDIMF%NFD2D,YDDIMF%NS3D) -!* Initialize forcing by coarser model: part B -IF (LELAM) THEN WRITE(NULOUT,*) '--- Set up forcing by coarser model part B ---------',CLINE - CALL SUELBC_MODEL(YDMODEL%YRML_LBC,YDFIELDS%YRELBC_FIELDS,YDGEOMETRY,YDFIELDS%YRGMV,YDMODEL%YRML_GCONF) + CALL SUELBC_MODEL(YDMODEL%YRML_LBC,YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA,YDFIELDS%YRGMV,YDMODEL%YRML_GCONF) + + CALL SUELBC_FIELDS(YDFIELDS%YRELBC_FIELDS,YDMODEL%YRML_LBC,YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA,YDFIELDS%YRGMV,& + & YDMODEL%YRML_GCONF%YGFL,YDDIMF%NFD2D,YDDIMF%NS3D) ENDIF !* Initialize cumulated fluxes requests @@ -706,7 +731,8 @@ CALL SUALTDH(YDDIMV,YDMODEL%YRML_DIAG,YDMODEL%YRML_PHY_MF%YRARPHY,YDMODEL%YRML_P !* Memory allocation for dynamical DDH tendencies arrays WRITE(NULOUT,*) '---- Set up dynamical DDH arrays allocation --',CLINE -CALL SUALDYN_DDH(YDGEOMETRY,YDMODEL%YRML_DIAG,YDMODEL%YRML_GCONF) +CALL SUALDYN_DDH(YDGEOMETRY,YDMODEL%YRML_DIAG,YDMODEL%YRML_GCONF,& + & YDMODEL%YRML_DYN%YRDYNA%LNHDYN,YDMODEL%YRML_DYN%YRDYNA%LNHX) ! Setup model error arrays IF (LMODERR.OR.LSTATMERR) THEN @@ -718,10 +744,10 @@ ENDIF IF (NCONF/100 /= 9 .AND. NCONF /= 1 .AND. NCONF /= 302 .AND. NCONF /= 201 .AND. NCONF /= 701) THEN IF(ASSOCIATED(JB_STRUCT)) THEN IF (.NOT.ASSOCIATED(CVA_DATA)) CALL ABOR1('Call SUALCTV, but CVA_DATA is not set up') - IF (LPAROPTIACV) THEN - CVA_DATA%NVPARACV=YDMODEL%YRML_GCONF%YRDIMACV%NACV_1D + IF (LECPHYSPARECV) THEN + CVA_DATA%NVPARECV=YDMODEL%YRML_GCONF%YRDIMECV%NECV_1D ELSE - CVA_DATA%NVPARACV=0 + CVA_DATA%NVPARECV=0 ENDIF IF (LENSCV) THEN WRITE(NULOUT,*) '-- Allocate ens. control variable-',CLINE @@ -733,7 +759,7 @@ IF (NCONF/100 /= 9 .AND. NCONF /= 1 .AND. NCONF /= 302 .AND. NCONF /= 201 .AND. ENDIF WRITE(NULOUT,*) '-- Allocate static control variable-',CLINE ALLOCATE(CTLVEC_STRUCT) - CALL SUALCTV(YDGEOMETRY,CTLVEC_STRUCT,CVA_DATA,JB_STRUCT,YDMODEL%YRML_GCONF%YRDIMACV) + CALL SUALCTV(YDGEOMETRY,CTLVEC_STRUCT,CVA_DATA,JB_STRUCT,YDMODEL%YRML_GCONF%YRDIMECV) ELSE CALL ABOR1(' SU0YOMB: case where JB_STRUCT is used, but is not yet set up') ENDIF @@ -929,41 +955,42 @@ IF (LBACKG) THEN ENDIF CALL SUECGES(YDGEOMETRY,YDFIELDS,YDMTRAJ,YDMODEL,BACKGROUND,JB_STRUCT) - IF(.NOT.LELAM .OR. .NOT.JB_STRUCT%CONFIG%LSPFCE) THEN - CALL VARIABLES_CREATE(YL_VARS, .FALSE.) - CALL FIELDS_CREATE(YLINFCE,YDGEOMETRY,YDMODEL,YL_VARS) - CALL VARIABLES_DELETE(YL_VARS) -!!$ IF(LTRAJHR) THEN - CALL GET_TRAJ_GRID(YDGEOMETRY,YDMODEL%YRML_GCONF,BACKGROUND,YDGMV,YDGMV5,YLINFCE%YRGMV%GMV,& - & YLINFCE%YRGMV%GMVS,YLINFCE%YRGFL%GFL,GET_NUPTRA()) -!!$ ELSE -!!$ CALL SUINIF(YDGEOMETRY,YLINFCE%YRGFL,YLINFCE%YRSURF,0,YLINFCE%YRSPEC) -!!$ CLCONF(1:9)='0AAX00000' -!!$ CALL TRANSINVH(YLINFCE%GEOM,YLINFCE%YRGFL,YLINFCE%YRGMV,CLCONF,YLINFCE%YRSPEC) -!!$ ENDIF - WRITE(NULOUT,*) '---- Set up Jb gridpoint background error stdev --',CLINE - IF (LELAM) THEN - CALL SUEINFCE(YDGEOMETRY,JB_STRUCT) - ELSE - CALL SUINFCE(YDGEOMETRY,YDMODEL%YRML_GCONF,YLINFCE,JB_STRUCT) - ENDIF - CALL FIELDS_DELETE(YLINFCE) - ENDIF - IF (.NOT.LELAM .AND. LACV .AND. IABS(NCONF/100)==1) THEN - WRITE(NULOUT,*) '---- Set up JB augmented control variable --',CLINE - CALL READ_FG_ACV(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMACV,LDBCK=.TRUE.) - CALL READ_FG_ACV(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMACV) - IF (LPAROPTIACV) CALL SUPARACVMIN(YDGEOMETRY) - IF (LJB_HYBRID_ACV) CALL SETJBHYBACV(YDGEOMETRY, YDMTRAJ, YDFIELDS, YDMODEL, BACKGROUND, JB_STRUCT) - ENDIF - - + IF(.NOT.LELAM .OR. .NOT.JB_STRUCT%CONFIG%LSPFCE) THEN + CALL VARIABLES_CREATE(YL_VARS, .FALSE.) + CALL FIELDS_CREATE(YLINFCE,YDGEOMETRY,YDMODEL,YL_VARS) + CALL VARIABLES_DELETE(YL_VARS) +!!$ IF(LTRAJHR) THEN + CALL GET_TRAJ_GRID(YDGEOMETRY,YDMODEL%YRML_GCONF,BACKGROUND,YDGMV,YDGMV5,YLINFCE%YRGMV%GMV,& + & YLINFCE%YRGMV%GMVS,YLINFCE%YRGFL%GFL,GET_NUPTRA()) +!!$ ELSE +!!$ CALL SUINIF(YDGEOMETRY,YLINFCE%YRGFL,YLINFCE%YRSURF,0,YLINFCE%YRSPEC) +!!$ CLCONF(1:9)='0AAX00000' +!!$ CALL TRANSINVH(YLINFCE%GEOM,YLINFCE%YRGFL,YLINFCE%YRGMV,CLCONF,YLINFCE%YRSPEC) +!!$ ENDIF + WRITE(NULOUT,*) '---- Set up Jb gridpoint background error stdev --',CLINE + IF (LELAM) THEN + CALL SUEINFCE(YDGEOMETRY,JB_STRUCT) + ELSE + CALL SUINFCE(YDGEOMETRY,YDMODEL%YRML_GCONF,YLINFCE,JB_STRUCT) + ENDIF + CALL FIELDS_DELETE(YLINFCE) + ENDIF + IF (.NOT.LELAM .AND. LECV .AND. IABS(NCONF/100)==1) THEN + WRITE(NULOUT,*) '---- Set up JB extended control variable --',CLINE + CALL READ_FG_ECV(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMECV,YDFIELDS%YRSURF,LDBCK=.TRUE.) + CALL READ_FG_ECV(YDGEOMETRY,YDMODEL%YRML_GCONF%YRDIMECV) + IF (LECPHYSPARECV) THEN + CALL SUINFCE_ECPHYS(YDGEOMETRY,JB_STRUCT) + IF (LSOLARCST) CALL SUPARECVMIN(YDGEOMETRY) + ENDIF + IF (LJB_ALPHA_CV) CALL SETJBALPHACV(YDGEOMETRY, YDMTRAJ, YDFIELDS, YDMODEL, BACKGROUND, JB_STRUCT) + ENDIF ENDIF !* Initialize Jq error covariances IF (LMODERR) THEN WRITE(NULOUT,*) '---- Set up Jq error covariances --',CLINE - CALL SUJQ(YDGEOMETRY,YDMODEL%YRML_GCONF%YRRIP) + CALL SUJQ(YGERRMOD,YDGEOMETRY,SPCTLMODERR) ENDIF !* Delete temporary FIELDS-type trajectory structure @@ -973,8 +1000,10 @@ ENDIF ! Set up spectral stochastic diabatic tendencies WRITE(NULOUT,'(A72)') '--- Set up stochastically perturbed parametrization tendencies '//CLINE WRITE(NULOUT,*) ' SPPT a.k.a. stochastic physics with spectral pattern' -CALL SUSPSDT(YDGEOMETRY,YDMODEL%YRML_GCONF%YRRIP,YSPPT_CONFIG,YSPPT) +CALL SUSPSDT(YDGEOMETRY,YDMODEL%YRML_GCONF%YRRIP,YDSPPT_CONFIG,YDSPPT) +#ifndef WITHOUT_SURFEX CALL SUPERTPAR(YDMODEL%YRML_PHY_MF,YDMODEL%YRML_PHY_EC%YRECUMF,YDMODEL%YRML_PHY_RAD%YRERAD) +#endif !* Initialize scalar product IF(.NOT.(NCONF == 1.OR.NCONF == 302.OR.ICONF == 2.OR.ICONF == 9.OR.ICONF == 7 )) THEN @@ -1014,14 +1043,15 @@ IF (.NOT. LTRAJALLOC .AND. ((NCONF /= 401).AND.(NCONF /= 501).AND. (& ENDIF WRITE(NULOUT,'(A72)') '--- Set up stochastic physics, SPBS, CABS '//CLINE -CALL INI_CUCONVCA(YDGEOMETRY,YDMODEL%YRML_PHY_EC%YRECUCONVCA,YDMODEL%YRML_DYN%YRSL) +CALL INI_CUCONVCA(YDGEOMETRY,YDMODEL%YRML_DYN%YRDYNA,& + & YDMODEL%YRML_PHY_EC%YRECUCONVCA,YDMODEL%YRML_DYN%YRSL) CALL SURAND1(YDGEOMETRY,YDMODEL%YRML_PHY_STOCH,YDMODEL%YRML_DYN%YRDYN,YDMODEL%YRML_GCONF%YRRIP, & & YDMODEL%YRML_PHY_EC%YRECUCONVCA) ! Set up stochastically perturbed parameterisation scheme WRITE(NULOUT,*) '--- Set up stochastically perturbed parametrization scheme (SPP) ',CLINE -CALL GET_SPP_CONF(YDMODEL%YRML_GCONF%YRRIP,YSPP_CONFIG) -CALL INI_SPP(YDGEOMETRY,YDMODEL%YRML_GCONF%YRRIP,YSPP_CONFIG,YSPP) +CALL GET_SPP_CONF(YDMODEL%YRML_GCONF%YRRIP,YDSPP_CONFIG) +CALL INI_SPP(YDGEOMETRY,YDMODEL%YRML_GCONF%YRRIP,YDSPP_CONFIG,YDSPP) ! provide optional GEOMETRY argument here, since these are MODEL processes rather than IO_SERV ones WRITE(NULOUT,*) '---- Create io server file templates --',CLINE @@ -1035,7 +1065,7 @@ CALL SETUP_GWDIAG(YDDIM) ! Set up flexible physics-dynamics interface WRITE(NULOUT,*) '---- Set up flexible physics-dynamics interface --',CLINE CALL SUINTFLEX(YGFL,YDMODEL%YRML_PHY_MF%YRARPHY,YDMODEL%YRML_PHY_MF%YRPHY) -CALL FIELDS_CONTAIN(YDFIELDS,YDGEOMETRY) +CALL FIELDS_CONTAIN(YDFIELDS,YDGEOMETRY,YDMODEL) IF (YDMODEL%YRML_PHY_MF%YRPHY%LAPL_ARPEGE) THEN ! Check LAPL_ARPEGE consistency diff --git a/src/arome/ext/suparar.F90 b/src/arome/ext/suparar.F90 index 95243b7c226a1c2b1e1f9e7f8cf82ff6e5838816..799230107f419e21a1b304f18b93ff9637719c50 100644 --- a/src/arome/ext/suparar.F90 +++ b/src/arome/ext/suparar.F90 @@ -59,7 +59,7 @@ SUBROUTINE SUPARAR(YDGEOMETRY,YGFL,YDML_PHY_MF,KULOUT) USE MODEL_PHYSICS_MF_MOD , ONLY : MODEL_PHYSICS_MF_TYPE USE PARKIND1 ,ONLY : JPIM ,JPRB -USE YOMHOOK ,ONLY : LHOOK ,DR_HOOK +USE YOMHOOK ,ONLY : LHOOK ,DR_HOOK, JPHOOK USE YOM_YGFL ,ONLY : TYPE_GFLD USE GEOMETRY_MOD, ONLY : GEOMETRY USE YOMCT0 ,ONLY : NUNDEFLD, LSFORCS @@ -81,7 +81,7 @@ INTEGER(KIND=JPIM) :: INDEF ! ------------------------------------------------------------------ -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ------------------------------------------------------------------ diff --git a/src/arome/ext/suphmpa.F90 b/src/arome/ext/suphmpa.F90 index a1bfcd912127f26828e3a3985eafb4af9153ff7a..35ceb6164e74523771d371c78cd12f7b161a24ab 100644 --- a/src/arome/ext/suphmpa.F90 +++ b/src/arome/ext/suphmpa.F90 @@ -1,4 +1,4 @@ -SUBROUTINE SUPHMPA(YDGEOMETRY,YDLDDH,YDML_GCONF,YDML_PHY_MF,KULOUT) +SUBROUTINE SUPHMPA(YDGEOMETRY,YDLDDH,YDML_GCONF,YDDYNA,YDML_PHY_MF,KULOUT) !**** *SUPHMPA* - Initialize common meso_NH MODD_ used in physics for AROME @@ -52,11 +52,12 @@ USE MODEL_GENERAL_CONF_MOD , ONLY : MODEL_GENERAL_CONF_TYPE USE MODEL_PHYSICS_MF_MOD , ONLY : MODEL_PHYSICS_MF_TYPE USE GEOMETRY_MOD , ONLY : GEOMETRY USE PARKIND1 ,ONLY : JPIM ,JPRB -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK USE YOMLUN ,ONLY : NULNAM +USE YOMDYNA , ONLY : TDYNA USE YOMLDDH , ONLY : TLDDH -USE YOMCT0 ,ONLY : LTWOTL, LELAM +USE YOMCT0 ,ONLY : LELAM USE MODD_BUDGET, ONLY : TBUCONF_ASSOCIATE, TBUCONF USE MODI_INI_PHYEX, ONLY: INI_PHYEX @@ -68,6 +69,7 @@ IMPLICIT NONE TYPE(GEOMETRY) ,INTENT(IN) :: YDGEOMETRY TYPE(TLDDH) ,INTENT(INOUT) :: YDLDDH TYPE(MODEL_GENERAL_CONF_TYPE),INTENT(INOUT):: YDML_GCONF +TYPE(TDYNA), INTENT(IN) :: YDDYNA TYPE(MODEL_PHYSICS_MF_TYPE),INTENT(INOUT):: YDML_PHY_MF INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT @@ -75,7 +77,7 @@ INTEGER(KIND=JPIM),INTENT(IN) :: KULOUT REAL(KIND=JPRB) :: ZTSTEP, ZDZMIN -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE CHARACTER(LEN=4) :: CSCONV LOGICAL :: LLNOTMAP @@ -129,8 +131,8 @@ IF (LELAM) THEN ELSE LLNOTMAP=.TRUE. ENDIF -CALL AROINI_CONF (KULOUT,LTWOTL,LLNOTMAP) !only needed for LFLAT key used in turbulence - !call must be suppressed once turbulence source code will be updated +CALL AROINI_CONF (KULOUT,YDDYNA%LTWOTL,LLNOTMAP) !only needed for LFLAT key used in turbulence + !call must be suppressed once turbulence source code will be updated ! 3. Initialisation of Budget diff --git a/src/arome/ext/suphmse.F90 b/src/arome/ext/suphmse.F90 index 0a98bbb10772c95ecd186a5609b55c873e9538c7..b3f306ba1643ea1b69af5c4cc7562bdb63b82788 100644 --- a/src/arome/ext/suphmse.F90 +++ b/src/arome/ext/suphmse.F90 @@ -64,11 +64,11 @@ SUBROUTINE SUPHMSE(YDGEOMETRY,YDMODEL,KULOUT) USE GEOMETRY_MOD , ONLY : GEOMETRY USE TYPE_MODEL, ONLY : MODEL USE PARKIND1 ,ONLY : JPIM ,JPRB, JPRD -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK USE YOMCST ,ONLY : YDCST=>YRCST ! allows use of included functions. REK. USE YOMRIP0 ,ONLY : NINDAT -USE YOMCT0 ,ONLY : LTWOTL, LELAM, L_OOPS +USE YOMCT0 ,ONLY : LELAM, L_OOPS USE YOMNSV ,ONLY : NSV_CHEMBEG, NSV_CHEMEND, NSV_DSTBEG, NSV_DSTEND,& & NSV_AERBEG, NSV_AEREND, NSV_CO2,NSV_DSTDEPBEG,& & NSV_DSTDEPEND @@ -89,7 +89,7 @@ INTEGER(KIND=JPIM) :: IDAY, IMONTH, IYEAR, IMYPROC LOGICAL :: LLNOTMAP -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ------------------------------------------------------------------ @@ -106,7 +106,8 @@ REAL(KIND=JPRB) :: ZHOOK_HANDLE ! ------------------------------------------------------------------ IF (LHOOK) CALL DR_HOOK('SUPHMSE',0,ZHOOK_HANDLE) ASSOCIATE(YDDIM=>YDGEOMETRY%YRDIM,YDDIMV=>YDGEOMETRY%YRDIMV,YDGEM=>YDGEOMETRY%YRGEM, YDMP=>YDGEOMETRY%YRMP, & - & YDEGEO=>YDGEOMETRY%YREGEO, YDARPHY=>YDMODEL%YRML_PHY_MF%YRARPHY, YGFL=>YDMODEL%YRML_GCONF%YGFL) + & YDEGEO=>YDGEOMETRY%YREGEO, YDARPHY=>YDMODEL%YRML_PHY_MF%YRARPHY, YGFL=>YDMODEL%YRML_GCONF%YGFL, & + & YDDYNA=>YDMODEL%YRML_DYN%YRDYNA) ASSOCIATE(LRDUST=>YDARPHY%LRDUST, LINITDUST=>YDARPHY%LINITDUST, & & LRDEPOS=>YDARPHY%LRDEPOS, LUSECHEM=>YDARPHY%LUSECHEM, & & LINITORILAM=>YDARPHY%LINITORILAM, LMDUST=>YDARPHY%LMDUST, & @@ -129,7 +130,7 @@ ENDIF IF (.NOT.LMPA) THEN CALL INI_CST ENDIF -CALL AROINI_CONF(KULOUT,LTWOTL,LLNOTMAP) +CALL AROINI_CONF(KULOUT,YDDYNA%LTWOTL,LLNOTMAP) ! initialisation of chemistry, aerosols and dust scheme ! ANNEE diff --git a/src/arome/ext/vdfhghtnhl.F90 b/src/arome/ext/vdfhghtnhl.F90 index b71613613737f39ce31a87b7e161e0404f8864f6..ca6a3b016d90be0814a70612f79150c34bc78c7b 100644 --- a/src/arome/ext/vdfhghtnhl.F90 +++ b/src/arome/ext/vdfhghtnhl.F90 @@ -134,7 +134,7 @@ SUBROUTINE VDFHGHTNHL (YDVDF,YDEPHLI,YDECUMF,YDEPHY,YDPARAR,KIDIA , KFDIA , USE YOEPHLI , ONLY : TEPHLI USE PARKIND1 ,ONLY : JPIM ,JPRB -USE YOMHOOK ,ONLY : LHOOK, DR_HOOK +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK, JPHOOK USE YOMCST , ONLY : YDCST=>YRCST ! allows use of included functions. REK. USE YOETHF , ONLY : YDTHF=>YRTHF ! allows use of included functions. REK. @@ -303,7 +303,7 @@ REAL(KIND=JPRB) :: ZTAUEPS_TEST INTEGER(KIND=JPIM) :: IZI(KLON,KDRAFT) -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE #include "surf_inq.h" diff --git a/src/arome/ext/yemlbc_model.F90 b/src/arome/ext/yemlbc_model.F90 new file mode 100644 index 0000000000000000000000000000000000000000..2ca83584102a50ac7d90d1cc2431130fbd53f859 --- /dev/null +++ b/src/arome/ext/yemlbc_model.F90 @@ -0,0 +1,1665 @@ +MODULE YEMLBC_MODEL + +! Purpose : +! ------- +! Forcing a LAM model by another model: part 0B +! - forcing by lateral boundary conditions +! - pressure tendency coupling +! - spectral nudging + +! Interface : +! --------- +! Empty. + +! External : +! -------- +! None. + +! Method : +! ------ +! See Documentation. + +! Reference : +! --------- + +! Author : +! ------ +! K. YESSAD (CNRM/GMAP) after YEMBICU, YEMDYN, YEMGT3B, SUEBICU, SUEDYN, SUESC2. +! Original : December 2010 + +! Modifications : +! ------------- +! Daan Degrauwe: Feb 2012 Boyd biperiodization +! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. +! B. Bochenek (Oct 2013): Weights for LBC interpolation +! K. Yessad (July 2014): Move some variables. +! F. Taillefer (Aug 2015) Add control of no coupling at all in canari by namelist +! M. Hortal (Dec 2014): Upper boundary relaxation +! P. Marguinaud (Oct 2016) : Port to single precision +! J. Vivoda (Mar 2017): Fixing bug in options LQCPL and LCCPL +! WARNING! The bug is in swapping LBC buffers P*CPL entering ESC2R. Fix does +! not remove it, but adjusts interpolation weights EWB accordingly. Clean +! solution is to correct swapping of LBC buffers, otherwise the code will +! remain difficult to understand. +! H. Dhouioui (Sep 2017) renamed from elbc0b_mod.F90 +! O. Vignes (Feb 2020): Upper boundary relaxation fixes +! M. Hamrud (Oct 2021) incorporated YEMLBC_INIT. Forced by move of YOMDYNA +! into model object +!----------------------------------------------------------------------------- + +USE PARKIND1 , ONLY : JPIM, JPRB, JPRD +USE MODEL_GENERAL_CONF_MOD , ONLY : MODEL_GENERAL_CONF_TYPE +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK +USE YOMDFI , ONLY : NSTDFI, NSTDFIA, RTDFI, RTDFIA +USE YOMCT0 , ONLY : LRPLANE, LALLOPR, LCANARI,NCONF,LELAM +USE YOMGMV , ONLY : TGMV +USE YOMINI , ONLY : LDFI +USE YOMLUN , ONLY : NULOUT, NULNAM +USE YOMMP0 , ONLY : MYSETB, MYSETV, LOUTPUT + +IMPLICIT NONE +SAVE + +!============================================================================= + +! 1. TYPE DEFINITION +! --------------- + +! Moved form YEMLBC_FIELDS +! Structure for GMVS coupled fields in LTENC option. +TYPE TGMVSTENC +INTEGER(KIND=JPIM) :: MSP ! surface pressure variable +INTEGER(KIND=JPIM) :: MSPL ! zonal component of grad(surface pressure variable) +INTEGER(KIND=JPIM) :: MSPM ! meridian component of grad(surface pressure variable) +INTEGER(KIND=JPIM) :: NDIM ! number of coupled fields (includes derivatives) +INTEGER(KIND=JPIM) :: NDIMT ! number of temporally interpolated fields (includes derivatives) +END TYPE TGMVSTENC + +TYPE TGMVCPL +! coupled GMV +INTEGER(KIND=JPIM) :: MU ! U-wind +INTEGER(KIND=JPIM) :: MV ! V-wind +INTEGER(KIND=JPIM) :: MT ! temperature +INTEGER(KIND=JPIM) :: MSPD ! pressure departure variable +INTEGER(KIND=JPIM) :: MSVD ! vertical divergence variable +INTEGER(KIND=JPIM) :: MNHX ! NHX term +! derivatives required for linear terms calculation (in ESEIMPLS) +INTEGER(KIND=JPIM) :: MDIV ! horizontal divergence +INTEGER(KIND=JPIM) :: MTL ! zonal component of grad(temperature) +INTEGER(KIND=JPIM) :: MTM ! meridian component of grad(temperature) +INTEGER(KIND=JPIM) :: MSPDL ! zonal component of grad(pressure departure variable) +INTEGER(KIND=JPIM) :: MSPDM ! meridian component of grad(pressure departure variable) +INTEGER(KIND=JPIM) :: NDIM ! number of coupled fields (does not include derivatives) +INTEGER(KIND=JPIM) :: NDIMT ! number of temporally interpolated fields (includes derivatives) +END TYPE TGMVCPL + +TYPE TGMVSCPL +INTEGER(KIND=JPIM) :: MSP ! surface pressure variable +INTEGER(KIND=JPIM) :: MSPL ! zonal component of grad(surface pressure variable) +INTEGER(KIND=JPIM) :: MSPM ! meridian component of grad(surface pressure variable) +INTEGER(KIND=JPIM) :: NDIM ! number of coupled fields (does not include derivatives) +INTEGER(KIND=JPIM) :: NDIMT ! number of temporally interpolated fields (includes derivatives) +END TYPE TGMVSCPL + +! ** IMPORTED FROM YEMLBC_INIT +INTEGER(KIND=JPIM), PARAMETER :: JPLSGT=20 +INTEGER(KIND=JPIM), PARAMETER :: JPALFNM=31 + +TYPE :: TELBC_MODEL + +! 1.1 Coupling of surface pressure tendency + +! LTENC : TRUE if tendency coupling of surface pressure is switched on +! LALLTC : used together with LTENC when LTENC=.T. +! - no meaning for quadratic tendency coupling, where just t1 coupling +! is applied at every NEFRCL time step +! - for lin. tendency coupling: +! TRUE if tendency coupling of surf. pres. at every step +! FALSE if tend. coupl., except at every NEFRCL time steps +! when just t1 coupling + +LOGICAL :: LTENC +LOGICAL :: LALLTC +LOGICAL :: LRFIRST ! Force reading of first coupling file (usually, it is the + ! same as the initial conditions file) + +! 1.2 Lateral forcing + +! NBICOU : controls coupling of wind components (GMV) +! NBICOT : controls coupling of temperature (GMV) +! NBICPD : controls coupling of pressure departure variable (GMV) +! NBICVD : controls coupling of vertical divergence variable (GMV) +! NBICNHX : controls coupling of "NHX" term (GMV) +! NBICOP : controls coupling of surface pressure (GMVS) +! Possible value for the NBIC[X] variables: +! * 0: no coupling +! * 1: default coupling +! * 2: specific coupling function + +! NECRIPL : controls timelevel of coupling +! * 0: coupling at t +! * 1: coupling at t+dt +! * 2: coupling at t and t+dt +! LQCPL : if T (resp. F), quadratic (resp. linear) temporal interpolation +! LCCPL : if T (resp. F), cubic (resp. linear) temporal interpolation +! NECOTL : Controls the coupling in the tangent linear model: +! 0 - no coupling +! < 0 - coupling with the Davies relaxation +! -1 - the linear time interpolation is switched on +! > 0 - coupling other than Davies relaxation (to be implemented) +! NECOAD : cf. NECOTL but for the adjoint model. +! LE0COTA : TRUE if the relaxation in the I+E zone is towards +! nullified boundary conditions (assumed exact); +! FALSE if the relaxation is towards a predefined forcing. +! LE0COTA has the same meaning in the TL and AD models +! (respectively, relaxation to 0 perturbation or sensitivity) +! LEREADINI: TRUE if initial historical file has to be read +! (used for E501, E801 - not a namelist parameter) +! N1LSG : if =1, the gradient with respect to the large scale +! coupling data has to be written into a file. +! NFRLSG : frequency of writing large scale gradients (time or steps) +! NLSGTS : array containing large scale gradients timesteps +! * if NLSGTS(0)=0 action if MOD(JSTEP,NFRLSG)=0 +! * if NLSGTS(0)>0 NLSGTS(0) significant numbers in NLSGTS +! are then considered and action for JSTEP=NLSGTS(.)*NFRLSG +! * if NLSGTS(0)<0 action for JSTEP=(NLSGTS(.)/DELTAT)*NFRLSG +! LRDLSG : switch for using boundary data perturbation in conf 1 +! for sensitivity forecast run. +! JPALFNM : Dimension for reading alpha function parameters + +INTEGER(KIND=JPIM) :: NBICOU +INTEGER(KIND=JPIM) :: NBICOT +INTEGER(KIND=JPIM) :: NBICPD +INTEGER(KIND=JPIM) :: NBICVD +INTEGER(KIND=JPIM) :: NBICNHX +INTEGER(KIND=JPIM) :: NBICOP +INTEGER(KIND=JPIM) :: NECRIPL +LOGICAL :: LQCPL +LOGICAL :: LCCPL +INTEGER(KIND=JPIM) :: NECOTL +INTEGER(KIND=JPIM) :: NECOAD +LOGICAL :: LE0COTA +LOGICAL :: LEREADINI +INTEGER(KIND=JPIM) :: N1LSG +INTEGER(KIND=JPIM) :: NFRLSG +INTEGER(KIND=JPIM) :: NLSGTS(0:JPLSGT) +LOGICAL :: LRDLSG + +! 1.3 Spectral nudging + +! LESPCPL : control of spectral nudging + +LOGICAL :: LESPCPL +LOGICAL :: LSPTENC + +! 1.4 Upper nesting boundary conditions + +! LUNBC : controls upper nesting boundary conditions + +LOGICAL :: LUNBC + + +! 2.1 LECOBI. + +! LECOBI : T if there is coupling and biperiodicisation + +LOGICAL :: LECOBI + +! ** END OF IMPORTED FROM YEMLBC_INIT + +! Moved from YEMLBC_FIELDS +! 1.1 Number of coupled fields, structures for coupled fields. + +! YYTGMVSTENC : contains pointers and number of coupled fields for GMVS in LTENC option +! YYTGMVCPL : contains pointers and number of coupled fields for GMV +! YYTGMVSCPL : contains pointers and number of coupled fields for GMVS +! NDIMCPL : number of GFL fields with true LCOUPLING attribute. +! NGALEF : total number of coupled fields. + +TYPE(TGMVSTENC) :: YYTGMVSTENC +TYPE(TGMVCPL) :: YYTGMVCPL +TYPE(TGMVSCPL) :: YYTGMVSCPL +INTEGER(KIND=JPIM) :: NDIMCPL +INTEGER(KIND=JPIM) :: NGALEF +! End ofMoved from YEMLBC_FIELDS + +! 2. DECLARATIONS +! ------------ + +! 2.0 Control frequency of LBC. + +! NEFRCL : frequency of updating the lateral boundary coupling fields. +! The LBC fields will be updated every NEFRCL time steps. +! NETLS1 : Time step of the first set of lateral boundary fields. +! TEFRCL : time interval between two updatings of the lateral boundary fields + +INTEGER(KIND=JPIM) :: NEFRCL +INTEGER(KIND=JPIM) :: NETLS1 +REAL(KIND=JPRB) :: TEFRCL + +! 2.2 Namelist variables for relaxation coefficients (resp for GMV, GMVS, GFL). + +REAL(KIND=JPRB) :: EPA_GMV(JPALFNM) +REAL(KIND=JPRB) :: EPA_GMVS(JPALFNM) +REAL(KIND=JPRB) :: EPA_GFL(JPALFNM) + +! 2.3 Relaxation coefficients. + +! EALFA_GMV : relaxation coefficients alpha for GMV. +! EALFA_GMVS : relaxation coefficients alpha for GMVS. +! EALFA_GFL : relaxation coefficients alpha for GFL. +! EALFA_TENC : relaxation coefficients alpha for LTENC (GMVS only). +! EALFAGT3GMV : ALFA (relax. coef.) of coupling points for GMV +! EALFAGT3GMVS : ALFA (relax. coef.) of coupling points for GMVS +! EALFAGT3GFL : ALFA (relax. coef.) of coupling points for GFL +! EALFAU_GMV : relaxation coefficients alpha for GMV (upper boundary). +! EALFAU_GFL : relaxation coefficients alpha for GFL (upper boundary). + +REAL(KIND=JPRB),ALLOCATABLE:: EALFA_GMV(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFA_GMVS(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFA_GFL(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFA_TENC(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFAGT3GMV(:,:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFAGT3GMVS(:,:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFAGT3GFL(:,:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFAU_GMV(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EALFAU_GFL(:,:) + +! 2.4 Other variables for grid-point coupling. + +! GMGT3 : GM array of coupling points +! GMGT4 : GM array of coupling points (upper boundary). +! EWB : weights for couplings +! EWBDFIFW : weights for forward DFI +! EWBDFIBW : weights for backward DFI +! RTENC : multiplier of EALFA in the tendency coupling scheme +! for stability reasons (RTENC<=1. close to 1) + +REAL(KIND=JPRB),ALLOCATABLE:: GMGT3(:,:) +REAL(KIND=JPRB),ALLOCATABLE:: GMGT4(:) +REAL(KIND=JPRB),ALLOCATABLE:: EWB(:,:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EWBDFIFW(:,:,:,:) +REAL(KIND=JPRB),ALLOCATABLE:: EWBDFIBW(:,:,:,:) +REAL(KIND=JPRB) :: RTENC + +! 2.5 Other variables for spectral nudging. + +! LSPNUSPDL : .TRUE. if spectral nudging on Ps is relevant on this MPI task +! RNUDTFRAC : Time fraction for spectral nudging +! NEFRSPCPL : frequency of spectral nudging +! NEK0,NEK1 : lower and upper limits for total wavenumber for spectral nudging +! NEN1,NEN2 : lower and upper model levels for spectral nudging +! SPNUDVOR : spectral nudging coeficient for vorticity +! SPNUDDIV : spectral nudging coeficient for divergence +! SPNUDT : spectral nudging coeficient for temperature +! SPNUDQ : spectral nudging coeficient for specific humidity +! SPNUDSP : spectral nudging coeficient for surface pressure +! LNUDSPGFL : An array to control if any spectral GFL, for nudging + +LOGICAL, ALLOCATABLE :: LNUDSPGFL(:) +LOGICAL :: LSPNUSPDL +REAL(KIND=JPRB) :: RNUDTFRAC +INTEGER(KIND=JPIM) :: NEFRSPCPL +INTEGER(KIND=JPIM) :: NEK0 +INTEGER(KIND=JPIM) :: NEK1 +INTEGER(KIND=JPIM) :: NEN1 +INTEGER(KIND=JPIM) :: NEN2 +REAL(KIND=JPRB) :: SPNUDVOR +REAL(KIND=JPRB) :: SPNUDDIV +REAL(KIND=JPRB) :: SPNUDT +REAL(KIND=JPRB) :: SPNUDQ +REAL(KIND=JPRB) :: SPNUDSP +REAL(KIND=JPRB) :: RNUTENC + +END TYPE TELBC_MODEL + + +!============================================================================= + +CONTAINS + +SUBROUTINE SUELBC_FIELDS_DIM(YDML_LBC,YDGEOMETRY,YDDYNA,YGFL,KNFD2D,KNS3D) +!-------------------------------------------------------------------------- +! Sets-up part 0C of forcing a LAM model by another model +!-------------------------------------------------------------------------- + +!-------------------------------------------------------------------------- + +USE GEOMETRY_MOD , ONLY : GEOMETRY +USE YOM_YGFL , ONLY : TYPE_GFLD +USE YOMDYNA , ONLY : TDYNA +TYPE(TELBC_MODEL) , INTENT(INOUT) :: YDML_LBC +TYPE(GEOMETRY) , INTENT(IN) :: YDGEOMETRY +TYPE(TDYNA) , INTENT(IN) :: YDDYNA +TYPE(TYPE_GFLD) , INTENT(INOUT) :: YGFL +INTEGER(KIND=JPIM), INTENT(IN) :: KNFD2D +INTEGER(KIND=JPIM), INTENT(IN) :: KNS3D +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE +INTEGER(KIND=JPIM) :: IWS_TENC, ICPL, JGFL, IW, IW_TENC + +!-------------------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('YEMLBC_FIELDS:SUELBC_FIELDS_DIM',0,ZHOOK_HANDLE) +!-------------------------------------------------------------------------- + +! Part A: calculations and allocations. + +! * Calculation of YYGMVSTENC, YYTGMVCPL, YYGMVSCPL, NDIMCPL, NGALEF: + + +! YYGMVSTENC: +IF (YDML_LBC%LTENC) THEN + YDML_LBC%YYTGMVSTENC%MSP=1 + YDML_LBC%YYTGMVSTENC%MSPL=2 + YDML_LBC%YYTGMVSTENC%MSPM=3 + YDML_LBC%YYTGMVSTENC%NDIM=3 + YDML_LBC%YYTGMVSTENC%NDIMT=3 +ELSE + YDML_LBC%YYTGMVSTENC%MSP=1 + YDML_LBC%YYTGMVSTENC%MSPL=1 + YDML_LBC%YYTGMVSTENC%MSPM=1 + YDML_LBC%YYTGMVSTENC%NDIM=1 + YDML_LBC%YYTGMVSTENC%NDIMT=1 +ENDIF + +! YYTGMVCPL: +IF (NCONF == 701) THEN + ! derivatives are useless because ESEIMPLS is not called. + IF (YDDYNA%LNHDYN.AND.YDDYNA%LNHX) THEN + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 4 + YDML_LBC%YYTGMVCPL%MSVD = 5 + YDML_LBC%YYTGMVCPL%MNHX = 6 + YDML_LBC%YYTGMVCPL%NDIM = 6 + YDML_LBC%YYTGMVCPL%NDIMT= 6 + ELSEIF (YDDYNA%LNHDYN.AND.(.NOT.YDDYNA%LNHX)) THEN + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 4 + YDML_LBC%YYTGMVCPL%MSVD = 5 + YDML_LBC%YYTGMVCPL%MNHX = 5 + YDML_LBC%YYTGMVCPL%NDIM = 5 + YDML_LBC%YYTGMVCPL%NDIMT= 5 + ELSE + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 3 + YDML_LBC%YYTGMVCPL%MSVD = 3 + YDML_LBC%YYTGMVCPL%MNHX = 3 + YDML_LBC%YYTGMVCPL%NDIM = 3 + YDML_LBC%YYTGMVCPL%NDIMT= 3 + ENDIF +ELSE +! derivatives are useful because ESEIMPLS is called. + IF (YDDYNA%LNHDYN.AND.YDDYNA%LNHX) THEN + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 4 + YDML_LBC%YYTGMVCPL%MSVD = 5 + YDML_LBC%YYTGMVCPL%MNHX = 6 + YDML_LBC%YYTGMVCPL%NDIM = 6 + YDML_LBC%YYTGMVCPL%MDIV = 7 + YDML_LBC%YYTGMVCPL%MTL = 8 + YDML_LBC%YYTGMVCPL%MTM = 9 + YDML_LBC%YYTGMVCPL%MSPDL=10 + YDML_LBC%YYTGMVCPL%MSPDM=11 + YDML_LBC%YYTGMVCPL%NDIMT=11 + ELSEIF (YDDYNA%LNHDYN.AND.(.NOT.YDDYNA%LNHX)) THEN + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 4 + YDML_LBC%YYTGMVCPL%MSVD = 5 + YDML_LBC%YYTGMVCPL%MNHX = 5 + YDML_LBC%YYTGMVCPL%NDIM = 5 + YDML_LBC%YYTGMVCPL%MDIV = 6 + YDML_LBC%YYTGMVCPL%MTL = 7 + YDML_LBC%YYTGMVCPL%MTM = 8 + YDML_LBC%YYTGMVCPL%MSPDL= 9 + YDML_LBC%YYTGMVCPL%MSPDM=10 + YDML_LBC%YYTGMVCPL%NDIMT=10 + ELSE + YDML_LBC%YYTGMVCPL%MU = 1 + YDML_LBC%YYTGMVCPL%MV = 2 + YDML_LBC%YYTGMVCPL%MT = 3 + YDML_LBC%YYTGMVCPL%MSPD = 3 + YDML_LBC%YYTGMVCPL%MSVD = 3 + YDML_LBC%YYTGMVCPL%MNHX = 3 + YDML_LBC%YYTGMVCPL%NDIM = 3 + YDML_LBC%YYTGMVCPL%MDIV = 4 + YDML_LBC%YYTGMVCPL%MTL = 5 + YDML_LBC%YYTGMVCPL%MTM = 6 + YDML_LBC%YYTGMVCPL%MSPDL= 6 + YDML_LBC%YYTGMVCPL%MSPDM= 6 + YDML_LBC%YYTGMVCPL%NDIMT= 6 + ENDIF +ENDIF + +! YYGMVSCPL: +IF (NCONF == 701) THEN + ! derivatives are useless because ESEIMPLS is not called. + YDML_LBC%YYTGMVSCPL%MSP=1 + YDML_LBC%YYTGMVSCPL%NDIM=1 + YDML_LBC%YYTGMVSCPL%NDIMT=1 +ELSE + ! derivatives are useful because ESEIMPLS is called. + YDML_LBC%YYTGMVSCPL%MSP=1 + YDML_LBC%YYTGMVSCPL%MSPL=2 + YDML_LBC%YYTGMVSCPL%MSPM=3 + YDML_LBC%YYTGMVSCPL%NDIM=1 + YDML_LBC%YYTGMVSCPL%NDIMT=3 +ENDIF + +! YDML_LBC%NDIMCPL: +ICPL=0 +DO JGFL=1,YGFL%NUMFLDS + IF (YGFL%YCOMP(JGFL)%NCOUPLING /= 0) THEN + ICPL=ICPL+1 + ENDIF +ENDDO +YDML_LBC%NDIMCPL=ICPL + +! YDML_LBC%NGALEF: +YDML_LBC%NGALEF=YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%NDIM+YDML_LBC%NDIMCPL + + +!-------------------------------------------------------------------------- + +! Part B: printings. + +WRITE(NULOUT,*) ' --- PRINTINGS IN SUELBC_FIELDS_DIM --- ' + +! * B1: Number of coupled fields. +WRITE(UNIT=NULOUT,FMT='('' Grid-point coupling: '')') +WRITE(UNIT=NULOUT,FMT='('' nb of GMV fields with temporal interpolation: YDML_LBC%YYTGMVCPL%NDIMT = '',I4)')& + & YDML_LBC%YYTGMVCPL%NDIMT +WRITE(UNIT=NULOUT,FMT='('' nb of coupled GMV fields: YDML_LBC%YYTGMVCPL%NDIM = '',I4)') YDML_LBC%YYTGMVCPL%NDIM +WRITE(UNIT=NULOUT,FMT='('' nb of GMVS fields with temporal interpolation: YDML_LBC%YYTGMVSCPL%NDIMT = '',I4)')& + & YDML_LBC%YYTGMVSCPL%NDIMT +WRITE(UNIT=NULOUT,FMT='('' nb of coupled GMVS fields: YDML_LBC%YYTGMVSCPL%NDIM = '',I4)') YDML_LBC%YYTGMVSCPL%NDIM +WRITE(UNIT=NULOUT,FMT='('' nb of coupled GFL fields: YDML_LBC%NDIMCPL = '',I4)') YDML_LBC%NDIMCPL +WRITE(UNIT=NULOUT,FMT='('' total nb of coupled fields: YDML_LBC%NGALEF = '',I4)') YDML_LBC%NGALEF + + +!-------------------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('YEMLBC_FIELDS:SUELBC_FIELDS_DIM',1,ZHOOK_HANDLE) +END SUBROUTINE SUELBC_FIELDS_DIM +!===================================================================================== +SUBROUTINE SUELBC_INIT(YDDYNA,YDML_LBC) +USE YOMDYNA , ONLY : TDYNA + +!-------------------------------------------------------------------------- +! Sets-up part 0A of forcing a LAM model by another model +!-------------------------------------------------------------------------- +TYPE(TDYNA) , INTENT(IN) :: YDDYNA +TYPE(TELBC_MODEL),TARGET,INTENT(INOUT):: YDML_LBC + +!-------------------------------------------------------------------------- + +INTEGER(KIND=JPIM) :: J +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE +!----POINTERS FOR ASSOCIATION -------------------------- +LOGICAL,POINTER :: LTENC,LALLTC,LRFIRST +INTEGER(KIND=JPIM),POINTER :: NBICOU,NBICOT,NBICPD,NBICVD,NBICNHX,NBICOP,NECRIPL +LOGICAL,POINTER :: LQCPL,LCCPL +INTEGER(KIND=JPIM),POINTER :: NECOTL,NECOAD +LOGICAL,POINTER :: LE0COTA,LEREADINI +INTEGER(KIND=JPIM),POINTER :: N1LSG,NFRLSG,NLSGTS(:) +LOGICAL,POINTER :: LRDLSG +LOGICAL,POINTER :: LESPCPL,LSPTENC,LUNBC +!-------------------------------------------------------------------------- + +#include "abor1.intfb.h" +#include "posnam.intfb.h" + +#include "nemelbc0a.nam.h" + + +!-------------------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('YEMLBC_INIT:SUELBC_INIT',0,ZHOOK_HANDLE) +!-------------------------------------------------------------------------- + +!-------------------------------------------------------------------------- + +LTENC=>YDML_LBC%LTENC +LALLTC=>YDML_LBC%LALLTC +LRFIRST=>YDML_LBC%LRFIRST +NBICOU=>YDML_LBC%NBICOU +NBICOT=>YDML_LBC%NBICOT +NBICPD=>YDML_LBC%NBICPD +NBICVD=>YDML_LBC%NBICVD +NBICNHX=>YDML_LBC%NBICNHX +NBICOP=>YDML_LBC%NBICOP +NECRIPL=>YDML_LBC%NECRIPL +LQCPL=>YDML_LBC%LQCPL +LCCPL=>YDML_LBC%LCCPL +NECOTL=>YDML_LBC%NECOTL +NECOAD=>YDML_LBC%NECOAD +LE0COTA=>YDML_LBC%LE0COTA +LEREADINI=>YDML_LBC%LEREADINI +N1LSG=>YDML_LBC%N1LSG +NFRLSG=>YDML_LBC%NFRLSG +NLSGTS=>YDML_LBC%NLSGTS +LRDLSG=>YDML_LBC%LRDLSG +LESPCPL=>YDML_LBC%LESPCPL +LSPTENC=>YDML_LBC%LSPTENC +LUNBC=>YDML_LBC%LUNBC +! Part A: default values. + +! * Tendency coupling +LTENC=.FALSE. +LALLTC=.FALSE. +LRFIRST=.TRUE. + +! * Lateral forcing +IF (LELAM) THEN + NBICOU=1 + NBICOT=1 + IF (YDDYNA%LNHDYN) THEN + NBICPD=1 + NBICVD=1 + IF(YDDYNA%LNHX) THEN + NBICNHX=1 + ELSE + NBICNHX=0 + ENDIF + ELSE + NBICPD=0 + NBICVD=0 + NBICNHX=0 + ENDIF + NBICOP=1 + NECRIPL=1 + LQCPL=.FALSE. + LCCPL=.FALSE. + NECOAD=0 + NECOTL=0 + LE0COTA=.FALSE. + LEREADINI=.TRUE. + N1LSG=0 + NFRLSG=1 + DO J=0,JPLSGT + NLSGTS(J)=0 + ENDDO + LRDLSG=.FALSE. +ELSE + NBICOU=0 + NBICOT=0 + NBICOP=0 + NBICPD=0 + NBICVD=0 + NBICNHX=0 + NECRIPL=1 + LQCPL=.FALSE. + LCCPL=.FALSE. + NECOAD=0 + NECOTL=0 + LE0COTA=.FALSE. + LEREADINI=.FALSE. + N1LSG=0 + NFRLSG=1 + DO J=0,JPLSGT + NLSGTS(J)=0 + ENDDO + LRDLSG=.FALSE. +ENDIF + +! * Spectral nudging +LESPCPL=.FALSE. +LSPTENC=.FALSE. + +! * Upper nesting boundary conditions +LUNBC=.FALSE. + + +!-------------------------------------------------------------------------- + +! Part B: namelist reading. + +IF (LELAM) THEN + CALL POSNAM(NULNAM,'NEMELBC0A') + READ(NULNAM,NEMELBC0A) +ENDIF + +!-------------------------------------------------------------------------- + +! Part C: checkings. + +! * checkings on tendency coupling +IF (.NOT.LTENC.AND.LALLTC) THEN + CALL ABOR1('SUELBC_INIT: ABOR1 CALLED: .NOT.LTENC.AND.LALLTC') +ENDIF +IF (LTENC.AND.LRDLSG) THEN + CALL ABOR1('SUELBC_INIT: ABOR1 CALLED: LTENC.AND.LRDLSG') +ENDIF + +! * checkings on lateral boundary forcing +IF (NECRIPL /= 0.AND.NECRIPL /= 1.AND.NECRIPL /= 2) THEN + CALL ABOR1('SUELBC_INIT: IMPROPER VALUE FOR NECRIPL') +ENDIF +IF (LQCPL.AND.NCONF == 701) THEN + CALL ABOR1('SUELBC_INIT: LQCPL=.T. NOT PREPARED FOR NCONF=701') +ENDIF +IF (NECRIPL /= 0.AND.( NBICOU /= NBICOT.OR.NBICOU /= NBICOP ) ) THEN + WRITE(NULOUT,*) 'T1 COUPLING DOESNT LET COUPLING FUNCTIONS DIFFER' + CALL ABOR1 ('SUELBC_INIT: NECRIPL /= 0 and improper values of some NBIC..') +ENDIF + +!-------------------------------------------------------------------------- + +! Part D: printings. + +IF (LELAM) THEN + WRITE(NULOUT,*) ' --- PRINTINGS IN SUELBC_INIT --- ' + WRITE(NULOUT,*) ' LTENC = ',LTENC,' LALLTC = ',LALLTC + WRITE(NULOUT,*) ' LSPTENC = ',LSPTENC + WRITE(NULOUT,*) ' NBICOU = ',NBICOU,' NBICOT = ',NBICOT,' NBICOP = ',NBICOP + WRITE(NULOUT,*) ' NBICPD = ',NBICPD,' NBICVD = ',NBICVD,& + & ' NBICNHX = ',NBICNHX,' LQCPL = ',LQCPL,' LCCPL = ',LCCPL + WRITE(UNIT=NULOUT,FMT='('' NECRIPL = '',I2)') NECRIPL + WRITE(NULOUT,*) ' NECOAD = ',NECOAD,' NECOTL = ',NECOTL,' LE0COTA = ',LE0COTA + WRITE(NULOUT,FMT='('' NFRLSG = '',I2,'' N1LSG = '',I2)') NFRLSG,N1LSG + WRITE(NULOUT,*) ' NLSGTS = ',NLSGTS(0),(NLSGTS(J),J=1,ABS(NLSGTS(0))) + WRITE(NULOUT,FMT='('' LRDLSG = '',L2)') LRDLSG + WRITE(NULOUT,*) 'LESPCPL = ',LESPCPL + WRITE(NULOUT,*) 'LUNBC = ',LUNBC + WRITE(NULOUT,*) ' ' +ENDIF + +!-------------------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('YEMLBC_INIT:SUELBC_INIT',1,ZHOOK_HANDLE) +END SUBROUTINE SUELBC_INIT + +SUBROUTINE SUELBC_MODEL(YDML_LBC,YDGEOMETRY,YDDYNA,YDGMV,YDML_GCONF) + +!-------------------------------------------------------------------------- +! Sets-up part 0B of forcing a LAM model by another model +!-------------------------------------------------------------------------- + +!-------------------------------------------------------------------------- + +USE GEOMETRY_MOD , ONLY : GEOMETRY +USE MODEL_GENERAL_CONF_MOD , ONLY : MODEL_GENERAL_CONF_TYPE +USE YOMDYNA , ONLY : TDYNA + +TYPE(TELBC_MODEL) ,TARGET,INTENT(INOUT) :: YDML_LBC +TYPE(GEOMETRY),INTENT(IN) :: YDGEOMETRY +TYPE(TDYNA) , INTENT(IN) :: YDDYNA +TYPE(TGMV) ,INTENT(INOUT) :: YDGMV +TYPE(MODEL_GENERAL_CONF_TYPE),INTENT(INOUT):: YDML_GCONF + +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE +REAL(KIND=JPRB),ALLOCATABLE :: ZB(:,:),ZBU(:,:),ZEALP(:),ZREPA(:),ZEALFA(:,:,:) +REAL(KIND=JPRB),ALLOCATABLE :: ZGP(:,:,:),ZSPM(:,:) +INTEGER(KIND=JPIM),ALLOCATABLE :: INEAL(:),INNAL(:),INMAL(:) +INTEGER(KIND=JPIM),ALLOCATABLE :: IBICO(:) + +INTEGER(KIND=JPIM) :: IENDLON, ISTLON, IBZONGL, IGPTOT +INTEGER(KIND=JPIM) :: IA, IGLG, IIA, IJA, IROF, ISUP, ICPL +INTEGER(KIND=JPIM) :: JFLD, JK, JA, JIA, JJA, JLON, JGL +INTEGER(KIND=JPIM) :: INSTEP, ICANCPL, JLEV +INTEGER(KIND=JPIM) :: IBL, JKGLO, JROF, IBLOCKCPL + +REAL(KIND=JPRB) :: ZA, ZE, ZO, ZRZONG, ZRZONL, ZRZONU, ZXA, ZYA, ZDIV, ZREM, ZYAOXA +REAL(KIND=JPRB) :: ZT, ZT1, ZT2, ZT3, ZT4 +REAL(KIND=JPRB) :: ZEPS=1.E-4_JPRB +REAL(KIND=JPRB) :: ZEPS2=1.E-10_JPRB +INTEGER(KIND=JPIM) :: INEFRCLDFI, INEFRCLDFIA, ISWP + +!----POINTERS FOR ASSOCIATION -------------------------- +INTEGER(KIND=JPIM),POINTER :: NEFRSPCPL,NEK0,NEK1,NEN1,NEN2 +REAL(KIND=JPRB),POINTER :: EPA_GMV(:),EPA_GMVS(:),EPA_GFL(:) +REAL(KIND=JPRB),POINTER :: TEFRCL,SPNUDVOR,SPNUDDIV,SPNUDT,SPNUDQ,SPNUDSP,RNUTENC,RTENC + + +!-------------------------------------------------------------------------- + +#include "abor1.intfb.h" +#include "ereespe.intfb.h" +#include "esperee.intfb.h" +#include "posnam.intfb.h" +#include "fctez.func.h" + +#include "nemelbc0b.nam.h" + +!-------------------------------------------------------------------------- +IF (LHOOK) CALL DR_HOOK('YEMLBC_MODEL:SUELBC_MODEL',0,ZHOOK_HANDLE) + + +EPA_GMV=>YDML_LBC%EPA_GMV +EPA_GMVS=>YDML_LBC%EPA_GMVS +EPA_GFL=>YDML_LBC%EPA_GFL +TEFRCL=>YDML_LBC%TEFRCL +NEFRSPCPL=>YDML_LBC%NEFRSPCPL +NEK0=>YDML_LBC%NEK0 +NEK1=>YDML_LBC%NEK1 +NEN1=>YDML_LBC%NEN1 +NEN2=>YDML_LBC%NEN2 +SPNUDVOR=>YDML_LBC%SPNUDVOR +SPNUDDIV=>YDML_LBC%SPNUDDIV +SPNUDT=>YDML_LBC%SPNUDT +SPNUDQ=>YDML_LBC%SPNUDQ +SPNUDSP=>YDML_LBC%SPNUDSP +RNUTENC=>YDML_LBC%RNUTENC +RTENC=>YDML_LBC%RTENC + +!-------------------------------------------------------------------------- +ASSOCIATE(YDGSGEOM_NB=>YDGEOMETRY%YRGSGEOM_NB, & + & NBZONG=>YDGEOMETRY%YREDIM%NBZONG, NBZONL=>YDGEOMETRY%YREDIM%NBZONL, NBZONU=>YDGEOMETRY%YREDIM%NBZONU,& + & NBIPINCIX=>YDGEOMETRY%YREDIM%NBIPINCIX, NBIPINCIY=>YDGEOMETRY%YREDIM%NBIPINCIY, & + & NDGLG=>YDGEOMETRY%YRDIM%NDGLG, NDLUXG=>YDGEOMETRY%YRDIM%NDLUXG, NDGUNG=>YDGEOMETRY%YRDIM%NDGUNG, & + & NDGUXG=>YDGEOMETRY%YRDIM%NDGUXG, NDLUNG=>YDGEOMETRY%YRDIM%NDLUNG, NDGENL=>YDGEOMETRY%YRDIM%NDGENL, & + & NPROMA=>YDGEOMETRY%YRDIM%NPROMA, NGPBLKS=>YDGEOMETRY%YRDIM%NGPBLKS, NSPEC2=>YDGEOMETRY%YRDIM%NSPEC2, & + & NDLON=>YDGEOMETRY%YRDIM%NDLON, NDGSAL=>YDGEOMETRY%YRDIM%NDGSAL, & + & NSTA=>YDGEOMETRY%YRMP%NSTA, NPTRFLOFF=>YDGEOMETRY%YRMP%NPTRFLOFF, MYLATS=>YDGEOMETRY%YRMP%MYLATS, & + & NONL=>YDGEOMETRY%YRMP%NONL, NBSETSP=>YDGEOMETRY%YRMP%NBSETSP, & + & NGPTOT=>YDGEOMETRY%YRGEM%NGPTOT, NSTAGP=>YDGEOMETRY%YRGEM%NSTAGP, & + & NFD2D=>YDML_GCONF%YRDIMF%NFD2D, NS3D=>YDML_GCONF%YRDIMF%NS3D, NFLEVG=>YDGEOMETRY%YRDIMV%NFLEVG, & + & NFLEVL=>YDGEOMETRY%YRDIMV%NFLEVL, YT0=>YDGMV%YT0, YT1=>YDGMV%YT1 , & + & NSTOP=>YDML_GCONF%YRRIP%NSTOP, TSTEP=>YDML_GCONF%YRRIP%TSTEP) +!-------------------------------------------------------------------------- + +! Part A: default values. + +! * Relaxation coefficients +YDML_LBC%EPA_GMV(:)=2.16_JPRB +YDML_LBC%EPA_GMVS(:)=2.16_JPRB +YDML_LBC%EPA_GFL(:)=5.52_JPRB + +! * Control frequency of LBC +TEFRCL=TSTEP + +! * Spectral nudging +YDML_LBC%NEFRSPCPL=1 +YDML_LBC%NEK0=0 +YDML_LBC%NEK1=0 +YDML_LBC%NEN1=0 +YDML_LBC%NEN2=0 +YDML_LBC%SPNUDVOR=0._JPRB +YDML_LBC%SPNUDDIV=0._JPRB +YDML_LBC%SPNUDT=0._JPRB +YDML_LBC%SPNUDQ=0._JPRB +YDML_LBC%SPNUDSP=0._JPRB +YDML_LBC%RNUTENC=0.0_JPRB + +! * Tendency coupling +YDML_LBC%RTENC=1.0_JPRB + +!-------------------------------------------------------------------------- + +! Part B: namelist reading. + +CALL POSNAM(NULNAM,'NEMELBC0B') +READ(NULNAM,NEMELBC0B) + +!-------------------------------------------------------------------------- + +! Part C: checkings, modify values. + +! * C1: Control frequency of LBC (compute NEFRCL) + +! TEFRCL, NEFRCL: +IF (TSTEP > ZEPS) THEN + ZDIV = TEFRCL/TSTEP + ZREM = ZDIV - REAL(NINT(ZDIV),JPRB) + ! 1 second/coupling-interval error is tolerated + IF(ABS(ZREM) >= 1._JPRB/TSTEP) THEN + WRITE(UNIT=NULOUT,FMT='('' TEFRCL MUST BE A MULTIPLE '',''OF TSTEP'')') + CALL ABOR1('SUELBC_MODEL: TEFRCL MUST BE A MULTIPLE OF TSTEP') + ELSE + YDML_LBC%NEFRCL=NINT(TEFRCL/TSTEP) + ENDIF +ELSE + YDML_LBC%NEFRCL=1 +ENDIF + +! * C2: Weights for LBC interpolation (compute EWB, EWBDFIFW, EWBDFIBW) + +! Fill EWB: +IF ((NSTOP/=0).AND.(YDML_LBC%NEFRCL/=0)) THEN + + ALLOCATE(YDML_LBC%EWB(0:NSTOP,1:4,0:9)) + YDML_LBC%EWB(:,:,:)=0.0_JPRB + + IF (YDML_LBC%LQCPL) THEN +!DEC$ IVDEP + DO INSTEP=0,NSTOP + IF (INSTEP<YDML_LBC%NEFRCL) THEN + ! KTIMLEV=0 + YDML_LBC%EWB(INSTEP,1,0)=REAL(YDML_LBC%NEFRCL-MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,0)=REAL(MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,3,:)=0.0_JPRB + + ! KTIMLEV=1 + YDML_LBC%EWB(INSTEP,1,1)=YDML_LBC%EWB(INSTEP,1,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,1)=YDML_LBC%EWB(INSTEP,2,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + + ! KTIMLEV=9 + YDML_LBC%EWB(INSTEP,1,9)=YDML_LBC%EWB(INSTEP,1,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,9)=YDML_LBC%EWB(INSTEP,2,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + ELSE + ISWP=MOD(INSTEP,YDML_LBC%NEFRCL)+1 + ZT =REAL( ISWP,JPRB) + ZT1 =REAL(-1*YDML_LBC%NEFRCL,JPRB) + ZT2 =REAL( 0*YDML_LBC%NEFRCL,JPRB) + ZT3 =REAL(+1*YDML_LBC%NEFRCL,JPRB) + + YDML_LBC%EWB(INSTEP,1,1)=(ZT -ZT2)*(ZT -ZT3)/ & + & ((ZT1-ZT2)*(ZT1-ZT3)) + YDML_LBC%EWB(INSTEP,2,1)=(ZT -ZT1)*(ZT -ZT3)/ & + & ((ZT2-ZT1)*(ZT2-ZT3)) + YDML_LBC%EWB(INSTEP,3,1)=(ZT -ZT1)*(ZT -ZT2)/ & + & ((ZT3-ZT1)*(ZT3-ZT2)) + ENDIF + ENDDO + ELSEIF (YDML_LBC%LCCPL) THEN +!DEC$ IVDEP + DO INSTEP=0,NSTOP + IF (INSTEP<YDML_LBC%NEFRCL) THEN + ! KTIMLEV=0 + YDML_LBC%EWB(INSTEP,1,0)=REAL(YDML_LBC%NEFRCL-MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,0)=REAL(MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,3,:)=0.0_JPRB + YDML_LBC%EWB(INSTEP,4,:)=0.0_JPRB + + ! KTIMLEV=1 + YDML_LBC%EWB(INSTEP,1,1)=YDML_LBC%EWB(INSTEP,1,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,1)=YDML_LBC%EWB(INSTEP,2,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + + + ! KTIMLEV=9 + YDML_LBC%EWB(INSTEP,1,9)=YDML_LBC%EWB(INSTEP,1,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,9)=YDML_LBC%EWB(INSTEP,2,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + + ELSEIF (INSTEP<2*YDML_LBC%NEFRCL) THEN + ISWP=MOD(INSTEP,YDML_LBC%NEFRCL)+1 + ZT =REAL( ISWP,JPRB) + ZT1 =REAL(-1*YDML_LBC%NEFRCL,JPRB) + ZT2 =REAL( 0*YDML_LBC%NEFRCL,JPRB) + ZT3 =REAL(+1*YDML_LBC%NEFRCL,JPRB) + + YDML_LBC%EWB(INSTEP,1,1)=(ZT -ZT2)*(ZT -ZT3)/ & + & ((ZT1-ZT2)*(ZT1-ZT3)) + YDML_LBC%EWB(INSTEP,2,1)=(ZT -ZT1)*(ZT -ZT3)/ & + & ((ZT2-ZT1)*(ZT2-ZT3)) + YDML_LBC%EWB(INSTEP,3,1)=(ZT -ZT1)*(ZT -ZT2)/ & + & ((ZT3-ZT1)*(ZT3-ZT2)) + ELSE + ISWP=MOD(INSTEP,YDML_LBC%NEFRCL)+1 + ZT =REAL(ISWP,JPRB) + IF (INSTEP >= NSTOP-YDML_LBC%NEFRCL) THEN + ZT1=REAL(-1*YDML_LBC%NEFRCL,JPRB) + ZT2=REAL( 0*YDML_LBC%NEFRCL,JPRB) + ZT3=REAL(+1*YDML_LBC%NEFRCL,JPRB) + + YDML_LBC%EWB(INSTEP,1,1)=0.0_JPRB + YDML_LBC%EWB(INSTEP,2,1)=(ZT -ZT2)*(ZT -ZT3)/ & + & ((ZT1-ZT2)*(ZT1-ZT3)) + YDML_LBC%EWB(INSTEP,3,1)=(ZT -ZT1)*(ZT -ZT3)/ & + & ((ZT2-ZT1)*(ZT2-ZT3)) + YDML_LBC%EWB(INSTEP,4,1)=(ZT -ZT1)*(ZT -ZT2)/ & + & ((ZT3-ZT1)*(ZT3-ZT2)) + ELSE + ZT1=REAL(-1*YDML_LBC%NEFRCL,JPRB) + ZT2=REAL( 0*YDML_LBC%NEFRCL,JPRB) + ZT3=REAL(+1*YDML_LBC%NEFRCL,JPRB) + ZT4=REAL(+2*YDML_LBC%NEFRCL,JPRB) + + YDML_LBC%EWB(INSTEP,1,1)=(ZT -ZT2)*(ZT -ZT3)*(ZT -ZT4)/ & + & ((ZT1-ZT2)*(ZT1-ZT3)*(ZT1-ZT4)) + YDML_LBC%EWB(INSTEP,2,1)=(ZT -ZT1)*(ZT -ZT3)*(ZT -ZT4)/ & + & ((ZT2-ZT1)*(ZT2-ZT3)*(ZT2-ZT4)) + YDML_LBC%EWB(INSTEP,3,1)=(ZT -ZT1)*(ZT -ZT2)*(ZT -ZT4)/ & + & ((ZT3-ZT1)*(ZT3-ZT2)*(ZT3-ZT4)) + YDML_LBC%EWB(INSTEP,4,1)=(ZT -ZT1)*(ZT -ZT2)*(ZT -ZT3)/ & + & ((ZT4-ZT1)*(ZT4-ZT2)*(ZT4-ZT3)) + ENDIF + ENDIF + ENDDO + ELSE +!DEC$ IVDEP + DO INSTEP=0,NSTOP + + ! KTIMLEV=0 + YDML_LBC%EWB(INSTEP,1,0)=REAL(YDML_LBC%NEFRCL-MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,0)=REAL(MOD(INSTEP,YDML_LBC%NEFRCL),JPRB)/REAL(YDML_LBC%NEFRCL,JPRB) + + ! KTIMLEV=1 + YDML_LBC%EWB(INSTEP,1,1)=YDML_LBC%EWB(INSTEP,1,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,1)=YDML_LBC%EWB(INSTEP,2,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + + ! KTIMLEV=9 + YDML_LBC%EWB(INSTEP,1,9)=YDML_LBC%EWB(INSTEP,1,0)+1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + YDML_LBC%EWB(INSTEP,2,9)=YDML_LBC%EWB(INSTEP,2,0)-1.0_JPRB/REAL(YDML_LBC%NEFRCL,JPRB) + + ENDDO + + ENDIF +ENDIF + +IF (LDFI) THEN + + ! Fill EWBDFIFW (DFI forward weights): + ALLOCATE(YDML_LBC%EWBDFIFW(0:2*NSTDFI,1:2,0:9,0:1)) + INEFRCLDFI=YDML_LBC%TEFRCL/RTDFI + + DO INSTEP=0,2*NSTDFI + ! KTIMLEV=0 + YDML_LBC%EWBDFIFW(INSTEP,1,0,:)=REAL(INEFRCLDFI-MOD(INSTEP,INEFRCLDFI)+NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB) + YDML_LBC%EWBDFIFW(INSTEP,2,0,:)=REAL(MOD(INSTEP,INEFRCLDFI)-NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB) + ! KTIMLEV=1, LBIAS=F + YDML_LBC%EWBDFIFW(INSTEP,1,1,0)=YDML_LBC%EWBDFIFW(INSTEP,1,0,0)-1.0_JPRB/REAL(INEFRCLDFI,JPRB) + YDML_LBC%EWBDFIFW(INSTEP,2,1,0)=YDML_LBC%EWBDFIFW(INSTEP,2,0,0)+1.0_JPRB/REAL(INEFRCLDFI,JPRB) + ! KTIMLEV=1, LBIAS=T + YDML_LBC%EWBDFIFW(INSTEP,1,1,1)=REAL(INEFRCLDFI+MOD(INSTEP,INEFRCLDFI)-NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB)+1.0_JPRB/REAL(INEFRCLDFI,JPRB) + YDML_LBC%EWBDFIFW(INSTEP,2,1,1)=REAL(-MOD(INSTEP,INEFRCLDFI)+NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB)-1.0_JPRB/REAL(INEFRCLDFI,JPRB) + ! KTIMLEV=9, LBIAS=F + YDML_LBC%EWBDFIFW(INSTEP,1,9,0)=YDML_LBC%EWBDFIFW(INSTEP,1,0,0)+1.0_JPRB/REAL(INEFRCLDFI,JPRB) + YDML_LBC%EWBDFIFW(INSTEP,2,9,0)=YDML_LBC%EWBDFIFW(INSTEP,2,0,0)-1.0_JPRB/REAL(INEFRCLDFI,JPRB) + ! KTIMLEV=9, LBIAS=T + YDML_LBC%EWBDFIFW(INSTEP,1,9,1)=REAL(INEFRCLDFI+MOD(INSTEP,INEFRCLDFI)-NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB)-1.0_JPRB/REAL(INEFRCLDFI,JPRB) + YDML_LBC%EWBDFIFW(INSTEP,2,9,1)=REAL(-MOD(INSTEP,INEFRCLDFI)+NSTDFI,JPRB)/& + & REAL(INEFRCLDFI,JPRB)+1.0_JPRB/REAL(INEFRCLDFI,JPRB) + ENDDO + + ! Fill EWBDFIBW (DFI backward weights): + ALLOCATE(YDML_LBC%EWBDFIBW(0:2*NSTDFIA,1:2,0:9,0:1)) + INEFRCLDFIA=YDML_LBC%TEFRCL/RTDFIA + + DO INSTEP=0,2*NSTDFIA + YDML_LBC%EWBDFIBW(INSTEP,1,0,:)=REAL(INEFRCLDFIA+MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB) + YDML_LBC%EWBDFIBW(INSTEP,2,0,:)=-REAL(MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB) + + ! KTIMLEV=1, LBIAS=F + YDML_LBC%EWBDFIBW(INSTEP,1,1,0)=YDML_LBC%EWBDFIBW(INSTEP,1,0,0)+1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + YDML_LBC%EWBDFIBW(INSTEP,2,1,0)=YDML_LBC%EWBDFIBW(INSTEP,2,0,0)-1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + ! KTIMLEV=1, LBIAS=T + YDML_LBC%EWBDFIBW(INSTEP,1,1,1)=REAL(INEFRCLDFIA-MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB)& + & -1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + YDML_LBC%EWBDFIBW(INSTEP,2,1,1)=REAL(MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB)& + & +1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + ! KTIMLEV=9, LBIAS=F + YDML_LBC%EWBDFIBW(INSTEP,1,9,0)=YDML_LBC%EWBDFIBW(INSTEP,1,0,0)-1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + YDML_LBC%EWBDFIBW(INSTEP,2,9,0)=YDML_LBC%EWBDFIBW(INSTEP,2,0,0)+1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + ! KTIMLEV=9, LBIAS=T + YDML_LBC%EWBDFIBW(INSTEP,1,9,1)=REAL(INEFRCLDFIA-MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB)& + & +1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + YDML_LBC%EWBDFIBW(INSTEP,2,9,1)=REAL(MOD(INSTEP,INEFRCLDFIA),JPRB)/REAL(INEFRCLDFIA,JPRB)& + & -1.0_JPRB/REAL(INEFRCLDFIA,JPRB) + ENDDO + +ENDIF + +! * C3: Calculation of IBICO and LECOBI. + +ALLOCATE(IBICO(YDML_LBC%NGALEF)) +! GMV: +IBICO(YDML_LBC%YYTGMVCPL%MU)=YDML_LBC%NBICOU +IBICO(YDML_LBC%YYTGMVCPL%MV)=YDML_LBC%NBICOU +IBICO(YDML_LBC%YYTGMVCPL%MT)=YDML_LBC%NBICOT +IF (YDDYNA%LNHDYN) IBICO(YDML_LBC%YYTGMVCPL%MSPD)=YDML_LBC%NBICPD +IF (YDDYNA%LNHDYN) IBICO(YDML_LBC%YYTGMVCPL%MSVD)=YDML_LBC%NBICVD +IF (YDDYNA%LNHDYN.AND.YDDYNA%LNHX) IBICO(YDML_LBC%YYTGMVCPL%MNHX)=YDML_LBC%NBICNHX +! GMVS: +IBICO(YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%MSP)=YDML_LBC%NBICOP +! GFL: +DO JFLD=1,YDML_LBC%NDIMCPL + IBICO(YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%NDIM+JFLD)=1 +ENDDO + +IF((NBZONL /= 0).OR.(NBZONG /= 0).OR.(NDLUXG /= NDLON).OR.(NDGUXG /= NDGLG)) THEN + IF ( MAXVAL(IBICO(1:YDML_LBC%NGALEF))==0 .AND. MINVAL(IBICO(1:YDML_LBC%NGALEF))==0 ) THEN + ! no field coupled; LECOBI set to F. + YDML_LBC%LECOBI=.FALSE. + ELSE + ! at least one field coupled; non-empty coupling zone. + YDML_LBC%LECOBI=.TRUE. + ENDIF +ELSE + ! empty coupling zone. + YDML_LBC%LECOBI=.FALSE. +ENDIF +! For canari +ICANCPL=YDML_LBC%NBICOU+YDML_LBC%NBICOT+YDML_LBC%NBICOP +IF (LCANARI .AND. ICANCPL==0) YDML_LBC%LECOBI=.FALSE. + +! * C4: Relaxation coefficients EALFA_GMV, EALFA_GMVS, EALFA_GFL, EALFA_TENC (former SUEBICU). + +ALLOCATE(YDML_LBC%EALFA_GMV(NGPTOT+1,YDML_LBC%YYTGMVCPL%NDIM)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFA_GMV ',& + & SIZE(YDML_LBC%EALFA_GMV ),SHAPE(YDML_LBC%EALFA_GMV ) + +ALLOCATE(YDML_LBC%EALFA_GMVS(NGPTOT+1,YDML_LBC%YYTGMVSCPL%NDIM)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFA_GMVS',& + & SIZE(YDML_LBC%EALFA_GMVS),SHAPE(YDML_LBC%EALFA_GMVS) + +ALLOCATE(YDML_LBC%EALFA_GFL(NGPTOT+1,YDML_LBC%NDIMCPL)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFA_GFL ',& +& SIZE(YDML_LBC%EALFA_GFL ),SHAPE(YDML_LBC%EALFA_GFL ) + +IF(YDML_LBC%LUNBC) THEN + ALLOCATE(YDML_LBC%EALFAU_GMV(NFLEVG,YDML_LBC%YYTGMVCPL%NDIM)) + IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFAU_GMV ',& + & SIZE(YDML_LBC%EALFAU_GMV ),SHAPE(YDML_LBC%EALFAU_GMV ) + + ALLOCATE(YDML_LBC%EALFAU_GFL(NFLEVG,YDML_LBC%NDIMCPL)) + IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFAU_GFL ',& + & SIZE(YDML_LBC%EALFAU_GFL ),SHAPE(YDML_LBC%EALFAU_GFL ) +ENDIF + +IF (YDML_LBC%LTENC) THEN + ALLOCATE(YDML_LBC%EALFA_TENC(NGPTOT+1,YDML_LBC%YYTGMVSTENC%NDIM)) + IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'EALFA_TENC',& + & SIZE(YDML_LBC%EALFA_TENC),SHAPE(YDML_LBC%EALFA_TENC) +ENDIF + +IF (YDML_LBC%LECOBI) THEN + + ! * C4.1: allocations. + + ALLOCATE(ZREPA(YDML_LBC%NGALEF)) + ALLOCATE(ZEALP(YDML_LBC%NGALEF)) + ALLOCATE(ZEALFA(NDLON,YDML_LBC%NGALEF,NDGLG)) + ALLOCATE(INEAL(YDML_LBC%NGALEF)) + ALLOCATE(INNAL(YDML_LBC%NGALEF)) + ALLOCATE(INMAL(YDML_LBC%NGALEF)) + ALLOCATE(ZB(NBZONL+1,NBZONG+1)) + IF (YDML_LBC%LUNBC) THEN + IF (NBZONU > 0 .AND. NBZONU < NFLEVG) THEN + ALLOCATE(ZBU(NBZONU+1,YDML_LBC%NGALEF)) + ELSE + CALL ABOR1('SUELBC_MODEL: NBZONU IS OUT OF BOUNDS') + ENDIF + ENDIF + + ISUP=100 + IBZONGL=MAX(NBZONL-NBIPINCIX,NBZONG-NBIPINCIY) + + ! * C4.2: fill ZREPA. + + ICPL=0 + IF (SIZE(YDML_LBC%EPA_GMV) < YDML_LBC%YYTGMVCPL%NDIM) THEN + CALL ABOR1('SUELBC_MODEL:YDML_LBC%EPA_GMV TOO SMALL !') + ELSE + ZREPA(ICPL+1:ICPL+YDML_LBC%YYTGMVCPL%NDIM)=YDML_LBC%EPA_GMV(1:YDML_LBC%YYTGMVCPL%NDIM) + ENDIF + ICPL=YDML_LBC%YYTGMVCPL%NDIM + IF (SIZE(YDML_LBC%EPA_GMVS) < YDML_LBC%YYTGMVSCPL%NDIM) THEN + CALL ABOR1('SUELBC_MODEL:YDML_LBC%EPA_GMVS TOO SMALL !') + ELSE + ZREPA(ICPL+1:ICPL+YDML_LBC%YYTGMVSCPL%NDIM)=YDML_LBC%EPA_GMVS(1:YDML_LBC%YYTGMVSCPL%NDIM) + ENDIF + ICPL=YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%NDIM + IF (SIZE(YDML_LBC%EPA_GFL) < YDML_LBC%NDIMCPL) THEN + CALL ABOR1('SUELBC_MODEL:YDML_LBC%EPA_GFL TOO SMALL !') + ELSE + ZREPA(ICPL+1:ICPL+YDML_LBC%NDIMCPL)=YDML_LBC%EPA_GFL(1:YDML_LBC%NDIMCPL) + ENDIF + + DO JFLD =1,YDML_LBC%NGALEF + IF((ZREPA(JFLD) > -2.0_JPRB).AND.(ZREPA(JFLD) < 2.0_JPRB))THEN + WRITE(UNIT=NULOUT,FMT='("ERROR ZREPA CANT BE",F5.2)')ZREPA(JFLD) + CALL ABOR1('SUELBC_MODEL: ZREPA MUST NOT HAVE A VALUE STRICTLY BETWEEN -2.0 AND 2.0') + ENDIF + ENDDO + + ! * C4.3: fill INEAL,INMAL,INNAL (identical for all coupled fields). + + INEAL(1:YDML_LBC%NGALEF)=2 + INMAL(1:YDML_LBC%NGALEF)=1 + + IF (IBZONGL>=11 .AND. IBZONGL<=26) THEN + INNAL(1:YDML_LBC%NGALEF)=2 + WRITE(NULOUT,*) 'INNAL FORCED TO 2 FOR CONVERGENCE' + ELSEIF (IBZONGL>=27) THEN + INNAL(1:YDML_LBC%NGALEF)=1 + WRITE(NULOUT,*) 'INNAL FORCED TO 1 FOR CONVERGENCE' + ELSE + INNAL(1:YDML_LBC%NGALEF)=3 + WRITE(NULOUT,*) 'INNAL SET TO 3' + ENDIF + + ! * C4.4: compute auxilary variables ZRZONL, ZRZONG, ZRZONU, ZEALP (identical for all + ! coupled fields). + + IF (NBZONL > NBIPINCIX) THEN + ZRZONL=1.0_JPRB/REAL(NBZONL-NBIPINCIX,JPRB) + ENDIF + IF (NBZONG > NBIPINCIY) THEN + ZRZONG=1.0_JPRB/REAL(NBZONG-NBIPINCIY,JPRB) + ENDIF + + IF (YDML_LBC%LUNBC) THEN + ZRZONU = 1.0_JPRB/(YDGEOMETRY%YRVETA%VETAF(NBZONU+1)-YDGEOMETRY%YRVETA%VETAF(1)) + ENDIF + + DO JFLD =1,YDML_LBC%NGALEF + ZEALP(JFLD)=& + & REAL((INMAL(JFLD)+INNAL(JFLD))**(INMAL(JFLD)+INNAL(JFLD)),JPRB)/& + & REAL((INNAL(JFLD)**INNAL(JFLD))*(INMAL(JFLD)**INMAL(JFLD))*INEAL(JFLD)) + ENDDO + + ! * C4.5: compute ZEALFA. + + DO JFLD =1,YDML_LBC%NGALEF + + IF (IBICO(JFLD) == 0) THEN + + ! --- no coupling applied to this field; we simply set ZEALFA=0 everywhere. + ZEALFA(1:NDLON,JFLD,1:NDGLG)=0.0_JPRB + + ELSE + + ! --- coupling applied to this field. + + ! * ZEALFA: initialize the center domain to 0. and the outer domain to 1. + + ZEALFA(NDLUNG+NBZONL:NDLUXG-NBZONL,JFLD,NDGUNG+NBZONG:NDGUXG-NBZONG)=0.0_JPRB + ZEALFA(1:NDLON,JFLD,1:NDGUNG-1)=1.0_JPRB + ZEALFA(1:NDLON,JFLD,NDGUXG+1:NDGLG)=1.0_JPRB + ZEALFA(1:NDLUNG-1,JFLD,NDGUNG:NDGUXG)=1.0_JPRB + ZEALFA(NDLUXG+1:NDLON,JFLD,NDGUNG:NDGUXG)=1.0_JPRB + + ! * compute ZEALFA in the relaxation area. + + IF ((NBZONL > 0).OR.(NBZONG > 0))THEN + + ! Compute ZB: + IF (NBZONL > 0) THEN + DO JA=2,NBZONL + ! relaxation function is 1 in 1:NBIPINCIX + IF (JA<=NBZONL-NBIPINCIX) THEN + ZA=REAL(JA-1,JPRB)*ZRZONL + IF(ZREPA(JFLD) <= -2.0_JPRB) THEN + ZB(JA,NBZONG+1)=FEZBM(ZA,-ZREPA(JFLD)) + ELSE + ZB(JA,NBZONG+1)=FEZBP(ZA,ZREPA(JFLD)) + ENDIF + ELSE + ZB(JA,NBZONG+1)=1._JPRB + ENDIF + ENDDO + ENDIF + + IF (NBZONG > 0) THEN + DO JA=2,NBZONG + ! relaxation function is 1 in 1:NBIPINCIY + IF (JA<=NBZONG-NBIPINCIY) THEN + ZA=REAL(JA-1,JPRB)*ZRZONG + IF(ZREPA(JFLD) <= -2.0_JPRB) THEN + ZB(NBZONL+1,JA)=FEZBM(ZA,-ZREPA(JFLD)) + ELSE + ZB(NBZONL+1,JA)=FEZBP(ZA,ZREPA(JFLD)) + ENDIF + ELSE + ZB(NBZONL+1,JA)=1._JPRB + ENDIF + ENDDO + ENDIF + + IF ((NBZONL > 0).AND.(NBZONG > 0)) THEN + DO JIA=2,NBZONL + IF (JIA<=NBZONL-NBIPINCIX) THEN + ZXA=REAL(JIA-1,JPRB)*ZRZONL + DO JJA=2,NBZONG + IF (JJA<=NBZONG-NBIPINCIY) THEN + ZYA=REAL(JJA-1,JPRB)*ZRZONG + ZYAOXA=ZYA/ZXA + ZA=MAX(ZXA,ZYA) + ZO=ZA + DO JK=1,ISUP + ZE=FEZE(ZA,ZEALP(JFLD),INNAL(JFLD),INMAL(JFLD)) + IF (JPRB == JPRD) THEN + ZA=(ZXA**ZE+ZYA**ZE)**(1.0_JPRB/ZE) + ELSE + ZA=ZXA*(1._JPRB+ZYAOXA**ZE)**(1.0_JPRB/ZE) + ENDIF + ZT=ABS(ZA-ZO)/ZO + IF (ZT <= ZEPS) EXIT + IF (JK == ISUP) THEN + WRITE(NULOUT,*) 'NO CONVERGENCE FOR EALFA' + CALL ABOR1('SUELBC_MODEL: NO CONVERGENCE FOR EALFA') + ENDIF + ZA=0.5_JPRB*(ZA+ZO) + ZO=ZA + ENDDO + IF(ZREPA(JFLD) <= -2.0_JPRB) THEN + ZB(JIA,JJA)=FEZBM(ZA,-ZREPA(JFLD)) + ELSE + ZB(JIA,JJA)=FEZBP(ZA,ZREPA(JFLD)) + ENDIF + ELSE + ZB(JIA,JJA)=1._JPRB + ENDIF + ENDDO + ELSE + DO JJA=2,NBZONG + ZB(JIA,JJA)=1._JPRB + ENDDO + ENDIF + ENDDO + ENDIF + + ! Initialize ZEALFA on the relaxation area + + IF (NBZONG > 0)THEN + DO JLON=NDLUNG+NBZONL,NDLUXG-NBZONL + ZEALFA(JLON,JFLD,NDGUNG)=1.0_JPRB + DO JGL=NDGUNG+1,NDGUNG+NBZONG-1 + IA=NDGUNG+NBZONG+1-JGL + ZEALFA(JLON,JFLD,JGL)=ZB(NBZONL+1,IA) + ENDDO + ZEALFA(JLON,JFLD,NDGUXG)=1.0_JPRB + DO JGL=NDGUXG-NBZONG+1,NDGUXG-1 + IA=JGL-NDGUXG+NBZONG+1 + ZEALFA(JLON,JFLD,JGL)=ZB(NBZONL+1,IA) + ENDDO + ENDDO + ENDIF + + IF(NBZONL > 0)THEN + DO JGL=NDGUNG+NBZONG,NDGUXG-NBZONG + ZEALFA(NDLUNG,JFLD,JGL)=1.0_JPRB + DO JLON=NDLUNG+1,NDLUNG+NBZONL-1 + IA=NDLUNG+NBZONL+1-JLON + ZEALFA(JLON,JFLD,JGL)=ZB(IA,NBZONG+1) + ENDDO + ZEALFA(NDLUXG,JFLD,JGL)=1.0_JPRB + DO JLON=NDLUXG-NBZONL+1,NDLUXG-1 + IA=JLON-NDLUXG+NBZONL+1 + ZEALFA(JLON,JFLD,JGL)=ZB(IA,NBZONG+1) + ENDDO + ENDDO + ENDIF + + IF((NBZONL > 0).AND.(NBZONG > 0)) THEN + DO JLON=NDLUNG+1,NDLUNG+NBZONL-1 + IIA=NDLUNG+NBZONL+1-JLON + DO JGL=NDGUNG+1,NDGUNG+NBZONG-1 + IJA=NDGUNG+NBZONG+1-JGL + ZEALFA(JLON,JFLD,JGL)=ZB(IIA,IJA) + ENDDO + DO JGL=NDGUXG-NBZONG+1,NDGUXG-1 + IJA=JGL-NDGUXG+NBZONG+1 + ZEALFA(JLON,JFLD,JGL)=ZB(IIA,IJA) + ENDDO + ENDDO + DO JLON=NDLUXG-NBZONL+1,NDLUXG-1 + IIA=JLON-NDLUXG+NBZONL+1 + DO JGL=NDGUNG+1,NDGUNG+NBZONG-1 + IJA=NDGUNG+NBZONG+1-JGL + ZEALFA(JLON,JFLD,JGL)=ZB(IIA,IJA) + ENDDO + DO JGL=NDGUXG-NBZONG+1,NDGUXG-1 + IJA=JGL-NDGUXG+NBZONG+1 + ZEALFA(JLON,JFLD,JGL)=ZB(IIA,IJA) + ENDDO + ENDDO + ZEALFA(NDLUNG:NDLUNG+NBZONL-1,JFLD,NDGUNG)=1.0_JPRB + ZEALFA(NDLUNG:NDLUNG+NBZONL-1,JFLD,NDGUXG)=1.0_JPRB + ZEALFA(NDLUXG-NBZONL+1:NDLUXG,JFLD,NDGUNG)=1.0_JPRB + ZEALFA(NDLUXG-NBZONL+1:NDLUXG,JFLD,NDGUXG)=1.0_JPRB + ZEALFA(NDLUNG,JFLD,NDGUNG:NDGUNG+NBZONG-1)=1.0_JPRB + ZEALFA(NDLUXG,JFLD,NDGUNG:NDGUNG+NBZONG-1)=1.0_JPRB + ZEALFA(NDLUNG,JFLD,NDGUXG-NBZONG+1:NDGUXG)=1.0_JPRB + ZEALFA(NDLUXG,JFLD,NDGUXG-NBZONG+1:NDGUXG)=1.0_JPRB + ENDIF + + ! Feed the extra-longitudes and latitudes + ZEALFA(NDLUNG+NBZONL:NDLUXG-NBZONL,JFLD,NDGUNG+NBZONG:NDGUXG-NBZONG)=0.0_JPRB + + ENDIF ! ((NBZONL > 0).OR.(NBZONG > 0)) + + IF (YDML_LBC%LUNBC) THEN + ! Compute ZBU: + DO JA=2,NBZONU + ZA=(YDGEOMETRY%YRVETA%VETAF(JA)-YDGEOMETRY%YRVETA%VETAF(1))*ZRZONU + IF(ZREPA(JFLD) <= -2.0_JPRB) THEN + ZBU(JA,JFLD)=FEZBM(ZA,-ZREPA(JFLD)) + ELSE + ZBU(JA,JFLD)=FEZBP(ZA,ZREPA(JFLD)) + ENDIF + ENDDO + ENDIF + + ENDIF ! IBICO(JFLD) + + ENDDO ! JFLD + + ! * C4.6: compute EALFA_GMV, EALFA_GMVS, EALFA_GFL, EALFA_TENC from ZEALFA. + + ! EALFA_GMV: + ICPL=0 + DO JFLD=1,YDML_LBC%YYTGMVCPL%NDIM + IROF=1 + DO JGL=1,NDGENL + IGLG=MYLATS(JGL) + ISTLON=NSTA(NPTRFLOFF+JGL,MYSETB) + IENDLON=NSTA(NPTRFLOFF+JGL,MYSETB)+NONL(NPTRFLOFF+JGL,MYSETB)-1 +!DEC$ IVDEP + DO JLON=ISTLON,IENDLON + YDML_LBC%EALFA_GMV(IROF,JFLD)=ZEALFA(JLON,ICPL+JFLD,IGLG) + IROF=IROF+1 + ENDDO + ENDDO + ENDDO + + ! EALFA_GMVS: + ICPL=YDML_LBC%YYTGMVCPL%NDIM + DO JFLD=1,YDML_LBC%YYTGMVSCPL%NDIM + IROF=1 + DO JGL=1,NDGENL + IGLG=MYLATS(JGL) + ISTLON=NSTA(NPTRFLOFF+JGL,MYSETB) + IENDLON=NSTA(NPTRFLOFF+JGL,MYSETB)+NONL(NPTRFLOFF+JGL,MYSETB)-1 +!DEC$ IVDEP + DO JLON=ISTLON,IENDLON + YDML_LBC%EALFA_GMVS(IROF,JFLD)=ZEALFA(JLON,ICPL+JFLD,IGLG) + IROF=IROF+1 + ENDDO + ENDDO + ENDDO + + ! EALFA_GFL: + ICPL=YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%NDIM + DO JFLD=1,YDML_LBC%NDIMCPL + IROF=1 + DO JGL=1,NDGENL + IGLG=MYLATS(JGL) + ISTLON=NSTA(NPTRFLOFF+JGL,MYSETB) + IENDLON=NSTA(NPTRFLOFF+JGL,MYSETB)+NONL(NPTRFLOFF+JGL,MYSETB)-1 +!DEC$ IVDEP + DO JLON=ISTLON,IENDLON + YDML_LBC%EALFA_GFL(IROF,JFLD)=ZEALFA(JLON,ICPL+JFLD,IGLG) + IROF=IROF+1 + ENDDO + ENDDO + ENDDO + + IF(YDML_LBC%LUNBC) THEN + ! * C4.6.2: compute EALFAU_GMV, EALFAU_GFL from ZBU. + + ! EALFAU_GMV: + DO JFLD=1,YDML_LBC%YYTGMVCPL%NDIM + YDML_LBC%EALFAU_GMV(1:NFLEVG,JFLD)=0._JPRB + IF (NBZONU > 0) YDML_LBC%EALFAU_GMV(1,JFLD)=1._JPRB + + DO JLEV=2,NBZONU + YDML_LBC%EALFAU_GMV(JLEV,JFLD)=ZBU(NBZONU+2-JLEV,JFLD) + ENDDO + ENDDO + + ! EALFAU_GFL: + ICPL=YDML_LBC%YYTGMVCPL%NDIM+YDML_LBC%YYTGMVSCPL%NDIM + DO JFLD=1,YDML_LBC%NDIMCPL + YDML_LBC%EALFAU_GFL(1:NFLEVG,JFLD)=0._JPRB + IF (NBZONU > 0) YDML_LBC%EALFAU_GFL(1,JFLD)=1._JPRB + + DO JLEV=2,NBZONU + YDML_LBC%EALFAU_GFL(JLEV,JFLD)=ZBU(NBZONU+2-JLEV,JFLD+ICPL) + ENDDO + ENDDO + ENDIF + + ! EALFA_TENC: + IF (YDML_LBC%LTENC .AND. LRPLANE) THEN + + ! EALFA_TENC for surface pressure variable: + IROF=1 + DO JGL=1,NDGENL + IGLG=MYLATS(JGL) + ISTLON=NSTA(NPTRFLOFF+JGL,MYSETB) + IENDLON=NSTA(NPTRFLOFF+JGL,MYSETB)+NONL(NPTRFLOFF+JGL,MYSETB)-1 + DO JLON=ISTLON,IENDLON + YDML_LBC%EALFA_TENC(IROF,YDML_LBC%YYTGMVSTENC%MSP)=YDML_LBC%EALFA_GMVS(IROF,YDML_LBC%YYTGMVSCPL%MSP) + IROF=IROF+1 + ENDDO + ENDDO + + ! EALFA_TENC for horizontal derivatives of surface pressure variable: + ALLOCATE(ZSPM(1,NSPEC2)) + ALLOCATE(ZGP(NGPTOT,1,3)) + ZGP(1:NGPTOT,1,1)=YDML_LBC%EALFA_TENC(1:NGPTOT,YDML_LBC%YYTGMVSTENC%MSP) + CALL EREESPE(YDGEOMETRY,1,1,ZSPM,ZGP(1,1,1)) + CALL ESPEREE(YDGEOMETRY,1,1,ZSPM,ZGP(1,1,1),PREELL=ZGP(1,1,2),PREELM=ZGP(1,1,3)) + YDML_LBC%EALFA_TENC(1:NGPTOT,YDML_LBC%YYTGMVSTENC%MSPL)=ZGP(1:NGPTOT,1,2) + YDML_LBC%EALFA_TENC(1:NGPTOT,YDML_LBC%YYTGMVSTENC%MSPM)=ZGP(1:NGPTOT,1,3) + DEALLOCATE(ZGP) + DEALLOCATE(ZSPM) + DO JLON=1,NGPTOT + IF (YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSP) == 1.0_JPRB& + & .OR.YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSP) == 0.0_JPRB) THEN + YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSPL) = 0.0_JPRB + YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSPM) = 0.0_JPRB + ELSEIF (YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSP) > 1.0_JPRB.OR.& + & YDML_LBC%EALFA_TENC(JLON,YDML_LBC%YYTGMVSTENC%MSP) < 0.0_JPRB) THEN + CALL ABOR1('SUELBC_MODEL: EALFA_TENC IS OUT OF [0,1]') + ENDIF + ENDDO + ENDIF + + ! * C4.7: deallocations. + + IF (ALLOCATED(ZEALP)) DEALLOCATE(ZEALP) + IF (ALLOCATED(ZREPA)) DEALLOCATE(ZREPA) + IF (ALLOCATED(ZEALFA)) DEALLOCATE(ZEALFA) + IF (ALLOCATED(INEAL)) DEALLOCATE(INEAL) + IF (ALLOCATED(INNAL)) DEALLOCATE(INNAL) + IF (ALLOCATED(INMAL)) DEALLOCATE(INMAL) + IF (ALLOCATED(ZB)) DEALLOCATE(ZB) + IF (ALLOCATED(ZBU)) DEALLOCATE(ZBU) + +ELSE + + YDML_LBC%EALFA_GMV(:,:)=0.0_JPRB + YDML_LBC%EALFA_GMVS(:,:)=0.0_JPRB + YDML_LBC%EALFA_GFL(:,:)=0.0_JPRB + IF (YDML_LBC%LTENC) YDML_LBC%EALFA_TENC(:,:)=0.0_JPRB + +ENDIF ! LECOBI + +IF (ALLOCATED(IBICO)) DEALLOCATE(IBICO) + +! * C5: Other variables for grid-point coupling: +! Allocation and computation of GMGT3, EALFAGT3GMV, EALFAGT3GMVS, EALFAGT3GFL. + +ALLOCATE(YDML_LBC%GMGT3(NPROMA,YDGEOMETRY%YRELBC_GEO%NCPLBLKS)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'GMGT3 ',& + & SIZE(YDML_LBC%GMGT3 ),SHAPE(YDML_LBC%GMGT3 ) + +ALLOCATE(YDML_LBC%EALFAGT3GMV(NPROMA,YDML_LBC%YYTGMVCPL%NDIM,YDGEOMETRY%YRELBC_GEO%NCPLBLKS)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A12,' ALLOCATED ',8I8)") 'EALFAGT3GMV ',& + & SIZE(YDML_LBC%EALFAGT3GMV),SHAPE(YDML_LBC%EALFAGT3GMV) + +ALLOCATE(YDML_LBC%EALFAGT3GMVS(NPROMA,YDML_LBC%YYTGMVSCPL%NDIM,YDGEOMETRY%YRELBC_GEO%NCPLBLKS)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A12,' ALLOCATED ',8I8)") 'EALFAGT3GMVS',& + & SIZE(YDML_LBC%EALFAGT3GMVS),SHAPE(YDML_LBC%EALFAGT3GMVS) + +ALLOCATE(YDML_LBC%EALFAGT3GFL(NPROMA,YDML_LBC%NDIMCPL,YDGEOMETRY%YRELBC_GEO%NCPLBLKS)) +IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A12,' ALLOCATED ',8I8)") 'EALFAGT3GFL ',& + & SIZE(YDML_LBC%EALFAGT3GFL),SHAPE(YDML_LBC%EALFAGT3GFL) + +IF(YDML_LBC%LUNBC) THEN + ALLOCATE(YDML_LBC%GMGT4(NGPTOT)) + IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'GMGT4 ',& + & SIZE(YDML_LBC%GMGT4 ),SHAPE(YDML_LBC%GMGT4 ) +ENDIF + +DO JKGLO=1,NGPTOT,NPROMA + IBL=(JKGLO-1)/NPROMA+1 + IBLOCKCPL=YDGEOMETRY%YRELBC_GEO%MPTRCPLBLK(IBL) + IF (IBLOCKCPL > 0) THEN ! This block contains coupling points + DO JROF=1,YDGEOMETRY%YRELBC_GEO%NIND_LEN(IBLOCKCPL) + IGPTOT=JKGLO+YDGEOMETRY%YRELBC_GEO%NIND_LIST(JROF,IBLOCKCPL)-1 + YDML_LBC%EALFAGT3GMV(JROF,:,IBLOCKCPL)=YDML_LBC%EALFA_GMV(IGPTOT,:) + YDML_LBC%EALFAGT3GMVS(JROF,:,IBLOCKCPL)=YDML_LBC%EALFA_GMVS(IGPTOT,:) + YDML_LBC%EALFAGT3GFL(JROF,:,IBLOCKCPL)=YDML_LBC%EALFA_GFL(IGPTOT,:) + YDML_LBC%GMGT3(JROF,IBLOCKCPL)=YDGSGEOM_NB%GM(IGPTOT) + ENDDO + ENDIF + IF (YDML_LBC%LUNBC) THEN + DO JROF=1,MIN(NPROMA,NGPTOT-JKGLO+1) + IGPTOT=JKGLO+JROF-1 + YDML_LBC%GMGT4(IGPTOT)=YDGSGEOM_NB%GM(IGPTOT) + ENDDO + ENDIF +ENDDO + +! * C6: Other variables for spectral nudging + +IF (YDML_LBC%LESPCPL) THEN + YDML_LBC%RNUDTFRAC=SIGN(1._JPRB,YDML_GCONF%YRRIP%TSTEP)/REAL(YDML_LBC%NEFRSPCPL,JPRB) + YDML_LBC%LSPNUSPDL=(SPNUDSP > ZEPS2).AND.(MYSETV==NBSETSP) +ELSE + YDML_LBC%RNUDTFRAC=0._JPRB + YDML_LBC%LSPNUSPDL=.FALSE. +ENDIF + +IF (YDML_LBC%LESPCPL) THEN + ALLOCATE(YDML_LBC%LNUDSPGFL(MAX(1,YDML_GCONF%YGFL%NUMSPFLDS))) + IF (LALLOPR) WRITE(NULOUT,"(1X,'ARRAY ',A10,' ALLOCATED ',8I8)") 'LNUDSPGFL',& + & SIZE(YDML_LBC%LNUDSPGFL),SHAPE(YDML_LBC%LNUDSPGFL) + YDML_LBC%LNUDSPGFL(:)=.FALSE. + IF ((SPNUDQ>ZEPS2).AND.YDML_GCONF%YGFL%YQ%MPSP>0.AND.YDML_GCONF%YGFL%YQ_NL%LSP) THEN + YDML_LBC%LNUDSPGFL(YDML_GCONF%YGFL%YQ%MPSP)=.TRUE. + ENDIF +ENDIF + +!-------------------------------------------------------------------------- + +! Part D: printings. + +WRITE(NULOUT,*) ' --- PRINTINGS IN SUELBC_MODEL --- ' + +! * D1: Control frequency of LBC. +WRITE(UNIT=NULOUT,FMT='('' Frequency of LBC: '')') +WRITE(UNIT=NULOUT,FMT='('' TEFRCL = '',F10.1,'' NEFRCL = '',I15)') YDML_LBC%TEFRCL,YDML_LBC%NEFRCL + +! * D2: LECOBI. +WRITE(NULOUT,'('' LECOBI = '',L2)') YDML_LBC%LECOBI + +! * D3: Relaxation coefficients EALFA_GMV, EALFA_GMVS, EALFA_GFL, EALFA_TENC. +IF (YDML_LBC%LECOBI) THEN + IF (LOUTPUT) THEN + WRITE(UNIT=NULOUT,FMT='('' Relaxation coefficients: '')') + DO JFLD=1,YDML_LBC%YYTGMVCPL%NDIM + WRITE(UNIT=NULOUT,FMT=' ('' JFLD = '',I3)') JFLD + WRITE(UNIT=NULOUT,FMT=' ('' EALFA_GMV FOR JFLD'')') + DO JGL=1,NDGENL,100 + IGLG=MYLATS(JGL) + WRITE(UNIT=NULOUT,FMT='(2X,14(1X,E8.2))') (YDML_LBC%EALFA_GMV(JLON+NSTAGP(JGL),JFLD),JLON=1,NDLON,100) + ENDDO + ENDDO + DO JFLD=1,YDML_LBC%YYTGMVSCPL%NDIM + WRITE(UNIT=NULOUT,FMT=' ('' JFLD = '',I3)') JFLD + WRITE(UNIT=NULOUT,FMT=' ('' EALFA_GMVS FOR JFLD'')') + DO JGL=1,NDGENL,100 + IGLG=MYLATS(JGL) + WRITE(UNIT=NULOUT,FMT='(2X,14(1X,E8.2))') (YDML_LBC%EALFA_GMVS(JLON+NSTAGP(JGL),JFLD),JLON=1,NDLON,100) + ENDDO + ENDDO + DO JFLD=1,YDML_LBC%NDIMCPL + WRITE(UNIT=NULOUT,FMT=' ('' JFLD = '',I3)') JFLD + WRITE(UNIT=NULOUT,FMT=' ('' EALFA_GFL FOR JFLD'')') + DO JGL=1,NDGENL,100 + IGLG=MYLATS(JGL) + WRITE(UNIT=NULOUT,FMT='(2X,14(1X,E8.2))') (YDML_LBC%EALFA_GFL(JLON+NSTAGP(JGL),JFLD),JLON=1,NDLON,100) + ENDDO + ENDDO + IF(YDML_LBC%LUNBC) THEN + WRITE(UNIT=NULOUT,FMT='('' Upper Relaxation coefficients: '')') + DO JFLD=1,YDML_LBC%YYTGMVCPL%NDIM + WRITE(UNIT=NULOUT,FMT=' ('' JFLD = '',I3)') JFLD + WRITE(UNIT=NULOUT,FMT=' ('' EALFAU_GMV FOR JFLD'')') + WRITE(UNIT=NULOUT,FMT='(2X,14(1X,E8.2))')& + &YDML_LBC%EALFAU_GMV(1:NBZONU+1,JFLD) + ENDDO + ENDIF + IF (YDML_LBC%LTENC.AND.LRPLANE) THEN + DO JFLD=1,YDML_LBC%YYTGMVSTENC%NDIM + WRITE(UNIT=NULOUT,FMT=' ('' JFLD = '',I3)') JFLD + WRITE(UNIT=NULOUT,FMT=' ('' EALFA_TENC FOR JFLD'')') + DO JGL=1,NDGENL,100 + IGLG=MYLATS(JGL) + WRITE(UNIT=NULOUT,FMT='(2X,14(1X,E8.2))') (YDML_LBC%EALFA_TENC(JLON+NSTAGP(JGL),JFLD),JLON=1,NDLON,100) + ENDDO + ENDDO + ENDIF + ENDIF +ENDIF + +! * D4: Other variables for spectral nudging. +IF (YDML_LBC%LESPCPL) THEN + WRITE(UNIT=NULOUT,FMT='('' Other variables for spectral nudging: '')') + WRITE(UNIT=NULOUT,FMT='('' RNUDTFRAC = '',E20.14)') YDML_LBC%RNUDTFRAC + WRITE(UNIT=NULOUT,FMT='('' LSPNUSPDL = '',L2)') YDML_LBC%LSPNUSPDL + WRITE(UNIT=NULOUT,FMT='('' LNUDSPGFL = '',20(1X,L2))') YDML_LBC%LNUDSPGFL(:) + WRITE(UNIT=NULOUT,FMT='('' NEFRSPCPL = '',I5)') YDML_LBC%NEFRSPCPL + WRITE(UNIT=NULOUT,FMT='('' NEK0 = '',I5)') YDML_LBC%NEK0 + WRITE(UNIT=NULOUT,FMT='('' NEK1 = '',I5)') YDML_LBC%NEK1 + WRITE(UNIT=NULOUT,FMT='('' NEN1 = '',I5)') YDML_LBC%NEN1 + WRITE(UNIT=NULOUT,FMT='('' NEN2 = '',I5)') YDML_LBC%NEN2 + WRITE(UNIT=NULOUT,FMT='('' RNUTENC = '',E20.14)') YDML_LBC%RNUTENC + WRITE(UNIT=NULOUT,FMT='('' RTENC = '',E20.14)') YDML_LBC%RTENC + WRITE(NULOUT, FMT='(& + & '' SPNUDVOR = '',E11.4,'' SPNUDDIV = '',E11.4,'' SPNUDT = '',E11.4,& + & '' SPNUDQ = '',E11.4,'' SPNUDSP = '',E11.4& + & )') YDML_LBC%SPNUDVOR,YDML_LBC%SPNUDDIV,YDML_LBC%SPNUDT,YDML_LBC%SPNUDQ,YDML_LBC%SPNUDSP +ENDIF + +WRITE(NULOUT,*) ' ' + +!-------------------------------------------------------------------------- +END ASSOCIATE +IF (LHOOK) CALL DR_HOOK('YEMLBC_MODEL:SUELBC_MODEL',1,ZHOOK_HANDLE) +END SUBROUTINE SUELBC_MODEL + +SUBROUTINE DEALLOCATE_ELBC0B(YDML_LBC) + +!-------------------------------------------------------------------------- +! deallocates 'ELBC0B' arrays +!-------------------------------------------------------------------------- + +IMPLICIT NONE + +TYPE(TELBC_MODEL) ,INTENT(INOUT) :: YDML_LBC +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE + +! ------------------------------------------------------------------ +IF (LHOOK) CALL DR_HOOK('YEMLBC_MODEL:DEALLOCATE_ELBC0B',0,ZHOOK_HANDLE) +! ------------------------------------------------------------------ + +IF (ALLOCATED(YDML_LBC%EALFA_GMV)) DEALLOCATE(YDML_LBC%EALFA_GMV) +IF (ALLOCATED(YDML_LBC%EALFA_GMVS)) DEALLOCATE(YDML_LBC%EALFA_GMVS) +IF (ALLOCATED(YDML_LBC%EALFA_GFL)) DEALLOCATE(YDML_LBC%EALFA_GFL) +IF (ALLOCATED(YDML_LBC%EALFA_TENC)) DEALLOCATE(YDML_LBC%EALFA_TENC) +IF (ALLOCATED(YDML_LBC%EALFAGT3GMV)) DEALLOCATE(YDML_LBC%EALFAGT3GMV) +IF (ALLOCATED(YDML_LBC%EALFAGT3GMVS)) DEALLOCATE(YDML_LBC%EALFAGT3GMVS) +IF (ALLOCATED(YDML_LBC%EALFAGT3GFL)) DEALLOCATE(YDML_LBC%EALFAGT3GFL) +IF (ALLOCATED(YDML_LBC%EALFAU_GMV)) DEALLOCATE(YDML_LBC%EALFAU_GMV) +IF (ALLOCATED(YDML_LBC%EALFAU_GFL)) DEALLOCATE(YDML_LBC%EALFAU_GFL) + +IF (ALLOCATED(YDML_LBC%GMGT3 )) DEALLOCATE(YDML_LBC%GMGT3) +IF (ALLOCATED(YDML_LBC%GMGT4 )) DEALLOCATE(YDML_LBC%GMGT4) +IF (ALLOCATED(YDML_LBC%EWB )) DEALLOCATE(YDML_LBC%EWB) +IF (ALLOCATED(YDML_LBC%EWBDFIBW)) DEALLOCATE(YDML_LBC%EWBDFIBW) +IF (ALLOCATED(YDML_LBC%EWBDFIFW)) DEALLOCATE(YDML_LBC%EWBDFIFW) +IF (ALLOCATED(YDML_LBC%LNUDSPGFL)) DEALLOCATE(YDML_LBC%LNUDSPGFL) + +! ------------------------------------------------------------------ + +IF (LHOOK) CALL DR_HOOK('YEMLBC_MODEL:DEALLOCATE_ELBC0B',1,ZHOOK_HANDLE) +END SUBROUTINE DEALLOCATE_ELBC0B + +!============================================================================= + +END MODULE YEMLBC_MODEL diff --git a/src/arome/gmkpack_ignored_files b/src/arome/gmkpack_ignored_files index 7e7475d6743f9d2d0685616ded0f40f374f8eae9..9c15a90a667d6787a8624f7052a19ec9961ab8c5 100644 --- a/src/arome/gmkpack_ignored_files +++ b/src/arome/gmkpack_ignored_files @@ -79,6 +79,7 @@ phyex/micro/rzcolx.F90 mpa/dummy/mask_compress.F90 phyex/micro/cart_compress.F90 phyex/micro/modi_add_bounds.F90 +mpa/micro/externals/add_bounds.F90 phyex/micro/modi_cart_compress.F90 phyex/micro/modi_mask_compress.F90 phyex/micro/ini_budget.F90 diff --git a/src/arome/ial_version.json b/src/arome/ial_version.json index 90e99859a7a2d0ca5ca7064f78a761544ffe6f54..86b5a45c2327c858c0309772d132c5c3bc5f4055 100644 --- a/src/arome/ial_version.json +++ b/src/arome/ial_version.json @@ -1,6 +1,6 @@ { -"cycle":"48t3", +"cycle":"49t0", "branch":"main", "version":"01", -"scripttag":"_nam8" +"scripttag":"_nam1" } diff --git a/src/common/aux/gamma.F90 b/src/common/aux/gamma.F90 index 6969c28cd46d69740ad6356478f1ba46ff2b6edf..6e3b9dd0916d63dfeece78666a25eb175d0d8bad 100644 --- a/src/common/aux/gamma.F90 +++ b/src/common/aux/gamma.F90 @@ -12,8 +12,7 @@ ! ! ###################################### FUNCTION GAMMA_X0D(PX) RESULT(PGAMMA) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ###################################### ! ! @@ -66,7 +65,7 @@ INTEGER :: JJ ! Loop index REAL :: ZSER,ZSTP,ZTMP,ZX,ZY,ZCOEF(6) REAL :: ZPI ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GAMMA_X0D',0,ZHOOK_HANDLE) !------------------------------------------------------------------------------- ! @@ -121,8 +120,7 @@ END FUNCTION GAMMA_X0D ! ! ###################################### FUNCTION GAMMA_X1D(PX) RESULT(PGAMMA) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ###################################### ! ! @@ -177,7 +175,7 @@ INTEGER :: JI ! Loop index REAL :: ZSER, ZSTP, ZTMP, ZX, ZY, ZCOEF(6) REAL :: ZPI ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GAMMA_X1D',0,ZHOOK_HANDLE) !------------------------------------------------------------------------------- ! diff --git a/src/common/aux/gamma_inc.F90 b/src/common/aux/gamma_inc.F90 index abb9ebad8c19156a6108c0ce88c34806c7e70464..cff80e38169f0c45f7e0c18ece4a4ced3949fccc 100644 --- a/src/common/aux/gamma_inc.F90 +++ b/src/common/aux/gamma_inc.F90 @@ -3,8 +3,7 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. FUNCTION GAMMA_INC(PA,PX) RESULT(PGAMMA_INC) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################# ! ! @@ -72,7 +71,7 @@ REAL :: ZFPMIN=1.E-30 REAL :: ZAP,ZDEL,ZSUM REAL :: ZAN,ZB,ZC,ZD,ZH ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GAMMA_INC',0,ZHOOK_HANDLE) IF(PX<0.0 .OR. PA<=0.0) THEN CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'GAMMA_INC', 'invalid arguments: PX<0.0 .OR. PA<=0.0') diff --git a/src/common/aux/general_gamma.F90 b/src/common/aux/general_gamma.F90 index 7938d74fa1845b69c8871fb7e29f73f3210c2afb..c86a5fc1f3bd6a60f8c2b10af7f735aa6f0e3108 100644 --- a/src/common/aux/general_gamma.F90 +++ b/src/common/aux/general_gamma.F90 @@ -3,8 +3,7 @@ !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. FUNCTION GENERAL_GAMMA(PALPHA,PNU,PLBDA,PX) RESULT(PGENERAL_GAMMA) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################### ! ! @@ -60,7 +59,7 @@ REAL :: PGENERAL_GAMMA ! REAL :: ZARG,ZPOWER ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GENERAL_GAMMA',0,ZHOOK_HANDLE) ZARG = PLBDA*PX ZPOWER = PALPHA*PNU - 1.0 diff --git a/src/common/aux/gradient_m.F90 b/src/common/aux/gradient_m.F90 index b98d5acd8f7d79c84c8d296dac692f863fd20a8f..b73a164766d68688db3a620256630eef3969235b 100644 --- a/src/common/aux/gradient_m.F90 +++ b/src/common/aux/gradient_m.F90 @@ -4,8 +4,7 @@ !MNH_LIC for details. version 1. ! ######spl FUNCTION GX_M_M(PA,PDXX,PDZZ,PDZX,KKA,KKU,KL) RESULT(PGX_M_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GX_M_M* - Cartesian Gradient operator: @@ -90,7 +89,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_M_M ! result mass point !* 1. DEFINITION of GX_M_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_M_M',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGX_M_M(:,:,:)= (DXF(MXM(PA(:,:,:))) - & @@ -108,8 +107,7 @@ END FUNCTION GX_M_M ! ! ####################################################### FUNCTION GX_M_U(KKA, KKU, KL,PY,PDXX,PDZZ,PDZX) RESULT(PGX_M_U) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################## ! !!**** *GX_M_U * - Compute the gradient along x for a variable localized at @@ -201,7 +199,7 @@ INTEGER :: JI_1JK, JIJK_1, JI_1JK_1, JIJKP1, JI_1JKP1 !* 1. COMPUTE THE GRADIENT ALONG X ! ----------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_M_U',0,ZHOOK_HANDLE) IIU=SIZE(PY,1) IJU=SIZE(PY,2) @@ -265,8 +263,7 @@ IF (LHOOK) CALL DR_HOOK('GX_M_U',1,ZHOOK_HANDLE) END FUNCTION GX_M_U ! ######spl FUNCTION GY_M_M(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_M_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GY_M_M* - Cartesian Gradient operator: @@ -350,7 +347,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_M_M ! result mass point ! -------------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_M_M',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGY_M_M(:,:,:)= (DYF(MYM(PA))-MZF(MYF(PDZY)*DZM(PA, KKA, KKU, KL)& @@ -365,8 +362,7 @@ IF (LHOOK) CALL DR_HOOK('GY_M_M',1,ZHOOK_HANDLE) END FUNCTION GY_M_M ! ######spl FUNCTION GY_M_V(KKA,KKU,KL,PY,PDYY,PDZZ,PDZY) RESULT(PGY_M_V) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################## ! !!**** *GY_M_V * - Compute the gradient along y for a variable localized at @@ -454,7 +450,7 @@ INTEGER IJU,IKU,JJ,JK !* 1. COMPUTE THE GRADIENT ALONG Y ! ---------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_M_V',0,ZHOOK_HANDLE) IJU=SIZE(PY,2) IKU=SIZE(PY,3) @@ -494,8 +490,7 @@ IF (LHOOK) CALL DR_HOOK('GY_M_V',1,ZHOOK_HANDLE) END FUNCTION GY_M_V ! ######spl FUNCTION GZ_M_M(PA,PDZZ, KKA, KKU, KL) RESULT(PGZ_M_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GZ_M_M* - Cartesian Gradient operator: @@ -571,7 +566,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_M_M ! result mass point !* 1. DEFINITION of GZ_M_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_M_M',0,ZHOOK_HANDLE) PGZ_M_M(:,:,:)= MZF(DZM(PA(:,:,:), KKA, KKU, KL)/PDZZ(:,:,:), KKA, KKU, KL) ! @@ -581,8 +576,7 @@ IF (LHOOK) CALL DR_HOOK('GZ_M_M',1,ZHOOK_HANDLE) END FUNCTION GZ_M_M ! ######spl FUNCTION GZ_M_W(KKA, KKU, KL,PY,PDZZ) RESULT(PGZ_M_W) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################### ! !!**** *GZ_M_W * - Compute the gradient along z direction for a @@ -657,7 +651,7 @@ INTEGER :: IKT,IKTB,IKTE !* 1. COMPUTE THE GRADIENT ALONG Z ! ----------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_M_W',0,ZHOOK_HANDLE) IKT=SIZE(PY,3) IKTB=1+JPVEXT_TURB diff --git a/src/common/aux/gradient_u.F90 b/src/common/aux/gradient_u.F90 index 2b92da6beb05bb643b4e223a44cbbad4bc5fc133..542c6cc0d7154cd734c1f2e6053633191591d2bd 100644 --- a/src/common/aux/gradient_u.F90 +++ b/src/common/aux/gradient_u.F90 @@ -1,7 +1,6 @@ ! ######spl FUNCTION GX_U_M(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_U_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GX_U_M* - Cartesian Gradient operator: @@ -85,7 +84,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_U_M ! result mass point !* 1. DEFINITION of GX_U_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_U_M',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGX_U_M(:,:,:)= ( DXF(PA) - & @@ -101,8 +100,7 @@ IF (LHOOK) CALL DR_HOOK('GX_U_M',1,ZHOOK_HANDLE) END FUNCTION GX_U_M ! ######spl FUNCTION GY_U_UV(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_U_UV) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GY_U_UV* - Cartesian Gradient operator: @@ -187,7 +185,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_U_UV ! result UV point !* 1. DEFINITION of GY_U_UV ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_U_UV',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGY_U_UV(:,:,:)= (DYM(PA)- MZF(MYM(DZM(PA, KKA, KKU, KL)/& @@ -202,8 +200,7 @@ IF (LHOOK) CALL DR_HOOK('GY_U_UV',1,ZHOOK_HANDLE) END FUNCTION GY_U_UV ! ######spl FUNCTION GZ_U_UW(PA,PDZZ, KKA, KKU, KL) RESULT(PGZ_U_UW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GZ_U_UW - Cartesian Gradient operator: @@ -278,7 +275,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_U_UW ! result UW point !* 1. DEFINITION of GZ_U_UW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_U_UW',0,ZHOOK_HANDLE) PGZ_U_UW(:,:,:)= DZM(PA, KKA, KKU, KL) / MXM(PDZZ) ! diff --git a/src/common/aux/gradient_v.F90 b/src/common/aux/gradient_v.F90 index 619c22a0dab214fdcfcad936aada6cf7a1d16f76..78c18d86ecdb4a47e3bb9698c40fa358df83d0d5 100644 --- a/src/common/aux/gradient_v.F90 +++ b/src/common/aux/gradient_v.F90 @@ -1,7 +1,6 @@ ! ######spl FUNCTION GX_V_UV(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_V_UV) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GX_V_UV* - Cartesian Gradient operator: @@ -85,7 +84,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_V_UV ! result UV point !* 1. DEFINITION of GX_V_UV ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_V_UV',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGX_V_UV(:,:,:)= ( DXM(PA)- MZF(MXM(DZM(PA, KKA, KKU, KL)/& @@ -100,8 +99,7 @@ IF (LHOOK) CALL DR_HOOK('GX_V_UV',1,ZHOOK_HANDLE) END FUNCTION GX_V_UV ! ######spl FUNCTION GY_V_M(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_V_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GY_V_M* - Cartesian Gradient operator: @@ -184,7 +182,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_V_M ! result mass point !* 1. DEFINITION of GY_V_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_V_M',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGY_V_M(:,:,:)= (DYF(PA) - & @@ -200,8 +198,7 @@ IF (LHOOK) CALL DR_HOOK('GY_V_M',1,ZHOOK_HANDLE) END FUNCTION GY_V_M ! ######spl FUNCTION GZ_V_VW(PA,PDZZ, KKA, KKU, KL) RESULT(PGZ_V_VW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GZ_V_VW - Cartesian Gradient operator: @@ -277,7 +274,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_V_VW ! result VW point !* 1. DEFINITION of GZ_V_VW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_V_VW',0,ZHOOK_HANDLE) PGZ_V_VW(:,:,:)= DZM(PA, KKA, KKU, KL) / MYM(PDZZ) ! diff --git a/src/common/aux/gradient_w.F90 b/src/common/aux/gradient_w.F90 index 02a79fb7e922af5851c0d9e6043d68c06540b807..a8a946966c94b40e481a9c4e8e322382915be272 100644 --- a/src/common/aux/gradient_w.F90 +++ b/src/common/aux/gradient_w.F90 @@ -1,7 +1,6 @@ ! ######spl FUNCTION GX_W_UW(PA,PDXX,PDZZ,PDZX, KKA, KKU, KL) RESULT(PGX_W_UW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GX_W_UW* - Cartesian Gradient operator: @@ -75,7 +74,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGX_W_UW ! result UW point !* 1. DEFINITION of GX_W_UW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_W_UW',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGX_W_UW(:,:,:)= DXM(PA(:,:,:))/(MZM(PDXX(:,:,:), KKA, KKU, KL)) & @@ -91,8 +90,7 @@ IF (LHOOK) CALL DR_HOOK('GX_W_UW',1,ZHOOK_HANDLE) END FUNCTION GX_W_UW ! ######spl FUNCTION GY_W_VW(PA,PDYY,PDZZ,PDZY, KKA, KKU, KL) RESULT(PGY_W_VW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GY_W_VW* - Cartesian Gradient operator: @@ -166,7 +164,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGY_W_VW ! result VW point !* 1. DEFINITION of GY_W_VW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_W_VW',0,ZHOOK_HANDLE) IF (.NOT. LFLAT) THEN PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(PDYY(:,:,:), KKA, KKU, KL)) & @@ -182,8 +180,7 @@ IF (LHOOK) CALL DR_HOOK('GY_W_VW',1,ZHOOK_HANDLE) END FUNCTION GY_W_VW ! ######spl FUNCTION GZ_W_M(PA,PDZZ, KKA, KKU, KL) RESULT(PGZ_W_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GZ_W_M* - Cartesian Gradient operator: @@ -253,7 +250,7 @@ REAL, DIMENSION(SIZE(PA,1),SIZE(PA,2),SIZE(PA,3)) :: PGZ_W_M ! result mass point !* 1. DEFINITION of GZ_W_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_W_M',0,ZHOOK_HANDLE) PGZ_W_M(:,:,:)= DZF(PA(:,:,:), KKA, KKU, KL)/(MZF(PDZZ(:,:,:), KKA, KKU, KL)) ! diff --git a/src/common/aux/mode_gradient_m_phy.F90 b/src/common/aux/mode_gradient_m_phy.F90 index 718599a9d74ac8e1a6f92a7c39b5226f82b7f9a5..71cd036b887808892fc0c639c534d52dd4fc22b3 100644 --- a/src/common/aux/mode_gradient_m_phy.F90 +++ b/src/common/aux/mode_gradient_m_phy.F90 @@ -106,8 +106,7 @@ PGZ_M_W(IIB:IIE,IJB:IJE,IKA)= PGZ_M_W(IIB:IIE,IJB:IJE,IKU) ! -999. END SUBROUTINE GZ_M_W_PHY ! SUBROUTINE GX_M_M_PHY(D,OFLAT,PA,PDXX,PDZZ,PDZX,PGX_M_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GX_M_M* - Cartesian Gradient operator: @@ -195,7 +194,7 @@ INTEGER :: JI,JJ,JK !* 1. DEFINITION of GX_M_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_M_M',0,ZHOOK_HANDLE) ! IIE=D%NIEC @@ -232,8 +231,7 @@ IF (LHOOK) CALL DR_HOOK('GX_M_M',1,ZHOOK_HANDLE) END SUBROUTINE GX_M_M_PHY ! SUBROUTINE GY_M_M_PHY(D,OFLAT,PA,PDYY,PDZZ,PDZY,PGY_M_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GY_M_M* - Cartesian Gradient operator: @@ -312,7 +310,7 @@ INTEGER :: JI,JJ,JK ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_M_M',0,ZHOOK_HANDLE) ! IIE=D%NIEC @@ -356,8 +354,7 @@ END SUBROUTINE GY_M_M_PHY ! ! ####################################################### SUBROUTINE GX_M_U_PHY(D,OFLAT,PY,PDXX,PDZZ,PDZX,PGX_M_U) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################## ! !!**** *GX_M_U * - Compute the gradient along x for a variable localized at @@ -449,7 +446,7 @@ INTEGER :: JI_1JK, JIJK_1, JI_1JK_1, JIJKP1, JI_1JKP1 !* 1. COMPUTE THE GRADIENT ALONG X ! ----------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_M_U',0,ZHOOK_HANDLE) IIU=D%NIT IJU=D%NJT @@ -506,8 +503,7 @@ IF (LHOOK) CALL DR_HOOK('GX_M_U',1,ZHOOK_HANDLE) END SUBROUTINE GX_M_U_PHY ! SUBROUTINE GY_M_V_PHY(D,OFLAT,PY,PDYY,PDZZ,PDZY,PGY_M_V) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################## ! !!**** *GY_M_V * - Compute the gradient along y for a variable localized at @@ -595,7 +591,7 @@ INTEGER IJU,IKU,JI,JJ,JK,IKL, IKA !* 1. COMPUTE THE GRADIENT ALONG Y ! ---------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_M_V',0,ZHOOK_HANDLE) IJU=D%NJT IKU=D%NKT diff --git a/src/common/aux/mode_gradient_u_phy.F90 b/src/common/aux/mode_gradient_u_phy.F90 index ab37275be8562c2f2caf9ba01bdf50373123af6c..9151e6e3aa362ac8a87df1b502a49dc526e67a88 100644 --- a/src/common/aux/mode_gradient_u_phy.F90 +++ b/src/common/aux/mode_gradient_u_phy.F90 @@ -100,8 +100,7 @@ PGZ_U_UW(IIB:IIE,IJB:IJE,1:IKT)= PA_WORK(IIB:IIE,IJB:IJE,1:IKT) & END SUBROUTINE GZ_U_UW_PHY ! SUBROUTINE GX_U_M_PHY(D,OFLAT,PA,PDXX,PDZZ,PDZX,PGX_U_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GX_U_M* - Cartesian Gradient operator: @@ -189,7 +188,7 @@ INTEGER :: JI,JJ,JK !* 1. DEFINITION of GX_U_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_U_M',0,ZHOOK_HANDLE) ! IIE=D%NIEC diff --git a/src/common/aux/mode_gradient_v_phy.F90 b/src/common/aux/mode_gradient_v_phy.F90 index bd9fece3ed0670056c2078f77d9518f4b8456c4a..f8d0aa401d24b09f5b56f7fc414167dfe9187801 100644 --- a/src/common/aux/mode_gradient_v_phy.F90 +++ b/src/common/aux/mode_gradient_v_phy.F90 @@ -97,8 +97,7 @@ PGZ_V_VW(IIB:IIE,IJB:IJE,1:IKT)= PA_WORK(IIB:IIE,IJB:IJE,1:IKT) & ! END SUBROUTINE GZ_V_VW_PHY SUBROUTINE GY_V_M_PHY(D,OFLAT,PA,PDYY,PDZZ,PDZY,PGY_V_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GY_V_M* - Cartesian Gradient operator: @@ -178,7 +177,7 @@ INTEGER :: JI,JJ,JK ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_V_M',0,ZHOOK_HANDLE) ! IIE=D%NIEC diff --git a/src/common/aux/mode_gradient_w_phy.F90 b/src/common/aux/mode_gradient_w_phy.F90 index b9b43a2b41c9c46307e40ac5893731f555d1f811..a2651ee51c7f9d32f65cd428e1c80864305cf5d8 100644 --- a/src/common/aux/mode_gradient_w_phy.F90 +++ b/src/common/aux/mode_gradient_w_phy.F90 @@ -2,8 +2,7 @@ MODULE MODE_GRADIENT_W_PHY IMPLICIT NONE CONTAINS SUBROUTINE GX_W_UW_PHY(D,OFLAT,PA,PDXX,PDZZ,PDZX,PGX_W_UW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GX_W_UW* - Cartesian Gradient operator: @@ -80,7 +79,7 @@ INTEGER :: JI,JJ,JK !* 1. DEFINITION of GX_W_UW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GX_W_UW',0,ZHOOK_HANDLE) IIE=D%NIEC IIB=D%NIBC @@ -114,8 +113,7 @@ IF (LHOOK) CALL DR_HOOK('GX_W_UW',1,ZHOOK_HANDLE) END SUBROUTINE GX_W_UW_PHY ! SUBROUTINE GY_W_VW_PHY(D,OFLAT,PA,PDYY,PDZZ,PDZY,PGY_W_VW) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *GY_W_VW* - Cartesian Gradient operator: @@ -191,7 +189,7 @@ INTEGER :: JI,JJ,JK !* 1. DEFINITION of GY_W_VW ! --------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GY_W_VW',0,ZHOOK_HANDLE) !IF (.NOT. LFLAT) THEN ! PGY_W_VW(:,:,:)= DYM(PA(:,:,:))/(MZM(PDYY(:,:,:), KKA, KKU, KL)) & @@ -233,8 +231,7 @@ IF (LHOOK) CALL DR_HOOK('GY_W_VW',1,ZHOOK_HANDLE) END SUBROUTINE GY_W_VW_PHY ! SUBROUTINE GZ_W_M_PHY(D,PA,PDZZ,PGZ_W_M) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ####################################################### ! !!**** *GZ_W_M* - Cartesian Gradient operator: @@ -307,7 +304,7 @@ INTEGER :: JI,JJ,JK !* 1. DEFINITION of GZ_W_M ! -------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('GZ_W_M',0,ZHOOK_HANDLE) IIE=D%NIEC IIB=D%NIBC diff --git a/src/common/aux/mode_ini_cst.F90 b/src/common/aux/mode_ini_cst.F90 index 124cde9d185ed19c5ac870c1dfcc9eb5c6a2a25e..89eef4a6023da4a4be1ea9a11f9d65aff426d3e6 100644 --- a/src/common/aux/mode_ini_cst.F90 +++ b/src/common/aux/mode_ini_cst.F90 @@ -62,12 +62,11 @@ CONTAINS USE MODD_CST USE MODD_PRECISION, ONLY: MNHREAL, MNHREAL32, MNHREAL64 USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('INI_CST',0,ZHOOK_HANDLE) CALL CST_ASSOCIATE() diff --git a/src/common/aux/mode_thermo.F90 b/src/common/aux/mode_thermo.F90 index eff0e8cef3a7ae57c05c29b73845228170a054ca..7bfd386efffaeac3245ff23d032ea92ef21b4f57 100644 --- a/src/common/aux/mode_thermo.F90 +++ b/src/common/aux/mode_thermo.F90 @@ -41,8 +41,7 @@ ! !------------------------------------------------------------------------------- USE MODE_MSG -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE PRIVATE @@ -161,7 +160,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: PFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_FOES_3D',0,ZHOOK_HANDLE) PFOES(:,:,:) = EXP( XALPW - XBETAW/PT(:,:,:) - XGAMW*LOG(PT(:,:,:)) ) !------------------------------------------------------------------------------- @@ -243,7 +242,7 @@ REAL, DIMENSION(SIZE(PT)) :: PFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_FOES_1D',0,ZHOOK_HANDLE) PFOES(:) = EXP( XALPW - XBETAW/PT(:) - XGAMW*LOG(PT(:)) ) !------------------------------------------------------------------------------- @@ -357,7 +356,7 @@ INTEGER :: JRR ! loop counter !* 1. COMPUTE VAPOR MIXING RATIO ! -------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_PMR_HU_3D',0,ZHOOK_HANDLE) ITERMAX = 10 IF (PRESENT(KITERMAX)) ITERMAX=KITERMAX @@ -501,7 +500,7 @@ INTEGER :: ILUOUT,IRESP !* 1. COMPUTE VAPOR MIXING RATIO ! -------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_PMR_HU_1D',0,ZHOOK_HANDLE) ITERMAX = 10 IF (PRESENT(KITERMAX)) ITERMAX=KITERMAX @@ -618,7 +617,7 @@ REAL :: PFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_FOES_0D',0,ZHOOK_HANDLE) PFOES = EXP( XALPW - XBETAW/PT - XGAMW*LOG(PT) ) !------------------------------------------------------------------------------- @@ -703,7 +702,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: PFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_FOES_2D',0,ZHOOK_HANDLE) PFOES(:,:) = EXP( XALPW - XBETAW/PT(:,:) - XGAMW*LOG(PT(:,:)) ) !------------------------------------------------------------------------------- @@ -790,7 +789,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: PFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:SM_FOES_2D_MASK',0,ZHOOK_HANDLE) WHERE (OMASK(:,:)) PFOES(:,:) = EXP( XALPW - XBETAW/PT(:,:) - XGAMW*LOG(PT(:,:)) ) @@ -888,7 +887,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATW_3D',0,ZHOOK_HANDLE) ZFOES(:,:,:) = MIN(EXP( XALPW - XBETAW/PT(:,:,:) - XGAMW*LOG(PT(:,:,:)) ), 0.99*PP(:,:,:)) ! @@ -990,7 +989,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATW_2D',0,ZHOOK_HANDLE) ZFOES(:,:) = MIN(EXP( XALPW - XBETAW/PT(:,:) - XGAMW*LOG(PT(:,:)) ), 0.99*PP(:,:)) ! @@ -1090,7 +1089,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor ! !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATW_2D_MASK',0,ZHOOK_HANDLE) WHERE (OMASK(:,:)) ! @@ -1204,7 +1203,7 @@ REAL, DIMENSION(SIZE(PT,1)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATW_1D',0,ZHOOK_HANDLE) ZFOES(:) = MIN(EXP( XALPW - XBETAW/PT(:) - XGAMW*LOG(PT(:)) ), 0.99*PP(:)) ! @@ -1306,7 +1305,7 @@ REAL :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATW_0D',0,ZHOOK_HANDLE) ZFOES = MIN(EXP( XALPW - XBETAW/PT - XGAMW*LOG(PT) ), 0.99*PP) ! @@ -1412,7 +1411,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor ! !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:DQSATW_O_DT_2D_MASK',0,ZHOOK_HANDLE) WHERE (OMASK(:,:)) ! @@ -1533,7 +1532,7 @@ REAL, DIMENSION(SIZE(PT)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:DQSATW_O_DT_1D',0,ZHOOK_HANDLE) ZFOES(:) = PP(:) / (1.+XRD/XRV*(1./PQSAT(:)-1.)) ! @@ -1749,7 +1748,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor ! !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:DQSATI_O_DT_2D_MASK',0,ZHOOK_HANDLE) WHERE (OMASK(:,:)) ! @@ -1871,7 +1870,7 @@ REAL, DIMENSION(SIZE(PT)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:DQSATI_O_DT_1D',0,ZHOOK_HANDLE) ZFOES(:) = PP(:) / (1.+XRD/XRV*(1./PQSAT(:)-1.)) ! @@ -2083,7 +2082,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2),SIZE(PT,3)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATI_3D',0,ZHOOK_HANDLE) ZFOES(:,:,:) = MIN(EXP( XALPI - XBETAI/PT(:,:,:) - XGAMI*LOG(PT(:,:,:)) ), 0.99*PP(:,:,:)) ! @@ -2185,7 +2184,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATI_2D',0,ZHOOK_HANDLE) ZFOES(:,:) = MIN(EXP( XALPI - XBETAI/PT(:,:) - XGAMI*LOG(PT(:,:)) ), 0.99*PP(:,:)) ! @@ -2285,7 +2284,7 @@ REAL, DIMENSION(SIZE(PT,1),SIZE(PT,2)) :: ZFOES ! saturation vapor ! !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATI_2D_MASK',0,ZHOOK_HANDLE) WHERE (OMASK(:,:)) ! @@ -2399,7 +2398,7 @@ REAL, DIMENSION(SIZE(PT,1)) :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATI_1D',0,ZHOOK_HANDLE) ZFOES(:) = MIN(EXP( XALPI - XBETAI/PT(:) - XGAMI*LOG(PT(:)) ), 0.99*PP(:)) ! @@ -2501,7 +2500,7 @@ REAL :: ZFOES ! saturation vapor !* 1. COMPUTE SATURATION VAPOR PRESSURE ! --------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_THERMO:QSATI_0D',0,ZHOOK_HANDLE) ZFOES = MIN(EXP( XALPI - XBETAI/PT - XGAMI*LOG(PT) ), 0.99*PP) ! diff --git a/src/common/aux/shuman.F90 b/src/common/aux/shuman.F90 index be56b4cce204a0f76d1ab132de20f8bd8796e00a..2da0d5c5f2d73dc4036c5b48a4a91e87aee2baf4 100644 --- a/src/common/aux/shuman.F90 +++ b/src/common/aux/shuman.F90 @@ -2,8 +2,7 @@ ! ############################### FUNCTION MXF(PA) RESULT(PMXF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXF* - Shuman operator : mean operator in x direction for a @@ -73,7 +72,7 @@ INTEGER :: IIU ! upper bound in x direction of PA !* 1. DEFINITION OF MXF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXF',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -96,8 +95,7 @@ END FUNCTION MXF ! ! ############################### FUNCTION MXM(PA) RESULT(PMXM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXM* - Shuman operator : mean operator in x direction for a @@ -165,7 +163,7 @@ INTEGER :: IIU ! Size of the array in the x direction !* 1. DEFINITION OF MXM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXM',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -188,8 +186,7 @@ END FUNCTION MXM ! ! ############################### FUNCTION MYF(PA) RESULT(PMYF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYF* - Shuman operator : mean operator in y direction for a @@ -259,7 +256,7 @@ INTEGER :: IJU ! upper bound in y direction of PA !* 1. DEFINITION OF MYF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYF',0,ZHOOK_HANDLE) IJU = SIZE(PA,2) @@ -281,8 +278,7 @@ END FUNCTION MYF ! ! ############################### FUNCTION MYM(PA) RESULT(PMYM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYM* - Shuman operator : mean operator in y direction for a @@ -350,7 +346,7 @@ INTEGER :: IJU ! Size of the array in the y direction !* 1. DEFINITION OF MYM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYM',0,ZHOOK_HANDLE) IJU=SIZE(PA,2) @@ -373,8 +369,7 @@ END FUNCTION MYM ! ! ############################### FUNCTION MZF(PA, KKA, KKU, KL) RESULT(PMZF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MZF* - Shuman operator : mean operator in z direction for a @@ -440,7 +435,7 @@ INTEGER :: IKT ! upper bound in z direction of PA !* 1. DEFINITION OF MZF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MZF',0,ZHOOK_HANDLE) IKT = SIZE(PA,3) DO JK=2,IKT-1 @@ -457,8 +452,7 @@ END FUNCTION MZF ! ! ############################### FUNCTION MZM(PA, KKA, KKU, KL) RESULT(PMZM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MZM* - Shuman operator : mean operator in z direction for a @@ -522,7 +516,7 @@ INTEGER :: JK ! Loop index in z direction !* 1. DEFINITION OF MZM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MZM',0,ZHOOK_HANDLE) DO JK=2,SIZE(PA,3)-1 PMZM(:,:,JK) = 0.5*( PA(:,:,JK)+PA(:,:,JK-KL) ) @@ -536,8 +530,7 @@ IF (LHOOK) CALL DR_HOOK('MZM',1,ZHOOK_HANDLE) END FUNCTION MZM ! ############################### FUNCTION DXF(PA) RESULT(PDXF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DXF* - Shuman operator : finite difference operator in x direction @@ -608,7 +601,7 @@ INTEGER :: IIU ! upper bound in x direction of PA !* 1. DEFINITION OF DXF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DXF',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -626,8 +619,7 @@ END FUNCTION DXF ! ! ############################### FUNCTION DXM(PA) RESULT(PDXM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DXM* - Shuman operator : finite difference operator in x direction @@ -698,7 +690,7 @@ INTEGER :: IIU ! Size of the array in the x direction !* 1. DEFINITION OF DXM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DXM',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -717,8 +709,7 @@ END FUNCTION DXM ! ! ############################### FUNCTION DYF(PA) RESULT(PDYF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DYF* - Shuman operator : finite difference operator in y direction @@ -789,7 +780,7 @@ INTEGER :: IJU ! upper bound in y direction of PA !* 1. DEFINITION OF DYF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DYF',0,ZHOOK_HANDLE) IJU = SIZE(PA,2) ! @@ -809,8 +800,7 @@ END FUNCTION DYF ! ! ############################### FUNCTION DYM(PA) RESULT(PDYM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DYM* - Shuman operator : finite difference operator in y direction @@ -881,7 +871,7 @@ INTEGER :: IJU ! Size of the array in the y direction !* 1. DEFINITION OF DYM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DYM',0,ZHOOK_HANDLE) IJU=SIZE(PA,2) ! @@ -900,8 +890,7 @@ END FUNCTION DYM ! ! ############################### FUNCTION DZF(PA, KKA, KKU, KL) RESULT(PDZF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DZF* - Shuman operator : finite difference operator in z direction @@ -967,7 +956,7 @@ INTEGER :: IKT ! upper bound in z direction of PA !* 1. DEFINITION OF DZF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DZF',0,ZHOOK_HANDLE) IKT = SIZE(PA,3) DO JK=2,IKT-1 @@ -984,8 +973,7 @@ END FUNCTION DZF ! ! ############################### FUNCTION DZM(PA, KKA, KKU, KL) RESULT(PDZM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DZM* - Shuman operator : finite difference operator in z direction @@ -1050,7 +1038,7 @@ INTEGER :: JK ! Loop index in z direction !* 1. DEFINITION OF DZM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DZM',0,ZHOOK_HANDLE) DO JK=2,SIZE(PA,3)-1 PDZM(:,:,JK) = PA(:,:,JK) - PA(:,:,JK-KL) diff --git a/src/common/aux/shuman_phy.F90 b/src/common/aux/shuman_phy.F90 index 59af8535c383cbaac824e394cfa0502ff16b77a6..7853a7528ac2d16016d32f417d8f80d97b535dfc 100644 --- a/src/common/aux/shuman_phy.F90 +++ b/src/common/aux/shuman_phy.F90 @@ -3,8 +3,7 @@ IMPLICIT NONE CONTAINS ! ############################### SUBROUTINE MYF_PHY(D,PA,PMYF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYF* - Shuman operator : mean operator in y direction for a @@ -68,7 +67,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PMYF ! result at flux local ! 1. DEFINITION OF MYF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYF',0,ZHOOK_HANDLE) !POUR AROME @@ -80,8 +79,7 @@ END SUBROUTINE MYF_PHY ! ! ############################### SUBROUTINE MYF2D_PHY(D,PA,PMYF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYF* - Shuman operator : mean operator in y direction for a @@ -145,7 +143,7 @@ REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PMYF ! result at flux localizatio ! 1. DEFINITION OF MYF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYF',0,ZHOOK_HANDLE) !POUR AROME @@ -157,8 +155,7 @@ END SUBROUTINE MYF2D_PHY ! ! ############################### SUBROUTINE MYM2D_PHY(D,PA,PMYM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYM* - Shuman operator : mean operator in y direction for a @@ -218,7 +215,7 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIT,D%NJT), INTENT(IN) :: PA ! variable at mass localization REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PMYM ! result at flux localization ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYM',0,ZHOOK_HANDLE) !POUR AROME @@ -231,8 +228,7 @@ IF (LHOOK) CALL DR_HOOK('MYM',1,ZHOOK_HANDLE) END SUBROUTINE MYM2D_PHY ! ############################### SUBROUTINE MYM_PHY(D,PA,PMYM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MYM* - Shuman operator : mean operator in y direction for a @@ -302,7 +298,7 @@ INTEGER :: IJU ! Size of the array in the y direction !* 1. DEFINITION OF MYM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MYM',0,ZHOOK_HANDLE) IJU=SIZE(PA,2) @@ -317,8 +313,7 @@ END SUBROUTINE MYM_PHY ! ############################### SUBROUTINE MZM_PHY(D,PA,PMZM) ! ############################### - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MZM* - Shuman operator : mean operator in z direction for a @@ -384,7 +379,7 @@ INTEGER :: IKL,IKA,IKU !* 1. DEFINITION OF MZM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MZM',0,ZHOOK_HANDLE) IIJB = D%NIJB IIJE = D%NIJE @@ -409,8 +404,7 @@ IF (LHOOK) CALL DR_HOOK('MZM',1,ZHOOK_HANDLE) END SUBROUTINE MZM_PHY ! ############################### SUBROUTINE DZM_PHY(D,PA,PDZM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DZM* - Shuman operator : finite difference operator in z direction @@ -476,7 +470,7 @@ INTEGER :: IKL, IKA, IKU !* 1. DEFINITION OF DZM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DZM',0,ZHOOK_HANDLE) IIJB = D%NIJB IIJE = D%NIJE @@ -501,8 +495,7 @@ END SUBROUTINE DZM_PHY ! ############################### SUBROUTINE MXM_PHY(D,PA,PMXM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXM* - Shuman operator : mean operator in x direction for a @@ -571,7 +564,7 @@ INTEGER :: IIU ! Size of the array in the x direction !* 1. DEFINITION OF MXM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXM',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -593,8 +586,7 @@ END SUBROUTINE MXM_PHY ! ! ############################### SUBROUTINE MXM2D_PHY(D,PA,PMXM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXM* - Shuman operator : mean operator in x direction for a @@ -658,7 +650,7 @@ REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PMXM ! result at flux localizatio !* 1. DEFINITION OF MXM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXM',0,ZHOOK_HANDLE) !POUR AROME @@ -669,8 +661,7 @@ IF (LHOOK) CALL DR_HOOK('MXM',1,ZHOOK_HANDLE) END SUBROUTINE MXM2D_PHY ! ############################### SUBROUTINE MXF_PHY(D,PA,PMXF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXF* - Shuman operator : mean operator in x direction for a @@ -731,7 +722,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PMXF ! result at flux local !* 1. DEFINITION OF MXF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXF',0,ZHOOK_HANDLE) !POUR AROME ! @@ -741,8 +732,7 @@ IF (LHOOK) CALL DR_HOOK('MXF',1,ZHOOK_HANDLE) END SUBROUTINE MXF_PHY ! ############################### SUBROUTINE MXF2D_PHY(D,PA,PMXF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MXF* - Shuman operator : mean operator in x direction for a @@ -803,7 +793,7 @@ REAL, DIMENSION(D%NIT,D%NJT), INTENT(OUT) :: PMXF ! result at flux localizatio !* 1. DEFINITION OF MXF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MXF',0,ZHOOK_HANDLE) !POUR AROME ! @@ -813,8 +803,7 @@ IF (LHOOK) CALL DR_HOOK('MXF',1,ZHOOK_HANDLE) END SUBROUTINE MXF2D_PHY ! ############################### SUBROUTINE MZF_PHY(D,PA,PMZF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *MZF* - Shuman operator : mean operator in z direction for a @@ -879,7 +868,7 @@ INTEGER :: IKL, IKA, IKU !* 1. DEFINITION OF MZF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MZF',0,ZHOOK_HANDLE) IIJB = D%NIJB IIJE = D%NIJE @@ -903,8 +892,7 @@ IF (LHOOK) CALL DR_HOOK('MZF',1,ZHOOK_HANDLE) END SUBROUTINE MZF_PHY ! ############################### SUBROUTINE DZF_PHY(D,PA,PDZF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DZF* - Shuman operator : finite difference operator in z direction @@ -969,7 +957,7 @@ INTEGER :: IKL, IKA, IKU !* 1. DEFINITION OF DZF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DZF',0,ZHOOK_HANDLE) IIJB = D%NIJB IIJE = D%NIJE @@ -994,8 +982,7 @@ END SUBROUTINE DZF_PHY ! ! ############################### SUBROUTINE DYM_PHY(D,PA,PDYM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DYM* - Shuman operator : finite difference operator in y direction @@ -1069,7 +1056,7 @@ INTEGER :: IJU ! Size of the array in the y direction !* 1. DEFINITION OF DYM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DYM',0,ZHOOK_HANDLE) IJU=SIZE(PA,2) ! @@ -1087,8 +1074,7 @@ END SUBROUTINE DYM_PHY ! ! ############################### SUBROUTINE DXM_PHY(D,PA,PDXM) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DXM* - Shuman operator : finite difference operator in x direction @@ -1161,7 +1147,7 @@ INTEGER :: IIU ! Size of the array in the x direction !* 1. DEFINITION OF DXM ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DXM',0,ZHOOK_HANDLE) IIU = SIZE(PA,1) ! @@ -1178,8 +1164,7 @@ IF (LHOOK) CALL DR_HOOK('DXM',1,ZHOOK_HANDLE) END SUBROUTINE DXM_PHY ! ############################### SUBROUTINE DXF_PHY(D,PA,PDXF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DXF* - Shuman operator : finite difference operator in x direction @@ -1241,7 +1226,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PDXF ! result at mass ! localization ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DXF',0,ZHOOK_HANDLE) ! CALL ABORT ! AROME SHOULD NOT CALLED HORIZONTAL FINITE DIFFERENCE @@ -1253,8 +1238,7 @@ END SUBROUTINE DXF_PHY ! ! ############################### SUBROUTINE DYF_PHY(D,PA,PDYF) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################### ! !!**** *DYF* - Shuman operator : finite difference operator in y direction @@ -1319,7 +1303,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(OUT) :: PDYF ! result at mass !* 1. DEFINITION OF DYF ! ------------------ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('DYF',0,ZHOOK_HANDLE) ! CALL ABORT ! AROME SHOULD NOT CALLED HORIZONTAL FINITE DIFFERENCE diff --git a/src/common/micro/condensation.F90 b/src/common/micro/condensation.F90 index e75434de442cc36d24caafcbede1e74230538708..34015e1a1b615c72ab01d0469dd1c9620b81a3b2 100644 --- a/src/common/micro/condensation.F90 +++ b/src/common/micro/condensation.F90 @@ -86,8 +86,7 @@ !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t @@ -188,7 +187,7 @@ REAL, DIMENSION(D%NIJT) :: ZDZ, ZARDUM, ZARDUM2, ZCLDINI REAL :: ZDZFACT,ZDZREF ! LHGT_QS END -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: IERR ! ! diff --git a/src/common/micro/ice_adjust.F90 b/src/common/micro/ice_adjust.F90 index 9db6f08fed52d23e7780b8fa2b53d185abfeb223..b480da71079ce570a02efe4b5e800f609bb1e9c6 100644 --- a/src/common/micro/ice_adjust.F90 +++ b/src/common/micro/ice_adjust.F90 @@ -109,8 +109,7 @@ !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t USE MODD_NEB_n, ONLY: NEB_t @@ -217,7 +216,7 @@ INTEGER :: IKTB, IKTE, IIJB, IIJE ! REAL, DIMENSION(D%NIJT,D%NKT) :: ZSIGS, ZSRCS REAL, DIMENSION(D%NIJT) :: ZSIGQSAT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !------------------------------------------------------------------------------- ! diff --git a/src/common/micro/mode_ice4_budgets.F90 b/src/common/micro/mode_ice4_budgets.F90 index 9aa4f2eb9519fc9a9b2c2380547042811dbbea84..f4c90e05da431016252e68994712c286542e6c1d 100644 --- a/src/common/micro/mode_ice4_budgets.F90 +++ b/src/common/micro/mode_ice4_budgets.F90 @@ -15,8 +15,7 @@ SUBROUTINE ICE4_BUDGETS(D, PARAMI, BUCONF, KSIZE, PTSTEP, KRR, K1, K2, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & @@ -54,7 +53,7 @@ INTEGER, INTENT(IN) :: KBUDGETS ! !* 0.2 Declarations of local variables : ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! INTEGER :: JIJ, JK, JL INTEGER :: IKTB, IKTE, IKB, IIJB, IIJE diff --git a/src/common/micro/mode_ice4_compute_pdf.F90 b/src/common/micro/mode_ice4_compute_pdf.F90 index 5ef44c079c2811b75ff9092a319587434ae70773..b207f55ae1558ad3369d277cd6f86def5854bd45 100644 --- a/src/common/micro/mode_ice4_compute_pdf.F90 +++ b/src/common/micro/mode_ice4_compute_pdf.F90 @@ -31,8 +31,7 @@ SUBROUTINE ICE4_COMPUTE_PDF(CST, ICEP, ICED, KSIZE, HSUBG_AUCV_RC, HSUBG_AUCV_RI USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! USE MODE_MSG ! @@ -77,7 +76,7 @@ REAL, DIMENSION(KSIZE) :: ZRCRAUTC, & !RC value to begin rain formation =XC ! = PHLC_HRC/HCF+ PHLC_LRC/LCF ZSUMRC, ZSUMRI REAL :: ZCOEFFRCM -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JI !------------------------------------------------------------------------------- ! diff --git a/src/common/micro/mode_ice4_correct_negativities.F90 b/src/common/micro/mode_ice4_correct_negativities.F90 index 637c73612e7179e2c8cc1f496ac55830372215bc..cf569687e9cf6ddaac782d09e9f869eb0c5dde51 100644 --- a/src/common/micro/mode_ice4_correct_negativities.F90 +++ b/src/common/micro/mode_ice4_correct_negativities.F90 @@ -10,8 +10,7 @@ SUBROUTINE ICE4_CORRECT_NEGATIVITIES(D, ICED, KRR, PRV, PRC, PRR, & &PRI, PRS, PRG, & &PTH, PLVFACT, PLSFACT, PRH) ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t ! @@ -27,7 +26,7 @@ REAL, DIMENSION(D%NIJT, D%NKT), OPTIONAL, INTENT(INOUT) :: PRH REAL :: ZW INTEGER :: JIJ, JK, IKTB, IKTE, IIJB, IIJE -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! IF (LHOOK) CALL DR_HOOK('ICE4_CORRECT_NEGATIVITIES', 0, ZHOOK_HANDLE) ! diff --git a/src/common/micro/mode_ice4_fast_rg.F90 b/src/common/micro/mode_ice4_fast_rg.F90 index 33c14921788b371b835b3ff1cb9e761df19b082a..a66e47085a08a5357062a33638cf38d55c1e1f3d 100644 --- a/src/common/micro/mode_ice4_fast_rg.F90 +++ b/src/common/micro/mode_ice4_fast_rg.F90 @@ -40,8 +40,7 @@ USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -106,7 +105,7 @@ REAL, DIMENSION(KPROMA) :: ZZW, & REAL :: ZZW0D INTEGER :: JL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ICE4_FAST_RG', 0, ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_fast_rh.F90 b/src/common/micro/mode_ice4_fast_rh.F90 index 6ea2630e604d522c0a31e468ead21b4f646f4b75..0c0e8c5e38a363d61524e47f97cdf9d7744d7d1f 100644 --- a/src/common/micro/mode_ice4_fast_rh.F90 +++ b/src/common/micro/mode_ice4_fast_rh.F90 @@ -39,8 +39,7 @@ USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -99,7 +98,7 @@ REAL, DIMENSION(KPROMA) :: ZZW, & ZRDRYH_INIT, ZRWETH_INIT, & ZRDRYHG INTEGER :: JL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE LOGICAL, DIMENSION(KPROMA) :: LLWETH, LLDRYH ! !------------------------------------------------------------------------------- diff --git a/src/common/micro/mode_ice4_fast_ri.F90 b/src/common/micro/mode_ice4_fast_ri.F90 index 934ad5f66e67152e044f04b976770bad79e86641..74bb50a088b42b59cce1cb854291f571eb0e771f 100644 --- a/src/common/micro/mode_ice4_fast_ri.F90 +++ b/src/common/micro/mode_ice4_fast_ri.F90 @@ -32,8 +32,7 @@ SUBROUTINE ICE4_FAST_RI(ICEP, ICED, KPROMA, KSIZE, LDSOFT, LDCOMPUTE, & ! USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -57,7 +56,7 @@ REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PRCBERI ! Bergeron-Findeisen eff ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JL ! !------------------------------------------------------------------------------- diff --git a/src/common/micro/mode_ice4_fast_rs.F90 b/src/common/micro/mode_ice4_fast_rs.F90 index 3545799c228bd8c1f7d67ed9881c2699267264b5..df7b233d0f139630532ecbb22f6a33226ff0b99a 100644 --- a/src/common/micro/mode_ice4_fast_rs.F90 +++ b/src/common/micro/mode_ice4_fast_rs.F90 @@ -41,8 +41,7 @@ USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -91,7 +90,7 @@ REAL, DIMENSION(KPROMA) :: ZBUF1, ZBUF2, ZBUF3 REAL, DIMENSION(KPROMA) :: ZZW, ZZW1, ZZW2, ZZW3, ZFREEZ_RATE INTEGER :: JL REAL :: ZZW0D -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ICE4_FAST_RS', 0, ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_nucleation.F90 b/src/common/micro/mode_ice4_nucleation.F90 index 4209d5f209f8beb1083dda607ceeac40b11ff08b..90a3fbba33b64d05decc1d75b8593f759ed98b83 100644 --- a/src/common/micro/mode_ice4_nucleation.F90 +++ b/src/common/micro/mode_ice4_nucleation.F90 @@ -32,8 +32,7 @@ USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -58,7 +57,7 @@ REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRVHENI_MR ! Mixing ratio change due !* 0.2 declaration of local variables ! REAL, DIMENSION(KSIZE) :: ZW ! work array -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE LOGICAL, DIMENSION(KSIZE) :: GNEGT ! Test where to compute the HEN process REAL, DIMENSION(KSIZE) :: ZZW, & ! Work array ZUSW, & ! Undersaturation over water diff --git a/src/common/micro/mode_ice4_pack.F90 b/src/common/micro/mode_ice4_pack.F90 index 5e6a03346f77608db5b8bf76b7245fc5f9670ce9..54448b4ed82f19eb36ad560b1b8bab6554055c69 100644 --- a/src/common/micro/mode_ice4_pack.F90 +++ b/src/common/micro/mode_ice4_pack.F90 @@ -23,8 +23,7 @@ SUBROUTINE ICE4_PACK(D, CST, PARAMI, ICEP, ICED, BUCONF, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t @@ -120,7 +119,7 @@ REAL, DIMENSION(D%NIJT,D%NKT), OPTIONAL, INTENT(INOUT) :: PRHS ! Hail m.r. s ! !* 0.2 Declarations of local variables : ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! INTEGER :: JIJ, JK INTEGER :: IKTB, IKTE, IIJB, IIJE diff --git a/src/common/micro/mode_ice4_rainfr_vert.F90 b/src/common/micro/mode_ice4_rainfr_vert.F90 index 38e3f495c8f2c9434861db97c4a49960f7e5eccd..43d8410c8399c909602dc320f6479bf76ef6584a 100644 --- a/src/common/micro/mode_ice4_rainfr_vert.F90 +++ b/src/common/micro/mode_ice4_rainfr_vert.F90 @@ -25,8 +25,7 @@ SUBROUTINE ICE4_RAINFR_VERT(D, ICED, PPRFR, PRR, PRS, PRG, PRH) !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_RAIN_ICE_DESCR_n, ONLY : RAIN_ICE_DESCR_t ! @@ -45,7 +44,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), OPTIONAL, INTENT(IN) :: PRH !Hail field INTEGER :: IKB, IKE, IKL, IIE, IIB, IJB, IJE !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JI, JJ, JK LOGICAL :: MASK ! diff --git a/src/common/micro/mode_ice4_rimltc.F90 b/src/common/micro/mode_ice4_rimltc.F90 index 52914d30fe740bd5fc19b6a6c874d39fc8b8837f..8eae95bf67409630fcc29e599bac3e90628608b5 100644 --- a/src/common/micro/mode_ice4_rimltc.F90 +++ b/src/common/micro/mode_ice4_rimltc.F90 @@ -31,8 +31,7 @@ SUBROUTINE ICE4_RIMLTC(CST, PARAMI, KPROMA, KSIZE, LDCOMPUTE, & ! USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -52,7 +51,7 @@ REAL, DIMENSION(KPROMA), INTENT(OUT) :: PRIMLTC_MR ! Mixing ratio change ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JL ! !------------------------------------------------------------------------------- diff --git a/src/common/micro/mode_ice4_rrhong.F90 b/src/common/micro/mode_ice4_rrhong.F90 index a7ade9ab088a5ecce6d1ae7de6c7f29b578690d9..bdc95727d996905f907ee793d0a2b2c317bee806 100644 --- a/src/common/micro/mode_ice4_rrhong.F90 +++ b/src/common/micro/mode_ice4_rrhong.F90 @@ -31,8 +31,7 @@ SUBROUTINE ICE4_RRHONG(CST, PARAMI, ICED, KPROMA, KSIZE, LDCOMPUTE, & USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -53,7 +52,7 @@ REAL, DIMENSION(KPROMA), INTENT(OUT) :: PRRHONG_MR ! Mixing ratio change ! !* 0.2 declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JL ! !------------------------------------------------------------------------------- diff --git a/src/common/micro/mode_ice4_rsrimcg_old.F90 b/src/common/micro/mode_ice4_rsrimcg_old.F90 index dde4a8311301052f4f4ceba816e87bbbdc76193f..487c971987961338da1653eee02ef44eb66999aa 100644 --- a/src/common/micro/mode_ice4_rsrimcg_old.F90 +++ b/src/common/micro/mode_ice4_rsrimcg_old.F90 @@ -34,8 +34,7 @@ USE MODD_CST, ONLY: CST_t USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -63,7 +62,7 @@ REAL, DIMENSION(KPROMA) :: ZBUF1, ZBUF2 INTEGER, DIMENSION(KPROMA) :: IBUF1, IBUF2 REAL, DIMENSION(KPROMA) :: ZZW INTEGER :: JL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ICE4_RSRIMCG_OLD', 0, ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_sedimentation.F90 b/src/common/micro/mode_ice4_sedimentation.F90 index e0a0d6ab75ec02f2b03044b94cbdb16c5d1009b0..9bab7506fb3316a3eb26427f85e874da59020fb7 100644 --- a/src/common/micro/mode_ice4_sedimentation.F90 +++ b/src/common/micro/mode_ice4_sedimentation.F90 @@ -31,8 +31,7 @@ SUBROUTINE ICE4_SEDIMENTATION(D, CST, ICEP, ICED, PARAMI, BUCONF, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_RC, & NBUDGET_RI, NBUDGET_RR, NBUDGET_RS, NBUDGET_RG, NBUDGET_RH @@ -99,7 +98,7 @@ REAL, DIMENSION(D%NIJT,D%NKT,KRR), OPTIONAL, INTENT(OUT) :: PFPR ! upper-ai REAL, DIMENSION(D%NIJT,D%NKT) :: ZRCT, ZRRT, ZRIT, ZRST, ZRGT, ZRHT REAL, DIMENSION(D%NIJT) :: ZINPRI INTEGER :: JK, JIJ, IKTB, IKTE, IIJB, IIJE -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION', 0, ZHOOK_HANDLE) IKTB=D%NKTB diff --git a/src/common/micro/mode_ice4_sedimentation_split.F90 b/src/common/micro/mode_ice4_sedimentation_split.F90 index e72dfba7dab58430fe3eb1bd987d82ffeb24dd12..5316637470e4e93c28cdab4dea0b1908f5a29a31 100644 --- a/src/common/micro/mode_ice4_sedimentation_split.F90 +++ b/src/common/micro/mode_ice4_sedimentation_split.F90 @@ -33,8 +33,7 @@ SUBROUTINE ICE4_SEDIMENTATION_SPLIT(D, CST, ICEP, ICED, PARAMI, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t @@ -106,7 +105,7 @@ REAL, DIMENSION(D%NIJT, D%NKT) :: ZCONC3D, & ZRST, & & ZRGT, & & ZRHT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_SPLIT', 0, ZHOOK_HANDLE) @@ -323,7 +322,7 @@ REAL, DIMENSION(SIZE(ICED%XRTMIN)) :: ZRSMIN REAL, DIMENSION(D%NIJT) :: ZREMAINT ! Remaining time until the timestep end REAL, DIMENSION(D%NIJT, 0:D%NKT+1) :: ZWSED ! Sedimentation fluxes INTEGER :: IKTB, IKTE, IKB, IKL, IIJE, IIJB -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_SPLIT:INTERNAL_SEDIM_SPLIT', 0, ZHOOK_HANDLE) ! IKTB=D%NKTB diff --git a/src/common/micro/mode_ice4_sedimentation_stat.F90 b/src/common/micro/mode_ice4_sedimentation_stat.F90 index fe8e820df4ee516114b6280d61a14d38af10ad77..009d712e505a6ef58426f9fa8186dc723e1c9a97 100644 --- a/src/common/micro/mode_ice4_sedimentation_stat.F90 +++ b/src/common/micro/mode_ice4_sedimentation_stat.F90 @@ -38,8 +38,7 @@ SUBROUTINE ICE4_SEDIMENTATION_STAT(D, CST, ICEP, ICED, PARAMI, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t @@ -97,7 +96,7 @@ REAL, DIMENSION(D%NIJT) :: ZTSORHODZ ! TimeStep Over (Rhodref times delta REAL, DIMENSION(D%NIJT,0:1,2:KRR) :: ZSED ! sedimentation flux array for each species and for above and current levels REAL :: FWSED1, FWSED2, PWSEDW, PWSEDWSUP, PINVTSTEP, PTSTEP1, PDZZ1, PRHODREF1, PRXT1 -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! #if defined(REPRO48) ! 5 multiplications + 1 division => cost = 7X @@ -253,7 +252,7 @@ CONTAINS REAL :: ZRAY ! Cloud Mean radius REAL :: ZZWLBDA, ZZWLBDC, ZZCC - !!REAL(KIND=JPRB) :: ZHOOK_HANDLE + !!REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:CLOUD',0,ZHOOK_HANDLE) @@ -312,7 +311,7 @@ CONTAINS REAL, INTENT(IN) :: PRXT(D%NIJT) ! mr of specy X - !!REAL(KIND=JPRB) :: ZHOOK_HANDLE + !!REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:PRISTINE_ICE',0,ZHOOK_HANDLE) @@ -359,7 +358,7 @@ CONTAINS REAL, INTENT(IN) :: PRXT(D%NIJT) ! mr of specy X - !!REAL(KIND=JPRB) :: ZHOOK_HANDLE + !!REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:SNOW',0,ZHOOK_HANDLE) @@ -418,7 +417,7 @@ CONTAINS REAL, INTENT(IN) :: PEXSED REAL, INTENT(IN) :: PRXT(D%NIJT) ! mr of specy X - !!REAL(KIND=JPRB) :: ZHOOK_HANDLE + !!REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !!IF (LHOOK) CALL DR_HOOK('ICE4_SEDIMENTATION_STAT:OTHER_SPECIES',0,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_slow.F90 b/src/common/micro/mode_ice4_slow.F90 index 03a55ed212bfed67af4528d057334e69b58c2239..b867f8692d2c35704dd7bc2d4cf66ea4ceb469ab 100644 --- a/src/common/micro/mode_ice4_slow.F90 +++ b/src/common/micro/mode_ice4_slow.F90 @@ -33,8 +33,7 @@ SUBROUTINE ICE4_SLOW(CST, ICEP, ICED, KPROMA, KSIZE, LDSOFT, LDCOMPUTE, PRHODREF USE MODD_CST, ONLY: CST_t USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -72,7 +71,7 @@ REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PRVDEPG ! Deposition on r_g ! REAL, DIMENSION(KPROMA) :: ZCRIAUTI INTEGER :: JL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('ICE4_SLOW', 0, ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_stepping.F90 b/src/common/micro/mode_ice4_stepping.F90 index 98a45c58301d884585cde64d7aadf06aefad60ba..54c84a75cee38507c8bc588491e2abd773e711f9 100644 --- a/src/common/micro/mode_ice4_stepping.F90 +++ b/src/common/micro/mode_ice4_stepping.F90 @@ -23,8 +23,7 @@ SUBROUTINE ICE4_STEPPING(D, CST, PARAMI, ICEP, ICED, BUCONF, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_BUDGET, ONLY: TBUDGETCONF_t @@ -87,7 +86,7 @@ REAL, DIMENSION(KPROMA), INTENT(OUT) :: PRREVAV ! !* 0.2 Declarations of local variables : ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! LOGICAL :: LSOFT ! Must we really compute tendencies or only adjust them to new T variables INTEGER :: INB_ITER_MAX ! Maximum number of iterations (with real tendencies computation) diff --git a/src/common/micro/mode_ice4_tendencies.F90 b/src/common/micro/mode_ice4_tendencies.F90 index 46c7d8e035c578640f67363774342dd4b9e1df85..9a1c22328af74a25a7b4959c0178231660dc537c 100644 --- a/src/common/micro/mode_ice4_tendencies.F90 +++ b/src/common/micro/mode_ice4_tendencies.F90 @@ -58,8 +58,7 @@ USE MODE_ICE4_FAST_RH, ONLY: ICE4_FAST_RH USE MODE_ICE4_FAST_RI, ONLY: ICE4_FAST_RI USE MODE_ICE4_NUCLEATION, ONLY: ICE4_NUCLEATION ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -117,7 +116,7 @@ LOGICAL, DIMENSION(KPROMA) :: LLWETG ! .TRUE. if graupel growths in wet mode REAL :: ZZW LOGICAL :: LLRFR ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ICE4_TENDENCIES', 0, ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ice4_warm.F90 b/src/common/micro/mode_ice4_warm.F90 index ea37debb12964f114f89e1a7245cb3cd09488691..875ba62b25ecac9b3a355dc0cf2c513a593b0800 100644 --- a/src/common/micro/mode_ice4_warm.F90 +++ b/src/common/micro/mode_ice4_warm.F90 @@ -36,8 +36,7 @@ USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_t USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_t ! USE MODE_MSG -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -79,7 +78,7 @@ REAL, DIMENSION(KPROMA), INTENT(INOUT) :: PRREVAV ! Evaporation of r_r REAL :: ZZW2, ZZW3, ZZW4 REAL, DIMENSION(KPROMA) :: ZUSW ! Undersaturation over water REAL, DIMENSION(KPROMA) :: ZTHLT ! Liquid potential temperature -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JL LOGICAL :: LMASK, LMASK1, LMASK2 !------------------------------------------------------------------------------- diff --git a/src/common/micro/mode_icecloud.F90 b/src/common/micro/mode_icecloud.F90 index 8ba69db98ffa5d3591809183e51189c270b0414e..5f44bf9a07a50a38d50f8df88cba054496f40e19 100644 --- a/src/common/micro/mode_icecloud.F90 +++ b/src/common/micro/mode_icecloud.F90 @@ -7,8 +7,7 @@ SUBROUTINE ICECLOUD & ! Output : & SIFRC,SSIO,SSIU,W2D,RSI) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST,ONLY : XCPD,XLVTT,XG,XRD,XEPSILO USE MODE_TIWMX, ONLY: ESATW, ESATI @@ -77,7 +76,7 @@ REAL :: ZSIGMAX,ZSIGMAY,ZSIGMAZ,ZXDIST,ZYDIST,& & ZRHDIF,ZWCLD,ZI2W,ZRHLIMICE,ZRHLIMINV,ZA,ZRHI,ZR INTEGER :: JIJ, IIJB, IIJE -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ICECLOUD',0,ZHOOK_HANDLE) ! IIJB=D%NIJB diff --git a/src/common/micro/mode_ini_rain_ice.F90 b/src/common/micro/mode_ini_rain_ice.F90 index 43f9d70315980c76d9e083229ce686c63510c9fc..fd144da492611b2237740771cdfa7d204e692966 100644 --- a/src/common/micro/mode_ini_rain_ice.F90 +++ b/src/common/micro/mode_ini_rain_ice.F90 @@ -112,8 +112,7 @@ USE MODE_READ_XKER_SWETH, ONLY: READ_XKER_SWETH USE MODE_READ_XKER_GWETH, ONLY: READ_XKER_GWETH USE MODE_READ_XKER_RWETH, ONLY: READ_XKER_RWETH ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -179,7 +178,7 @@ REAL :: PDRYLBDAR_MAX,PDRYLBDAR_MIN REAL :: PWETLBDAS_MAX,PWETLBDAG_MAX,PWETLBDAS_MIN,PWETLBDAG_MIN REAL :: PWETLBDAR_MAX,PWETLBDAH_MAX,PWETLBDAR_MIN,PWETLBDAH_MIN ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) ! diff --git a/src/common/micro/mode_ini_snow.F90 b/src/common/micro/mode_ini_snow.F90 index 0db7c4d743487da606611ec2e3070c40cc56e119..313659cb48675e0b94dbbc55f1b026f0ca1bcddd 100644 --- a/src/common/micro/mode_ini_snow.F90 +++ b/src/common/micro/mode_ini_snow.F90 @@ -3,8 +3,7 @@ MODULE MODE_INI_SNOW IMPLICIT NONE CONTAINS SUBROUTINE INI_SNOW ( KLUOUT ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################### ! !!**** *INI_SNOW * - re-initialize the constants based on snow-size distubutio @@ -79,7 +78,7 @@ REAL :: ZRHO00 ! Surface reference air density REAL :: ZCONC_MAX ! Maximal concentration for snow -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('INI_RAIN_ICE',0,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_ini_tiwmx.F90 b/src/common/micro/mode_ini_tiwmx.F90 index 4e69d5de76588151affacd7eeedadeb1349a53c7..1d0ab80f6b5c883ec63f8568cad9368a7867e5fc 100644 --- a/src/common/micro/mode_ini_tiwmx.F90 +++ b/src/common/micro/mode_ini_tiwmx.F90 @@ -2,19 +2,18 @@ MODULE MODE_INI_TIWMX IMPLICIT NONE CONTAINS SUBROUTINE INI_TIWMX - USE PARKIND1, ONLY : JPRB ! Include function definitions USE MODE_TIWMX_FUN, ONLY : ESATW,DESDTW,ESATI,DESDTI,AA2,AA2W,AM3,AF3,BB3,BB3W,REDIN ! Only the tables, _NOT_ the functions! USE MODE_TIWMX, ONLY : XNDEGR,NSTART,NSTOP,ESTABW,DESTABW,ESTABI,DESTABI, & & A2TAB,BB3TAB,AM3TAB,AF3TAB,A2WTAB,BB3WTAB,REDINTAB - USE YOMHOOK, ONLY : LHOOK, DR_HOOK + USE YOMHOOK, ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE INTEGER :: JK REAL :: ZTEMP - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('INI_TIWMX',0,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_init_aerosol_properties.F90 b/src/common/micro/mode_init_aerosol_properties.F90 index a936ac46f035e650fff35140e4a085be0d2dba00..4f4ddc8c32f410804042581d56ce42c557ccff5b 100644 --- a/src/common/micro/mode_init_aerosol_properties.F90 +++ b/src/common/micro/mode_init_aerosol_properties.F90 @@ -32,6 +32,7 @@ CONTAINS !! Original ??/??/13 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! Philippe Wautelet: 22/01/2019: bugs correction: incorrect writes + unauthorized goto +!! R. El Khatib 23-Feb-2023 Portability fix for NEC Sx-Aurora : no goto out of its conditional block ! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg ! P. Wautelet 30/03/2021: move NINDICE_CCN_IMM and NIMM initializations from init_aerosol_properties to ini_nsv ! B. Vié 06/2021: kappa-kohler CCN activation parameters @@ -162,7 +163,7 @@ IF ( NMOD_CCN .GE. 1 ) THEN !* INPUT : XBETAHEN_TEST is in 'percent' and XBETAHEN_MULTI in 'no units', ! XK... and XMU... are invariant ! - IF (.NOT.(ASSOCIATED(XKHEN_MULTI))) CALL PARAM_LIMA_ALLOCATE('XKHEN_MULTI', NMOD_CCN) + IF (.NOT.(ASSOCIATED(XKHEN_MULTI))) CALL PARAM_LIMA_ALLOCATE('XKHEN_MULTI', NMOD_CCN) IF (.NOT.(ASSOCIATED(XMUHEN_MULTI))) CALL PARAM_LIMA_ALLOCATE('XMUHEN_MULTI', NMOD_CCN) IF (.NOT.(ASSOCIATED(XBETAHEN_MULTI))) CALL PARAM_LIMA_ALLOCATE('XBETAHEN_MULTI', NMOD_CCN) IF (.NOT.(ASSOCIATED(XLIMIT_FACTOR))) CALL PARAM_LIMA_ALLOCATE('XLIMIT_FACTOR', NMOD_CCN) diff --git a/src/common/micro/mode_lima_ice4_nucleation.F90 b/src/common/micro/mode_lima_ice4_nucleation.F90 index 082b3c3e5f86ba5343e2bf2a243c58feb3a98253..387280c4b13619ef2d9e1cdbd43fd6a5b152a408 100644 --- a/src/common/micro/mode_lima_ice4_nucleation.F90 +++ b/src/common/micro/mode_lima_ice4_nucleation.F90 @@ -29,8 +29,7 @@ SUBROUTINE LIMA_ICE4_NUCLEATION(CST, KSIZE, & ! ------------ ! USE MODD_CST, ONLY: CST_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_PARAM_LIMA_COLD, ONLY : XALPHA1, XBETA1, XALPHA2, XBETA2, XNU10, XNU20, XMNU0 USE MODD_PARAM_LIMA, ONLY: LFEEDBACKT, XRTMIN ! @@ -53,7 +52,7 @@ REAL, DIMENSION(KSIZE), INTENT(OUT) :: PRVHENI_MR ! Mixing ratio change due !* 0.2 declaration of local variables ! REAL, DIMENSION(KSIZE) :: ZW ! work array -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE LOGICAL, DIMENSION(KSIZE) :: GNEGT ! Test where to compute the HEN process REAL, DIMENSION(KSIZE) :: ZZW, & ! Work array ZUSW, & ! Undersaturation over water 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 a18241de170fbc2937d00cf36a449c63eafc6f84..9f8887655cd78a5fa266c190dc764c39944f9cd3 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rg.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rg.F90 @@ -21,8 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG PTIW, PZT, PRES, & TBUDGETS, KBUDGETS) - USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T @@ -110,7 +109,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RG INTEGER :: IGDRY INTEGER :: JJ, JK - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! !* 6.1 rain contact freezing 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 6d9348523492dbe7cbeb4a1979692bf5ce09519f..45ef12888736e6149d348dd7046364289d546905 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rh.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rh.F90 @@ -21,8 +21,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH PZT, PRES, & TBUDGETS, KBUDGETS) - USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T @@ -101,7 +100,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RH INTEGER :: IGWET, IHAIL INTEGER :: JJ, JK - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_FAST_RH',0,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 776aa0080a4c7329babb5e7862f41c53448499cc..605da7149dc4116637b96fd4f72ca058b040b84f 100644 --- a/src/common/micro/mode_rain_ice_old_fast_ri.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_ri.F90 @@ -25,7 +25,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_N, ONLY: RAIN_ICE_PARAM_T @@ -106,7 +106,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RI INTEGER :: JK, JL - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !* 7.1 cloud ice melting ! 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 4cba8e31b7b4a82e999bd97db5fc76b49017d882..58bceabd877eeae23e2bfbeed44a02455a02b028 100644 --- a/src/common/micro/mode_rain_ice_old_fast_rs.F90 +++ b/src/common/micro/mode_rain_ice_old_fast_rs.F90 @@ -19,8 +19,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS ZLBDAR, ZLBDAS, ZCOLF, ZPRES, ZZT, & TBUDGETS, KBUDGETS) - USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T @@ -93,7 +92,7 @@ MODULE MODE_RAIN_ICE_OLD_FAST_RS INTEGER :: IGRIM, IGACC INTEGER :: JJ, JK - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- ! !* 5.1 cloud droplet riming of the aggregates diff --git a/src/common/micro/mode_rain_ice_old_nucleation.F90 b/src/common/micro/mode_rain_ice_old_nucleation.F90 index 16c9d233fe2769938336897bd1a6edcf3560ebce..563a3c1558de8ee83bfb124a738bc486a03ea90b 100644 --- a/src/common/micro/mode_rain_ice_old_nucleation.F90 +++ b/src/common/micro/mode_rain_ice_old_nucleation.F90 @@ -16,8 +16,7 @@ MODULE MODE_RAIN_ICE_OLD_NUCLEATION PICENU, PT, PZZZ, & PRHT) ! - USE PARKIND1, ONLY: JPRB - USE YOMHOOK , ONLY: LHOOK, DR_HOOK + USE YOMHOOK , ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODE_TIWMX, ONLY: ESATI, ESATW, AM3, REDIN @@ -93,7 +92,7 @@ MODULE MODE_RAIN_ICE_OLD_NUCLEATION ! ! compute the temperature and the pressure ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_OLD_NUCLEATION',0,ZHOOK_HANDLE) diff --git a/src/common/micro/mode_rain_ice_old_sedimentation_split.F90 b/src/common/micro/mode_rain_ice_old_sedimentation_split.F90 index 2732156dad6c0df4a7aec869e083777c2137b9db..63eb1f543928eed6b14d264b2ec71d6f5bd5a4d2 100644 --- a/src/common/micro/mode_rain_ice_old_sedimentation_split.F90 +++ b/src/common/micro/mode_rain_ice_old_sedimentation_split.F90 @@ -18,8 +18,7 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_SPLIT ZRAY, ZLBC, ZFSEDC, ZCONC3D, & PRHT, PRHS, PINPRH, PFPR) - USE PARKIND1, ONLY: JPRB - USE YOMHOOK , ONLY: LHOOK, DR_HOOK + USE YOMHOOK , ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T @@ -132,7 +131,7 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_SPLIT INTEGER :: JN, JL, JK, JI, JJ - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: 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 44a4f3062bc2c26e25e5be3bffd0fa61ba9a8572..4843b63265a1a4d4545879b4c5926f7864631033 100644 --- a/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 +++ b/src/common/micro/mode_rain_ice_old_sedimentation_stat.F90 @@ -18,12 +18,11 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT ZRAY, ZLBC, ZFSEDC, ZCONC3D, & PRHT, PRHS, PINPRH, PFPR) - USE PARKIND1, ONLY: JPRB USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T USE MODD_RAIN_ICE_DESCR_n, ONLY: RAIN_ICE_DESCR_T - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK !* 0. DECLARATIONS ! ------------ @@ -93,7 +92,7 @@ MODULE MODE_RAIN_ICE_OLD_SEDIMENTATION_STAT REAL :: ZINVTSTEP - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !------------------------------------------------------------------------------- ! diff --git a/src/common/micro/mode_rain_ice_old_slow.F90 b/src/common/micro/mode_rain_ice_old_slow.F90 index 984b80124407277c6af698b6d0dcf861d9f08160..8b43b266b910bafbab5a9946682ddffc2c39ef59 100644 --- a/src/common/micro/mode_rain_ice_old_slow.F90 +++ b/src/common/micro/mode_rain_ice_old_slow.F90 @@ -24,7 +24,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW TBUDGETS, KBUDGETS) USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_RAIN_ICE_PARAM_n, ONLY: RAIN_ICE_PARAM_T @@ -110,7 +110,7 @@ MODULE MODE_RAIN_ICE_OLD_SLOW INTEGER :: JL REAL :: ZINVTSTEP - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RAIN_ICE_OLD:RAIN_ICE_SLOW',0,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 8b1d1520e26f45b115cbd64bdf2ebb72f62ea146..b53090d15af0f75c7dad8d90d6fe43a001acca63 100644 --- a/src/common/micro/mode_rain_ice_old_warm.F90 +++ b/src/common/micro/mode_rain_ice_old_warm.F90 @@ -23,8 +23,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM ZZT, ZPRES, ZESW, & TBUDGETS, KBUDGETS) - USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_PARAM_ICE_n, ONLY: PARAM_ICE_t @@ -114,7 +113,7 @@ MODULE MODE_RAIN_ICE_OLD_WARM REAL, DIMENSION(D%NIT,D%NKT) :: ZW ! work array - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JK LOGICAL :: LTEST ! Only for test ! diff --git a/src/common/micro/mode_read_xker_gweth.F90 b/src/common/micro/mode_read_xker_gweth.F90 index c0e18f57e5bfad43bc9fe712abfcf7a5e2774595..bca7bc043c5d7eb9774ac03e54c2685dd5f5942a 100644 --- a/src/common/micro/mode_read_xker_gweth.F90 +++ b/src/common/micro/mode_read_xker_gweth.F90 @@ -12,8 +12,7 @@ CONTAINS PWETLBDAH_MAX,PWETLBDAG_MAX,PWETLBDAH_MIN,PWETLBDAG_MIN, & PFDINFTY,PKER_GWETH ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** * * - initialize the kernels for the graupel-hail wet growth process @@ -81,7 +80,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_GWETH ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE_HAIL IF THE KERNELS ARE UPDATED# ! ######################################################################## ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_GWETH',0,ZHOOK_HANDLE) KND= 50 KWETLBDAH= 40 diff --git a/src/common/micro/mode_read_xker_raccs.F90 b/src/common/micro/mode_read_xker_raccs.F90 index 8ca45d9bfacfaee372868359d79a73fddbed233f..eeae9e13d8991d2b73ad9fe99bd75abeb5035d07 100644 --- a/src/common/micro/mode_read_xker_raccs.F90 +++ b/src/common/micro/mode_read_xker_raccs.F90 @@ -12,8 +12,7 @@ CONTAINS PACCLBDAS_MAX,PACCLBDAR_MAX,PACCLBDAS_MIN,PACCLBDAR_MIN, & PFDINFTY,PKER_RACCSS,PKER_RACCS,PKER_SACCRG ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ########################################################################## ! !!**** * * - initialize the kernels for the rain-snow accretion process @@ -85,7 +84,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_SACCRG ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE IF THE KERNELS ARE UPDATED# ! ################################################################### ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_RACCS',0,ZHOOK_HANDLE) KND= 50 KACCLBDAS= 40 diff --git a/src/common/micro/mode_read_xker_rdryg.F90 b/src/common/micro/mode_read_xker_rdryg.F90 index 4ab0f47df6a4fd4cc7d263dacdc8385ddf49d8d0..20e0f6a45a3f2ee59fb6466124f750b30dcdf418 100644 --- a/src/common/micro/mode_read_xker_rdryg.F90 +++ b/src/common/micro/mode_read_xker_rdryg.F90 @@ -18,8 +18,7 @@ CONTAINS PDRYLBDAG_MAX,PDRYLBDAR_MAX,PDRYLBDAG_MIN,PDRYLBDAR_MIN, & PFDINFTY,PKER_RDRYG ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** * * - initialize the kernels for the snow-graupel dry growth process @@ -86,7 +85,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_RDRYG ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE IF THE KERNELS ARE UPDATED# ! ################################################################### ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_RDRYG',0,ZHOOK_HANDLE) KND= 50 KDRYLBDAG= 40 diff --git a/src/common/micro/mode_read_xker_rweth.F90 b/src/common/micro/mode_read_xker_rweth.F90 index 9f04157ad7bf94878e24ab0bc57ccb2c8438a3b9..1d011283bfe775421fbb8d5b8afaa32d86b32741 100644 --- a/src/common/micro/mode_read_xker_rweth.F90 +++ b/src/common/micro/mode_read_xker_rweth.F90 @@ -12,8 +12,7 @@ CONTAINS PWETLBDAH_MAX,PWETLBDAR_MAX,PWETLBDAH_MIN,PWETLBDAR_MIN, & PFDINFTY,PKER_RWETH ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** * * - initialize the kernels for the rain-hail wet growth process @@ -80,7 +79,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_RWETH ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE IF THE KERNELS ARE UPDATED# ! ################################################################### ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_RWETH',0,ZHOOK_HANDLE) KND= 50 KWETLBDAH= 40 diff --git a/src/common/micro/mode_read_xker_sdryg.F90 b/src/common/micro/mode_read_xker_sdryg.F90 index 088e569cd1b552ed48b8007d4fec57c04537ab2d..bb46c16be3eec47e6b274862f5951cec78b0956b 100644 --- a/src/common/micro/mode_read_xker_sdryg.F90 +++ b/src/common/micro/mode_read_xker_sdryg.F90 @@ -12,8 +12,7 @@ CONTAINS PDRYLBDAG_MAX,PDRYLBDAS_MAX,PDRYLBDAG_MIN,PDRYLBDAS_MIN, & PFDINFTY,PKER_SDRYG ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** * * - initialize the kernels for the snow-graupel dry growth process @@ -82,7 +81,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_SDRYG ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE IF THE KERNELS ARE UPDATED# ! ################################################################### ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_SDRYG',0,ZHOOK_HANDLE) KND= 50 KDRYLBDAG= 40 diff --git a/src/common/micro/mode_read_xker_sweth.F90 b/src/common/micro/mode_read_xker_sweth.F90 index 48d4b1aa4fdaaff9a24e2096f9ddd1e1137624c7..a10c94f466f70d1a44b1dabae9c8e69d3cb4f3fe 100644 --- a/src/common/micro/mode_read_xker_sweth.F90 +++ b/src/common/micro/mode_read_xker_sweth.F90 @@ -12,8 +12,7 @@ CONTAINS PWETLBDAH_MAX,PWETLBDAS_MAX,PWETLBDAH_MIN,PWETLBDAS_MIN, & PFDINFTY,PKER_SWETH ) !DEC$ OPTIMIZE:0 - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! !!**** * * - initialize the kernels for the snow-hail wet growth process @@ -82,7 +81,7 @@ REAL, DIMENSION(:,:), INTENT(OUT), OPTIONAL :: PKER_SWETH ! #INSERT HERE THE OUTPUT OF INI_RAIN_ICE_HAIL IF THE KERNELS ARE UPDATED# ! ######################################################################## ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('READ_XKER_SWETH',0,ZHOOK_HANDLE) KND= 50 KWETLBDAH= 40 diff --git a/src/common/micro/mode_rrcolss.F90 b/src/common/micro/mode_rrcolss.F90 index a0b726e64353f3e2c7a7d0024159d947813ebc0d..d2458213204c117d0a7c07b783df3978f9158b33 100644 --- a/src/common/micro/mode_rrcolss.F90 +++ b/src/common/micro/mode_rrcolss.F90 @@ -13,8 +13,7 @@ CONTAINS PESR, PEXMASSR, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR, & PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN, & PDINFTY, PRRCOLSS, PAG, PBS, PAS ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! ! @@ -177,7 +176,7 @@ REAL :: ZCST1 ! !* 1.0 Initialization ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RRCOLSS',0,ZHOOK_HANDLE) PRRCOLSS(:,:) = 0.0 ZCST1 = (3.0/XPI)/XRHOLW diff --git a/src/common/micro/mode_rscolrg.F90 b/src/common/micro/mode_rscolrg.F90 index 99d241aad8c5767506e008f85f8e92d16d952191..8b4dad8b2bf73b290f4861d73e47c9d460f57123 100644 --- a/src/common/micro/mode_rscolrg.F90 +++ b/src/common/micro/mode_rscolrg.F90 @@ -13,8 +13,7 @@ CONTAINS PESR, PEXMASSS, PFALLS, PEXFALLS, PFALLEXPS, PFALLR, PEXFALLR, & PLBDASMAX, PLBDARMAX, PLBDASMIN, PLBDARMIN, & PDINFTY, PRSCOLRG,PAG, PBS, PAS ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! ! @@ -174,7 +173,7 @@ REAL :: ZCST1 ! !* 1.0 Initialization ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RSCOLRG',0,ZHOOK_HANDLE) PRSCOLRG(:,:) = 0.0 ZCST1 = (3.0/XPI)/XRHOLW diff --git a/src/common/micro/mode_rzcolx.F90 b/src/common/micro/mode_rzcolx.F90 index 3370bc01fc979498af1073544a4b7efa7013c3f6..2b910d5fc319a73297bba81b88c217ec81eafd54 100644 --- a/src/common/micro/mode_rzcolx.F90 +++ b/src/common/micro/mode_rzcolx.F90 @@ -14,8 +14,7 @@ CONTAINS PFALLZ, PEXFALLZ, PFALLEXPZ, & PLBDAXMAX, PLBDAZMAX, PLBDAXMIN, PLBDAZMIN, & PDINFTY, PRZCOLX ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################################## ! ! @@ -173,7 +172,7 @@ REAL :: ZFUNC ! Ancillary function ! !* 1.1 Compute the growth rate of the slope factors LAMBDA ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RZCOLX',0,ZHOOK_HANDLE) ZDLBDAX = EXP( LOG(PLBDAXMAX/PLBDAXMIN)/REAL(SIZE(PRZCOLX(:,:),1)-1) ) ZDLBDAZ = EXP( LOG(PLBDAZMAX/PLBDAZMIN)/REAL(SIZE(PRZCOLX(:,:),2)-1) ) diff --git a/src/common/micro/mode_tiwmx.F90 b/src/common/micro/mode_tiwmx.F90 index dbfbdc712330cd2f959e1bbccd1c0b3f642b9137..dc98d10c2bfa819b09dfea670358bbee73a1a176 100644 --- a/src/common/micro/mode_tiwmx.F90 +++ b/src/common/micro/mode_tiwmx.F90 @@ -29,7 +29,7 @@ IMPLICIT NONE REAL, PARAMETER :: XNDEGR = 100.0 -INTEGER, PARAMETER :: NSTART = 10000 +INTEGER, PARAMETER :: NSTART = 13200 ! A too small value may result into a FPE in single precision mode. REK. INTEGER, PARAMETER :: NSTOP = 37316 ! Saturation tables and derivatives diff --git a/src/common/micro/mode_tiwmx_tab.F90 b/src/common/micro/mode_tiwmx_tab.F90 index e8e42bcd6ef2d9082705d9351d42db729ebca2d9..4921638028c7fdede4d22c1785736d3670ed9e64 100644 --- a/src/common/micro/mode_tiwmx_tab.F90 +++ b/src/common/micro/mode_tiwmx_tab.F90 @@ -49,9 +49,8 @@ FUNCTION TIWMX_TAB(P,T,QR,FICE,QRSN,RS,EPS) ! 1.1 MODULES USED USE MODD_CST, ONLY : XEPSILO, XCPD, XLSTT, XLVTT + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODE_TIWMX, ONLY : ESATI, ESATW, DESDTI, DESDTW - USE YOMHOOK , ONLY : LHOOK, DR_HOOK - USE PARKIND1, ONLY : JPRB IMPLICIT NONE @@ -68,7 +67,7 @@ FUNCTION TIWMX_TAB(P,T,QR,FICE,QRSN,RS,EPS) REAL :: F,DFDT,T2,DT,QSN,DQSDT,B REAL :: ZES,ZDESDT INTEGER :: ITER - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TIWMX_TAB',0,ZHOOK_HANDLE) diff --git a/src/common/micro/rain_ice.F90 b/src/common/micro/rain_ice.F90 index 6f413b6acbb8efc5796a108851b1c28157a62d22..18b10bb3de19c5c346847d2688fd77479c0c4a74 100644 --- a/src/common/micro/rain_ice.F90 +++ b/src/common/micro/rain_ice.F90 @@ -176,8 +176,7 @@ !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_BUDGET, ONLY: TBUDGETDATA, TBUDGETCONF_t, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & @@ -271,7 +270,7 @@ REAL, DIMENSION(D%NIJT,D%NKT,KRR), OPTIONAL, INTENT(OUT) :: PFPR ! upper-air pr ! !* 0.2 Declarations of local variables : ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! INTEGER :: JIJ, JK INTEGER :: IKTB, IKTE, IKB, IIJB, IIJE diff --git a/src/common/micro/rain_ice_old.F90 b/src/common/micro/rain_ice_old.F90 index 6db99a7779d3fe1994d27741263f8956a804048b..71174a7f4efc77e504eff56234aeb9ee356f9891 100644 --- a/src/common/micro/rain_ice_old.F90 +++ b/src/common/micro/rain_ice_old.F90 @@ -15,7 +15,7 @@ PRHT, PRHS, PINPRH, PFPR) USE PARKIND1, ONLY: JPRB - USE YOMHOOK, ONLY: LHOOK, DR_HOOK + USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY: DIMPHYEX_T USE MODD_CST, ONLY: CST_T USE MODD_PARAM_ICE_N, ONLY: PARAM_ICE_t @@ -403,7 +403,7 @@ 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 +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !------------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_bl89.F90 b/src/common/turb/mode_bl89.F90 index 24be3f32177ae7d323407dc999e3bdae4a0f983e..80e0dc0db96e00dc1b99e56414c80a10adbf7752 100644 --- a/src/common/turb/mode_bl89.F90 +++ b/src/common/turb/mode_bl89.F90 @@ -7,8 +7,7 @@ IMPLICIT NONE CONTAINS ! ######spl SUBROUTINE BL89(D,CST,CSTURB,TURBN,PZZ,PDZZ,PTHVREF,PTHLM,KRR,PRM,PTKEM,PSHEAR,PLM,OOCEAN) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################### ! !!**** *BL89* - @@ -116,7 +115,7 @@ REAL :: ZTEST,ZTEST0,ZTESTM ! test for vectorization REAL :: Z2SQRT2,ZUSRBL89,ZBL89EXP !------------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BL89',0,ZHOOK_HANDLE) Z2SQRT2=2.*SQRT(2.) ! diff --git a/src/common/turb/mode_bl_depth_diag.F90 b/src/common/turb/mode_bl_depth_diag.F90 index 1f91c292e89ed4a7eea037d9608a2fb1cb4b2ce7..d3a77f13e53ce9ea130b51d4513388870332e97b 100644 --- a/src/common/turb/mode_bl_depth_diag.F90 +++ b/src/common/turb/mode_bl_depth_diag.F90 @@ -13,8 +13,7 @@ END INTERFACE CONTAINS ! SUBROUTINE BL_DEPTH_DIAG_3D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG3D) -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ! !!**** *SBL_DEPTH* - computes SBL depth @@ -73,7 +72,7 @@ REAL :: ZFLX ! flux at top of BL ! !---------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -107,8 +106,7 @@ IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_3D',1,ZHOOK_HANDLE) END SUBROUTINE BL_DEPTH_DIAG_3D ! SUBROUTINE BL_DEPTH_DIAG_1D(D,PSURF,PZS,PFLUX,PZZ,PFTOP_O_FSURF,BL_DEPTH_DIAG1D) -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t ! @@ -129,7 +127,7 @@ REAL, DIMENSION(1,1,D%NKT) :: ZZZ REAL, DIMENSION(1,1) :: ZBL_DEPTH_DIAG ! INTEGER :: IKT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('BL_DEPTH_DIAG_1D',0,ZHOOK_HANDLE) IKT=D%NKT ZSURF = PSURF diff --git a/src/common/turb/mode_compute_bl89_ml.F90 b/src/common/turb/mode_compute_bl89_ml.F90 index 36008959d5bba861c545aa3313ef83e96e0557f6..47d2b37a1be3a7c88a06270a72a89f28f42bca63 100644 --- a/src/common/turb/mode_compute_bl89_ml.F90 +++ b/src/common/turb/mode_compute_bl89_ml.F90 @@ -5,8 +5,7 @@ CONTAINS SUBROUTINE COMPUTE_BL89_ML(D, CST, CSTURB,PDZZ2D, & PTKEM_DEP,PG_O_THVREF,PVPT,KK,OUPORDN,OFLUX,PSHEAR,PLWORK) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################### !! !! COMPUTE_BL89_ML routine to: @@ -88,7 +87,7 @@ REAL :: ZTEST,ZTEST0,ZTESTM !test for vectorization ! !* 1. INITIALISATION ! -------------- -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_BL89_ML',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_compute_function_thermo_mf.F90 b/src/common/turb/mode_compute_function_thermo_mf.F90 index fdb54d89b93374cc3fb1e4e25bd5fc3eb3c23060..89d7f3b129b3d6982bbf7354f697bff9052fc815 100644 --- a/src/common/turb/mode_compute_function_thermo_mf.F90 +++ b/src/common/turb/mode_compute_function_thermo_mf.F90 @@ -53,8 +53,7 @@ CONTAINS ! USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY: CST_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -95,7 +94,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: & INTEGER :: JRR, JIJ, JK INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKTB,IKTE -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !------------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_compute_mf_cloud.F90 b/src/common/turb/mode_compute_mf_cloud.F90 index 86f921d12e63c414c6730468dde108c2ddefdc6b..a9a6d456848a4ccfc3ed64fa2c5798c134574f2e 100644 --- a/src/common/turb/mode_compute_mf_cloud.F90 +++ b/src/common/turb/mode_compute_mf_cloud.F90 @@ -72,8 +72,7 @@ USE MODE_COMPUTE_MF_CLOUD_DIRECT, ONLY: COMPUTE_MF_CLOUD_DIRECT USE MODE_COMPUTE_MF_CLOUD_STAT, ONLY: COMPUTE_MF_CLOUD_STAT USE MODE_COMPUTE_MF_CLOUD_BIGAUS, ONLY: COMPUTE_MF_CLOUD_BIGAUS ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE @@ -110,7 +109,7 @@ REAL, DIMENSION(D%NIJT), INTENT(IN) :: PDEPTH ! Deepness of cl ! ! 1.2 Declaration of local variables ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------ ! 1. INITIALISATION diff --git a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 index a34c6e46f1d6db259eda3aa9062aeac8b481be3f..af8e11df3b30b733e3c83fb46fe43d71dd2b2e96 100644 --- a/src/common/turb/mode_compute_mf_cloud_bigaus.F90 +++ b/src/common/turb/mode_compute_mf_cloud_bigaus.F90 @@ -63,8 +63,7 @@ USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t ! USE MODI_SHUMAN_MF, ONLY: MZF_MF, GZ_M_W_MF ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -99,7 +98,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZCOND ! condensate REAL, DIMENSION(D%NIJT,D%NKT) :: ZA, ZGAM ! used for integration INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT,IKB,IKA,IKU,IKE,IKL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_MF_CLOUD_BIGAUS',0,ZHOOK_HANDLE) ! diff --git a/src/common/turb/mode_compute_mf_cloud_direct.F90 b/src/common/turb/mode_compute_mf_cloud_direct.F90 index 2323b77f523cf7d886bc038730eabe17d0052916..558b0e6449272114cd0aa0247ed5624b8187f959 100644 --- a/src/common/turb/mode_compute_mf_cloud_direct.F90 +++ b/src/common/turb/mode_compute_mf_cloud_direct.F90 @@ -55,8 +55,7 @@ CONTAINS ! ------------ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_PARAM_MFSHALL_n, ONLY : PARAM_MFSHALL_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -72,8 +71,8 @@ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PCF_MF ! and cloud frac ! !* 0.1 Declaration of local variables ! +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JI,JK, JK0, IKB,IKE,IKL,IIJB,IIJE -REAL(KIND=JPRB) :: ZHOOK_HANDLE ! !* 0.2 Initialisation ! diff --git a/src/common/turb/mode_compute_mf_cloud_stat.F90 b/src/common/turb/mode_compute_mf_cloud_stat.F90 index 7ec25db412e4096fa4d06dc5569ca755863d971b..5e9cf63f92c27b2ec72b34a73b977fe19e09ab79 100644 --- a/src/common/turb/mode_compute_mf_cloud_stat.F90 +++ b/src/common/turb/mode_compute_mf_cloud_stat.F90 @@ -64,8 +64,7 @@ USE MODD_TURB_n, ONLY: TURB_t USE MODI_SHUMAN_MF, ONLY: MZF_MF, MZM_MF, GZ_M_W_MF USE MODE_COMPUTE_FUNCTION_THERMO_MF, ONLY: COMPUTE_FUNCTION_THERMO_MF ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -100,7 +99,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZWK,ZWK2 INTEGER :: JIJ, JK INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !* 0.2 initialisation ! diff --git a/src/common/turb/mode_compute_updraft.F90 b/src/common/turb/mode_compute_updraft.F90 index 399400297f75f4261c5950d77033cbdbad226a6a..0f9ca09e4f75d5b0f9cb099452db9377788d665f 100644 --- a/src/common/turb/mode_compute_updraft.F90 +++ b/src/common/turb/mode_compute_updraft.F90 @@ -78,8 +78,7 @@ USE MODI_SHUMAN_MF, ONLY: MZM_MF, MZF_MF, GZ_M_W_MF USE MODE_COMPUTE_BL89_ML, ONLY: COMPUTE_BL89_ML USE MODE_MSG, ONLY: PRINT_MSG, NVERB_FATAL -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE @@ -194,7 +193,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear REAL, DIMENSION(D%NIJT,D%NKT) :: ZWK REAL, DIMENSION(D%NIJT,16) :: ZBUF ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! ! 1.3 Declaration of additional local variables for compute_entr_detr ! diff --git a/src/common/turb/mode_compute_updraft_raha.F90 b/src/common/turb/mode_compute_updraft_raha.F90 index 4914be2aedc14ed0423c51d72f31d7d0806b00c1..1c7731867c797fa43f52abfda3c8f9f3c221c2fc 100644 --- a/src/common/turb/mode_compute_updraft_raha.F90 +++ b/src/common/turb/mode_compute_updraft_raha.F90 @@ -65,8 +65,7 @@ USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t ! USE MODI_SHUMAN_MF, ONLY: MZM_MF ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE @@ -174,7 +173,7 @@ REAL :: ZDEPTH_MAX1, ZDEPTH_MAX2 ! control auto-extinction process REAL :: ZTMAX,ZRMAX, ZEPS ! control value REAL, DIMENSION(D%NIJT,16) :: ZBUF -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_UPDRAF_RAHA',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_compute_updraft_rhcj10.F90 b/src/common/turb/mode_compute_updraft_rhcj10.F90 index aa87a5bcc8ca2e59ff4cff4b0aac497881d16248..f7a56f449ce9275a5e35fbc2eae30eaa6e80c8ab 100644 --- a/src/common/turb/mode_compute_updraft_rhcj10.F90 +++ b/src/common/turb/mode_compute_updraft_rhcj10.F90 @@ -71,8 +71,7 @@ USE MODD_CTURB, ONLY: CSTURB_t USE MODI_SHUMAN_MF, ONLY: MZF_MF, MZM_MF, GZ_M_W_MF USE MODE_COMPUTE_BL89_ML, ONLY: COMPUTE_BL89_ML -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE @@ -186,7 +185,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZSHEAR,ZDUDZ,ZDVDZ ! vertical wind shear REAL, DIMENSION(D%NIJT,D%NKT) :: ZWK REAL, DIMENSION(D%NIJT,16) :: ZBUF ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('COMPUTE_UPDRAFT_RHCJ10',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_emoist.F90 b/src/common/turb/mode_emoist.F90 index 6ad75d2481a47d202cd6f757e815dcc9f81ecd30..ec88edc6560ffc221b5442b6bc0a6c2188c8fc82 100644 --- a/src/common/turb/mode_emoist.F90 +++ b/src/common/turb/mode_emoist.F90 @@ -6,8 +6,7 @@ MODULE MODE_EMOIST IMPLICIT NONE CONTAINS SUBROUTINE EMOIST(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PAMOIST,PSRCM,OOCEAN,PEMOIST) -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################ ! ! PURPOSE @@ -98,7 +97,7 @@ INTEGER :: IIJB,IIJE,IKT !* 1. COMPUTE EMOIST ! -------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('EMOIST',0,ZHOOK_HANDLE) ! IIJB=D%NIJB diff --git a/src/common/turb/mode_etheta.F90 b/src/common/turb/mode_etheta.F90 index aec4eaa072ef72e4818cc65b3ee1b7cd18bbaa90..fd8e1b69f9f1a68f2938dd436fea007de627ba1a 100644 --- a/src/common/turb/mode_etheta.F90 +++ b/src/common/turb/mode_etheta.F90 @@ -6,8 +6,7 @@ MODULE MODE_ETHETA IMPLICIT NONE CONTAINS SUBROUTINE ETHETA(D,CST,KRR,KRRI,PTHLM,PRM,PLOCPEXNM,PATHETA,PSRCM,OOCEAN,OCOMPUTE_SRC,PETHETA) -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################################ ! ! PURPOSE @@ -102,7 +101,7 @@ INTEGER :: IIJB,IIJE,IKT ! -------------- ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('ETHETA',0,ZHOOK_HANDLE) ! IIJB=D%NIJB diff --git a/src/common/turb/mode_ini_mfshall.F90 b/src/common/turb/mode_ini_mfshall.F90 index 774f4ed0683bbe2153dcee5966da630fad600d20..56973284350b4d8a1d3665de3aab17f3ed5cef5b 100644 --- a/src/common/turb/mode_ini_mfshall.F90 +++ b/src/common/turb/mode_ini_mfshall.F90 @@ -38,8 +38,7 @@ SUBROUTINE INI_MFSHALL() ! ------------ ! USE MODD_PARAM_MFSHALL_n, ONLY: LTHETAS_MF, XLAMBDA_MF -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -50,7 +49,7 @@ IMPLICIT NONE ! !* 0.2 Declarations of local variables : ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------------- IF (LHOOK) CALL DR_HOOK('INI_MFSHALL',0,ZHOOK_HANDLE) ! diff --git a/src/common/turb/mode_ini_turb.F90 b/src/common/turb/mode_ini_turb.F90 index 81ca343230079e99da1b2a332cde66cebb950378..321453659fe0918e7e873f1549f251500f444987 100644 --- a/src/common/turb/mode_ini_turb.F90 +++ b/src/common/turb/mode_ini_turb.F90 @@ -57,13 +57,12 @@ USE MODD_NEB_n, ONLY: LSTATNW USE MODD_CTURB ! For true constants (not tunable) USE MODD_PARAMETERS, ONLY : XUNDEF ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! IF (LHOOK) CALL DR_HOOK('INI_TURB',0,ZHOOK_HANDLE) ! diff --git a/src/common/turb/mode_mf_turb.F90 b/src/common/turb/mode_mf_turb.F90 index f168dfc9606cf5ea552063937da23328a00a934e..fd87dd143fd5339f8a86658f5098ab5bf0fe0d24 100644 --- a/src/common/turb/mode_mf_turb.F90 +++ b/src/common/turb/mode_mf_turb.F90 @@ -67,8 +67,7 @@ USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODI_SHUMAN_MF, ONLY: MZM_MF USE MODE_TRIDIAG_MASSFLUX, ONLY: TRIDIAG_MASSFLUX ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -131,7 +130,7 @@ INTEGER :: JSV !number of scalar variables and Loop counter INTEGER :: JIJ, JK INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE ! !---------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_mf_turb_expl.F90 b/src/common/turb/mode_mf_turb_expl.F90 index 79fc3919e2eaa1ad73986573b672e0ef3787812c..6ab461f4e37f0d0e3da0b8595807e59a3a5dad76 100644 --- a/src/common/turb/mode_mf_turb_expl.F90 +++ b/src/common/turb/mode_mf_turb_expl.F90 @@ -53,8 +53,7 @@ CONTAINS USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_PARAM_MFSHALL_n, ONLY: PARAM_MFSHALL_t ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODI_SHUMAN_MF, ONLY: MZM_MF IMPLICIT NONE @@ -100,7 +99,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZTHLM_F,ZRTM_F INTEGER :: JK, JIJ ! loop counter INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT,IKB,IKE,IKL -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !---------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_prandtl.F90 b/src/common/turb/mode_prandtl.F90 index 2a0039c57bf7b92c4524e4b5668b543f1eac46fe..ca06510b284b06d69e8672066c2e240e951c205d 100644 --- a/src/common/turb/mode_prandtl.F90 +++ b/src/common/turb/mode_prandtl.F90 @@ -5,8 +5,7 @@ !----------------------------------------------------------------- ! #################### MODULE MODE_PRANDTL - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! #################### ! !* modification 08/2010 V. Masson smoothing of the discontinuity in functions @@ -142,8 +141,6 @@ CONTAINS !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -237,7 +234,7 @@ TYPE(TFIELDMETADATA) :: TZFIELD !* 1. DEFAULT VALUES, 1D REDELSPERGER NUMBERS ! ---------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('PRANDTL',0,ZHOOK_HANDLE) IF (OHARAT) THEN @@ -781,7 +778,7 @@ SUBROUTINE PHI3(D,CSTURB,TURBN,PREDTH1,PREDR1,PRED2TH3,PRED2R3,PRED2THR3,HTURBDI REAL, DIMENSION(D%NIJT,D%NKT) :: ZW1, ZW2 INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE, IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PHI3',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -856,7 +853,7 @@ SUBROUTINE PSI_SV(D,CSTURB,TURBN,KSV,PREDTH1,PREDR1,PREDS1,PRED2THS,PRED2RS,PPHI INTEGER :: IKB, IKE, IIJB,IIJE, IKT INTEGER :: JSV,JIJ,JK ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI_SV',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -909,7 +906,7 @@ SUBROUTINE D_PHI3DTDZ_O_DDTDZ(D,CSTURB,TURBN,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2 REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PHI3DTDZ_O_DDTDZ INTEGER :: IKB, IKE,JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1003,7 +1000,7 @@ SUBROUTINE D_PHI3DRDZ_O_DDRDZ(D,CSTURB,TURBN,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED2 REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PHI3DRDZ_O_DDRDZ INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1083,7 +1080,7 @@ SUBROUTINE D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,TURBN,PPHI3,PREDTH1,PREDR1,PRED2TH3,PRED REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PHI3DTDZ2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1140,7 +1137,7 @@ SUBROUTINE M3_WTH_WTH2(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PBLL_O_E,PETHETA,PM3_WTH REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WTH_WTH2 INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1172,7 +1169,7 @@ SUBROUTINE D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,TURBN,PM3_WTH_WTH2,PREDTH1,PREDR1,PD,P REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTH2_O_DDTDZ INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1207,7 +1204,7 @@ SUBROUTINE M3_WTH_W2TH(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PKEFF,PTKE,PM3_WTH_W2TH) REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1243,7 +1240,7 @@ SUBROUTINE D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PBLL_O_E,PETHE REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JIJ,JK, IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1281,7 +1278,7 @@ SUBROUTINE M3_WTH_W2R(D,CSTURB,TURBN,PD,PKEFF,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_WT REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_W2R',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1317,7 +1314,7 @@ SUBROUTINE D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PKEFF,PTKE,PBLL REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1357,7 +1354,7 @@ SUBROUTINE M3_WTH_WR2(D,CSTURB,TURBN,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEP REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WR2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1401,7 +1398,7 @@ SUBROUTINE D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PKEFF,PTKE,PSQR REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1444,7 +1441,7 @@ SUBROUTINE M3_WTH_WTHR(D,CSTURB,TURBN,PREDR1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WTH_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1482,7 +1479,7 @@ SUBROUTINE D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,TURBN,PM3_WTH_WTHR,PREDTH1,PREDR1,PD,P REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WTH_WTHR_O_DDTDZ INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WTH_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1517,7 +1514,7 @@ SUBROUTINE M3_TH2_W2TH(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PDTDZ,PLM,PLEPS,PTKE,PM3 REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1556,7 +1553,7 @@ SUBROUTINE D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1609,7 +1606,7 @@ SUBROUTINE M3_TH2_WTH2(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_TH2_ REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1648,7 +1645,7 @@ SUBROUTINE D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1689,7 +1686,7 @@ SUBROUTINE M3_TH2_W2R(D,CSTURB,TURBN,PD,PLM,PLEPS,PTKE,PBLL_O_E,PEMOIST,PDTDZ,PM REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_W2R',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1730,7 +1727,7 @@ SUBROUTINE D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE, REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_W2R_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1769,7 +1766,7 @@ SUBROUTINE M3_TH2_WR2(D,CSTURB,TURBN,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,P REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WR2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1809,7 +1806,7 @@ SUBROUTINE D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WR2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1849,7 +1846,7 @@ SUBROUTINE M3_TH2_WTHR(D,CSTURB,TURBN,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_TH2_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1889,7 +1886,7 @@ SUBROUTINE D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_TH2_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1927,7 +1924,7 @@ SUBROUTINE M3_THR_WTHR(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TKE,PM3_THR_ REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTHR',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -1966,7 +1963,7 @@ SUBROUTINE D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2006,7 +2003,7 @@ SUBROUTINE M3_THR_WTH2(D,CSTURB,TURBN,PREDR1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WTH2',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2046,7 +2043,7 @@ SUBROUTINE D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2087,7 +2084,7 @@ SUBROUTINE D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2126,7 +2123,7 @@ SUBROUTINE M3_THR_W2TH(D,CSTURB,TURBN,PREDR1,PD,PLM,PLEPS,PTKE,PDRDZ,PM3_THR_W2T REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2TH',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2166,7 +2163,7 @@ SUBROUTINE D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDTDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2205,7 +2202,7 @@ SUBROUTINE D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,TURBN,PREDTH1,PREDR1,PD,PLM,PLEPS,PTKE REAL, DIMENSION(D%NIJT,D%NKT) :: ZWORK1,ZWORK2 ! working array INTEGER :: IKB, IKE, JIJ,JK,IIJB,IIJE,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) IKB=D%NKTB IKE=D%NKTE @@ -2246,7 +2243,7 @@ SUBROUTINE PSI3(D,CSTURB,TURBN,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDI LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PPSI3 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:PSI3',0,ZHOOK_HANDLE) CALL PHI3(D,CSTURB,TURBN,PREDR1,PREDTH1,PRED2R3,PRED2TH3,PRED2THR3,HTURBDIM,OUSERV,PPSI3) ! @@ -2266,7 +2263,7 @@ SUBROUTINE D_PSI3DRDZ_O_DDRDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2T LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ_O_DDRDZ -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_PHI3DTDZ_O_DDTDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DRDZ_O_DDRDZ) ! @@ -2288,7 +2285,7 @@ SUBROUTINE D_PSI3DTDZ_O_DDTDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2T LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DTDZ_O_DDTDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DTDZ_O_DDTDZ',0,ZHOOK_HANDLE) CALL D_PHI3DRDZ_O_DDRDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,HTURBDIM,OUSERV,PD_PSI3DTDZ_O_DDTDZ) ! @@ -2309,7 +2306,7 @@ SUBROUTINE D_PSI3DRDZ2_O_DDRDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2 LOGICAL, INTENT(IN) :: OUSERV ! flag to use vapor REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_PSI3DRDZ2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_PSI3DRDZ2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_PHI3DTDZ2_O_DDTDZ(D,CSTURB,TURBN,PPSI3,PREDR1,PREDTH1,PRED2R3,PRED2THR3,PDRDZ,HTURBDIM,OUSERV,PD_PSI3DRDZ2_O_DDRDZ) ! @@ -2327,7 +2324,7 @@ SUBROUTINE M3_WR_WR2(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PM3_WR_WR REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WR2 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WR2',0,ZHOOK_HANDLE) CALL M3_WTH_WTH2(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PM3_WR_WR2) ! @@ -2346,7 +2343,7 @@ SUBROUTINE D_M3_WR_WR2_O_DDRDZ(D,CSTURB,TURBN,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_ REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WR2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_WTH_WTH2_O_DDTDZ(D,CSTURB,TURBN,PM3_WR_WR2,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WR2_O_DDRDZ) ! @@ -2364,7 +2361,7 @@ SUBROUTINE M3_WR_W2R(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PM3_WR_W2R) REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_W2R ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2R',0,ZHOOK_HANDLE) CALL M3_WTH_W2TH(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PM3_WR_W2R) ! @@ -2384,7 +2381,7 @@ SUBROUTINE D_M3_WR_W2R_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2R_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_WTH_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PKEFF,PTKE,PD_M3_WR_W2R_O_DDRDZ) ! @@ -2403,7 +2400,7 @@ SUBROUTINE M3_WR_W2TH(D,CSTURB,TURBN,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_WR REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_W2TH ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_W2TH',0,ZHOOK_HANDLE) CALL M3_WTH_W2R(D,CSTURB,TURBN,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_WR_W2TH) ! @@ -2423,7 +2420,7 @@ SUBROUTINE D_M3_WR_W2TH_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_W2TH_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_WTH_W2R_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PBLL_O_E,PETHETA,PD_M3_WR_W2TH_O_DDRDZ) ! @@ -2445,7 +2442,7 @@ SUBROUTINE M3_WR_WTH2(D,CSTURB,TURBN,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEP REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WTH2 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTH2',0,ZHOOK_HANDLE) CALL M3_WTH_WR2(D,CSTURB,TURBN,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PDRDZ,PM3_WR_WTH2) ! @@ -2469,7 +2466,7 @@ SUBROUTINE D_M3_WR_WTH2_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQR REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTH2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_WTH_WR2_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBLL_O_E,PBETA,PLEPS,PETHETA,PD_M3_WR_WTH2_O_DDRDZ) ! @@ -2490,7 +2487,7 @@ SUBROUTINE M3_WR_WTHR(D,CSTURB,TURBN,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PETHETA REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_WR_WTHR ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_WR_WTHR',0,ZHOOK_HANDLE) CALL M3_WTH_WTHR(D,CSTURB,TURBN,PREDTH1,PD,PKEFF,PTKE,PSQRT_TKE,PBETA,PLEPS,PETHETA,PM3_WR_WTHR) ! @@ -2509,7 +2506,7 @@ SUBROUTINE D_M3_WR_WTHR_O_DDRDZ(D,CSTURB,TURBN,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBL REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_WR_WTHR_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_WR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_WTH_WTHR_O_DDTDZ(D,CSTURB,TURBN,PM3_WR_WTHR,PREDR1,PREDTH1,PD,PBLL_O_E,PEMOIST,PD_M3_WR_WTHR_O_DDRDZ) ! @@ -2529,7 +2526,7 @@ SUBROUTINE M3_R2_W2R(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE,PM3_R REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: PM3_R2_W2R ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2R',0,ZHOOK_HANDLE) CALL M3_TH2_W2TH(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PDRDZ,PLM,PLEPS,PTKE,PM3_R2_W2R) ! @@ -2549,7 +2546,7 @@ SUBROUTINE D_M3_R2_W2R_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,O LOGICAL, INTENT(IN) :: OUSERV REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2R_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2R_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_TH2_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,OUSERV,PD_M3_R2_W2R_O_DDRDZ) ! @@ -2567,7 +2564,7 @@ SUBROUTINE M3_R2_WR2(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PM3_R2_WR2 REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WR2 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WR2',0,ZHOOK_HANDLE) CALL M3_TH2_WTH2(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PM3_R2_WR2) ! @@ -2587,7 +2584,7 @@ SUBROUTINE D_M3_R2_WR2_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE, REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WR2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WR2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_TH2_WTH2_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_R2_WR2_O_DDRDZ) ! @@ -2607,7 +2604,7 @@ SUBROUTINE M3_R2_W2TH(D,CSTURB,TURBN,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_W2TH ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_W2TH',0,ZHOOK_HANDLE) CALL M3_TH2_W2R(D,CSTURB,TURBN,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_W2TH) ! @@ -2629,7 +2626,7 @@ SUBROUTINE D_M3_R2_W2TH_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE, REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_W2TH_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_W2TH_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_TH2_W2R_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_W2TH_O_DDRDZ) ! @@ -2648,7 +2645,7 @@ SUBROUTINE M3_R2_WTH2(D,CSTURB,TURBN,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,P REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WTH2 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTH2',0,ZHOOK_HANDLE) CALL M3_TH2_WR2(D,CSTURB,TURBN,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTH2) ! @@ -2669,7 +2666,7 @@ SUBROUTINE D_M3_R2_WTH2_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTH2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTH2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_TH2_WR2_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTH2_O_DDRDZ) ! @@ -2689,7 +2686,7 @@ SUBROUTINE M3_R2_WTHR(D,CSTURB,TURBN,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_R2_WTHR ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_R2_WTHR',0,ZHOOK_HANDLE) CALL M3_TH2_WTHR(D,CSTURB,TURBN,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PM3_R2_WTHR) ! @@ -2710,7 +2707,7 @@ SUBROUTINE D_M3_R2_WTHR_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDRDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_R2_WTHR_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_R2_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_TH2_WTHR_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PETHETA,PDRDZ,PD_M3_R2_WTHR_O_DDRDZ) ! @@ -2730,7 +2727,7 @@ SUBROUTINE D_M3_THR_WTHR_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TK REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WTHR_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WTHR_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_THR_WTHR_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WTHR_O_DDRDZ) ! @@ -2750,7 +2747,7 @@ SUBROUTINE M3_THR_WR2(D,CSTURB,TURBN,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_WR2 ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_WR2',0,ZHOOK_HANDLE) CALL M3_THR_WTH2(D,CSTURB,TURBN,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PM3_THR_WR2) ! @@ -2771,7 +2768,7 @@ SUBROUTINE D_M3_THR_WR2_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_THR_WTH2_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PDTDZ,PD_M3_THR_WR2_O_DDRDZ) ! @@ -2791,7 +2788,7 @@ SUBROUTINE D_M3_THR_WR2_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_WR2_O_DDTDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_WR2_O_DDTDZ',0,ZHOOK_HANDLE) CALL D_M3_THR_WTH2_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLEPS,PSQRT_TKE,PBLL_O_E,PEMOIST,PD_M3_THR_WR2_O_DDTDZ) ! @@ -2810,7 +2807,7 @@ SUBROUTINE M3_THR_W2R(D,CSTURB,TURBN,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ,PM3_THR_W2R REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PDTDZ REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PM3_THR_W2R ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:M3_THR_W2R',0,ZHOOK_HANDLE) CALL M3_THR_W2TH(D,CSTURB,TURBN,PREDTH1,PD,PLM,PLEPS,PTKE,PDTDZ,PM3_THR_W2R) ! @@ -2832,7 +2829,7 @@ SUBROUTINE D_M3_THR_W2R_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE, REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PEMOIST REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDRDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDRDZ',0,ZHOOK_HANDLE) CALL D_M3_THR_W2TH_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PBLL_O_E,PDTDZ,PEMOIST,PD_M3_THR_W2R_O_DDRDZ) ! @@ -2851,7 +2848,7 @@ SUBROUTINE D_M3_THR_W2R_O_DDTDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE, REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PTKE REAL, DIMENSION(D%NIJT,D%NKT),INTENT(OUT) :: PD_M3_THR_W2R_O_DDTDZ ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_PRANDTL:D_M3_THR_W2R_O_DDTDZ',0,ZHOOK_HANDLE) CALL D_M3_THR_W2TH_O_DDRDZ(D,CSTURB,TURBN,PREDR1,PREDTH1,PD,PLM,PLEPS,PTKE,PD_M3_THR_W2R_O_DDTDZ) ! diff --git a/src/common/turb/mode_rmc01.F90 b/src/common/turb/mode_rmc01.F90 index ab2be9c6cf10a496e81004fe3cbe6bfcf7cb6485..73922adce825698186c4c68f0587f4ca4a593080 100644 --- a/src/common/turb/mode_rmc01.F90 +++ b/src/common/turb/mode_rmc01.F90 @@ -6,8 +6,7 @@ MODULE MODE_RMC01 IMPLICIT NONE CONTAINS SUBROUTINE RMC01(D,CST,CSTURB,TURBN,PZZ,PDXX,PDYY,PDZZ,PDIRCOSZW,PSBL_DEPTH,PLMO,PLK,PLEPS) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################## ! !!**** *RMC01* - @@ -104,7 +103,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZDH ! hor. grid mesh ! --------------- ! ! horizontal boundaries -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('RMC01',0,ZHOOK_HANDLE) IKTB=D%NKTB IKTE=D%NKTE diff --git a/src/common/turb/mode_sbl.F90 b/src/common/turb/mode_sbl.F90 index b5761ea72facaedd6b8d1037ef9b8f925c725824..1ccb9a47e061cb33e0179e140479c3c02b363806 100644 --- a/src/common/turb/mode_sbl.F90 +++ b/src/common/turb/mode_sbl.F90 @@ -39,8 +39,7 @@ !! V. Masson 06/11/02 optimization and add Businger fonction for TKE !! V. Masson 01/01/03 use PAULSON_PSIM function !----------------------------------------------------------------------------- -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK IMPLICIT NONE ! !* 0. DECLARATIONS @@ -86,7 +85,7 @@ SUBROUTINE BUSINGER_PHIM_3D(PZ_O_LMO,BUSINGER_PHIM3D) REAL, DIMENSION(SIZE(PZ_O_LMO,1), & SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIM3D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) BUSINGER_PHIM3D(:,:,:) = (1.-15.*PZ_O_LMO)**(-0.25) @@ -102,7 +101,7 @@ SUBROUTINE BUSINGER_PHIM_2D(PZ_O_LMO,BUSINGER_PHIM2D) REAL, DIMENSION(:,:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)),INTENT(OUT) :: BUSINGER_PHIM2D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_2D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:) < 0. ) BUSINGER_PHIM2D(:,:) = (1.-15.*PZ_O_LMO)**(-0.25) @@ -118,7 +117,7 @@ SUBROUTINE BUSINGER_PHIM_1D(PZ_O_LMO,BUSINGER_PHIM1D) REAL, DIMENSION(:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO)),INTENT(OUT) :: BUSINGER_PHIM1D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_1D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:) < 0. ) BUSINGER_PHIM1D(:) = (1.-15.*PZ_O_LMO)**(-0.25) @@ -134,7 +133,7 @@ SUBROUTINE BUSINGER_PHIM_0D(PZ_O_LMO,BUSINGER_PHIM0D) REAL, INTENT(IN) :: PZ_O_LMO REAL,INTENT(OUT) :: BUSINGER_PHIM0D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM_0D',0,ZHOOK_HANDLE) IF ( PZ_O_LMO < 0. ) THEN BUSINGER_PHIM0D = (1.-15.*PZ_O_LMO)**(-0.25) @@ -152,7 +151,7 @@ SUBROUTINE BUSINGER_PHIH_3D(PZ_O_LMO,BUSINGER_PHIH3D) REAL, DIMENSION(SIZE(PZ_O_LMO,1), & SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIH3D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) BUSINGER_PHIH3D(:,:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) @@ -168,7 +167,7 @@ SUBROUTINE BUSINGER_PHIH_2D(PZ_O_LMO,BUSINGER_PHIH2D) REAL, DIMENSION(:,:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)),INTENT(OUT) :: BUSINGER_PHIH2D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_2D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:) < 0. ) BUSINGER_PHIH2D(:,:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) @@ -184,7 +183,7 @@ SUBROUTINE BUSINGER_PHIH_1D(PZ_O_LMO,BUSINGER_PHIH1D) REAL, DIMENSION(:), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(SIZE(PZ_O_LMO)),INTENT(OUT) :: BUSINGER_PHIH1D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_1D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:) < 0. ) BUSINGER_PHIH1D(:) = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) @@ -200,7 +199,7 @@ SUBROUTINE BUSINGER_PHIH_0D(PZ_O_LMO,BUSINGER_PHIH0D) REAL, INTENT(IN) :: PZ_O_LMO REAL,INTENT(OUT) :: BUSINGER_PHIH0D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH_0D',0,ZHOOK_HANDLE) IF ( PZ_O_LMO < 0. ) THEN BUSINGER_PHIH0D = 0.74 * (1.-9.*PZ_O_LMO)**(-0.5) @@ -219,7 +218,7 @@ SUBROUTINE BUSINGER_PHIE_3D(PZ_O_LMO,BUSINGER_PHIE3D) REAL, DIMENSION(SIZE(PZ_O_LMO,1), & SIZE(PZ_O_LMO,2),SIZE(PZ_O_LMO,3)),INTENT(OUT) :: BUSINGER_PHIE3D ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE_3D',0,ZHOOK_HANDLE) WHERE ( PZ_O_LMO(:,:,:) < 0. ) BUSINGER_PHIE3D(:,:,:) = (1.+(-PZ_O_LMO)**(2./3.)/XALPSBL) & @@ -240,7 +239,7 @@ SUBROUTINE PAULSON_PSIM_2D(PZ_O_LMO,PAULSON_PSIM2D) ! REAL, DIMENSION(SIZE(PZ_O_LMO,1),SIZE(PZ_O_LMO,2)) :: ZX - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_2D',0,ZHOOK_HANDLE) ZX=1. WHERE ( PZ_O_LMO(:,:) < 0. ) @@ -261,7 +260,7 @@ SUBROUTINE PAULSON_PSIM_1D(PZ_O_LMO,PAULSON_PSIM1D) ! REAL, DIMENSION(SIZE(PZ_O_LMO,1)) :: ZX - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_1D',0,ZHOOK_HANDLE) ZX=1. WHERE ( PZ_O_LMO(:) < 0. ) @@ -282,7 +281,7 @@ SUBROUTINE PAULSON_PSIM_0D(PZ_O_LMO,PAULSON_PSIM0D) ! REAL :: ZX - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:PAULSON_PSIM_0D',0,ZHOOK_HANDLE) ZX=1. IF ( PZ_O_LMO < 0. ) THEN @@ -312,7 +311,7 @@ SUBROUTINE LMO_2D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO2D) REAL :: ZEPS ! ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_2D',0,ZHOOK_HANDLE) ZEPS=(XRV-XRD)/XRD ZTHETAV(:,:) = PTHETA(:,:) * ( 1. +ZEPS * PRV(:,:)) @@ -342,7 +341,7 @@ SUBROUTINE LMO_1D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO1D) REAL :: ZEPS ! ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_1D',0,ZHOOK_HANDLE) ZEPS=(XRV-XRD)/XRD ! @@ -372,7 +371,7 @@ SUBROUTINE LMO_0D(PUSTAR,PTHETA,PRV,PSFTH,PSFRV,LMO0D) REAL :: ZEPS ! ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO_0D',0,ZHOOK_HANDLE) ZEPS=(XRV-XRD)/XRD ! @@ -405,7 +404,7 @@ SUBROUTINE USTAR_2D(PU,PV,PZ,PZ0,PLMO,USTAR2D) REAL, DIMENSION(SIZE(PU,1),SIZE(PU,2)) :: ZWORK1,ZWORK2 ! !* purely unstable case - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_2D',0,ZHOOK_HANDLE) USTAR2D(:,:) = 0. ZZ_O_LMO(:,:) = XUNDEF @@ -449,7 +448,7 @@ SUBROUTINE USTAR_1D(PU,PV,PZ,PZ0,PLMO,USTAR1D) REAL, DIMENSION(SIZE(PU)) :: ZWORK1,ZWORK2 ! !* purely unstable case - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_1D',0,ZHOOK_HANDLE) USTAR1D(:) = 0. ZZ_O_LMO(:) = XUNDEF @@ -490,7 +489,7 @@ SUBROUTINE USTAR_0D(PU,PV,PZ,PZ0,PLMO,USTAR0D) REAL :: ZWORK1, ZWORK2 ! !* purely unstable case - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:USTAR_0D',0,ZHOOK_HANDLE) USTAR0D = 0. ! diff --git a/src/common/turb/mode_sbl_depth.F90 b/src/common/turb/mode_sbl_depth.F90 index f9312586278142cdd23407ea05538d4d31f3b78c..2d5c804001b964a1351aa79aabf19b61a9a74b09 100644 --- a/src/common/turb/mode_sbl_depth.F90 +++ b/src/common/turb/mode_sbl_depth.F90 @@ -7,8 +7,7 @@ IMPLICIT NONE CONTAINS ! ######spl SUBROUTINE SBL_DEPTH(D,CSTURB,PZZ,PFLXU,PFLXV,PWTHV,PLMO,PSBL_DEPTH) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################# ! ! @@ -86,7 +85,7 @@ REAL, DIMENSION(D%NIJT) :: ZA ! ponderation coefficient !* initialisations ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('SBL_DEPTH',0,ZHOOK_HANDLE) ! IKB=D%NKTB diff --git a/src/common/turb/mode_sbl_phy.F90 b/src/common/turb/mode_sbl_phy.F90 index 72a416d08a0f4ea1b6a91c5956143b13a2ffd944..caecee741720370df0ae781ffaae506316524a76 100644 --- a/src/common/turb/mode_sbl_phy.F90 +++ b/src/common/turb/mode_sbl_phy.F90 @@ -39,8 +39,7 @@ !! V. Masson 06/11/02 optimization and add Businger fonction for TKE !! V. Masson 01/01/03 use PAULSON_PSIM function !----------------------------------------------------------------------------- -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE !------------------------------------------------------------------------------- @@ -57,7 +56,7 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: BUSINGERPHIM ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JIJ,JK,IIJB,IIJE,IKT ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIM',0,ZHOOK_HANDLE) @@ -88,7 +87,7 @@ TYPE(DIMPHYEX_t), INTENT(IN) :: D REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: BUSINGERPHIH ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JIJ,JK,IIJB,IIJE,IKT ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIH',0,ZHOOK_HANDLE) @@ -120,7 +119,7 @@ TYPE(CSTURB_t), INTENT(IN) :: CSTURB REAL, DIMENSION(D%NIJT,D%NKT), INTENT(IN) :: PZ_O_LMO REAL, DIMENSION(D%NIJT,D%NKT), INTENT(OUT) :: BUSINGERPHIE ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JIJ,JK,IIJB,IIJE,IKT ! IF (LHOOK) CALL DR_HOOK('MODE_SBL:BUSINGER_PHIE',0,ZHOOK_HANDLE) @@ -158,7 +157,7 @@ SUBROUTINE LMO(D,CST,PUSTAR,PTHETA,PRV,PSFTH,PSFRV,PLMO) REAL :: ZEPS INTEGER :: IIJB,IIJE, JIJ,IKT ! - REAL(KIND=JPRB) :: ZHOOK_HANDLE + REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('MODE_SBL:LMO',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_thl_rt_from_th_r_mf.F90 b/src/common/turb/mode_thl_rt_from_th_r_mf.F90 index 6c8aa463a23ef4eae31ab6ad909ca8ae77a90b49..705e297ea40d878119e0422c86f991cee950a463 100644 --- a/src/common/turb/mode_thl_rt_from_th_r_mf.F90 +++ b/src/common/turb/mode_thl_rt_from_th_r_mf.F90 @@ -49,8 +49,7 @@ CONTAINS ! USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t USE MODD_CST, ONLY : CST_t -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! IMPLICIT NONE ! @@ -81,7 +80,7 @@ REAL, DIMENSION(D%NIJT,D%NKT) :: ZLVOCPEXN, ZLSOCPEXN INTEGER :: JRR, JIJ, JK INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !---------------------------------------------------------------------------- ! ! diff --git a/src/common/turb/mode_tke_eps_sources.F90 b/src/common/turb/mode_tke_eps_sources.F90 index 6da952ab516cd7d433d6fd37422cbbd6df6f21a5..39127dead1469fda00e415ab9645c6116b453f52 100644 --- a/src/common/turb/mode_tke_eps_sources.F90 +++ b/src/common/turb/mode_tke_eps_sources.F90 @@ -127,9 +127,8 @@ CONTAINS !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: MZM_PHY, MZF_PHY, DZF_PHY, DZM_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_ARGSLIST_ll, ONLY: LIST_ll USE MODD_BUDGET, ONLY: TBUDGETCONF_t, NBUDGET_TKE, TBUDGETDATA @@ -215,7 +214,7 @@ INTEGER :: IIJB,IIJE,IKB,IKE,IKT,IKA,IKL ! Index value for the mass TYPE(LIST_ll), POINTER :: TZFIELDDISS_ll ! list of fields to exchange INTEGER :: IINFO_ll ! return code of parallel routine TYPE(TFIELDMETADATA) :: TZFIELD -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE INTEGER :: JIJ,JK ! !---------------------------------------------------------------------------- diff --git a/src/common/turb/mode_tm06.F90 b/src/common/turb/mode_tm06.F90 index 21452a8c427b01a74e83552d3c6003cd9419c7f1..6639515579ade0201c85b40ec4c0c6fe4cbe899c 100644 --- a/src/common/turb/mode_tm06.F90 +++ b/src/common/turb/mode_tm06.F90 @@ -6,8 +6,7 @@ MODULE MODE_TM06 IMPLICIT NONE CONTAINS SUBROUTINE TM06(D,CST,PTHVREF,PBL_DEPTH,PZZ,PSFTH,PMWTH,PMTH2) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################# ! ! @@ -77,7 +76,7 @@ INTEGER :: IIJE,IIJB INTEGER :: IKTB,IKTE,IKB,IKE,IKT,IKU ! vertical levels !---------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TM06',0,ZHOOK_HANDLE) IKTB=D%NKTB IKTE=D%NKTE diff --git a/src/common/turb/mode_tm06_h.F90 b/src/common/turb/mode_tm06_h.F90 index 02af4cf442f27a9bb99da0945c6e337af767200c..48206212d865d202668c5e23ae78de2a4c400bcf 100644 --- a/src/common/turb/mode_tm06_h.F90 +++ b/src/common/turb/mode_tm06_h.F90 @@ -6,8 +6,7 @@ MODULE MODE_TM06_H IMPLICIT NONE CONTAINS SUBROUTINE TM06_H(D,PTSTEP,PZZ,PFLXZ,PBL_DEPTH) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################################# ! ! @@ -73,7 +72,7 @@ REAL :: ZGROWTH ! maximum BL growth rate !---------------------------------------------------------------------------- ! !* mixed boundary layer cannot grow more rapidly than 1800m/h -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TM06_H',0,ZHOOK_HANDLE) ZGROWTH = 2.0 ! (m/s) ! diff --git a/src/common/turb/mode_tridiag.F90 b/src/common/turb/mode_tridiag.F90 index ce755096c55657269ca3f2d87254924c643a9d08..9f21672aa2c5bcc20ee6b313a9864796a13c3c20 100644 --- a/src/common/turb/mode_tridiag.F90 +++ b/src/common/turb/mode_tridiag.F90 @@ -7,8 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TRIDIAG(D,PVARM,PA,PTSTEP,PEXPL,PIMPL, & PRHODJ,PSOURCE,PVARP ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################# ! ! @@ -149,7 +148,7 @@ INTEGER :: IIJB, IIJE ! start, end of ij loops i !* 1. COMPUTE THE RIGHT HAND SIDE ! --------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG',0,ZHOOK_HANDLE) ! IKT=D%NKT diff --git a/src/common/turb/mode_tridiag_massflux.F90 b/src/common/turb/mode_tridiag_massflux.F90 index e58c9a3d0c258c888f280eeef7b14f65b797e634..2eba264c71cf341eb205966fa25c3a210c90e0fc 100644 --- a/src/common/turb/mode_tridiag_massflux.F90 +++ b/src/common/turb/mode_tridiag_massflux.F90 @@ -8,8 +8,7 @@ CONTAINS SUBROUTINE TRIDIAG_MASSFLUX(D,PVARM,PF,PDFDT,PTSTEP,PIMPL, & PDZZ,PRHODJ,PVARP ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ################################################# ! ! @@ -162,7 +161,7 @@ INTEGER :: IKL !* 1. Preliminaries ! ------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG_MASSFLUX',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_tridiag_thermo.F90 b/src/common/turb/mode_tridiag_thermo.F90 index 6c77d7772b83141b8dc2c9b71bff435c17a71ff1..dd6f0d663da1b56023a156da5903ad44a37e8995 100644 --- a/src/common/turb/mode_tridiag_thermo.F90 +++ b/src/common/turb/mode_tridiag_thermo.F90 @@ -116,8 +116,7 @@ SUBROUTINE TRIDIAG_THERMO(D,PVARM,PF,PDFDDTDZ,PTSTEP,PIMPL, & ! !* 0. DECLARATIONS ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK USE MODD_DIMPHYEX, ONLY : DIMPHYEX_t ! USE MODE_SHUMAN_PHY, ONLY: MZM_PHY @@ -160,7 +159,7 @@ INTEGER :: IKL !* 1. Preliminaries ! ------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG_THERMO',0,ZHOOK_HANDLE) IKT=D%NKT IKTB=D%NKTB diff --git a/src/common/turb/mode_tridiag_tke.F90 b/src/common/turb/mode_tridiag_tke.F90 index cc761d7ad6692eee4041148e7f4c3f12a7e4f6e8..e20d8698b1b021899af3331553856ce3fe289aec 100644 --- a/src/common/turb/mode_tridiag_tke.F90 +++ b/src/common/turb/mode_tridiag_tke.F90 @@ -7,8 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TRIDIAG_TKE(D,PVARM,PA,PTSTEP,PEXPL,PIMPL, & PRHODJ,PSOURCE,PDIAG,PVARP ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ######################################################## ! ! @@ -150,7 +149,7 @@ INTEGER :: IKL !* 1. COMPUTE THE RIGHT HAND SIDE ! --------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG_TKE',0,ZHOOK_HANDLE) ! IKT=D%NKT diff --git a/src/common/turb/mode_tridiag_wind.F90 b/src/common/turb/mode_tridiag_wind.F90 index 0c57fc93e758dc8fd1cda909ab53842ba688765f..b3255bf3c94837e0eb464061b000b85c2d013c52 100644 --- a/src/common/turb/mode_tridiag_wind.F90 +++ b/src/common/turb/mode_tridiag_wind.F90 @@ -7,8 +7,7 @@ IMPLICIT NONE CONTAINS SUBROUTINE TRIDIAG_WIND(D,PVARM,PA,PCOEFS,PTSTEP,PEXPL,PIMPL, & PRHODJA,PSOURCE,PVARP ) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################# ! ! @@ -155,7 +154,7 @@ INTEGER :: IKL !* 1. COMPUTE THE RIGHT HAND SIDE ! --------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TRIDIAG_WIND',0,ZHOOK_HANDLE) ! IKT=D%NKT diff --git a/src/common/turb/mode_turb_ver.F90 b/src/common/turb/mode_turb_ver.F90 index 862f0e11401611d7eaa7146d0f6906e2f59d5b24..3025dfac4d06d72bdb00c1ac13be833557468063 100644 --- a/src/common/turb/mode_turb_ver.F90 +++ b/src/common/turb/mode_turb_ver.F90 @@ -211,8 +211,7 @@ SUBROUTINE TURB_VER(D,CST,CSTURB,TURBN,NEBN,TLES, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -387,7 +386,7 @@ INTEGER :: IKB,IKE,IIJE,IIJB,IKT ! index value for the Beginning INTEGER :: JSV,JIJ,JK ! loop counter REAL :: ZTIME1 REAL :: ZTIME2 -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE TYPE(TFIELDMETADATA) :: TZFIELD !---------------------------------------------------------------------------- !---------------------------------------------------------------------------- diff --git a/src/common/turb/mode_turb_ver_dyn_flux.F90 b/src/common/turb/mode_turb_ver_dyn_flux.F90 index 8814e1d667aeeeb3beb04d8e90b7e63cec03c346..6909f773d044b8a050650e6374547035bfe4f50d 100644 --- a/src/common/turb/mode_turb_ver_dyn_flux.F90 +++ b/src/common/turb/mode_turb_ver_dyn_flux.F90 @@ -204,9 +204,8 @@ SUBROUTINE TURB_VER_DYN_FLUX(D,CST,CSTURB,TURBN,TLES,KSV,O2D,OFLAT, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -337,7 +336,7 @@ TYPE(TFIELDMETADATA) :: TZFIELD ! !* 1. PRELIMINARIES ! ------------- -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB_VER_DYN_FLUX',0,ZHOOK_HANDLE) ! ZA(:,:)=XUNDEF diff --git a/src/common/turb/mode_turb_ver_sv_corr.F90 b/src/common/turb/mode_turb_ver_sv_corr.F90 index d0756b1fb34d82fc2c2dab359c5f47d3d6e27381..9a2e6aad6923d8bf14c0932a87b315b175f4029e 100644 --- a/src/common/turb/mode_turb_ver_sv_corr.F90 +++ b/src/common/turb/mode_turb_ver_sv_corr.F90 @@ -53,8 +53,7 @@ SUBROUTINE TURB_VER_SV_CORR(D,CST,CSTURB,TURBN,TLES,KRR,KRRL,KRRI,OOCEAN, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY : JPRB -USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -132,7 +131,7 @@ REAL :: ZCTSVD = 2.4 ! constant for temperature - scalar covariance dissipation REAL :: ZCQSVD = 2.4 ! constant for humidity - scalar covariance dissipation !---------------------------------------------------------------------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB_VER_SV_CORR',0,ZHOOK_HANDLE) ! IIJE=D%NIJE diff --git a/src/common/turb/mode_turb_ver_sv_flux.F90 b/src/common/turb/mode_turb_ver_sv_flux.F90 index e78333ce7848a63fca3111960c9de3d67e8a680d..c14c6f9296e6a1060fe2a963bbf24c37e762a441 100644 --- a/src/common/turb/mode_turb_ver_sv_flux.F90 +++ b/src/common/turb/mode_turb_ver_sv_flux.F90 @@ -209,9 +209,8 @@ SUBROUTINE TURB_VER_SV_FLUX(D,CST,CSTURB,TURBN,TLES,ONOMIXLG, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: DZM_PHY, MZM_PHY, MZF_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -303,7 +302,7 @@ REAL :: ZCSVP = 4.0 ! constant for scalar flux presso-correlation (RS81) REAL :: ZCSV !constant for the scalar flux ! CHARACTER(LEN=NMNHNAMELGTMAX) :: YMNHNAME -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE TYPE(TFIELDMETADATA) :: TZFIELD !---------------------------------------------------------------------------- ! diff --git a/src/common/turb/mode_turb_ver_thermo_corr.F90 b/src/common/turb/mode_turb_ver_thermo_corr.F90 index 15bb4f0736966a9001b9720711cea18e4159f556..6a54ba96effa46a639ab5934f9b87f8dbeba64d6 100644 --- a/src/common/turb/mode_turb_ver_thermo_corr.F90 +++ b/src/common/turb/mode_turb_ver_thermo_corr.F90 @@ -204,9 +204,8 @@ SUBROUTINE TURB_VER_THERMO_CORR(D,CST,CSTURB,TURBN,NEBN,TLES, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: MZM_PHY, MZF_PHY, DZM_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -352,7 +351,7 @@ TYPE(TFIELDMETADATA) :: TZFIELD !* 1. PRELIMINARIES ! ------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_CORR',0,ZHOOK_HANDLE) ! IKB=D%NKB diff --git a/src/common/turb/mode_turb_ver_thermo_flux.F90 b/src/common/turb/mode_turb_ver_thermo_flux.F90 index d1b850b4abed0b9665f41efdc45c7303413b1b7f..55b5160535ba0de3065bf25976b32517df430323 100644 --- a/src/common/turb/mode_turb_ver_thermo_flux.F90 +++ b/src/common/turb/mode_turb_ver_thermo_flux.F90 @@ -229,9 +229,8 @@ SUBROUTINE TURB_VER_THERMO_FLUX(D,CST,CSTURB,TURBN,TLES, & !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: DZF_PHY, DZM_PHY, MXF_PHY, MYF_PHY, MZF_PHY, MZM_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_CST, ONLY: CST_t USE MODD_CTURB, ONLY: CSTURB_t @@ -387,7 +386,7 @@ TYPE(TFIELDMETADATA) :: TZFIELD !* 1. PRELIMINARIES ! ------------- ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('TURB_VER_THERMO_FLUX',0,ZHOOK_HANDLE) ! ! Size for a given proc & a given model diff --git a/src/common/turb/mode_update_iiju_phy.F90 b/src/common/turb/mode_update_iiju_phy.F90 index c67545befe1ec9fba984d2ea008431bb8692963c..947d0c1e1cfcf3225b949ddfd3cf1ae822359d85 100644 --- a/src/common/turb/mode_update_iiju_phy.F90 +++ b/src/common/turb/mode_update_iiju_phy.F90 @@ -6,8 +6,7 @@ MODULE MODE_UPDATE_IIJU_PHY IMPLICIT NONE CONTAINS SUBROUTINE UPDATE_IIJU_PHY(D,PVAR) - USE PARKIND1, ONLY : JPRB - USE YOMHOOK , ONLY : LHOOK, DR_HOOK + USE YOMHOOK , ONLY : LHOOK, DR_HOOK, JPHOOK ! ############################################################## ! !!**** *MODE_UPDATE_IIJU_PHY* - @@ -54,7 +53,7 @@ REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(INOUT) :: PVAR ! working variab ! INTEGER :: IIE,IIB,IJE,IJB,IIU,IJU,IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE IF (LHOOK) CALL DR_HOOK('UPDATE_IIJU_PHY',0,ZHOOK_HANDLE) IIE=D%NIEC IIB=D%NIBC diff --git a/src/common/turb/shallow_mf.F90 b/src/common/turb/shallow_mf.F90 index a45803ce867d058edf1d6b205c3c2ff05d0a79c4..c21ef7f1b5970ad3544335252e4262fba890c734 100644 --- a/src/common/turb/shallow_mf.F90 +++ b/src/common/turb/shallow_mf.F90 @@ -71,9 +71,8 @@ !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: MXM_PHY, MYM_PHY -USE YOMHOOK, ONLY: LHOOK, DR_HOOK +USE YOMHOOK, ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_BUDGET, ONLY: TBUDGETCONF_t, TBUDGETDATA, NBUDGET_U, NBUDGET_V, & NBUDGET_TH, NBUDGET_RV, NBUDGET_SV1 @@ -188,7 +187,7 @@ INTEGER :: JIJ, JK, JSV INTEGER :: IIJB,IIJE ! physical horizontal domain indices INTEGER :: IKT ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE !------------------------------------------------------------------------ !!! 1. Initialisation diff --git a/src/common/turb/turb.F90 b/src/common/turb/turb.F90 index 14dc13ce2b485ba77f5c1acd032d0e427d93a910..2e2e9b31bff4cc81c72d0ad14fae39afffadc1c9 100644 --- a/src/common/turb/turb.F90 +++ b/src/common/turb/turb.F90 @@ -239,9 +239,8 @@ !* 0. DECLARATIONS ! ------------ ! -USE PARKIND1, ONLY: JPRB USE MODE_SHUMAN_PHY, ONLY: MZF_PHY,MXF_PHY,MYF_PHY -USE YOMHOOK , ONLY: LHOOK, DR_HOOK +USE YOMHOOK , ONLY: LHOOK, DR_HOOK, JPHOOK ! USE MODD_BUDGET, ONLY: NBUDGET_U, NBUDGET_V, NBUDGET_W, NBUDGET_TH, NBUDGET_RV, NBUDGET_RC, & NBUDGET_RI, NBUDGET_SV1, & @@ -507,7 +506,7 @@ TYPE(TFIELDMETADATA) :: TZFIELD !* 1.1 Set the internal domains, ZEXPL ! ! -REAL(KIND=JPRB) :: ZHOOK_HANDLE,ZHOOK_HANDLE2 +REAL(KIND=JPHOOK) :: ZHOOK_HANDLE,ZHOOK_HANDLE2 IF (LHOOK) CALL DR_HOOK('TURB',0,ZHOOK_HANDLE) ! IF (TURBN%LHARAT .AND. TURBN%CTURBDIM /= '1DIM') THEN diff --git a/src/mesonh/ext/yomhook.f90 b/src/mesonh/ext/yomhook.f90 new file mode 100644 index 0000000000000000000000000000000000000000..a0b84f76453a48b91853e335a1d44433f981d457 --- /dev/null +++ b/src/mesonh/ext/yomhook.f90 @@ -0,0 +1,156 @@ +!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence +!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt +!MNH_LIC for details. version 1. +MODULE YOMHOOK +USE PARKIND1 ,ONLY : JPIM ,JPRB +LOGICAL :: LHOOK=.FALSE. +INTEGER, PARAMETER :: JPHOOK=JPRB +INTERFACE DR_HOOK +MODULE PROCEDURE & + DR_HOOK_DEFAULT, & + DR_HOOK_FILE, & + DR_HOOK_SIZE, & + DR_HOOK_FILE_SIZE, & + DR_HOOK_MULTI_DEFAULT, & + DR_HOOK_MULTI_FILE, & + DR_HOOK_MULTI_SIZE, & + DR_HOOK_MULTI_FILE_SIZE +END INTERFACE + +CONTAINS + +SUBROUTINE DR_HOOK_DEFAULT(CDNAME,KSWITCH,PKEY) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,'',0) +END SUBROUTINE DR_HOOK_DEFAULT + +SUBROUTINE DR_HOOK_MULTI_DEFAULT(CDNAME,KSWITCH,PKEY) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),'',0) +END SUBROUTINE DR_HOOK_MULTI_DEFAULT + + + +SUBROUTINE DR_HOOK_FILE(CDNAME,KSWITCH,PKEY,CDFILE) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,CDFILE,0) +END SUBROUTINE DR_HOOK_FILE + +SUBROUTINE DR_HOOK_MULTI_FILE(CDNAME,KSWITCH,PKEY,CDFILE) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),CDFILE,0) +END SUBROUTINE DR_HOOK_MULTI_FILE + + + +SUBROUTINE DR_HOOK_SIZE(CDNAME,KSWITCH,PKEY,KSIZEINFO) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,'',KSIZEINFO) +END SUBROUTINE DR_HOOK_SIZE + +SUBROUTINE DR_HOOK_MULTI_SIZE(CDNAME,KSWITCH,PKEY,KSIZEINFO) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),'',KSIZEINFO) +END SUBROUTINE DR_HOOK_MULTI_SIZE + + + +SUBROUTINE DR_HOOK_FILE_SIZE(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +END SUBROUTINE DR_HOOK_FILE_SIZE + +SUBROUTINE DR_HOOK_MULTI_FILE_SIZE(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),CDFILE,KSIZEINFO) +END SUBROUTINE DR_HOOK_MULTI_FILE_SIZE + +END MODULE YOMHOOK +!==================================================================== +SUBROUTINE DR_HOOK_DEFAULT(CDNAME,KSWITCH,PKEY) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,'',0) +END SUBROUTINE DR_HOOK_DEFAULT + +SUBROUTINE DR_HOOK_MULTI_DEFAULT(CDNAME,KSWITCH,PKEY) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),'',0) +END SUBROUTINE DR_HOOK_MULTI_DEFAULT + + + +SUBROUTINE DR_HOOK_FILE(CDNAME,KSWITCH,PKEY,CDFILE) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,CDFILE,0) +END SUBROUTINE DR_HOOK_FILE + +SUBROUTINE DR_HOOK_MULTI_FILE(CDNAME,KSWITCH,PKEY,CDFILE) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),CDFILE,0) +END SUBROUTINE DR_HOOK_MULTI_FILE + + + +SUBROUTINE DR_HOOK_SIZE(CDNAME,KSWITCH,PKEY,KSIZEINFO) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,'',KSIZEINFO) +END SUBROUTINE DR_HOOK_SIZE + +SUBROUTINE DR_HOOK_MULTI_SIZE(CDNAME,KSWITCH,PKEY,KSIZEINFO) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),'',KSIZEINFO) +END SUBROUTINE DR_HOOK_MULTI_SIZE + + + +SUBROUTINE DR_HOOK_FILE_SIZE(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY +!CALL DR_HOOK_UTIL(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +END SUBROUTINE DR_HOOK_FILE_SIZE + +SUBROUTINE DR_HOOK_MULTI_FILE_SIZE(CDNAME,KSWITCH,PKEY,CDFILE,KSIZEINFO) +USE PARKIND1 ,ONLY : JPIM ,JPRB +CHARACTER(LEN=*), INTENT(IN) :: CDNAME,CDFILE +INTEGER(KIND=JPIM), INTENT(IN) :: KSWITCH,KSIZEINFO +REAL(KIND=JPRB), INTENT(INOUT) :: PKEY(:) +!CALL DR_HOOK_UTIL_MULTI(CDNAME,KSWITCH,PKEY,SIZE(PKEY),CDFILE,KSIZEINFO) +END SUBROUTINE DR_HOOK_MULTI_FILE_SIZE + diff --git a/tools/check_commit_mesonh.sh b/tools/check_commit_mesonh.sh index af975e310403ae4e2667857f4f8a660467321aee..3c54c7b48eda522f644e904e155ab0604b810f40 100755 --- a/tools/check_commit_mesonh.sh +++ b/tools/check_commit_mesonh.sh @@ -225,6 +225,7 @@ if [ $compilation -eq 1 ]; then find PHYEX -type f -exec touch {} \; #to be sure a recompilation occurs # Move manually ext/ files in src/MNH + [ -f PHYEX/ext/yomhook.f90 ] && mv PHYEX/ext/yomhook.f90 PHYEX/ext/yomhook.F90 if [ -d PHYEX/ext ]; then mv -f PHYEX/ext/* MNH/ rmdir PHYEX/ext diff --git a/tools/conf_tests/big_3D/aro49t0_nam1.sh b/tools/conf_tests/big_3D/aro49t0_nam1.sh new file mode 100644 index 0000000000000000000000000000000000000000..1fe0c67722a4528818f9711c5d61489d6857c593 --- /dev/null +++ b/tools/conf_tests/big_3D/aro49t0_nam1.sh @@ -0,0 +1,665 @@ +#!/bin/bash +#SBATCH -p normal256 +#SBATCH --export=MYLIB,HOMEPACK,TESTDIR +#SBATCH -n 1280 +#SBATCH -c 4 +#SBATCH -N 40 +#SBATCH -t 00:40:00 +#SBATCH --mem=247000 +#SBATCH --exclusiv + +# Job management : +# -------------- +JOB_INITDIR=$SLURM_SUBMIT_DIR +export JOB_NAME=arome_e700 +export JOB_ID=$SLURM_JOB_ID + +echo JOB_INITDIR=$JOB_INITDIR +echo JOB_NAME=$JOB_NAME +echo JOB_ID=$JOB_ID + +# ============================================================================= + +# RESOURCES ALLOCATIONS +# ===================== + +# Number of nodes/mpi-tasks/omp-threads: +# ------------------------------------- +NNODES=$SLURM_JOB_NUM_NODES +# Number of MPI tasks per node: +MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) +# Number of OPEN-MP threads per MPI task: +export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK +# Total number of MPI tasks: +MPI_TASKS=$SLURM_NTASKS +# Number of tasks reserved for the I/O server : 2 (hyperthreaded) nodes +#NTASKS_IO=$(($(grep processor /proc/cpuinfo | wc -l)/1/$OMP_NUM_THREADS)) +NTASKS_IO=0 +echo NNODES=$NNODES +echo MPITASKS_PER_NODE=$MPITASKS_PER_NODE +echo +# Number of MPI tasks and OMP threads used in the application : +echo MPI_TASKS=$MPI_TASKS +echo OMP_NUM_THREADS=$OMP_NUM_THREADS + +# ============================================================================= + +# SYSTEM PREFERENCES +# ================== + +# OMP/MPI submission management : +# ----------------------------- +# LOCAL_MPI_WRAPPER : could be "mpiauto", "mpdrun", "mpiexec" ... or empty string +# LOCAL_STACK_LIMIT : could be "unlimited" or empty string + +set -x +#LOCAL_MPI_WRAPPER="/opt/softs/mpiauto/mpiauto --wrap --wrap-stdeo --wrap-stdeo-pack" +LOCAL_MPI_WRAPPER="/opt/softs/mpiauto/mpiauto" +LOCAL_STACK_LIMIT=unlimited +ulimit -l unlimited +set +x + +# Specific environment variables : +# ------------------------------ +set -x +export OMP_STACKSIZE=4G +export KMP_STACKSIZE=4G +export KMP_MONITOR_STACKSIZE=4G +export I_MPI_HARD_FINALIZE=1 +export I_MPI_SCALABLE_OPTIMIZATION=0 +export I_MPI_DAPL_UD_RNDV_EP_NUM=4 +export I_MPI_SHM_SPIN_COUNT=10 +export I_MPI_SPIN_COUNT=10 +set +x + +# File systems : +# ------------ +# Global file system: +export TMPGFS=$TMPDIR +export WORKGFS=$WORKDIR/benchmarks +#MTOOL export TMPGFS=$MTOOL_STEP_WORKSPACE +# Local file system (if preferred): +export TMPLOC=$TMPGFS +echo TMPGFS=$TMPGFS +echo TMPLOC=$TMPLOC + +# Local disks synchronization : +# --------------------------- +export ISYNC=0 +if [ "$MTOOL_IS" = "ON" ] ; then +# synchronization is needed anyway between the steps + export ISYNC=1 +elif [ $NNODES -gt 1 ] && [ "$TMPLOC" != "$TMPGFS" ] ; then +# Local disk synchronization needed: + export ISYNC=1 +fi +echo ISYNC=$ISYNC + +# Miscellaneous : +# ------------- + +# ============================================================================= + +# USER PREFERENCES +# ================ + +#export NAMELDIR=/home/gmap/mrpm/khatib/pack/48t1_main.01#myref/run/cy47.forecast_arome_e700/Namelists +export NAMELDIR=$TESTDIR/Namelists + +HOMEPACK=${HOMEPACK:=$HOME/pack} +export BINDIR=$HOMEPACK/$MYLIB/bin +#export BINDIR=/home/gmap/mrpm/khatib/pack/48t1_main.01#myref/bin +OUTPUTDIR=${OUTPUTDIR:-$PWD} #No cd command have been done before this line + + + +export DATADIR=/scratch/work/khatib/data/cy49.forecast_arome_e700 +#export REFDIR=/home/gmap/mrpm/khatib/benchmarks/apps/modules/cy47.forecast_arome_e700/References +export TOOLSDIR=/home/gmap/mrpm/khatib/benchmarks/tools +#export ROOTDIR_ODB=/home/gmap/mrpm/khatib/odbpools/36t1_bench/cy47.forecast_arome_e700 + +# Check reliability of auxilary directories : +# ----------------------------------------- +ierr=0 +#for var in NAMELDIR BINDIR DATADIR REFDIR TOOLSDIR ; do +for var in NAMELDIR BINDIR DATADIR TOOLSDIR ; do + eval "dir=\$$var" + if [ ! "$dir" ] ; then + echo "$var is not set." + ierr=1 + fi + if [ $ierr -ne 0 ] ; then + exit 1 + fi +done +ierr=0 +for dir in $NAMELDIR $BINDIR $REFDIR $TOOLSDIR ; do + if [ ! -d $dir ] ; then + echo "$dir does not exists." + ierr=1 + fi + if [ $ierr -ne 0 ] ; then + exit 1 + fi +done + +echo TOOLSDIR=$TOOLSDIR +echo NAMELDIR=$NAMELDIR +echo DATADIR=$DATADIR +#echo REFDIR=$REFDIR +echo BINDIR=$BINDIR +#echo ROOTDIR_ODB=$ROOTDIR_ODB + +export PATH=$TOOLSDIR:$PATH +export TOOLSDIR +export DATADIR + +# Software default environment variables : +# -------------------------------------- +set -x +export DR_HOOK=0 +export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_SILENT=1 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export MPL_MBX_SIZE=2048000000 +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export EC_MEMINFO=0 +export OPENBLAS_NUM_THREADS=1 +export MKL_CBWR="AUTO,STRICT" +export MKL_NUM_THREADS=1 +export MKL_DEBUG_CPU_TYPE=5 +set +x + +# Profilers management : +# -------------------- +# FTRACE_JOB : profiler switch +# =0 : no profiler +# =1 : integrated DrHook profiler +# =2 : specific profiler +# +export FTRACE_JOB=1 +echo "FTRACE_JOB=$FTRACE_JOB" + +if [ $FTRACE_JOB -ne 0 ] ; then +# profilings main directory: + if [ -d $JOB_INITDIR ] ; then +# Use the initial job's dir + FTRACE_DIR=$JOB_INITDIR + else +# Set one : + FTRACEDIR= + if [ ! "$FTRACEDIR" ] ; then + echo "FTRACEDIR is not set." + exit 1 + fi + if [ ! -d $FTRACEDIR ] ; then + mkdir -p $FTRACEDIR + if [ $? -ne 0 ] ; then + echo "Can't make directory $FTRACEDIR" + exit 1 + fi + fi + FTRACE_DIR=$FTRACEDIR + fi + SCRATCH_FTRACE_DIR=$TMPGFS +# SCRATCH_FTRACE_DIR=$FTRACE_DIR + if [ $FTRACE_JOB -eq 1 ] ; then + set -x + export DR_HOOK=1 + export DR_HOOK_OPT=prof +# Directory of individual profiles : + export PROFDIR=$SCRATCH_FTRACE_DIR/${JOB_NAME}.d${JOB_ID} +# Merged profiles report filename : + export PROFMRG=$FTRACE_DIR/${JOB_NAME}.h${JOB_ID} + set +x + elif [ $FTRACE_JOB -ge 2 ] ; then + set -x +# Directory of individual profiles : + export PROFDIR=$SCRATCH_FTRACE_DIR/${JOB_NAME}.f${JOB_ID} +# Merged profiles report filename : + export PROFMRG=$FTRACE_DIR/${JOB_NAME}.t${JOB_ID} + set +x + fi +fi + +set +x + +# Listings : +# -------- +set -x +export ECHO_MPSH=OFF +export OUTPUT_LISTING=YES +export LOGDIR=$JOB_INITDIR/${JOB_NAME}.l${JOB_ID} +set +x + +# ODB archives : +# ------------ +# if set to 1, archived Odbs will be gzipped : +set -x +export ARCHIVE_AND_ZIP_ODB=0 +set +x + +# Directory for application output data files : +# ------------------------------------------- +echo +OUTDIR= +OUTDIR=${OUTDIR:=$TMPGFS} +if [ "$TMPGFS" != "$TMPLOC" ] ; then + if [ "$OUTDIR" = "$TMPLOC" ] ; then + echo "Output files on LOCAL file system" + elif [ "$OUTDIR" = "$TMPGFS" ] ; then + echo "Output files on GLOBAL file system" + else + echo "Output files on directory : $OUTDIR" + fi +else + echo "Output files on directory : $OUTDIR" +fi + +# NFS temporary directory for small I/Os +echo +TMPNFS=$(mktemp -d --tmpdir=/tmp/$LOGNAME) +if [ -d $TMPNFS ] ; then + echo "temporary directory on NFS for small I/Os : $TMPNFS" +else + TMPNFS="." +fi + +# ============================================================================= + +# APPLICATION TUNING +# ================== + +# ARPEGE : Forecast +# ***************** + +mkdir -p $TMPLOC +if [ $ISYNC -gt 0 ] ; then + mkdir -p $TMPGFS + cd $TMPGFS +else + cd $TMPLOC +fi + +# Driver-specific environment variables : +# ------------------------------------- +set -x +NAMELIST=namel_previ.49 +CTRLLIST=extra_namelists48.list +LINKS=links_inline48.scpt +EXECUTABLE=MASTERODB +#REFLIST=$REFDIR/forecast.out +EXPLIST=./NODE.001_01 +set +x + +#MTOOL common join=step_2 + +# Namelists modifications : +# ----------------------- + +set -x + +# Number of MPI tasks for the I/O server : +NPROC_IO=$NTASKS_IO + +# Remaining number of MPI tasks : +NPROC=$((MPI_TASKS-NPROC_IO)) + +# Memory cache optimisation: +NPROMA=-16 +NFPROMA=-24 + +# Overall scalar optimisation: +LOPT_SCALAR=.TRUE. + +# Output packing distribution: +NSTROUT=${NPROC} +NSTRIN=${NPROC} + +NPRGPEW=16 +#NPRGPNS=((NPROC/NPRGPEW)) +NPRTRV=16 +#NPRTRW=((NPROC/NPRTRV)) + +set +x + +cat > namelist_mods2 <<EOF + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + LSEDIC=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAM_PARAM_LIMA + / + &NAMPARAR + LOSIGMAS=-, + LOSUBG_COND=-, + VSIGQSAT=-, + LOSEDIC=-, + CFRAC_ICE_ADJUST=-, + CFRAC_ICE_SHALLOW_MF=-, + CSEDIM=-, + CSNOWRIMING=-, + LCONVHG=-, + LCRFLIMIT=-, + LEVLIMIT=-, + LFEEDBACKT=-, + LNULLWETG=-, + LNULLWETH=-, + LSEDIM_AFTER=-, + LWETGPOST=-, + LWETHPOST=-, + NMAXITER_MICRO=-, + XFRACM90=-, + XMRSTEP=-, + XSPLIT_MAXCFL=-, + XTSTEP_TS=-, + LCRIAUTI=-, + RCRIAUTC=-, + RCRIAUTI=-, + RT0CRIAUTI=-, + / + &NAMTRANS + LFFTW=.TRUE., + / + &NAMPAR0 + NPRINTLEV=1, + LOPT_SCALAR=${LOPT_SCALAR}, + MBX_SIZE=2048000000, + NPROC=${NPROC}, + NPRGPNS=-, + NPRGPEW=-, + NPRTRW=-, + NPRTRV=-, + / + &NAMDIM + NPROMA=$NPROMA, + / + &NAMFPSC2 + NFPROMA=$NFPROMA, + / + &NAMFPSC2_DEP + NFPROMA_DEP=$NFPROMA, + / + &NAMPAR1 + LSPLIT=.TRUE., + NSTRIN=${NSTRIN}, + NSTROUT=${NSTROUT}, + / + &NAMFA + CMODEL=' ', + / + &NAMIAU + LIAU=.FALSE., + / + &NAMARG + CNMEXP='0000', + / + &NAMCT0 + CSCRIPT_LAMRTC=' ', + CSCRIPT_PPSERVER=' ', + CFPNCF='ECHFP', + NSDITS(0)=0, + NFRSDI=4, + NFPOS=1, + / + &NAMCT1 + N1POS=1, + / + &NAMFPC + CFPDIR='${OUTDIR}/PF', + / + &NAMOPH + CFNHWF='${OUTDIR}/ECHIS', + CFPATH='${OUTDIR}/', + / + &NAMIO_SERV + NPROC_IO=${NPROC_IO}, + NMSG_LEVEL_SERVER=1, + NMSG_LEVEL_CLIENT=1, + NPROCESS_LEVEL=5, + / + &NAMRIP + CSTOP='h24', + TSTEP=50., + / +EOF +cat namelist_mods2 > namelist_modset +\rm -f namelist_mods2 +echo +echo Namelists adaptations : +cat namelist_modset +echo + +set +x +cp $NAMELDIR/$NAMELIST namelist +perl -w $TOOLSDIR/xpnam namelist --dfile=namelist_modset +set -x +echo +/bin/cat namelist.new +set +x +\rm -f namelist_modset namelist +\mv namelist.new fort.4 +set -x + +#MTOOL common + +# ============================================================================= + +# DRIVER +# ====== + +# ****************************** +# * fetch initial data files * +# ****************************** + +#MTOOL common join=step_1 + +set -x +$TOOLSDIR/getdata.sh +set +x + +#MTOOL common + +#MTOOL common join=step_2 + +for file in $(cat $NAMELDIR/$CTRLLIST) ; do + set -x + cp $NAMELDIR/$file . + set +x +done +if [ -s $NAMELDIR/$LINKS ] ; then + set -x + cp $NAMELDIR/$LINKS . + chmod 755 $LINKS + . ./$LINKS + \rm $LINKS + set +x +fi + +#MTOOL common + +# *************** +# * Executable * +# *************** + +#MTOOL common join=step_1 + +echo +set -x +cp $BINDIR/$EXECUTABLE . +set +x +if [ ! -f $EXECUTABLE ] ; then + echo "executable $BINDIR/$EXECUTABLE could not be copied." + exit 1 +fi + +#MTOOL common + +# ******************************** +# * Prepare parallel executions * +# ******************************** + +#MTOOL common join=step_2 + +if [ "$LOCAL_STACK_LIMIT" ] ; then + set -x + ulimit -s $LOCAL_STACK_LIMIT + set +x +fi +# for mpsh : +export MPSH_NPES=$NNODES + +# grib_api environment variables may be determined by the executable : +. grib_api_profile $EXECUTABLE + +# Intel mpi fabric setup depending on what is found in the executable : +. intel_mpi_fabric $EXECUTABLE + +#MTOOL common + +set -x +cd $TMPLOC +set +x +. rttov_profile + +# ******************************************************* +# * Unarchive datasets and local disks Synchronisation * +# ******************************************************* + +if [ $ISYNC -eq 0 ] ; then + set -x +#MTOOL common join=step_1 + $TOOLSDIR/input_sync.sh +#MTOOL common + set +x +else + set -x +#MTOOL common join=step_2 + $TOOLSDIR/input_sync.sh +#MTOOL common + set +x +fi + +# *************** +# * Execution * +# *************** + +#MTOOL common join=step_2 + +mkdir -p $OUTDIR +echo +if [ $(echo $LOCAL_MPI_WRAPPER | grep -c mpiauto) -ne 0 ] ; then + set -x + time $LOCAL_MPI_WRAPPER -np $MPI_TASKS -nnp $MPITASKS_PER_NODE -- ./$EXECUTABLE </dev/null \ + errorcode=$? + 2>&1 | grep -v "FA[DC]GR[AM]: Field .* is not declared in \`faFieldName.def'" + set +x +elif [ "$LOCAL_MPI_WRAPPER" = "srun" ] ; then + set -x + time $LOCAL_MPI_WRAPPER ./$EXECUTABLE </dev/null \ + errorcode=$? + 2>&1 | grep -v "FA[DC]GR[AM]: Field .* is not declared in \`faFieldName.def'" + set +x +elif [ "$LOCAL_MPI_WRAPPER" ] ; then + set -x + time $LOCAL_MPI_WRAPPER -np $MPI_TASKS ./$EXECUTABLE </dev/null \ + errorcode=$? + 2>&1 | grep -v "FA[DC]GR[AM]: Field .* is not declared in \`faFieldName.def'" + set +x +else + set -x + time ./$EXECUTABLE \ + errorcode=$? + 2>&1 | grep -v "FA[DC]GR[AM]: Field .* is not declared in \`faFieldName.def'" + set +x +fi + +# ********************** +# * Post-processings * +# ********************** + +echo +if [ "$OUTPUT_LISTING" = "YES" ] ; then + set -x + $TOOLSDIR/outsync.sh + set +x +fi + +if [ $FTRACE_JOB -gt 0 ] ; then + set -x + $TOOLSDIR/profsync.sh + set +x +fi + +set -x +ls -l $OUTDIR +set +x + +set -x +#errorcode returned by executable is not reliable (always different from 0) +if grep " NSTEP = 1728 CNT0" NODE.001_01 > /dev/null; then + cp $EXPLIST $OUTPUTDIR/ +else + mkdir $OUTPUTDIR/error + cp $EXPLIST $OUTPUTDIR/error/ +fi +#if [ -f $REFLIST ] && [ -f $EXPLIST ] ; then $TOOLSDIR/diffNODE.001_01 $EXPLIST $REFLIST ; fi +set +x +# **************** +# * Cleanups * +# **************** + +set -x +cd $TMPGFS +$TOOLSDIR/cleansync.sh +set +x + +#MTOOL common + +# **************** +# * Epilogue * +# **************** + +set -x +$TOOLSDIR/epilog.sh +set +x +if [ "$MTOOL_IS" != "ON" ] && [ "$AUTO_CLEAN" = "ON" ] ; then + cd $HOME + \rm -rf $TMPGFS +fi + +#MTOOL step id=step_1 target=FRONTEND +#MTOOL step id=step_2 target=SUPERCOMPUTER diff --git a/tools/conf_tests/small_3D/aro49t0_nam1.sh b/tools/conf_tests/small_3D/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..c93d2836316e6f1120624ba0311577b088f92343 --- /dev/null +++ b/tools/conf_tests/small_3D/aro49t0_nam1.sh @@ -0,0 +1,1247 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE., + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +mv *.dat $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt1/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt1/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..c3f84f6e52945781efe26886ec0383d4e650226f --- /dev/null +++ b/tools/conf_tests/small_3D_alt1/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='T', + CFRAC_ICE_SHALLOW_MF='T', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, +/ + &NAM_PARAM_ICEN + CSEDIM='SPLI', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.TRUE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=10, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=25., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt10/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt10/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..a704785573462affbc0b636e5b4d3e419d9bcc2e --- /dev/null +++ b/tools/conf_tests/small_3D_alt10/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/radiation_params.47r1_light.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt2/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt2/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..d08cee7349412df819b238beb581d10da8e3e6ed --- /dev/null +++ b/tools/conf_tests/small_3D_alt2/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE., + LSEDIM_AFTER=.FALSE., + NMAXITER_MICRO=1, + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.FALSE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt3/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt3/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..24d61e99aae9d746833ff3389169ed4730e9093d --- /dev/null +++ b/tools/conf_tests/small_3D_alt3/aro49t0_nam1.sh @@ -0,0 +1,1248 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + CSUBG_RC_RR_ACCR='PRFR', + CSUBG_RR_EVAP='PRFR', + LSEDIC=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt4/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt4/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..ec0ec280623cb908a8f800ec9545ab4df6c5d8e9 --- /dev/null +++ b/tools/conf_tests/small_3D_alt4/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='T', + CFRAC_ICE_SHALLOW_MF='T', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='SPLI', + CSNOWRIMING='OLD', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.TRUE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=10, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=25., + LSEDIC=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt5/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt5/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..a98f5313e2d3b1e3d42aa6f0434c1670e67cc3ee --- /dev/null +++ b/tools/conf_tests/small_3D_alt5/aro49t0_nam1.sh @@ -0,0 +1,1258 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSH%CLNAME='SURFACCGREL2', + GFP_XLSH%CLNAME='SURFINSGREL2', + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFPLSH=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YH_NL%LGP=.TRUE., + YH_NL%NREQIN=0, + YH_NL%NCOUPLING=-1, + YH_NL%REFVALC=0., + YH_NL%LPT=.FALSE., + YH_NL%LREQOUT=.TRUE., + YH_NL%LQM=.TRUE., + YH_NL%LSLHD=.FALSE., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE. + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE4', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXPLSH=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt6/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt6/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..d6f1fa99e1f57e15349af05654fe85ada1655015 --- /dev/null +++ b/tools/conf_tests/small_3D_alt6/aro49t0_nam1.sh @@ -0,0 +1,1248 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + CMF_UPDRAFT='RAHA' + CMF_CLOUD='BIGA' + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt7/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt7/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..b51b376b7930b644ee58d8d30211d4c305638bd0 --- /dev/null +++ b/tools/conf_tests/small_3D_alt7/aro49t0_nam1.sh @@ -0,0 +1,1248 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.FALSE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + CMF_UPDRAFT='EDKF' + CMF_CLOUD='STAT' + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt8/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt8/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..a0e097a0172d70c7d6b68c4f7ee485e4109d4649 --- /dev/null +++ b/tools/conf_tests/small_3D_alt8/aro49t0_nam1.sh @@ -0,0 +1,1247 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + CMF_UPDRAFT='RHCJ' + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_alt9/aro49t0_nam1.sh b/tools/conf_tests/small_3D_alt9/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..a314924845169958ca65d1d3f4450aac28d1cf6d --- /dev/null +++ b/tools/conf_tests/small_3D_alt9/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LOCND2=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_lima/aro49t0_nam1.sh b/tools/conf_tests/small_3D_lima/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..acd8972afce6081d0f9b5ba0c180fc7cc3abf743 --- /dev/null +++ b/tools/conf_tests/small_3D_lima/aro49t0_nam1.sh @@ -0,0 +1,1348 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=5, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YEZDIAG_NL(5)%CNAME='DTHRAD', + YEZDIAG_NL(5)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + NLIMA=8, + YLIMA_NL(1)%CNAME='N_CLOUD', + YLIMA_NL(1)%NREQIN=0, + YLIMA_NL(1)%REFVALI=0., + YLIMA_NL(1)%NCOUPLING=0, + YLIMA_NL(1)%REFVALC=0., + YLIMA_NL(1)%LQM=.FALSE., + YLIMA_NL(1)%LSLHD=.FALSE., + YLIMA_NL(2)%CNAME='N_RAIN', + YLIMA_NL(2)%NREQIN=0, + YLIMA_NL(2)%REFVALI=0., + YLIMA_NL(2)%NCOUPLING=0, + YLIMA_NL(2)%REFVALC=0., + YLIMA_NL(2)%LQM=.FALSE., + YLIMA_NL(2)%LSLHD=.TRUE., + YLIMA_NL(3)%CNAME='N_CCN_F', + YLIMA_NL(3)%NREQIN=-1, + YLIMA_NL(3)%REFVALI=300.E6, + YLIMA_NL(3)%NCOUPLING=0, + YLIMA_NL(3)%REFVALC=300.E6, + YLIMA_NL(3)%LQM=.FALSE., + YLIMA_NL(3)%LSLHD=.TRUE., + YLIMA_NL(4)%CNAME='N_CCN_A', + YLIMA_NL(4)%NREQIN=0, + YLIMA_NL(4)%REFVALI=0., + YLIMA_NL(4)%NCOUPLING=0, + YLIMA_NL(4)%REFVALC=0., + YLIMA_NL(4)%LQM=.FALSE., + YLIMA_NL(4)%LSLHD=.TRUE., + YLIMA_NL(5)%CNAME='N_ICE', + YLIMA_NL(5)%NREQIN=0, + YLIMA_NL(5)%REFVALI=0., + YLIMA_NL(5)%NCOUPLING=0, + YLIMA_NL(5)%REFVALC=0., + YLIMA_NL(5)%LQM=.FALSE., + YLIMA_NL(5)%LSLHD=.TRUE., + YLIMA_NL(6)%CNAME='N_IFN_F', + YLIMA_NL(6)%NREQIN=-1, + YLIMA_NL(6)%REFVALI=1000.E3, + YLIMA_NL(6)%NCOUPLING=0, + YLIMA_NL(6)%REFVALC=800.E3, + YLIMA_NL(6)%LQM=.FALSE., + YLIMA_NL(6)%LSLHD=.TRUE., + YLIMA_NL(7)%CNAME='N_IFN_A', + YLIMA_NL(7)%NREQIN=0, + YLIMA_NL(7)%REFVALI=0., + YLIMA_NL(7)%NCOUPLING=0, + YLIMA_NL(7)%REFVALC=0., + YLIMA_NL(7)%LQM=.FALSE., + YLIMA_NL(7)%LSLHD=.TRUE., + YLIMA_NL(8)%CNAME='N_HHONI', + YLIMA_NL(8)%NREQIN=0, + YLIMA_NL(8)%REFVALI=0., + YLIMA_NL(8)%NCOUPLING=0, + YLIMA_NL(8)%REFVALC=0., + YLIMA_NL(8)%LQM=.FALSE., + YLIMA_NL(8)%LSLHD=.TRUE., + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAM_PARAM_LIMA + LADJ=T, + LSPRO=F, + NMOM_C=2, + NMOM_R=2, + NMOM_I=2, + NMOM_S=1, + NMOM_G=1, + NMOM_H=0, + LACTI = T, + HINI_CCN='AER', + HTYPE_CCN(1)='M', + NMOD_CCN = 1, + XALPHAR = 1., + XNUR = 1., + LACTIT=F, + LSEDC=F, + LDEPOC=F, + LKESSLERAC=F, + LKHKO=F, + LSCAV=F, + LAERO_MASS=F, + LCCN_HOM=F, + CCCN_MODES='COPT', + LNUCL=T, + LSEDI=F, + LHHONI=F, + LSNOW_T=F, + NMOD_IFN=1, + NPHILLIPS=8, + CPRISTINE_ICE_LIMA = 'PLAT', + CHEVRIMED_ICE_LIMA = 'GRAU', + NIND_SPECIE = 1, + LMEYERS=F, + NMOD_IMM=0, + LIFN_HOM=T, + CIFN_SPECIES='', + CINT_MIXING='DM1', + LPTSPLIT=T, + XMRSTEP=0.00005, + NMAXITER=10, + LFEEDBACKT=.TRUE., + XTSTEP_TS=25., + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='T', + CFRAC_ICE_SHALLOW_MF='T', + LSIGMAS=.TRUE., + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='SPLI', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIC=.TRUE., + LSEDIM_AFTER=.TRUE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=10, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=25., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='LIMA', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_np1/aro49t0_nam1.sh b/tools/conf_tests/small_3D_np1/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..db46dbce7772b253b95f46a3417eea44356d4d02 --- /dev/null +++ b/tools/conf_tests/small_3D_np1/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + LSEDIM_AFTER=.FALSE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x diff --git a/tools/conf_tests/small_3D_np2/aro49t0_nam1.sh b/tools/conf_tests/small_3D_np2/aro49t0_nam1.sh new file mode 100755 index 0000000000000000000000000000000000000000..a39f4782304a9cf8d403ce685ad64c7ad66693f7 --- /dev/null +++ b/tools/conf_tests/small_3D_np2/aro49t0_nam1.sh @@ -0,0 +1,1246 @@ +#!/bin/bash +#SBATCH -n 4 +#SBATCH --mem=20000 +#SBATCH --export=MYLIB,HOME,HOMEPACK,TMPDIR,OUTPUTDIR,TESTDIR +#SBATCH -t 00:10:00 +#SBATCH -N 1 +#SBATCH -p normal256 + +#The MYLIB variable must contain the gmkpack pack name +#The TESTDIR variable must contain the test directory +#Results will be stored in the local directory + +#Other environment varaibles that can be set: +#OUTPUTDIR + +date + +OUTPUTDIR=${OUTPUTDIR:-$PWD} +case=riette2 +#rekchemin="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" #Resources for the run must be in the same directory as this script +rekchemin=$TESTDIR + +NPROC=4 +NSTRIN=$NPROC +NSTROUT=1 +NPRTRW_NPRTRV="" +NPRTRW_NPRTRV=" NPRTRW=$NPROC, + NPRTRV=1," +export OMP_NUM_THREADS=1 + +#MYLIB=48t1_main.01%jpdup + +export DR_HOOK=1 +#export DR_HOOK_IGNORE_SIGNALS=-1 +export DR_HOOK_NOT_MPI=1 +export DR_HOOK_SILENT=1 +export DR_HOOK_OPT= + +export EC_PROFILE_HEAP=0 +export EC_PROFILE_MEM=0 +export EC_MPI_ATEXIT=0 +export DR_HOOK_SHOW_PROCESS_OPTIONS=0 +export EC_MEMINFO=0 +export TVSEARCHPATH=$SOURCE + +HOMEPACK=${HOMEPACK:=$HOME/pack} +SOURCE=$HOMEPACK/$MYLIB/src/local +LOADIR=$HOMEPACK/$MYLIB/bin + +TMPDIR=${TMPDIR:=$HOME/tmp} +TMPLOC=$TMPDIR/rundir.$$ +TMPWAIT=$TMPDIR/wait_queue.$$ +mkdir $TMPWAIT +mkdir $TMPLOC +cd $TMPLOC + +export RTTOV_COEFDIR=$PWD + +# ************************** +# * Saisie des NAMELISTS * +# ************************** + +CNMEXP='FPOS' + +echo +/bin/cat <<FIN > fort.4 + &NACIETEO + / + &NACOBS + / + &NACTAN + / + &NACTEX + / + &NACVEG + / + &NADOCK + / + &NAEAEM7 + / + &NAEAER + / + &NAECOAPHY + / + &NAEPHLI + / + &NAEPHY + / + &NAERAD + LRRTM=.TRUE., + LSRTM=.FALSE., + NAER=1, + NICEOPT=3, + NLIQOPT=3, + NOVLP=6, + NOZOCL=2, + NRADFR=18, + NRADIP=3, + NRADLP=2, + NSW=6, + RLWINHF=1, + RRE2DE=0.64952, + RSWINHF=1, + / + &NAERCLI + / + &NAETLDIAG + / + &NAEVOL + / + &NAIMPO + / + &NALORI + / + &NAMACV + / + &NAMAFN + GFP_CLSG%CLNAME='SURFACCGRAUPEL', + GFP_CLSP%CLNAME='SURFACCPLUIE', + GFP_CLSS%CLNAME='SURFACCNEIGE', + GFP_SFIS%IBITS=16, + GFP_ST%CLNAME='SURFTEMPERATURE', + GFP_ST%IANO=0, + GFP_ST%IBITS=12, + GFP_X10U%CLNAME='CLSVENT.ZONAL', + GFP_X10U%IANO=0, + GFP_X10U%IBITS=12, + GFP_X10V%CLNAME='CLSVENT.MERIDIEN', + GFP_X10V%IANO=0, + GFP_X10V%IBITS=12, + GFP_X2RH%CLNAME='CLSHUMI.RELATIVE', + GFP_X2RH%IANO=0, + GFP_X2RH%IBITS=12, + GFP_X2T%CLNAME='CLSTEMPERATURE', + GFP_X2T%IANO=1, + GFP_XCCC%IBITS=8, + GFP_XHCC%IBITS=8, + GFP_XLCC%IBITS=8, + GFP_XLSG%CLNAME='SURFINSGRAUPEL', + GFP_XLSP%CLNAME='SURFINSPLUIE', + GFP_XLSS%CLNAME='SURFINSNEIGE', + GFP_XMCC%IBITS=8, + GFP_XN2T%IBITS=12, + GFP_XTCC%IBITS=8, + GFP_XUGST%CLNAME='CLSU.RAF60M.XFU', + GFP_XUGST%IANO=0, + GFP_XUGST%IBITS=12, + GFP_XVGST%CLNAME='CLSV.RAF60M.XFU', + GFP_XVGST%IANO=0, + GFP_XVGST%IBITS=12, + GFP_XX2T%IBITS=12, + GFP_XXDIAGH%IBITS=12, + TFP_ABS%ZFK=32., + TFP_CLF%IBITS=6, + TFP_EDR%CLNAME='EDR', + TFP_EDR%IBITS=16, + TFP_EDR%IGRIB=136, + TFP_GR%IBITS=12, + TFP_HL%IBITS=12, + TFP_HTB%IBITS=16, + TFP_HTB%LLGP=.TRUE., + TFP_HU%IBITS=12, + TFP_MSAT9C2%IBITS=12, + TFP_MSAT9C6%IBITS=12, + TFP_MSLNH%IBITS=12, + TFP_PV%ZFK=64., + TFP_RCLS%IBITS=12, + TFP_RR%IBITS=12, + TFP_SN%IBITS=12, + TFP_T%IBITS=12, + TFP_TCLS%IBITS=12, + TFP_TH%IBITS=12, + TFP_THPW%IBITS=12, + TFP_THV%IBITS=12, + TFP_TN%IBITS=12, + TFP_TWV%IBITS=12, + TFP_TX%IBITS=12, + TFP_U%IBITS=12, + TFP_V%IBITS=12, + TFP_VOR%ZFK=32., + TFP_VV%ZFK=32., + / + &NAMARG + CNMEXP='${CNMEXP}', + LECMWF=.FALSE., + LELAM=.TRUE., + NCONF=1, + NSUPERSEDE=1, + / + &NAMARPHY + LKFBCONV=.FALSE., + LKFBD=.FALSE., + LKFBS=.FALSE., + LMFSHAL=.TRUE., + LMICRO=.TRUE., + LMPA=.TRUE., + LMSE=.TRUE., + LTURB=.TRUE., + / + &NAMCA + / + &NAMCAPE + / + &NAMCFU + LCUMFU=.TRUE., + LFPLS=.TRUE., + LFPLSG=.TRUE., + LFR=.TRUE., + LFRRC=.TRUE., + LFSF=.TRUE., + LNEBPAR=.TRUE., + LNEBTT=.TRUE., + LRAYD=.TRUE., + LRAYS=.TRUE., + / + &NAMCHEM + / + &NAMCHET + / + &NAMCHK + / + &NAMCLA + / + &NAMCLDP + / + &NAMCLI + / + &NAMCLOP15 + / + &NAMCLRADLID + / + &NAMCLTC + / + &NAMCOK + / + &NAMCOM + / + &NAMCOSJO + / + &NAMCOUPLO4 + / + &NAMCT0 + CFPNCF='ECHFP', + CNPPATH=' ', + LAROME=.TRUE., + LSCREEN_OPENMP=.FALSE., + NFPOS=1, + NFRSDI=18, + NSDITS(0)=0, + NFRHIS=72, + NHISTS(0)=0, + NFRPOS=72, + NPOSTS(0)=0, + NFRSFXHIS=72, + NSFXHISTS(0)=0, + NFRDHFD=72, + NDHFDTS(0)=0, + / + &NAMCT1 + LRFILAF=.FALSE., + N1HIS=1, + N1POS=1, + N1RES=0, + N1SDI=1, + N1SFXHIS=1, + N1GDI=0, + / + &NAMCUMF + / + &NAMCUMFS + / + &NAMCVER + NDLNPR=1, + / + &NAMCVMNH + / + &NAMDDH + LDDH_OMP=.TRUE., + LHDDOP=.TRUE., + LHDHKS=.TRUE., + LHDEFD=.TRUE., + LFLEXDIA=.TRUE., + BDEDDH(1,1)=3, + BDEDDH(2,1)=1, + BDEDDH(3,1)=358.8 + BDEDDH(4,1)=45.1 + BDEDDH(5,1)=360.3 + BDEDDH(6,1)=44.5 + / + &NAMDFI + / + &NAMDIM + NPROMA=-50, + / + &NAMDIMO + / + &NAMDIM_TRAJ + / + &NAMDPHY + / + &NAMDPRECIPS + / + &NAMDVISI + / + &NAMDYN + LADVF=.TRUE., + LQMPD=.FALSE., + LQMT=.FALSE., + LQMVD=.FALSE., + LRHDI_LASTITERPC=.TRUE., + NITMP=4, + NSITER=1, + NSPDLAG=3, + NSVDLAG=3, + NTLAG=3, + NVLAG=3, + NWLAG=3, + RDAMPDIV=20., + RDAMPPD=20., + RDAMPQ=0., + RDAMPT=0., + RDAMPVD=20., + RDAMPVOR=20., + REPS1=0., + REPS2=0., + REPSM1=0., + REPSM2=0., + REPSP1=0., + SDRED=1., + SIPR=90000., + SITR=350., + SITRA=100., + SLHDA0=0.25, + SLHDD00=0.000065, + VESL=0.05, + XIDT=0., + ZSLHDP1=1.7, + ZSLHDP3=0.6, + / + &NAMDYNA + LCOMADH=.TRUE., + LCOMADV=.FALSE., + LCOMAD_GFL=.TRUE., + LCOMAD_SP=.TRUE., + LCOMAD_SPD=.TRUE., + LCOMAD_SVD=.TRUE., + LCOMAD_T=.TRUE., + LCOMAD_W=.TRUE., + LGWADV=.TRUE., + LNESC=.TRUE., + LPC_CHEAP=.TRUE., + LPC_FULL=.TRUE., + LRDBBC=.FALSE., + LSETTLS=.FALSE., + LSETTLST=.TRUE., + LSLHD_GFL=.TRUE., + LSLHD_OLD=.FALSE., + LSLHD_SPD=.FALSE., + LSLHD_SVD=.FALSE., + LSLHD_T=.FALSE., + LSLHD_W=.FALSE., + ND4SYS=2, + NPDVAR=2, + NVDVAR=4, + SLHDEPSH=0.08, + SLHDKMAX=6, + LSLAG=.TRUE., + LTWOTL=.TRUE., + LNHEE=.TRUE., + LSPRT=.TRUE., + / + &NAMDYNA_STATIC + / + &NAMDYNCORE + / + &NAMECV + / + &NAMECVDESC + / + &NAMECVGRB + / + &NAMEMIS_CONF + / + &NAMENKF + / + &NAMFA + CMODEL='OUTPUTID', + LEXTERN=.TRUE., + LSUPPDATE=.FALSE., + NBITCS=-1, + NBITPG=-1, + NSTRON=-1, + / + &NAMFAINIT + JPXTRO=2000, + / + &NAMFPC + CFP2DF(1)='SURFPRESSION', + CFP2DF(2)='MSL_NHPRESSURE', + CFP2DF(3)='SURFTOT.WAT.VAPO', + CFP2DF(4)='SURFISOTPW0.MALT', + CFP2DF(5)='SURFCAPE.POS.F00', + CFP2DF(6)='C002_METEOSAT_09_SEVIRI.POS', + CFP2DF(7)='C006_METEOSAT_09_SEVIRI.POS', + CFP2DF(8)='SURFREFLECT.MAX', + CFP2DF(9)='SURFISOTPW1.MALT', + CFP2DF(10)='SURFISOTPW2.MALT', + CFP3DF(1)='GEOPOTENTIEL', + CFP3DF(2)='TEMPERATURE', + CFP3DF(3)='VENT_ZONAL', + CFP3DF(4)='VENT_MERIDIEN', + CFP3DF(5)='HUMI_RELATIVE', + CFP3DF(6)='THETA_PRIM_W', + CFP3DF(7)='PRESSURE', + CFP3DF(8)='ABS_VORTICITY', + CFP3DF(9)='VITESSE_VERTICALE', + CFP3DF(10)='TEMPE_POTENT', + CFP3DF(11)='POT_VORTICIT', + CFP3DF(12)='SIM_REFLECTI', + CFP3DF(13)='RAIN', + CFP3DF(14)='SNOW', + CFP3DF(15)='GRAUPEL', + CFP3DF(16)='ICE_CRYSTAL', + CFP3DF(17)='CLOUD_WATER', + CFP3DF(18)='VERT.VELOCIT', + CFP3DF(19)='DIVERGENCE', + CFP3DF(20)='THETA_VIRTUA', + CFP3DF(21)='TKE', + CFP3DF(22)='CLOUD_FRACTI', + CFP3DF(23)='ISOT_ALTIT', + CFP3DF(24)='EDR', + CFPCFU(1)='SURFTENS.TOTA.ZO', + CFPCFU(2)='SURFTENS.TOTA.ME', + CFPCFU(3)='SURFACCPLUIE', + CFPCFU(4)='SURFACCNEIGE', + CFPCFU(5)='SURFACCGRAUPEL', + CFPCFU(6)='SOMMFLU.RAY.SOLA', + CFPCFU(7)='SURFFLU.RAY.SOLA', + CFPCFU(8)='SOMMFLU.RAY.THER', + CFPCFU(9)='SURFFLU.RAY.THER', + CFPCFU(10)='SURFFLU.LAT.MTOT', + CFPCFU(11)='SURFFLU.MTOTA.NE', + CFPCFU(12)='SURFFLU.CHA.SENS', + CFPCFU(13)='SURFRAYT SOLA DE', + CFPCFU(14)='SURFRAYT THER DE', + CFPCFU(15)='SURFRAYT SOL CL', + CFPCFU(16)='SURFRAYT THER CL', + CFPCFU(17)='SURFRAYT DIR SUR', + CFPDOM(1)='FRANGP0025', + CFPFMT='LALON', + CFPPHY(1)='SURFTEMPERATURE', + CFPPHY(2)='INTSURFGEOPOTENT', + CFPPHY(3)='SURFRESERV.NEIGE', + CFPXFU(1)='CLSTEMPERATURE', + CFPXFU(2)='CLSHUMI.RELATIVE', + CFPXFU(3)='CLSVENT.ZONAL', + CFPXFU(4)='CLSVENT.MERIDIEN', + CFPXFU(5)='SURFNEBUL.TOTALE', + CFPXFU(6)='SURFNEBUL.HAUTE', + CFPXFU(7)='SURFNEBUL.MOYENN', + CFPXFU(8)='SURFNEBUL.BASSE', + CFPXFU(9)='CLSMAXI.TEMPERAT', + CFPXFU(10)='CLSMINI.TEMPERAT', + CFPXFU(11)='CLPMHAUT.MOD.XFU', + CFPXFU(12)='SURFDIAGHAIL', + LCRITSNOWTEMP=.FALSE., + LFPCAPEX=.TRUE., + LFPMOIS=.TRUE., + LFPPACKING=.FALSE., + LWIDER_DOM=.TRUE., + L_READ_MODEL_DATE=.TRUE., + NFITI=1, + NFITV=1, + NFPCAPE=5, + NFPCLI=1, + NFPGRIB=1, + NFPINPHY=4, + NITERPV=8, + RENTRA=0.0001, + RFP3H(1)=10., + RFP3H(2)=20., + RFP3H(3)=35., + RFP3H(4)=50., + RFP3H(5)=75., + RFP3H(6)=100., + RFP3H(7)=150., + RFP3H(8)=200., + RFP3H(9)=250., + RFP3H(10)=375., + RFP3H(11)=500., + RFP3H(12)=625., + RFP3H(13)=750., + RFP3H(14)=875., + RFP3H(15)=1000., + RFP3H(16)=1125., + RFP3H(17)=1250., + RFP3H(18)=1375., + RFP3H(19)=1500., + RFP3H(20)=1750., + RFP3H(21)=2000., + RFP3H(22)=2250., + RFP3H(23)=2500., + RFP3H(24)=2750., + RFP3H(25)=3000., + RFP3I(1)=-273.15, + RFP3I(2)=-263.15, + RFP3I(3)=-261.15, + RFP3I(4)=-253.15, + RFP3P(1)=10000., + RFP3P(2)=12500., + RFP3P(3)=15000., + RFP3P(4)=17500., + RFP3P(5)=20000., + RFP3P(6)=22500., + RFP3P(7)=25000., + RFP3P(8)=27500., + RFP3P(9)=30000., + RFP3P(10)=35000., + RFP3P(11)=40000., + RFP3P(12)=45000., + RFP3P(13)=50000., + RFP3P(14)=55000., + RFP3P(15)=60000., + RFP3P(16)=65000., + RFP3P(17)=70000., + RFP3P(18)=75000., + RFP3P(19)=80000., + RFP3P(20)=85000., + RFP3P(21)=90000., + RFP3P(22)=92500., + RFP3P(23)=95000., + RFP3P(24)=100000., + RFP3PV(1)=0.0000015, + RFP3PV(2)=0.000002, + RFPCD2=5., + RFPCSAB=50., + RFPVCAP=7000., + / + &NAMFPD + NLAT(1)=41, + NLON(1)=41, + RLONC(1)=-0.71, + RLATC(1)=44.8, + RDELX(1)=0.025, + RDELY(1)=0.025, + / + &NAMFPDY2 + / + &NAMFPDYF + / + &NAMFPDYH + / + &NAMFPDYI + / + &NAMFPDYP + / + &NAMFPDYS + / + &NAMFPDYT + / + &NAMFPDYV + / + &NAMFPF + NFMAX(1)=60, + NFMAX(2)=80, + / + &NAMFPG + NFPDISTRIB=1, + / + &NAMFPIOS + / + &NAMFPMOVE + / + &NAMFPOBJ + / + &NAMFPPHY + / + &NAMFPSC2 + NFPROMA=-50, + / + &NAMFPSC2_DEP + NFPROMA_DEP=-50, + / + &NAMGEM + LNONHYD_GEOM=.TRUE., + LNHX_GEOM=.TRUE., + / + &NAMGFL + NGFL_EZDIAG=4, + YEZDIAG_NL(1)%CNAME='EZDIAG01', + YEZDIAG_NL(1)%LREQOUT=.FALSE., + YEZDIAG_NL(2)%CNAME='EZDIAG02', + YEZDIAG_NL(2)%LREQOUT=.FALSE., + YEZDIAG_NL(3)%CNAME='EZDIAG03', + YEZDIAG_NL(3)%LREQOUT=.FALSE., + YEZDIAG_NL(4)%CNAME='INPRRTOT3D', + YEZDIAG_NL(4)%LREQOUT=.TRUE., + YG_NL%LQM=.TRUE., + YG_NL%LSLHD=.TRUE., + YG_NL%NCOUPLING=-1, + YG_NL%NREQIN=1, + YG_NL%REFVALC=0., + YIRAD_NL%LGP=.TRUE., + YI_NL%LQM=.TRUE., + YI_NL%LSLHD=.TRUE., + YI_NL%NCOUPLING=-1, + YI_NL%NREQIN=1, + YI_NL%REFVALC=0., + YLRAD_NL%LGP=.TRUE., + YL_NL%LQM=.TRUE., + YL_NL%LSLHD=.TRUE., + YL_NL%NCOUPLING=-1, + YL_NL%NREQIN=1, + YL_NL%REFVALC=0., + YQ_NL%LCOMAD=.TRUE., + YQ_NL%LQM=.TRUE., + YQ_NL%LSLHD=.FALSE., + YQ_NL%NREQIN=1, + YR_NL%LQM=.TRUE., + YR_NL%LSLHD=.TRUE., + YR_NL%NCOUPLING=-1, + YR_NL%NREQIN=1, + YR_NL%REFVALC=0., + YS_NL%LQM=.TRUE., + YS_NL%LSLHD=.TRUE., + YS_NL%NCOUPLING=-1, + YS_NL%NREQIN=1, + YS_NL%REFVALC=0., + YTKE_NL%NCOUPLING=0, + YTKE_NL%NREQIN=1, + / + &NAMGRIB + / + &NAMGWD + / + &NAMGWDIAG + / + &NAMGWWMS + / + &NAMIAU + ALPHAIAU=0.5, + LIAU=.FALSE., + TSTARTIAU=1800, + TSTOPIAU=5340, + / + &NAMICE + / + &NAMINI + LDFI=.FALSE., + / + &NAMINTFLEX + / + &NAMIOMI + / + &NAMIOS + / + &NAMIO_SERV + NIO_SERV_BUF_MAXSIZE=20, + NIO_SERV_METHOD=2, + NMSG_LEVEL_CLIENT=0, + NMSG_LEVEL_SERVER=0, + NPROCESS_LEVEL=5, + NPROC_IO=0, + / + &NAMJBALPHACV + / + &NAMJBCODES + / + &NAMJBECPHYSECV + / + &NAMJBSKTECV + / + &NAMJFH + / + &NAMJG + / + &NAMLCZ + / + &NAMLSFORC + / + &NAMMARS + / + &NAMMCC + / + &NAMMCUF + / + &NAMMETHOX + / + &NAMMKODB + / + &NAMMODERR + / + &NAMMODERRCONF + / + &NAMMODERRCOV + / + &NAMMODERRINCRCONF + / + &NAMMODERRMOD + / + &NAMMTS + / + &NAMMWAVE + / + &NAMNORGWD + / + &NAMNPROF + / + &NAMNUD + / + &NAMNUDGLH + / + &NAMOBS + / + &NAMONEDVAR + / + &NAMOOPS + / + &NAMOPH + CFNHWF='ECHIS', + LINC=.TRUE., + NTIMEFMT=1, + / + &NAMOPTCMEM + / + &NAMPAR0 + LOPT_SCALAR=.TRUE., + NPRINTLEV=1, + LMPOFF=.FALSE., + MBX_SIZE=2048000000, + MP_TYPE=2, + NOUTPUT=1, + NPROC=$NPROC, +$NPRTRW_NPRTRV + / + &NAMPAR1 + LEQ_REGIONS=.FALSE., + LSLONDEM=.TRUE., + LSPLIT=.TRUE., + LSYNC_SLCOM=.FALSE., + LSYNC_TRANS=.FALSE., + L_GATHERV_WRGP=.FALSE., + NCOMBFLEN=1800000, + NSTRIN=$NSTRIN, + NSTROUT=$NSTROUT, + / + &NAM_NEBN + CFRAC_ICE_ADJUST='S', + CFRAC_ICE_SHALLOW_MF='S', + LSIGMAS=.TRUE. + LSUBG_COND=.TRUE., + VSIGQSAT=0.02, + / + &NAM_PARAM_ICEN + CSEDIM='STAT', + CSNOWRIMING='M90', + LCONVHG=.TRUE., + LCRFLIMIT=.TRUE., + LEVLIMIT=.TRUE., + LFEEDBACKT=.TRUE., + LNULLWETG=.TRUE., + LNULLWETH=.TRUE., + LSEDIM_AFTER=.FALSE., + LWETGPOST=.TRUE., + LWETHPOST=.TRUE., + NMAXITER_MICRO=1, + XFRACM90=0.1, + XMRSTEP=0.00005, + XSPLIT_MAXCFL=0.8, + XTSTEP_TS=0., + LSEDIC=.TRUE., + LCRIAUTI=.TRUE., + XCRIAUTC_NAM=0.001, + XCRIAUTI_NAM=0.0002, + XT0CRIAUTI_NAM=-5., + LRED=.TRUE., + / + &NAM_PARAM_MFSHALLN + / + &NAM_TURBN + / + &NAMPARAR + CMICRO='ICE3', + LFPREC3D=.TRUE., + LOLSMC=.TRUE., + NPRINTFR=10000, + NPTP=1, + / + &NAMPARECV + / + &NAMPERTPAR + / + &NAMPHMSE + LPGDFWR=.FALSE., + / + &NAMPHY + LAERODES=.TRUE., + LAEROLAN=.TRUE., + LAEROSEA=.TRUE., + LAEROSOO=.TRUE., + LEDR=.TRUE., + LMPHYS=.TRUE., + LO3ABC=.TRUE., + LRAYFM=.TRUE., + / + &NAMPHY0 + ALMAV=300., + BEDIFV=0.05, + ECMNP=3000., + GCCSV=0., + GCVADS=0.8, + GCVALFA=0.000045, + GCVBETA=0.2, + GCVMLT=0.00016, + GCVNU=0.000025, + GCVPSI=1., + GCVPSIE=1., + GDDEVA=0.25, + GDDSDE=0.5, + GWDCD=6., + HUCOE=0.5, + HUTIL=1.8, + QSSC=400., + QSSUSC=0.75, + QSSUSS=0.4, + QSSUSV=250., + QSUSXC=0.0002, + QSUSXS=0.0003, + QXRAL=130., + QXRDEL=0.49, + QXRHX=0.99, + QXRR=0.25, + RCVEVAP=0.25, + REFLKUO=5000., + REVGSL=15., + SCO=-20., + TDDGP=0.8, + TENTR=0.0000025, + TENTRX=0.00008, + TUDGP=0.8, + UHDIFV=0.0008, + USURIC=0.175, + USURICE=0.5, + USURICL=1., + USURID=0.1, + USURIDE=0.25, + VZ0CM=0.00015, + XMAXLM=5000., + XMINLM=10., + / + &NAMPHY1 + ALBMIN=0.65, + ALCRIN=0.75, + GCGEL=0.00003, + GCGELS=0.00005, + GNEIMX=1.8, + GNEIMXS=1.8, + RCTVEG(3)=0.000012, + RCTVEG(4)=0.00001, + / + &NAMPHY2 + FACRAF=3.8, + HTKERAF=20., + LMULAF=.TRUE., + LRAFTKE=.TRUE., + LRAFTUR=.TRUE., + XDAMP=1., + XMULAF=-1.85, + / + &NAMPHY3 + / + &NAMPHYDS + / + &NAMPONG + / + &NAMPPC + / + &NAMPPVI + / + &NAMPRE + / + &NAMRAD15 + / + &NAMRADCMEM + / + &NAMRCF + / + &NAMRCOEF + / + &NAMRES + / + &NAMRGRI + / + &NAMRINC + / + &NAMRIP + TSTEP=50., + CSTOP='h2', + / + &NAMRIP0 + / + &NAMRLX + / + &NAMRSTRHBIAS + / + &NAMSATS + LPARTIAL_COEF_FILES=.TRUE., + / + &NAMSATSIM + / + &NAMSCC + / + &NAMSCEN + / + &NAMSCM + / + &NAMSEKF + / + &NAMSENS + / + &NAMSFXCMP + CFLDNAME(1)='????????????????', + NBBITS(1)=24, + / + &NAMSIMPHL + / + &NAMSPNG + / + &NAMSPP + / + &NAMSPSDT + / + &NAMSTA + / + &NAMSTOPH + / + &NAMSWE + / + &NAMTESTVAR + / + &NAMTHLIM + / + &NAMTOPH + ETCVIM=5000., + ETNEBU=5000., + ETPLUI=5000., + XDRMTK=6.0D-7, + XDRMTP=800., + XDRMUK=3.0D-7, + XDRMUP=800., + / + &NAMTRAJ + / + &NAMTRAJP + / + &NAMTRANS + / + &NAMTRANS0 + / + &NAMTS + / + &NAMVAR + / + &NAMVARBC + / + &NAMVARBC_AIREP + / + &NAMVARBC_ALLSKY + / + &NAMVARBC_GBRAD + / + &NAMVARBC_RAD + / + &NAMVARBC_SFCOBS + / + &NAMVARBC_TCWV + / + &NAMVARBC_TO3 + / + &NAMVAREPS + / + &NAMVDF + / + &NAMVDOZ + / + &NAMVOLCANO + / + &NAMVRTL + / + &NAMVV0 + / + &NAMVV1 + / + &NAMVWRK + / + &NAMWAVELETJB + / + &NAMXFU + LXCLP=.TRUE., + LXCLS=.TRUE., + LXFU=.TRUE., + LXNEBPA=.TRUE., + LXNEBTT=.TRUE., + LXNUVCLS=.TRUE., + LXPLS=.TRUE., + LXPLSG=.TRUE., + LXQCLS=.TRUE., + LXR=.TRUE., + LXSOIL=.FALSE., + LXTHW=.TRUE., + LXTRT=.TRUE., + LXTTCLS=.TRUE., + LXXDIAGH=.TRUE., + LXXGST=.TRUE., + NFRRAZ=72, + NRAZTS(0)=0, + / + &NAM_CANAPE + / + &NAM_DISTRIBUTED_VECTORS + / + &NAPHLC + / + &NEMCT0 + / + &NEMDIM + / + &NEMDYN + / + &NEMELBC0A + LESPCPL=.TRUE., + NBICNHX=2, + NBICOP=2, + NBICOT=2, + NBICOU=2, + NBICPD=2, + NBICVD=2, + NECRIPL=1, + / + &NEMELBC0B + NEFRSPCPL=1, + NEK0=20, + NEK1=30, + NEN1=4, + NEN2=8, + SPNUDDIV=0.01, + SPNUDQ=0., + SPNUDT=0.01, + SPNUDVOR=0.01, + TEFRCL=3600., + / + &NEMFPEZO + / + &NEMGEO + / + &NEMJK + / + &NEMVAR + / + &NEMWAVELET + / +FIN +/bin/cat fort.4 + +/bin/cat <<FIN > EXSEG1.nam + &NAM_DIAG_ISBAN + LPGD=.TRUE., + LSURF_MISC_BUDGET=.TRUE., + / + &NAM_DIAG_SURFN + LCOEF=.TRUE., + LSURF_BUDGET=.TRUE., + N2M=2, + / + &NAM_ISBAN + CSCOND='NP89', + / + &NAM_REPROD_OPER + LREPROD_OPER=.TRUE., + / + &NAM_SEAFLUXN + CSEA_FLUX='ECUME', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + / + &NAM_SSON + CROUGH='Z01D', + XFRACZ0=5., + LDSV=.FALSE., + / + &NAM_SURF_ATM + XRIMAX=0.2, + LNOSOF=.TRUE., + / + &NAM_SURF_CSTS + XZ0SN=0.01, + XZ0HSN=0.001, + XEMISSN=0.99, + / + &NAM_WRITE_DIAG_SURFN + LPROVAR_TO_DIAG=.FALSE., + LSELECT=.TRUE., +CSELECT(1)='T2M','HU2M','XX','YY','DX','DY','SST','Z0SEA','TS_WATER','Z0WATER','TG1','TG2','TG3','WG1','WG2','WG3','WGI1','WGI2','WGI3','WR','WSN_VEG1','RSN_VEG1','ASN_VEG','TSRAD_NAT','RESA','TROOF1','TROOF2','TROOF3','TROOF4','TROOF5','WS_ROOF','TROAD1','TROAD2','TROAD3','TROAD4','TROAD5','WS_ROAD','TWALL1','TWALL2','TWALL3','TWALL4','TWALL5','TI_BLD','T_WIN1','TI_ROAD','WSN_RF1','RSN_RF1','TSN_RF1','ASN_RF','WSN_RD1','RSN_RD1','TSN_RD1','ASN_RD','TCANYON','QCANYON','STORAGE_TYPE','MASDEV','VERSION','BUG','DIM_FULL','DTCUR','LAT0','LON0','RPK','BETA','LATORI','LONORI','IMAX','JMAX','RW_PRECIP','BUDC','SEA_OCEAN','SEA_SBL','WAT_SBL','SN_VEG_N','SN_VEG','LSNOW_FRAC_T','GLACIER','TEMPARP','NLITTER','NLITTLEVS','NSOILCARB','ISBA_CANOPY','SN_RF_N','SN_RF','SN_RD_N','SN_RD','SN_RD_TYP','SN_RF_TYP','TEB_CANOPY','STORAGETYPE','CARTESIAN','GRID_TYPE','SN_VEG_TYP','RESPSL','ROAD_DIR','WALL_OPT','LAI','VEG','RSMIN','DG2','_FBUF_SIZE','_FBUF_DIM1','_FBUF_DIM2','_FBUF_NAME','_FBUF_TYPE','_FBUF_MASK','LCPL_GCM','HANDLE_SIC','SSS', + / + &NAM_WRITE_SURF_ATM + LNOWRITE_TEXFILE=.TRUE., + / +FIN +/bin/cat EXSEG1.nam + +# ***************************************** +# * Acquisition du fichier de demarrage * +# ***************************************** + +echo +for hh in 0 1 2 3 4 5 6 ; do + N=`expr $hh / 1 ` + set -x + ln -s $rekchemin/data/aro/$case/ELSCFFCSTALBC000${N}_l15 ELSCF${CNMEXP}ALBC00${N} + set +x +done +set -x +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT_l15 ICMSH${CNMEXP}INIT +ln -s $rekchemin/data/aro/$case/ICMSHFCSTINIT.sfx ICMSH${CNMEXP}INIT.sfx +ln -s $rekchemin/data/surfex/v8/ecoclimapI_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_eu_covers_param.bin . +ln -s $rekchemin/data/surfex/v8/ecoclimapII_af_covers_param.bin . +ln -s $rekchemin/data/aro/$case/Const.Clim Const.Clim +ln -s $rekchemin/data/aro/$case/Const.Clim.sfx Const.Clim.sfx +ln -s $rekchemin/data/aro/$case/const.clim.FRANGP0025 const.clim.FRANGP0025 +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_9_seviri.H5 . +ln -s $rekchemin/data/rttov31/rtcoef_meteosat_10_seviri.H5 . +ln -s $rekchemin/data/rttov31/sccldcoef_meteosat_9_seviri.dat . +set +x +tar xfz $rekchemin/data/rtm/rrtm.const.04.tgz + +# *************** +# * Chargement * +# *************** + +echo +set -x +\ln -s $LOADIR/MASTERODB MASTER +set +x +if ldd MASTER | grep openmpi > /dev/null; then + #On est sur PC + MPILIB=$(ldd MASTER | grep openmpi | tail -1 | awk '{print $3}' | awk -F "/" '{print $(NF-2)}') + MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep openmpi| tail -1 | awk '{print $3}'))))/bin/orterun --oversubscribe -np $NPROC" + GRIB_API=$(dirname $(dirname $(ldd MASTER | grep grib_api | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + ECCODES=$(dirname $(dirname $(ldd MASTER | grep eccodes | head -1 | awk '{print $3}') 2>/dev/null) 2>/dev/null) + export GRIB_SAMPLES_PATH=$GRIB_API/share/grib_api/ifs_samples/grib1 + export GRIB_DEFINITION_PATH=$GRIB_API/share/grib_api/definitions + export ECCODES_SAMPLES_PATH=$ECCODES/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=$rekchemin/data/eccodes_extras_definitions:$ECCODES/share/eccodes/definitions +else + #On est sur HPC + #MPIRUN="$(echo $(dirname $(dirname $(ldd MASTER | grep libmpi| tail -1 | awk '{print $3}'))))/bin/mpirun -wdir $PWD" + NNODES=$SLURM_JOB_NUM_NODES + MPITASKS_PER_NODE=$((SLURM_NTASKS/SLURM_JOB_NUM_NODES)) + MPI_TASKS=$SLURM_NTASKS + MPIRUN="/opt/softs/mpiauto/mpiauto -np $MPI_TASKS -nnp $MPITASKS_PER_NODE --" + export OMP_STACKSIZE=4G + export KMP_STACKSIZE=4G + export KMP_MONITOR_STACKSIZE=4G + export DR_HOOK=1 + export DR_HOOK_IGNORE_SIGNALS=-1 + export DR_HOOK_SILENT=1 + export DR_HOOK_SHOW_PROCESS_OPTIONS=0 + export MPL_MBX_SIZE=2048000000 + export EC_PROFILE_HEAP=0 + export EC_PROFILE_MEM=0 + export EC_MPI_ATEXIT=0 + export EC_MEMINFO=0 + export OPENBLAS_NUM_THREADS=1 + export MKL_CBWR="AUTO,STRICT" + export MKL_NUM_THREADS=1 + export MKL_DEBUG_CPU_TYPE=5 + export ECCODES_SAMPLES_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/ifs_samples/grib1 + export ECCODES_DEFINITION_PATH=/opt/softs/libraries/ICC_2018.5.274/eccodes-2.17.0/share/eccodes/definitions +fi +echo $MPIRUN +set +x +if [ ! -f MASTER ] ; then echo No executable MASTER;exit 1;fi + +# *************** +# * Execution * +# *************** + +echo +echo OMP_NUM_THREADS=$OMP_NUM_THREADS +set -x +ulimit -s unlimited +$MPIRUN $PWD/MASTER >lola +set +x +echo +##if [ -f lola ] ; then +## echo;echo Standard output :;echo;cat lola +##fi +##if [ -f stderr.* ] ; then +## for file in stderr.* ; do +## echo;echo $file :;cat $file +## done +##fi +##if [ -f stdout.* ] ; then +##echo;echo stdout :;echo;cat stdout.* +##fi +##if [ -a NODE.001_01 ] ; then +## for file in NODE* ; do +## echo;echo Listing $file;echo +## cat $file +## done +##fi +##if [ $(find . -name "drhook.prof.*" | wc -l) -ne 0 ] ; then +### Top 25 for each MPI task : +## for file in drhook.prof.* ; do +## echo;echo $file :;head -38 $file +## done +##fi +#cat drhook.prof.* | perl -w $HOME/bin/drhook_merge_walltime_max.pl + +# ******************* +# * Sauvegardes * +# ******************* + +ls +#if [ -f PFFPOS000+0000 ] ; then +# cp PFFPOS000+0000 $WAIT_QUEUE/PFFPOS000+0000.$PBS_JOBID +#fi +cp lola NODE.001_01 ICMSHFPOS+00* DHFDLFPOS+00* $OUTPUTDIR/ +/bin/rm fort.4 EXSEG1.nam lola ICMSHFPOS+0000* PFFPOSFRANGP0025+0000* ICMSHFPOS+0001* +/bin/rm PFFPOSFRANGP0025+0001* ICMSHFPOS+0002* ECHIS PFFPOSFRANGP0025+0002* DHFDLFPOS+00* +/bin/rm ECHFP NODE.001_01 ifs.stat $(tar tfz $rekchemin/data/rtm/rrtm.const.04.tgz) + +# **************** +# * Epilogue * +# **************** + +ls -ltr | grep -v "\->" +echo Wait_queue : +ls -ltr $TMPWAIT +cd $TMPDIR +\rm -rf rundir.$$ +\rm -rf wait_queue.$$ +date +set +x