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