From 5db46310a454b218c30ec69fd65efd1e46c20352 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Mon, 2 Mar 2020 13:49:23 +0100
Subject: [PATCH] Pierre T. 02/03/2020: correction of dust and sea salts
 written outputs

---
 src/MNH/write_lfin.f90 | 45 ++++++++++++++++++++++++++++++------------
 1 file changed, 32 insertions(+), 13 deletions(-)

diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index 6b6eb5b18..fb87a7412 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -171,6 +171,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !!       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              
 !!      Bielli S. 02/2019  Sea salt : significant sea wave height influences salt emission; 5 salt modes
+!!      P.Tulet 02/2020 : correction for dust and sea salts
 !-------------------------------------------------------------------------------
 !
 !*       0.    DECLARATIONS
@@ -249,12 +250,16 @@ USE MODE_GATHER_ll
 USE MODE_GRIDPROJ
 USE MODE_MSG
 USE MODE_MODELN_HANDLER
+USE MODE_DUST_PSD
+USE MODE_SALT_PSD
 !
 USE MODI_WRITE_LB_n
 USE MODI_WRITE_BALLOON_n
 USE MODI_DUSTLFI_n
 USE MODI_SALTLFI_n
 USE MODI_CH_AER_REALLFI_n
+USE MODI_SALT_FILTER
+USE MODI_DUST_FILTER
 !
 !20131128
 USE MODE_MPPDB
@@ -1220,6 +1225,7 @@ IF (NSV >=1) THEN
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
       !
+      CALL DUST_FILTER(XSVT(:,:,:,NSV_DSTBEG:NSV_DSTEND), XRHODREF)
       DO JSV = NSV_DSTBEG,NSV_DSTEND
         TZFIELD%CMNHNAME   = TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T'
         TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
@@ -1280,22 +1286,34 @@ IF (NSV >=1) THEN
       TZFIELD%NTYPE      = TYPEREAL
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
-      DO JMODE=1, NMODE_SLT
-        DO JMOM = 1, IMOMENTS
-          !Index from which names are picked
-          ISV_NAME_IDX = (JPSALTORDER(JMODE)-1)*IMOMENTS + JMOM 
-          !Index which counts in the XSVT
-          JSV = (JMODE-1)*IMOMENTS      & !Number of moments previously counted
-               + JMOM                   & !Number of moments in this mode
-               + (NSV_SLTBEG -1)          !Previous list of tracers 
-
-          TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
+!
+      IF (IMOMENTS == 1) THEN
+        DO JMODE=1, NMODE_SLT
+          ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*3 + 2
+          JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+                  +  1              & !Number of moments in this mode
+                  + (NSV_SLTBEG -1)      !Previous list of tracers
+          TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'
           TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
           WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
           CALL IO_WRITE_FIELD(TPFILE,TZFIELD,XSVT(:,:,:,JSV))
-          YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
-        END DO ! Loop on moments
-      END DO   ! Loop on modes
+          YSLTNAMES((JMODE-1)*IMOMENTS+1)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
+        END DO ! Loop on mode
+      ELSE
+        DO JMODE=1, NMODE_SLT
+          DO JMOM = 1, IMOMENTS
+            ISV_NAME_IDX = (JPSALTORDER(JMODE) - 1)*IMOMENTS + JMOM
+            JSV = (JMODE-1)*IMOMENTS  & !Number of moments previously counted
+                 + JMOM               & !Number of moments in this mode
+                 + (NSV_SLTBEG -1)
+            TZFIELD%CMNHNAME   = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
+            TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
+            WRITE(TZFIELD%CCOMMENT,'(A6,A3,I3.3)')'X_Y_Z_','SVT',JSV
+            CALL IO_WRITE_FIELD(TPFILE,TZFIELD,XSVT(:,:,:,JSV))
+            YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=TZFIELD%CMNHNAME(1:LEN_TRIM(TZFIELD%CMNHNAME)-1)
+          END DO ! Loop on moment
+        END DO ! loop on mode
+      END IF ! Valeur IMOMENTS
       !
       DO JSV = NSV_SLTBEG,NSV_SLTEND
         YCHNAMES(JSV-JSA) = YSLTNAMES(JSV-NSV_SLTBEG+1)
@@ -1312,6 +1330,7 @@ IF (NSV >=1) THEN
       TZFIELD%NDIMS      = 3
       TZFIELD%LTIMEDEP   = .TRUE.
       !
+      CALL SALT_FILTER(XSVT(:,:,:,NSV_SLTBEG:NSV_SLTEND), XRHODREF)
       DO JSV = NSV_SLTBEG,NSV_SLTEND
         TZFIELD%CMNHNAME   = TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T'
         TZFIELD%CLONGNAME  = TRIM(TZFIELD%CMNHNAME)
-- 
GitLab