diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 31b7b67ad7344e82383ff43a48130dbbc9a90b29..36b80f40a1b90000184a56b3616d2a2810de3e35 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -980,6 +980,7 @@ NFREQSERIES = MAX(NFREQSERIES,1) IF (KMI == 1) THEN LMEAN_FIELD = .FALSE. LCOV_FIELD = .FALSE. + LUH_MAX = .FALSE. ENDIF ! !------------------------------------------------------------------------------- diff --git a/src/MNH/ini_mean_field.f90 b/src/MNH/ini_mean_field.f90 index dadf0dcec8dba06ddad2515190a39b20ada79fea..5dddb8bd5d9e7626c0f3aa8f256d192162eab980 100644 --- a/src/MNH/ini_mean_field.f90 +++ b/src/MNH/ini_mean_field.f90 @@ -151,7 +151,7 @@ XWM1_MIN = 1.E20 ! XMSLP_MAX = -1.E20 ! XMSLP_MIN = 1.E20 ! -XUH_MAX = -1.E20 ! +IF (LUH_MAX) XUH_MAX = -1.E20 ! XWMOD10MAX_MAX = 0.0 XTKEMAX_MAX = 0.0 diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 42bf02412f6a92f60c382adc2bc7ef8d33a503d4..eff106fd5b8b9a94576d511bf9831a8c93931122 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -842,7 +842,11 @@ IF (LMEAN_FIELD) THEN ALLOCATE(XWM1_MIN(IIU,IJU,IKU)) ; XWM1_MIN = 1.E20 ! ALLOCATE(XMSLP_MAX(IIU,IJU)) ; XMSLP_MAX = -1.E20 ! ALLOCATE(XMSLP_MIN(IIU,IJU)) ; XMSLP_MIN = 1.E20 ! - ALLOCATE(XUH_MAX(IIU,IJU)) ; XUH_MAX = -1.E20 ! + IF (LUH_MAX) THEN + ALLOCATE(XUH_MAX(IIU,IJU)) ; XUH_MAX = -1.E20 + ELSE + ALLOCATE(XUH_MAX(0,0)) + END IF ALLOCATE(XWMOD10MAX_MAX(IIU,IJU)) ; XWMOD10MAX_MAX = 0.0 ALLOCATE(XFF10MAX_MAX(IIU,IJU)) ; XFF10MAX_MAX = 0.0 ALLOCATE(XFF10MAX2_MAX(IIU,IJU)) ; XFF10MAX2_MAX = 0.0 @@ -896,6 +900,7 @@ ELSE ALLOCATE(XVM1_MIN(0,0,0)) ! ALLOCATE(XWM1_MIN(0,0,0)) ! ALLOCATE(XFF10MAX_MAX(0,0)) + ALLOCATE(XWMOD10MAX_MAX(0,0)) ALLOCATE(XFF10MAX2_MAX(0,0)) ALLOCATE(XFF10MAX_AROME_MAX(0,0)) ALLOCATE(XMSLP_MAX(0,0)) ! diff --git a/src/MNH/mean_field.f90 b/src/MNH/mean_field.f90 index 2efc04c8089bbc5dd6fc818b80ba05701c4a2bda..9152e90da76607b7683816c88c88358643c14055 100644 --- a/src/MNH/mean_field.f90 +++ b/src/MNH/mean_field.f90 @@ -131,8 +131,8 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZTHV ! REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZVOX, ZVOY, ZVOZ ! REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZWM ! REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZWORK1,ZWORK2,ZWORK3,ZWORK4,ZWORK5,ZWORK6,ZWORK7 -REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: XCURRENT_ZON10M,XCURRENT_MER10M -REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: XCURRENT_TKE10M,XCURRENT_TKE20M +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZCURRENT_ZON10M,ZCURRENT_MER10M +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZCURRENT_TKE10M,ZCURRENT_TKE20M REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZMSLP ! REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZUH ! REAL :: ZRV_OV_RD, ZGAMREF ! @@ -159,6 +159,10 @@ IKE=IKU-JPVEXT !* 1. MEAN ! ZTEMPT = PTHT*(((PPABST)/XP00)**(XRD/XCPD)) +ZCURRENT_ZON10M = 0. +ZCURRENT_MER10M = 0. +ZCURRENT_TKE10M = 0. +ZCURRENT_TKE20M = 0. ! ! IF(LUSERV) THEN @@ -399,13 +403,13 @@ END IF IF ((XZHATM(JK+1) .GE. 10.) .AND. (XZHATM(JK)<10.)) THEN DO JJ=IJB,IJE DO JI=IIB,IIE - XCURRENT_ZON10M(JI,JJ)=PUT(JI,JJ,JK) + & + ZCURRENT_ZON10M(JI,JJ)=PUT(JI,JJ,JK) + & (PUT(JI,JJ,JK+1)-PUT(JI,JJ,JK)) * & (10.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) - XCURRENT_MER10M(JI,JJ)=PVT(JI,JJ,JK) + & + ZCURRENT_MER10M(JI,JJ)=PVT(JI,JJ,JK) + & (PVT(JI,JJ,JK+1)-PVT(JI,JJ,JK)) * & (10.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) - XCURRENT_TKE10M(JI,JJ)=PTKET(JI,JJ,JK) + & + ZCURRENT_TKE10M(JI,JJ)=PTKET(JI,JJ,JK) + & (PTKET(JI,JJ,JK+1)-PTKET(JI,JJ,JK)) * & (10.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) END DO @@ -414,7 +418,7 @@ END IF IF ((XZHATM(JK+1) .GE. 20.) .AND. (XZHATM(JK)<20.)) THEN DO JJ=IJB,IJE DO JI=IIB,IIE - XCURRENT_TKE20M(JI,JJ)=PTKET(JI,JJ,JK) + & + ZCURRENT_TKE20M(JI,JJ)=PTKET(JI,JJ,JK) + & (PTKET(JI,JJ,JK+1)-PTKET(JI,JJ,JK)) * & (20.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) END DO @@ -422,29 +426,31 @@ END IF END IF JK=JK+1 END DO - ! Computation of the Updraft Helicity (UH) - JK=IKB - !CALL PRINT_MSG(NVERB_INFO,'IO', 'ZUH:') !, ZUH) - ZUH = 0. -! - DO WHILE((XZHAT(JK+1) .LE. 5000)) - IF (XZHAT(JK) .GE. 2000) THEN - DO JJ=IJB,IJE - DO JI=IIB,IIE - ZUH(JI,JJ)=ZUH(JI,JJ)+0.5*(XZHAT(JK+1)-XZHAT(JK))* & - (PWT(JI,JJ,JK+1)*ZVOZ(JI,JJ,JK+1)+PWT(JI,JJ,JK)*ZVOZ(JI,JJ,JK)) + IF (LUH_MAX) THEN + ! Computation of the Updraft Helicity (UH) + JK=IKB + !CALL PRINT_MSG(NVERB_INFO,'IO', 'ZUH:') !, ZUH) + ZUH = 0. + ! + DO WHILE((XZHAT(JK+1) .LE. 5000)) + IF (XZHAT(JK) .GE. 2000) THEN + DO JJ=IJB,IJE + DO JI=IIB,IIE + ZUH(JI,JJ)=ZUH(JI,JJ)+0.5*(XZHAT(JK+1)-XZHAT(JK))* & + (PWT(JI,JJ,JK+1)*ZVOZ(JI,JJ,JK+1)+PWT(JI,JJ,JK)*ZVOZ(JI,JJ,JK)) + END DO END DO - END DO - END IF - JK=JK+1 - END DO + END IF + JK=JK+1 + END DO + END IF ! DO JJ=IJB,IJE DO JI=IIB,IIE - ZWORK1(JI,JJ) = SQRT(XCURRENT_ZON10M(JI,JJ)**2+XCURRENT_MER10M(JI,JJ)**2) + ZWORK1(JI,JJ) = SQRT(ZCURRENT_ZON10M(JI,JJ)**2+ZCURRENT_MER10M(JI,JJ)**2) ZWORK2(JI,JJ) = 4. * SQRT(PTKET(JI,JJ,IKB)) - ZWORK3(JI,JJ) = 4. * SQRT(XCURRENT_TKE10M(JI,JJ)) - ZWORK4(JI,JJ) = 3.8 * SQRT(XCURRENT_TKE20M(JI,JJ)) + ZWORK3(JI,JJ) = 4. * SQRT(ZCURRENT_TKE10M(JI,JJ)) + ZWORK4(JI,JJ) = 3.8 * SQRT(ZCURRENT_TKE20M(JI,JJ)) ZWORK5(JI,JJ) = ZWORK1(JI,JJ) + ZWORK2(JI,JJ) ZWORK6(JI,JJ) = ZWORK1(JI,JJ) + ZWORK3(JI,JJ) ZWORK7(JI,JJ) = ZWORK1(JI,JJ) + ZWORK4(JI,JJ) @@ -457,7 +463,7 @@ END IF XFF10MAX_AROME_MAX(JI,JJ) = MAX(XFF10MAX_AROME_MAX(JI,JJ),ZWORK7(JI,JJ)) XMSLP_MAX(JI,JJ) = MAX(XMSLP_MAX(JI,JJ),ZMSLP(JI,JJ)) ! XMSLP_MIN(JI,JJ) = MIN(XMSLP_MIN(JI,JJ),ZMSLP(JI,JJ)) ! - XUH_MAX(JI,JJ)= MAX(XUH_MAX(JI,JJ),ZUH(JI,JJ)) ! + IF (LUH_MAX) XUH_MAX(JI,JJ)= MAX(XUH_MAX(JI,JJ),ZUH(JI,JJ)) ! END DO END DO ! diff --git a/src/MNH/modd_mean_field.f90 b/src/MNH/modd_mean_field.f90 index 71e59e61fc8b88edb54f2785bef8bb05501030a0..88051e0d75b12fe30e0db1fdc968cf8c7b276b55 100644 --- a/src/MNH/modd_mean_field.f90 +++ b/src/MNH/modd_mean_field.f90 @@ -49,5 +49,6 @@ IMPLICIT NONE LOGICAL :: LMEAN_FIELD LOGICAL :: LCOV_FIELD +LOGICAL :: LUH_MAX END MODULE MODD_MEAN_FIELD diff --git a/src/MNH/modd_mean_fieldn.f90 b/src/MNH/modd_mean_fieldn.f90 index 324cad1ed47c225218c00f9a96a61a26e6981306..21ef8f4b7527709ad0c3c120299f4b342e533fe0 100644 --- a/src/MNH/modd_mean_fieldn.f90 +++ b/src/MNH/modd_mean_fieldn.f90 @@ -181,7 +181,7 @@ MEAN_FIELD_MODEL(KFROM)%XTKEM_MAX=>XTKEM_MAX MEAN_FIELD_MODEL(KFROM)%XPABSM_MAX=>XPABSM_MAX MEAN_FIELD_MODEL(KFROM)%XMSLP_MAX=>XMSLP_MAX ! MEAN_FIELD_MODEL(KFROM)%XMSLP_MIN=>XMSLP_MIN ! -MEAN_FIELD_MODEL(KFROM)%XUH_MAX=>XUH_MAX ! +IF (LUH_MAX) MEAN_FIELD_MODEL(KFROM)%XUH_MAX=>XUH_MAX ! MEAN_FIELD_MODEL(KFROM)%XWMOD10MAX_MAX=>XWMOD10MAX_MAX MEAN_FIELD_MODEL(KFROM)%XTKEMAX_MAX=>XTKEMAX_MAX MEAN_FIELD_MODEL(KFROM)%XTKE10MAX_MAX=>XTKE10MAX_MAX @@ -240,7 +240,7 @@ XTKEM_MAX=>MEAN_FIELD_MODEL(KTO)%XTKEM_MAX XPABSM_MAX=>MEAN_FIELD_MODEL(KTO)%XPABSM_MAX XMSLP_MAX=>MEAN_FIELD_MODEL(KTO)%XMSLP_MAX ! XMSLP_MIN=>MEAN_FIELD_MODEL(KTO)%XMSLP_MIN ! -XUH_MAX=>MEAN_FIELD_MODEL(KTO)%XUH_MAX ! +IF (LUH_MAX) XUH_MAX=>MEAN_FIELD_MODEL(KTO)%XUH_MAX ! XWMOD10MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XWMOD10MAX_MAX XTKEMAX_MAX=>MEAN_FIELD_MODEL(KTO)%XTKEMAX_MAX XTKE10MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XTKE10MAX_MAX diff --git a/src/MNH/modn_mean.f90 b/src/MNH/modn_mean.f90 index 5b39656863e21fafe1030fdeafc3c894a6ae57ca..75e7854b792bf271a8f7c5b7ef5c1b6fa52bd6fc 100644 --- a/src/MNH/modn_mean.f90 +++ b/src/MNH/modn_mean.f90 @@ -38,7 +38,7 @@ USE MODD_MEAN_FIELD ! IMPLICIT NONE ! -NAMELIST/NAM_MEAN/LMEAN_FIELD,LCOV_FIELD +NAMELIST/NAM_MEAN/LMEAN_FIELD,LCOV_FIELD,LUH_MAX ! ! END MODULE MODN_MEAN diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 95251a3d10325e9125d98fe6bd18e5eae9922e3a..81a7258895eeb135106a3a63c5a83feabcad9e79 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -1150,7 +1150,9 @@ IF (MEAN_COUNT /= 0) THEN CALL IO_Field_write(TPFILE,TZFIELD,XMSLP_MIN) ! ! - TZFIELD = TFIELDMETADATA( & + ! Max updraft helicity + IF (LUH_MAX) THEN + TZFIELD = TFIELDMETADATA( & CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification CSTDNAME = '', & CDIR = 'XY', & @@ -1159,12 +1161,12 @@ IF (MEAN_COUNT /= 0) THEN NDIMS = 2, & LTIMEDEP = .TRUE. ) ! -! Min and max updraft helicity - TZFIELD%CMNHNAME = 'UH_MAX' - TZFIELD%CLONGNAME = 'UH_MAX' - TZFIELD%CUNITS = 'm2 s-2' - TZFIELD%CCOMMENT = 'X_Y_max Updraft Helicity' - CALL IO_Field_write(TPFILE,TZFIELD,XUH_MAX) + TZFIELD%CMNHNAME = 'UH_MAX' + TZFIELD%CLONGNAME = 'UH_MAX' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_max Updraft Helicity' + CALL IO_Field_write(TPFILE,TZFIELD,XUH_MAX) + END IF ! END IF !