From 9364366a2074cc650ce44d10e70d1d298baaf4b2 Mon Sep 17 00:00:00 2001 From: Clement STRAUSS <clement.strauss@meteo.fr> Date: Fri, 12 Jul 2024 11:53:45 +0200 Subject: [PATCH] Clement S. 12/07/2024: maximum/minimum of the voriticty and the vertical velocity + maximum of the MSLP in mean_field --- src/MNH/ini_mean_field.f90 | 20 +++ src/MNH/ini_modeln.f90 | 94 +++++++++----- src/MNH/mean_field.f90 | 167 +++++++++++++++++++++++- src/MNH/modd_mean_fieldn.f90 | 60 ++++++++- src/MNH/write_lfin.f90 | 243 +++++++++++++++++++++++++++-------- 5 files changed, 491 insertions(+), 93 deletions(-) diff --git a/src/MNH/ini_mean_field.f90 b/src/MNH/ini_mean_field.f90 index 146cc12c8..dadf0dcec 100644 --- a/src/MNH/ini_mean_field.f90 +++ b/src/MNH/ini_mean_field.f90 @@ -53,6 +53,7 @@ END MODULE MODI_INI_MEAN_FIELD !! 12/2021 (R. Schoetter) adds humidity and other mean diagnostics !! 11/2022 (E. Jezequel) add covariances !! 09/2022 (H.Toumi) add EOL/ADR variables +!! 01/2024:(M. Mandement) add max 10 m wind gust speed formulations !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -136,9 +137,28 @@ END IF XUM_MAX = -1.E20 XVM_MAX = -1.E20 XWM_MAX = -1.E20 +XWM_MIN = 1.E20 ! XTHM_MAX = 0.0 XTEMPM_MAX = 0.0 IF (CTURB /= 'NONE') XTKEM_MAX = 0.0 XPABSM_MAX = 0.0 +XUM1_MAX = -1.E20 ! +XVM1_MAX = -1.E20 ! +XWM1_MAX = -1.E20 ! +XUM1_MIN = 1.E20 ! +XVM1_MIN = 1.E20 ! +XWM1_MIN = 1.E20 ! +XMSLP_MAX = -1.E20 ! +XMSLP_MIN = 1.E20 ! +XUH_MAX = -1.E20 ! + +XWMOD10MAX_MAX = 0.0 +XTKEMAX_MAX = 0.0 +XTKE10MAX_MAX = 0.0 +XTKE20MAX_MAX = 0.0 + +XFF10MAX_MAX = 0.0 +XFF10MAX2_MAX = 0.0 +XFF10MAX_AROME_MAX = 0.0 END SUBROUTINE INI_MEAN_FIELD diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 1f51553ec..738a9dcfe 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -275,31 +275,29 @@ END MODULE MODI_INI_MODEL_n !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! V. Vionnet : 18/07/2017 : add blowing snow scheme !! 01/18 J.Colin Add DRAG -! P. Wautelet 29/01/2019: bug: add missing zero-size allocations -! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list -! P. Wautelet 13/02/2019: initialize XALBUV even if no radiation (needed in CH_INTERP_JVALUES) -! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD -! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables -! P. Wautelet 14/02/2019: remove HINIFILE dummy argument from INI_RADIATIONS_ECMWF/ECRAD -!! 02/2019 C.Lac add rain fraction as an output field -!! Bielli S. 02/2019 Sea salt : significant sea wave height influences salt emission; 5 salt modes -! P. Wautelet 14/03/2019: correct ZWS when variable not present in file (set to XZWS_DEFAULT) -! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -! P. Wautelet 19/04/2019: removed unused dummy arguments and variables -! P. Wautelet 07/06/2019: allocate lookup tables for optical properties only when needed -! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management -! C. Lac 11/2019: correction in the drag formula and application to building in addition to tree -! S. Riette 04/2020: XHL* fields -! PA. Joulin 10/2020: add wind tubrines (EOL) -! F. Auguste 02/2021: add IBM -! T.Nigel 02/2021: add turbulence recycling -! J.L.Redelsperger 06/2011: OCEAN case -! R. Schoetter 12/2021: multi-level coupling between MesoNH and SURFEX -! R. Schoetter 12/2021: adds humidity and other mean diagnostics -! A. Costes 12/2021: Blaze fire model -! H. Toumi 09/2022: add EOL/ADR -! C. Barthe 03/2023: if cloud electricity is activated, both ini_micron and ini_elecn are called -! V. Masson 01/2024: aggregation of columns for radiation +!! P. Wautelet 29/01/2019: bug: add missing zero-size allocations +!! P. Wautelet 07/02/2019: force TYPE to a known value for IO_File_add2list +!! P. Wautelet 13/02/2019: initialize XALBUV even if no radiation (needed in CH_INTERP_JVALUES) +!! P. Wautelet 13/02/2019: removed PPABSM and PTSTEP dummy arguments of READ_FIELD +!! P. Wautelet 14/02/2019: remove CLUOUT/CLUOUT0 and associated variables +!! P. Wautelet 14/02/2019: remove HINIFILE dummy argument from INI_RADIATIONS_ECMWF/ECRAD +!! C. Lac 02/2019: add rain fraction as an output field +!! S. Bielli 02/2019: Sea salt : significant sea wave height influences salt emission; 5 salt modes +!! P. Wautelet 14/03/2019: correct ZWS when variable not present in file (set to XZWS_DEFAULT) +!! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +!! P. Wautelet 19/04/2019: removed unused dummy arguments and variables +!! P. Wautelet 07/06/2019: allocate lookup tables for optical properties only when needed +!! P. Wautelet 13/09/2019: budget: simplify and modernize date/time management +!! C. Lac 11/2019: correction in the drag formula and application to building in addition to tree +!! S. Riette 04/2020: XHL* fields +!! F. Auguste 02/2021: add IBM +!! T. Nigel 02/2021: add turbulence recycling +!!J.L. Redelsperger 06/2011: OCEAN case +!! A. Costes 12/2021: Blaze fire model +!! H. Toumi 09/2022: add EOL/ADR +!! C. Barthe 03/2023: if cloud electricity is activated, both ini_micron and ini_elecn are called +!! V. Masson 01/2024: aggregation of columns for radiation +!! M. Mandement 01/2024: add max 10 m wind gust speed formulations !--------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -781,9 +779,21 @@ IF (LMEAN_FIELD) THEN ALLOCATE(XSVT_MEAN(IIU,IJU,IKU)) ; XSVT_MEAN = 0.0 IF (CTURB/='NONE') THEN ALLOCATE(XTKEM_MEAN(IIU,IJU,IKU)) + ALLOCATE(XTKEM_MAX(IIU,IJU,IKU)) + ALLOCATE(XTKEMAX_MAX(IIU,IJU)) + ALLOCATE(XTKE10MAX_MAX(IIU,IJU)) + ALLOCATE(XTKE20MAX_MAX(IIU,IJU)) + XTKEM_MAX = 0.0 XTKEM_MEAN = 0.0 + XTKEMAX_MAX = 0.0 + XTKE10MAX_MAX = 0.0 + XTKE20MAX_MAX = 0.0 ELSE ALLOCATE(XTKEM_MEAN(0,0,0)) + ALLOCATE(XTKEM_MAX(0,0,0)) + ALLOCATE(XTKEMAX_MAX(0,0,0)) + ALLOCATE(XTKE10MAX_MAX(0,0,0)) + ALLOCATE(XTKE20MAX_MAX(0,0,0)) END IF ALLOCATE(XPABSM_MEAN(IIU,IJU,IKU)) ; XPABSM_MEAN = 0.0 ALLOCATE(XQ_MEAN(IIU,IJU,IKU)) ; XQ_MEAN = 0.0 @@ -820,15 +830,23 @@ IF (LMEAN_FIELD) THEN ALLOCATE(XUM_MAX(IIU,IJU,IKU)) ; XUM_MAX = -1.E20 ALLOCATE(XVM_MAX(IIU,IJU,IKU)) ; XVM_MAX = -1.E20 ALLOCATE(XWM_MAX(IIU,IJU,IKU)) ; XWM_MAX = -1.E20 + ALLOCATE(XWM_MIN(IIU,IJU,IKU)) ; XWM_MIN = 1.E20 ! ALLOCATE(XTHM_MAX(IIU,IJU,IKU)) ; XTHM_MAX = 0.0 ALLOCATE(XTEMPM_MAX(IIU,IJU,IKU)) ; XTEMPM_MAX = 0.0 - IF (CTURB/='NONE') THEN - ALLOCATE(XTKEM_MAX(IIU,IJU,IKU)) - XTKEM_MAX = 0.0 - ELSE - ALLOCATE(XTKEM_MAX(0,0,0)) - END IF - ALLOCATE(XPABSM_MAX(IIU,IJU,IKU)) ; XPABSM_MAX = 0.0 + ALLOCATE(XPABSM_MAX(IIU,IJU,IKU)) ; XPABSM_MAX = 0.0 + ALLOCATE(XUM1_MAX(IIU,IJU,IKU)) ; XUM1_MAX = -1.E20 ! + ALLOCATE(XVM1_MAX(IIU,IJU,IKU)) ; XVM1_MAX = -1.E20 ! + ALLOCATE(XWM1_MAX(IIU,IJU,IKU)) ; XWM1_MAX = -1.E20 ! + ALLOCATE(XUM1_MIN(IIU,IJU,IKU)) ; XUM1_MIN = 1.E20 ! + ALLOCATE(XVM1_MIN(IIU,IJU,IKU)) ; XVM1_MIN = 1.E20 ! + 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 ! + 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 + ALLOCATE(XFF10MAX_AROME_MAX(IIU,IJU)); XFF10MAX_AROME_MAX = 0.0 ELSE ! ALLOCATE(XUM_MEAN(0,0,0)) @@ -866,10 +884,22 @@ ELSE ALLOCATE(XUM_MAX(0,0,0)) ALLOCATE(XVM_MAX(0,0,0)) ALLOCATE(XWM_MAX(0,0,0)) + ALLOCATE(XWM_MIN(0,0,0)) ! ALLOCATE(XTHM_MAX(0,0,0)) ALLOCATE(XTEMPM_MAX(0,0,0)) ALLOCATE(XTKEM_MAX(0,0,0)) ALLOCATE(XPABSM_MAX(0,0,0)) + ALLOCATE(XUM1_MAX(0,0,0)) ! + ALLOCATE(XVM1_MAX(0,0,0)) ! + ALLOCATE(XWM1_MAX(0,0,0)) ! + ALLOCATE(XUM1_MIN(0,0,0)) ! + ALLOCATE(XVM1_MIN(0,0,0)) ! + ALLOCATE(XWM1_MIN(0,0,0)) ! + ALLOCATE(XFF10MAX_MAX(0,0)) + ALLOCATE(XFF10MAX2_MAX(0,0)) + ALLOCATE(XFF10MAX_AROME_MAX(0,0)) + ALLOCATE(XMSLP_MAX(0,0)) ! + ALLOCATE(XMSLP_MIN(0,0)) ! END IF ! IF ((CUVW_ADV_SCHEME(1:3)=='CEN') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN diff --git a/src/MNH/mean_field.f90 b/src/MNH/mean_field.f90 index a8a5cd98c..28153fcdc 100644 --- a/src/MNH/mean_field.f90 +++ b/src/MNH/mean_field.f90 @@ -52,6 +52,7 @@ END MODULE MODI_MEAN_FIELD !! (R. Schoetter) 12/2021 adds humidity and other mean diagnostics !! (E. Jezequel) 11/2022 Welford algorithm and covariances !! (H. Toumi) 09/2022: add ADR +!! (M. Mandement) 01/2024: add max 10 m wind gust speed formulations !!--------------------------------------------------------------- ! ! @@ -65,8 +66,6 @@ USE MODD_PARAM_n USE MODD_MEAN_FIELD USE MODD_CST USE MODD_PASPOL -USE MODE_THERMO -USE MODI_SHUMAN ! To play with MPI USE MODD_ARGSLIST_ll, ONLY: LIST_ll ! @@ -83,7 +82,19 @@ USE MODI_SHUMAN, ONLY: MXF, MYF, MZF ! USE MODE_MODELN_HANDLER USE MODI_UPDATE_WELFORD +! +USE MODI_SHUMAN +USE MODI_GRADIENT_M +USE MODI_GRADIENT_U +USE MODI_GRADIENT_V +USE MODI_GRADIENT_W +USE MODD_METRICS_n, ONLY: XDXX, XDYY, XDZX, XDZY, XDZZ +USE MODD_FIELD_n, ONLY: XRT +USE MODD_CST, ONLY: XRD, XRV, XG +USE MODD_GRID_n, ONLY: XZS, XZZ, XZHAT, XZHATM +USE MODD_CONF_n, ONLY: NRR, NRRL, NRRI ! + IMPLICIT NONE !* 0.1 Declarations of dummy arguments : @@ -96,9 +107,7 @@ REAL, DIMENSION(:,:,:), INTENT(IN) :: PSVT ! !* 0.2 Declarations of local variables : -REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZTEMPT INTEGER :: IIU,IJU,IKU,IIB,IJB,IKB,IIE,IJE,IKE ! Arrays bounds -INTEGER :: JI,JJ,JK ! Loop indexes REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZUMEAN_OLD REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWMEAN_OLD ! @@ -115,6 +124,20 @@ REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZAUX_WIDD REAL, DIMENSION(:,:), ALLOCATABLE :: ZRH_W_MAXCOL REAL, DIMENSION(:,:), ALLOCATABLE :: ZRH_I_MAXCOL REAL, DIMENSION(:,:), ALLOCATABLE :: ZRH_P_MAXCOL +INTEGER :: JI,JJ,JK, JLOOP ! Loop indexes +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZTEMPT +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZUMEAN_OLD +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZWMEAN_OLD +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2),SIZE(PUT,3)) :: ZTHMEAN_OLD +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)) :: ZMSLP ! +REAL, DIMENSION(SIZE(PUT,1),SIZE(PUT,2)) :: ZUH ! +REAL :: ZRV_OV_RD, ZGAMREF ! ! INTEGER :: IMI !Current model index ! @@ -303,5 +326,141 @@ END IF ENDDO ENDDO ENDDO + +! Computation of vorticities (same as in the diag) + ZVOX(:,:,:)=GY_W_VW(PWT,XDYY,XDZZ,XDZY)-GZ_V_VW(PVT,XDZZ) + ZVOX(:,:,2)=ZVOX(:,:,3) + ZVOY(:,:,:)=GZ_U_UW(PUT,XDZZ)-GX_W_UW(PWT,XDXX,XDZZ,XDZX) + ZVOY(:,:,2)=ZVOY(:,:,3) + ZVOZ(:,:,:)=GX_V_UV(PVT,XDXX,XDZZ,XDZX)-GY_U_UV(PUT,XDYY,XDZZ,XDZY) + ZVOZ(:,:,2)=ZVOZ(:,:,3) + ZVOZ(:,:,1)=ZVOZ(:,:,3) + ZVOX=MYF(MZF(MXM(ZVOX))) + ZVOY=MZF(MXF(MYM(ZVOY))) + ZVOZ=MXF(MYF(MZM(ZVOZ))) +! +! Computation of P at sea level (same as in the diag) +! + IF(NRR > 0) THEN +! compute the ratio : 1 + total water mass / dry air mass + ZRV_OV_RD = XRV / XRD + ZTHV(:,:,:) = 1. + XRT(:,:,:,1) + DO JLOOP = 2,1+NRRL+NRRI + ZTHV(:,:,:) = ZTHV(:,:,:) + XRT(:,:,:,JLOOP) + END DO +! compute the virtual potential temperature when water is present in any form + ZTHV(:,:,:) = PTHT(:,:,:) * (1.+XRT(:,:,:,1)*ZRV_OV_RD) / ZTHV(:,:,:) + ELSE +! compute the virtual potential temperature when water is absent + ZTHV(:,:,:) = PTHT(:,:,:) + END IF +! + ZGAMREF=-6.5E-3 +! Exner function at the first mass point + ZWORK4(:,:) = (PPABST(:,:,IKB) /XP00)**(XRD/XCPD) +! virtual temperature at the first mass point + ZWORK4(:,:) = ZWORK4(:,:) * ZTHV(:,:,IKB) +! virtual temperature at ground level + ZWORK4(:,:) = ZWORK4(:,:) - ZGAMREF*((XZZ(:,:,IKB)+XZZ(:,:,IKB+1))/2.-XZS(:,:)) +! virtual temperature at sea level + ZMSLP(:,:) = ZWORK4(:,:) - ZGAMREF*XZS(:,:) +! average underground virtual temperature + ZMSLP(:,:) = 0.5*(ZWORK4(:,:)+ZMSLP(:,:)) +! surface pressure + ZWORK4(:,:) = ( PPABST(:,:,IKB) + PPABST(:,:,IKB-1) )*.5 +! sea level pressure (hPa) + ZMSLP(:,:) = 1.E-2*ZWORK4(:,:)*EXP(XG*XZS(:,:)/(XRD*ZMSLP(:,:))) +! +! vertical velocity at mass points + ZWM=MZF(PWT) +! + DO JK=IKB,IKE + DO JJ=IJB,IJE + DO JI=IIB,IIE + XUM_MAX(JI,JJ,JK) = MAX(XUM_MAX(JI,JJ,JK),PUT(JI,JJ,JK)) + XVM_MAX(JI,JJ,JK) = MAX(XVM_MAX(JI,JJ,JK),PVT(JI,JJ,JK)) + XWM_MAX(JI,JJ,JK) = MAX(XWM_MAX(JI,JJ,JK),ZWM(JI,JJ,JK)) + XWM_MIN(JI,JJ,JK) = MIN(XWM_MIN(JI,JJ,JK),ZWM(JI,JJ,JK)) ! + XUM1_MAX(JI,JJ,JK) = MAX(XUM1_MAX(JI,JJ,JK),ZVOX(JI,JJ,JK)) ! + XVM1_MAX(JI,JJ,JK) = MAX(XVM1_MAX(JI,JJ,JK),ZVOY(JI,JJ,JK)) ! + XWM1_MAX(JI,JJ,JK) = MAX(XWM1_MAX(JI,JJ,JK),ZVOZ(JI,JJ,JK)) ! + XUM1_MIN(JI,JJ,JK) = MIN(XUM1_MIN(JI,JJ,JK),ZVOX(JI,JJ,JK)) ! + XVM1_MIN(JI,JJ,JK) = MIN(XVM1_MIN(JI,JJ,JK),ZVOY(JI,JJ,JK)) ! + XWM1_MIN(JI,JJ,JK) = MIN(XWM1_MIN(JI,JJ,JK),ZVOZ(JI,JJ,JK)) ! + XTHM_MAX(JI,JJ,JK) = MAX(XTHM_MAX(JI,JJ,JK),PTHT(JI,JJ,JK)) + XTEMPM_MAX(JI,JJ,JK) = MAX(XTEMPM_MAX(JI,JJ,JK),ZTEMPT(JI,JJ,JK)) + IF (CTURB/='NONE') XTKEM_MAX(JI,JJ,JK) = & + MAX(XTKEM_MAX(JI,JJ,JK),PTKET(JI,JJ,JK)) + XPABSM_MAX(JI,JJ,JK) = MAX(XPABSM_MAX(JI,JJ,JK),PPABST(JI,JJ,JK)) + END DO + END DO + END DO + !Computation of 10 m height wind gusts and 10 m + 20 m height TKE + JK=IKB + DO WHILE((JK/=IKE-1)) + 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) + & + (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) + & + (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) + & + (PTKET(JI,JJ,JK+1)-PTKET(JI,JJ,JK)) * & + (10.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) + END DO + END DO + 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) + & + (PTKET(JI,JJ,JK+1)-PTKET(JI,JJ,JK)) * & + (20.-XZHATM(JK))/(XZHATM(JK+1)-XZHATM(JK)) + END DO + END DO + 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)) + END DO + END DO + END IF + JK=JK+1 + END DO +! + DO JJ=IJB,IJE + DO JI=IIB,IIE + ZWORK1(JI,JJ) = SQRT(XCURRENT_ZON10M(JI,JJ)**2+XCURRENT_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)) + 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) + XWMOD10MAX_MAX(JI,JJ) = MAX(XWMOD10MAX_MAX(JI,JJ),ZWORK1(JI,JJ)) + XTKEMAX_MAX(JI,JJ) = MAX(XTKEMAX_MAX(JI,JJ),ZWORK2(JI,JJ)) + XTKE10MAX_MAX(JI,JJ) = MAX(XTKE10MAX_MAX(JI,JJ),ZWORK3(JI,JJ)) + XTKE20MAX_MAX(JI,JJ) = MAX(XTKE20MAX_MAX(JI,JJ),ZWORK4(JI,JJ)) + XFF10MAX_MAX(JI,JJ) = MAX(XFF10MAX_MAX(JI,JJ),ZWORK5(JI,JJ)) + XFF10MAX2_MAX(JI,JJ) = MAX(XFF10MAX2_MAX(JI,JJ),ZWORK6(JI,JJ)) + 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)) ! + END DO + END DO ! END SUBROUTINE MEAN_FIELD diff --git a/src/MNH/modd_mean_fieldn.f90 b/src/MNH/modd_mean_fieldn.f90 index 73427df80..324cad1ed 100644 --- a/src/MNH/modd_mean_fieldn.f90 +++ b/src/MNH/modd_mean_fieldn.f90 @@ -33,7 +33,7 @@ !! 10/2016 (C.Lac) Add max values !! 12/2021 (R. Schoetter) adds humidity and other mean diagnostics !! 11/2022 (E. Jezequel) add covariances -!! +!! M. Mandement 01/2024: add max 10 m wind gust speed formulations !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -71,12 +71,21 @@ TYPE MEAN_FIELD_t REAL, DIMENSION(:,:,:), POINTER :: XVW_MEAN=>NULL(),XWTH_MEAN=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XUM_MAX=>NULL(),XVM_MAX=>NULL(),XWM_MAX=>NULL() + REAL, DIMENSION(:,:,:), POINTER :: XWM_MIN=>NULL() ! + REAL, DIMENSION(:,:,:), POINTER :: XUM1_MAX=>NULL(),XVM1_MAX=>NULL(),XWM1_MAX=>NULL() ! + REAL, DIMENSION(:,:,:), POINTER :: XUM1_MIN=>NULL(),XVM1_MIN=>NULL(),XWM1_MIN=>NULL() ! REAL, DIMENSION(:,:,:), POINTER :: XTHM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTEMPM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTKEM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XPABSM_MAX=>NULL() + REAL, DIMENSION(:,:), POINTER :: XMSLP_MAX=>NULL() ! + REAL, DIMENSION(:,:), POINTER :: XMSLP_MIN=>NULL() ! + REAL, DIMENSION(:,:), POINTER :: XUH_MAX=>NULL() ! + REAL, DIMENSION(:,:), POINTER :: XWMOD10MAX_MAX=>NULL() + REAL, DIMENSION(:,:), POINTER :: XTKEMAX_MAX=>NULL(), XTKE10MAX_MAX=>NULL(), XTKE20MAX_MAX=>NULL() + REAL, DIMENSION(:,:), POINTER :: XFF10MAX_MAX=>NULL() + REAL, DIMENSION(:,:), POINTER :: XFF10MAX2_MAX=>NULL(),XFF10MAX_AROME_MAX=>NULL() - INTEGER :: MEAN_COUNT ! @@ -111,10 +120,22 @@ REAL, DIMENSION(:,:,:), POINTER :: XUV_MEAN=>NULL(),XUW_MEAN=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XVW_MEAN=>NULL(),XWTH_MEAN=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XUM_MAX=>NULL(),XVM_MAX=>NULL(),XWM_MAX=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XWM_MIN=>NULL() ! +REAL, DIMENSION(:,:,:), POINTER :: XUM1_MAX=>NULL(),XVM1_MAX=>NULL(),XWM1_MAX=>NULL() ! +REAL, DIMENSION(:,:,:), POINTER :: XUM1_MIN=>NULL(),XVM1_MIN=>NULL(),XWM1_MIN=>NULL() ! + REAL, DIMENSION(:,:,:), POINTER :: XTHM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTEMPM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XTKEM_MAX=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XPABSM_MAX=>NULL() +REAL, DIMENSION(:,:), POINTER :: XMSLP_MAX=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: XMSLP_MIN=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: XUH_MAX=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: XWMOD10MAX_MAX=>NULL() +REAL, DIMENSION(:,:), POINTER :: XTKEMAX_MAX=>NULL(), XTKE10MAX_MAX=>NULL(), XTKE20MAX_MAX=>NULL() +REAL, DIMENSION(:,:), POINTER :: XFF10MAX_MAX=>NULL() +REAL, DIMENSION(:,:), POINTER :: XFF10MAX2_MAX=>NULL(),XFF10MAX_AROME_MAX=>NULL() + INTEGER, POINTER :: MEAN_COUNT =>NULL() @@ -147,11 +168,27 @@ MEAN_FIELD_MODEL(KFROM)%XSVT_MEAN=>XSVT_MEAN MEAN_FIELD_MODEL(KFROM)%XUM_MAX=>XUM_MAX MEAN_FIELD_MODEL(KFROM)%XVM_MAX=>XVM_MAX MEAN_FIELD_MODEL(KFROM)%XWM_MAX=>XWM_MAX +MEAN_FIELD_MODEL(KFROM)%XWM_MIN=>XWM_MIN ! +MEAN_FIELD_MODEL(KFROM)%XUM1_MAX=>XUM1_MAX ! +MEAN_FIELD_MODEL(KFROM)%XVM1_MAX=>XVM1_MAX ! +MEAN_FIELD_MODEL(KFROM)%XWM1_MAX=>XWM1_MAX ! +MEAN_FIELD_MODEL(KFROM)%XUM1_MIN=>XUM1_MIN ! +MEAN_FIELD_MODEL(KFROM)%XVM1_MIN=>XVM1_MIN ! +MEAN_FIELD_MODEL(KFROM)%XWM1_MIN=>XWM1_MIN ! MEAN_FIELD_MODEL(KFROM)%XTHM_MAX=>XTHM_MAX MEAN_FIELD_MODEL(KFROM)%XTEMPM_MAX=>XTEMPM_MAX 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 ! +MEAN_FIELD_MODEL(KFROM)%XWMOD10MAX_MAX=>XWMOD10MAX_MAX +MEAN_FIELD_MODEL(KFROM)%XTKEMAX_MAX=>XTKEMAX_MAX +MEAN_FIELD_MODEL(KFROM)%XTKE10MAX_MAX=>XTKE10MAX_MAX +MEAN_FIELD_MODEL(KFROM)%XTKE20MAX_MAX=>XTKE20MAX_MAX +MEAN_FIELD_MODEL(KFROM)%XFF10MAX_MAX=>XFF10MAX_MAX +MEAN_FIELD_MODEL(KFROM)%XFF10MAX2_MAX=>XFF10MAX2_MAX +MEAN_FIELD_MODEL(KFROM)%XFF10MAX_AROME_MAX=>XFF10MAX_AROME_MAX MEAN_FIELD_MODEL(KFROM)%XU2_M2=>XU2_M2 MEAN_FIELD_MODEL(KFROM)%XV2_M2=>XV2_M2 MEAN_FIELD_MODEL(KFROM)%XW2_M2=>XW2_M2 @@ -190,10 +227,27 @@ XSVT_MEAN=>MEAN_FIELD_MODEL(KTO)%XSVT_MEAN XUM_MAX=>MEAN_FIELD_MODEL(KTO)%XUM_MAX XVM_MAX=>MEAN_FIELD_MODEL(KTO)%XVM_MAX XWM_MAX=>MEAN_FIELD_MODEL(KTO)%XWM_MAX +XWM_MIN=>MEAN_FIELD_MODEL(KTO)%XWM_MIN ! +XUM1_MAX=>MEAN_FIELD_MODEL(KTO)%XUM1_MAX ! +XVM1_MAX=>MEAN_FIELD_MODEL(KTO)%XVM1_MAX ! +XWM1_MAX=>MEAN_FIELD_MODEL(KTO)%XWM1_MAX ! +XUM1_MIN=>MEAN_FIELD_MODEL(KTO)%XUM1_MIN ! +XVM1_MIN=>MEAN_FIELD_MODEL(KTO)%XVM1_MIN ! +XWM1_MIN=>MEAN_FIELD_MODEL(KTO)%XWM1_MIN ! XTHM_MAX=>MEAN_FIELD_MODEL(KTO)%XTHM_MAX XTEMPM_MAX=>MEAN_FIELD_MODEL(KTO)%XTEMPM_MAX 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 ! +XWMOD10MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XWMOD10MAX_MAX +XTKEMAX_MAX=>MEAN_FIELD_MODEL(KTO)%XTKEMAX_MAX +XTKE10MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XTKE10MAX_MAX +XTKE20MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XTKE20MAX_MAX +XFF10MAX_MAX=>MEAN_FIELD_MODEL(KTO)%XFF10MAX_MAX +XFF10MAX2_MAX=>MEAN_FIELD_MODEL(KTO)%XFF10MAX2_MAX +XFF10MAX_AROME_MAX=>MEAN_FIELD_MODEL(KTO)%XFF10MAX_AROME_MAX XU2_M2=>MEAN_FIELD_MODEL(KTO)%XU2_M2 XV2_M2=>MEAN_FIELD_MODEL(KTO)%XV2_M2 diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index f7f185e05..95251a3d1 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -161,29 +161,29 @@ END MODULE MODI_WRITE_LFIFM_n !! P. Tulet & M. Leriche Nov 2015 add mean pH value in the rain at the surface !! Modification 01/2016 (JP Pinty) Add LIMA !! M.Mazoyer 04/16 : Add supersaturation fields -! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O -! P. Wautelet 11/07/2016: remove MNH_NCWRIT define -! V. Vionnet 07/2017: add blowing snow variables -! JP Chaboureau 27/11/2017: add wind tendency forcing -! Q. Libois 02/2018: move Diagnostic related to the radiations in radiations.f90 -! P. Wautelet 11/01/2019: bug correction in write XBL_DEPTH->XSBL_DEPTH -! C. Lac 18/02/2019: add rain fraction as an output field -! S. Bielli 02/2019: Sea salt: significant sea wave height influences salt emission; 5 salt modes -! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg -! P. Tulet 02/2020: correction for dust and sea salts -! B. Vie 06/2020: add prognostic supersaturation for LIMA -! PA. Joulin 12/2020: add wind turbine outputs -! F. Auguste 02/2021: add IBM -! T. Nagel 02/2021: add turbulence recycling -! P. Wautelet 10/03/2021: use scalar variable names for dust and salt -! P. Wautelet 11/03/2021: bugfix: correct name for NSV_LIMA_IMM_NUCL -! J.L. Redelsperger 03/2021: add OCEAN and auto-coupled O-A LES cases -! R. Schoetter 12/2021: adds humidity and other mean diagnostics -! A. Costes 12/2021: add Blaze fire model -! P. Wautelet 04/02/2022: use TSVLIST to manage metadata of scalar variables -! E. Jezequel 11/2022: add covariances from MEAN fields -! H. Toumi 09/2022: add ADR -! PA. Joulin 04/2023: update EOL metadata management +!! P. Wautelet 05/2016-04/2018: new data structures and calls for I/O +!! P. Wautelet 11/07/2016: remove MNH_NCWRIT define +!! V. Vionnet 07/2017: add blowing snow variables +!! JP Chaboureau 27/11/2017: add wind tendency forcing +!! Q. Libois 02/2018: move Diagnostic related to the radiations in radiations.f90 +!! P. Wautelet 11/01/2019: bug correction in write XBL_DEPTH->XSBL_DEPTH +!! C. Lac 18/02/2019: add rain fraction as an output field +!! S. Bielli 02/2019: Sea salt: significant sea wave height influences salt emission; 5 salt modes +!! P. Wautelet 10/04/2019: replace ABORT and STOP calls by Print_msg +!! P. Tulet 02/2020: correction for dust and sea salts +!! B. Vie 06/2020: add prognostic supersaturation for LIMA +!! PA. Joulin 12/2020: add wind turbine outputs +!! F. Auguste 02/2021: add IBM +!! T. Nagel 02/2021: add turbulence recycling +!! P. Wautelet 10/03/2021: use scalar variable names for dust and salt +!! P. Wautelet 11/03/2021: bugfix: correct name for NSV_LIMA_IMM_NUCL +!! J.L. Redelsperger 03/2021: add OCEAN and auto-coupled O-A LES cases +!! A. Costes 12/2021: add Blaze fire model +!! P. Wautelet 04/02/2022: use TSVLIST to manage metadata of scalar variables +!! E. Jezequel 11/2022: add covariances from MEAN fields +!! H. Toumi 09/2022: add ADR +!: PA. Joulin 04/2023: update EOL metadata management +!! M. Mandement 01/2024: add max 10 m wind gust speed formulations !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -759,6 +759,54 @@ IF (MEAN_COUNT /= 0) THEN TZFIELD%CUNITS = 'm s-1' TZFIELD%CCOMMENT = 'X_Y_Z_U component of max wind' CALL IO_Field_write(TPFILE,TZFIELD,XUM_MAX) +! + IF (LCOV_FIELD) THEN + ! + TZFIELD%CMNHNAME = 'UVME' + TZFIELD%CLONGNAME = 'UVME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_UV component of mean wind variance' + ZWORK3D = XUV_MEAN/MEAN_COUNT + CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) + ! + TZFIELD%CMNHNAME = 'UWME' + TZFIELD%CLONGNAME = 'UWME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_UW component of mean wind variance' + ZWORK3D = XUW_MEAN/MEAN_COUNT + CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) + ! + TZFIELD%CMNHNAME = 'VWME' + TZFIELD%CLONGNAME = 'VWME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_VW component of mean wind variance' + ZWORK3D = XVW_MEAN/MEAN_COUNT + CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) + ! + TZFIELD%CMNHNAME = 'WTHME' + TZFIELD%CLONGNAME = 'WTHME' + TZFIELD%CUNITS = 'm2 s-2' + TZFIELD%CCOMMENT = 'X_Y_Z_WTH component of mean wind variance' + ZWORK3D = XWTH_MEAN/MEAN_COUNT + CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) + ! + END IF +! +! Min and max vorticity modif +! + TZFIELD%CMNHNAME = 'UM1_MAX' + TZFIELD%CLONGNAME = 'UM1_MAX' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_x_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XUM1_MAX) +! +! + TZFIELD%CMNHNAME = 'UM1_MIN' + TZFIELD%CLONGNAME = 'UM1_MIN' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_x_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XUM1_MIN) +! ! TZFIELD = TFIELDMETADATA( & CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification @@ -788,6 +836,21 @@ IF (MEAN_COUNT /= 0) THEN TZFIELD%CUNITS = 'm s-1' TZFIELD%CCOMMENT = 'X_Y_Z_V component of max wind' CALL IO_Field_write(TPFILE,TZFIELD,XVM_MAX) +! +! Min and max vorticity modif +! + TZFIELD%CMNHNAME = 'VM1_MAX' + TZFIELD%CLONGNAME = 'VM1_MAX' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_y_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XVM1_MAX) +! + TZFIELD%CMNHNAME = 'VM1_MIN' + TZFIELD%CLONGNAME = 'VM1_MIN' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_y_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XVM1_MIN) +! ! TZFIELD = TFIELDMETADATA( & CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification @@ -817,6 +880,27 @@ IF (MEAN_COUNT /= 0) THEN TZFIELD%CUNITS = 'm s-1' TZFIELD%CCOMMENT = 'X_Y_Z_vertical max wind' CALL IO_Field_write(TPFILE,TZFIELD,XWM_MAX) +! + TZFIELD%CMNHNAME = 'WMMI' + TZFIELD%CLONGNAME = 'WMMI' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_Z_vertical min wind' + CALL IO_Field_write(TPFILE,TZFIELD,XWM_MIN) +! +! Min and max vorticity modif +! + TZFIELD%CMNHNAME = 'WM1_MAX' + TZFIELD%CLONGNAME = 'WM1_MAX' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_z_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XWM1_MAX) +! + TZFIELD%CMNHNAME = 'WM1_MIN' + TZFIELD%CLONGNAME = 'WM1_MIN' + TZFIELD%CUNITS = 's-1' + TZFIELD%CCOMMENT = 'X_Y_Z_z_maximum relative vorticity' + CALL IO_Field_write(TPFILE,TZFIELD,XWM1_MIN) +! ! ! ! Calculation of mean horizontal wind speed and @@ -999,38 +1083,89 @@ IF (MEAN_COUNT /= 0) THEN CALL IO_Field_write(TPFILE,TZFIELD,XTKEM_MAX) END IF ! - IF (LCOV_FIELD) THEN - ! - TZFIELD%CMNHNAME = 'UVME' - TZFIELD%CLONGNAME = 'UVME' - TZFIELD%CUNITS = 'm2 s-2' - TZFIELD%CCOMMENT = 'X_Y_Z_UV component of mean wind variance' - ZWORK3D = XUV_MEAN/MEAN_COUNT - CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) - ! - TZFIELD%CMNHNAME = 'UWME' - TZFIELD%CLONGNAME = 'UWME' - TZFIELD%CUNITS = 'm2 s-2' - TZFIELD%CCOMMENT = 'X_Y_Z_UW component of mean wind variance' - ZWORK3D = XUW_MEAN/MEAN_COUNT - CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) - ! - TZFIELD%CMNHNAME = 'VWME' - TZFIELD%CLONGNAME = 'VWME' - TZFIELD%CUNITS = 'm2 s-2' - TZFIELD%CCOMMENT = 'X_Y_Z_VW component of mean wind variance' - ZWORK3D = XVW_MEAN/MEAN_COUNT - CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) - ! - TZFIELD%CMNHNAME = 'WTHME' - TZFIELD%CLONGNAME = 'WTHME' - TZFIELD%CUNITS = 'm2 s-2' - TZFIELD%CCOMMENT = 'X_Y_Z_WTH component of mean wind variance' - ZWORK3D = XWTH_MEAN/MEAN_COUNT - CALL IO_Field_write(TPFILE,TZFIELD,ZWORK3D) - ! - END IF + TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification + CSTDNAME = '', & + CDIR = 'XY', & + NTYPE = TYPEREAL, & + NGRID = 1, & + NDIMS = 2, & + LTIMEDEP = .TRUE. ) +! + TZFIELD%CMNHNAME = 'WMOD10MAX_MA' + TZFIELD%CLONGNAME = 'WMOD10MAX_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max WMOD10MAX' + CALL IO_Field_write(TPFILE,TZFIELD,XWMOD10MAX_MAX) +! + IF (CTURB /= 'NONE') THEN + TZFIELD%CMNHNAME = 'XTKEMAX_MA' + TZFIELD%CLONGNAME = 'XTKEMAX_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max XTKEMAX' + CALL IO_Field_write(TPFILE,TZFIELD,XTKEMAX_MAX) +! + TZFIELD%CMNHNAME = 'XTKE10MAX_MA' + TZFIELD%CLONGNAME = 'XTKE10MAX_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max XTKE10MAX' + CALL IO_Field_write(TPFILE,TZFIELD,XTKE10MAX_MAX) +! + TZFIELD%CMNHNAME = 'XTKE20MAX_MA' + TZFIELD%CLONGNAME = 'XTKE20MAX_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max XTKE20MAX' + CALL IO_Field_write(TPFILE,TZFIELD,XTKE20MAX_MAX) + END IF +! + TZFIELD%CMNHNAME = 'FF10MAX_MA' + TZFIELD%CLONGNAME = 'FF10MAX_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max FF10MAX' + CALL IO_Field_write(TPFILE,TZFIELD,XFF10MAX_MAX) ! + TZFIELD%CMNHNAME = 'FF10MAX2_MA' + TZFIELD%CLONGNAME = 'FF10MAX2_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max FF10MAX2' + CALL IO_Field_write(TPFILE,TZFIELD,XFF10MAX2_MAX) +! + TZFIELD%CMNHNAME = 'FF10MAX_AROME_MA' + TZFIELD%CLONGNAME = 'FF10MAX_AROME_MA' + TZFIELD%CUNITS = 'm s-1' + TZFIELD%CCOMMENT = 'X_Y_max FF10MAX_AROME' + CALL IO_Field_write(TPFILE,TZFIELD,XFF10MAX_AROME_MAX) +! +! Min and max sea level pressure + TZFIELD%CMNHNAME = 'MSLP_MAX' + TZFIELD%CLONGNAME = 'MSLP_MAX' + TZFIELD%CUNITS = 'hPa' + TZFIELD%CCOMMENT = 'X_Y_max Mean Sea Level Pressure' + CALL IO_Field_write(TPFILE,TZFIELD,XMSLP_MAX) +! + TZFIELD%CMNHNAME = 'MSLP_MIN' + TZFIELD%CLONGNAME = 'MSLP_MIN' + TZFIELD%CUNITS = 'hPa' + TZFIELD%CCOMMENT = 'X_Y_min Mean Sea Level Pressure' + CALL IO_Field_write(TPFILE,TZFIELD,XMSLP_MIN) +! +! + TZFIELD = TFIELDMETADATA( & + CMNHNAME = 'generic for mean_count variables', & !Temporary name to ease identification + CSTDNAME = '', & + CDIR = 'XY', & + NTYPE = TYPEREAL, & + NGRID = 4, & + 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) +! END IF ! ! -- GitLab