From b4a024285193be1512144d39b192661ed707b1c3 Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr>
Date: Mon, 28 Nov 2016 16:22:42 +0100
Subject: [PATCH] Philippe 28/11/2016: use file structure for all calls to
 WRITE_LFIFM_n

---
 src/LIB/SURCOUCHE/src/modd_io.f90 |   2 +-
 src/LIB/SURCOUCHE/src/mode_fm.f90 |  20 +-
 src/MNH/modeln.f90                |   2 +-
 src/MNH/prep_ideal_case.f90       |  29 +-
 src/MNH/prep_real_case.f90        |  31 +-
 src/MNH/spawn_model2.f90          |  30 +-
 src/MNH/write_lfin.f90            | 549 +++++++++++++++---------------
 7 files changed, 365 insertions(+), 298 deletions(-)

diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90
index 5c9b6e0a2..0d04fa9bc 100644
--- a/src/LIB/SURCOUCHE/src/modd_io.f90
+++ b/src/LIB/SURCOUCHE/src/modd_io.f90
@@ -49,7 +49,7 @@ END TYPE TOUTBAK
 !Structure describing the characteristics of a file
 TYPE TFILEDATA
   CHARACTER(LEN=28) :: CNAME               !Filename
-  CHARACTER(LEN=7)  :: CTYPE   = "UNKNOWN" !Filetype (backup, output...)
+  CHARACTER(LEN=13) :: CTYPE   = "UNKNOWN" !Filetype (backup, output, prepidealcase...)
   CHARACTER(LEN=7)  :: CFORMAT = "UNKNOWN" !Fileformat (NETCDF4, LFI...)
   CHARACTER(LEN=7)  :: CMODE   = "UNKNOWN" !Opening mode (read, write...)
   LOGICAL           :: LOPENED = .FALSE.   !Is the file opened
diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90
index db092a523..643ddb135 100644
--- a/src/LIB/SURCOUCHE/src/mode_fm.f90
+++ b/src/LIB/SURCOUCHE/src/mode_fm.f90
@@ -134,9 +134,9 @@ SUBROUTINE IO_FILE_OPEN_ll(TPFILE,HFIPRI,KRESP)
 !
 USE MODD_IO_ll, ONLY: TFILEDATA
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN)  :: TPFILE ! File structure
-CHARACTER(LEN=*),       INTENT(IN)  :: HFIPRI ! File for prints in FM
-INTEGER,                INTENT(OUT) :: KRESP  ! Return code
+TYPE(TFILEDATA),  INTENT(INOUT) :: TPFILE ! File structure
+CHARACTER(LEN=*), INTENT(IN)    :: HFIPRI ! File for prints in FM
+INTEGER,          INTENT(OUT)   :: KRESP  ! Return code
 !
 INTEGER :: ININAR ! Number of articles present in LFI file (unused here)
 !
@@ -179,7 +179,7 @@ INTEGER,         INTENT(OUT)::KNINAR  ! number of articles
 INTEGER,         INTENT(OUT)::KRESP   ! return-code if a problem
 ! araised.
 LOGICAL,         INTENT(IN),  OPTIONAL :: OPARALLELIO
-TYPE(TFILEDATA),POINTER,INTENT(IN),OPTIONAL :: TPFILE ! File structure
+TYPE(TFILEDATA), INTENT(IN),  OPTIONAL :: TPFILE ! File structure
 !
 !   Local variable
 !
@@ -201,7 +201,7 @@ LOGICAL               :: GPARALLELIO
 #if defined(MNH_IOCDF4)
 INTEGER(KIND=IDCDF_KIND) :: INCERR
 #endif
-CHARACTER(LEN=7) :: YTYPE
+CHARACTER(LEN=13) :: YTYPE
 
 IF ( PRESENT(TPFILE) ) THEN
   YTYPE = TPFILE%CTYPE
@@ -379,9 +379,9 @@ SUBROUTINE IO_FILE_CLOSE_ll(TPFILE,HFIPRI,KRESP)
 !
 USE MODD_IO_ll, ONLY: TFILEDATA
 !
-TYPE(TFILEDATA),POINTER,INTENT(IN)  :: TPFILE ! File structure
-CHARACTER(LEN=*),       INTENT(IN)  :: HFIPRI ! File for prints in FM
-INTEGER,                INTENT(OUT) :: KRESP  ! Return code
+TYPE(TFILEDATA),  INTENT(INOUT) :: TPFILE ! File structure
+CHARACTER(LEN=*), INTENT(IN)    :: HFIPRI ! File for prints in FM
+INTEGER,          INTENT(OUT)   :: KRESP  ! Return code
 !
 IF (.NOT.TPFILE%LOPENED) THEN
   PRINT *,'ERROR: IO_FILE_CLOSE_ll: trying to close a file not opened: ',TRIM(TPFILE%CNAME)
@@ -418,7 +418,7 @@ CHARACTER(LEN=*),     INTENT(IN) ::HSTATU  ! status for the closed file
 CHARACTER(LEN=*),     INTENT(IN) ::HFIPRI  ! file for prints in FM
 INTEGER,              INTENT(OUT)::KRESP   ! return-code if problems araised
 LOGICAL,              INTENT(IN),  OPTIONAL :: OPARALLELIO
-TYPE(TFILEDATA),POINTER,INTENT(IN),OPTIONAL :: TPFILE ! File structure
+TYPE(TFILEDATA),      INTENT(IN),  OPTIONAL :: TPFILE ! File structure
 
 INTEGER              ::IRESP,IROWF,IFMFNL
 CHARACTER(LEN=7)     ::YSTATU
@@ -434,7 +434,7 @@ TYPE(FD_ll), POINTER :: TZFDLFI
 INTEGER(KIND=LFI_INT) :: IRESP8,INUM8
 !JUAN
 LOGICAL :: GPARALLELIO
-CHARACTER(LEN=7) :: YTYPE
+CHARACTER(LEN=13) :: YTYPE
 
 IF ( PRESENT(TPFILE) ) THEN
   YTYPE = TPFILE%CTYPE
diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90
index 8a1ee6baa..0eb2f34c7 100644
--- a/src/MNH/modeln.f90
+++ b/src/MNH/modeln.f90
@@ -921,7 +921,7 @@ IF (IBAK < NBAK_NUMB ) THEN
     YDESFM=ADJUSTL(ADJUSTR(YFMFILE)//'.des')
     !    
     CALL WRITE_DESFM_n(IMI,YDESFM,CLUOUT)
-    CALL WRITE_LFIFM_n(YFMFILE,YDADFILE,TBACKUPN(IBAK)%TFILE)
+    CALL WRITE_LFIFM_n(TBACKUPN(IBAK)%TFILE,YDADFILE)
     COUTFMFILE = YFMFILE
     CALL MNHWRITE_ZS_DUMMY_n(CPROGRAM)
     IF (CSURF=='EXTE') THEN
diff --git a/src/MNH/prep_ideal_case.f90 b/src/MNH/prep_ideal_case.f90
index 0268f66f2..b9ed4986e 100644
--- a/src/MNH/prep_ideal_case.f90
+++ b/src/MNH/prep_ideal_case.f90
@@ -421,6 +421,7 @@ USE MODE_FMWRIT
 USE MODI_WRITE_HGRID
 USE MODD_MPIF
 USE MODD_VAR_ll
+USE MODD_IO_ll, ONLY: TFILEDATA
 !
 USE MODE_MPPDB
 !
@@ -569,6 +570,8 @@ REAL              :: XHSLOP=1.2           ! if LHSLOP filtering of slopes higher
 REAL              :: ZZS_MAX, ZZS_MAX_ll
 INTEGER           :: IJPHEXT
 !
+TYPE(TFILEDATA)   :: TZFILE
+!
 !
 !*       0.2  Namelist declarations
 !
@@ -1725,11 +1728,31 @@ NNPRAR = 22 + 2*(NRR+NSV)   &    ! 22 = number of grid variables + reference
 NTYPE=1
 CDESFM=ADJUSTL(ADJUSTR(CINIFILE)//'.des')
 !
-CALL FMOPEN_ll(CINIFILE,'WRITE',CLUOUT,NNPRAR,NTYPE,NVERB,NNINAR,NRESP)
+TZFILE%CNAME      = CINIFILE
+TZFILE%CTYPE      = 'PREPIDEALCASE'
+IF (LCDF4) THEN
+  IF (.NOT.LLFIOUT) THEN
+    TZFILE%CFORMAT='NETCDF4'
+  ELSE
+    TZFILE%CFORMAT='LFICDF4'
+    TZFILE%NLFINPRAR= NNPRAR
+  END IF
+ELSE IF (LLFIOUT) THEN
+  TZFILE%CFORMAT='LFI'
+  TZFILE%NLFINPRAR= NNPRAR
+ELSE
+  PRINT *,'Error: unknown backup/output fileformat'
+  CALL ABORT
+ENDIF
+TZFILE%CMODE      = 'WRITE'
+TZFILE%NLFITYPE   = NTYPE
+TZFILE%NLFIVERB   = NVERB
+!
+CALL IO_FILE_OPEN_ll(TZFILE,CLUOUT,NRESP)
 !
 CALL WRITE_DESFM_n(1,CDESFM,CLUOUT)
 !
-CALL WRITE_LFIFM_n(CINIFILE,'                            ')  ! There is no DAD model for PREP_IDEAL_CASE 
+CALL WRITE_LFIFM_n(TZFILE,'                            ')  ! There is no DAD model for PREP_IDEAL_CASE 
 !
 CALL SECOND_MNH2(ZTIME2)
 !
@@ -1813,7 +1836,7 @@ END IF
 IF (CSURF =='EXTE' .AND. (LEN_TRIM(CPGD_FILE)==0 .OR. .NOT. LREAD_GROUND_PARAM)) THEN
   CALL FMCLOS_ll(CINIFILEPGD,'KEEP',CLUOUT,NRESP)
 ENDIF
-CALL FMCLOS_ll(CINIFILE,'KEEP',CLUOUT,NRESP)
+CALL IO_FILE_CLOSE_ll(TZFILE,CLUOUT,NRESP)
 IF( LEN_TRIM(CPGD_FILE) /= 0 ) THEN
   CALL FMCLOS_ll(CPGD_FILE,'KEEP',CLUOUT,NRESP)
 ENDIF
diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90
index e25cbc1bf..74cfd64df 100644
--- a/src/MNH/prep_real_case.f90
+++ b/src/MNH/prep_real_case.f90
@@ -445,7 +445,7 @@ USE MODD_CH_AEROSOL, ONLY: LORILAM, LINITPM, XINIRADIUSI, XINIRADIUSJ,&
                            XINISIGI, XINISIGJ, XN0IMIN, XN0JMIN, CRGUNIT
 USE MODD_DUST,      ONLY:  LDUST, NMODE_DST, CRGUNITD, XINISIG, XINIRADIUS, XN0MIN 
 USE MODD_SALT,      ONLY:  LSALT, NMODE_SLT, CRGUNITS, XINISIG_SLT, XINIRADIUS_SLT, XN0MIN_SLT
-USE MODD_IO_ll,   ONLY : GSMONOPROC
+USE MODD_IO_ll,   ONLY : GSMONOPROC,TFILEDATA,LIOCDF4,LLFIOUT
 USE MODD_PREP_REAL
 USE MODD_CH_MNHC_n, ONLY: LUSECHAQ_n=>LUSECHAQ,LUSECHIC_n=>LUSECHIC, LUSECHEM_n=>LUSECHEM
 USE MODI_READ_VER_GRID
@@ -511,6 +511,9 @@ LOGICAL  :: LUSECHAQ
 LOGICAL  :: LUSECHIC
 LOGICAL  :: LUSECHEM
 !
+TYPE(TFILEDATA) :: TZFILE
+!
+!
 !*       0.3   Declaration of namelists
 !              ------------------------
 !
@@ -569,7 +572,27 @@ CALL OPEN_PRC_FILES(YPRE_REAL1,YATMFILE, YATMFILETYPE  &
 CALL FMLOOK_ll(CLUOUT0,CLUOUT0,ILUOUT0,IRESP)
 !
 CPGDFILE = YPGDFILE
-CALL FMOPEN_ll(CINIFILE,'WRITE',CLUOUT0,0,1,NVERB,ININAR,IRESP)
+TZFILE%CNAME      = CINIFILE
+TZFILE%CTYPE      = 'PREPREALCASE'
+IF (LIOCDF4) THEN
+  IF (.NOT.LLFIOUT) THEN
+    TZFILE%CFORMAT='NETCDF4'
+  ELSE
+    TZFILE%CFORMAT='LFICDF4'
+    TZFILE%NLFINPRAR= 0
+  END IF
+ELSE IF (LLFIOUT) THEN
+  TZFILE%CFORMAT='LFI'
+  TZFILE%NLFINPRAR= 0
+ELSE
+  PRINT *,'Error: unknown backup/output fileformat'
+  CALL ABORT
+ENDIF
+TZFILE%CMODE      = 'WRITE'
+TZFILE%NLFITYPE   = 1
+TZFILE%NLFIVERB   = NVERB
+!
+CALL IO_FILE_OPEN_ll(TZFILE,CLUOUT0,IRESP)
 !
 IF (YATMFILETYPE=='MESONH') THEN
   LSHIFT = .FALSE.
@@ -1016,7 +1039,7 @@ END IF
 !
 YDESFM=ADJUSTL(ADJUSTR(CINIFILE)//'.des')
 CALL WRITE_DESFM_n(1,YDESFM,CLUOUT0)
-CALL WRITE_LFIFM_n(CINIFILE,YDAD_NAME)
+CALL WRITE_LFIFM_n(TZFILE,YDAD_NAME)
 ! 
 CALL SECOND_MNH(ZTIME2)
 ZWRITE = ZTIME2 - ZTIME1
@@ -1141,7 +1164,7 @@ END IF
 !-------------------------------------------------------------------------------
 !
 CALL CLOSE_ll(CLUOUT0, IOSTAT=IRESP)
-CALL FMCLOS_ll(CINIFILE,'KEEP',CLUOUT0,IRESP)
+CALL IO_FILE_CLOSE_ll(TZFILE,CLUOUT0,IRESP)
 !
 !
 CALL END_PARA_ll(IINFO_ll)
diff --git a/src/MNH/spawn_model2.f90 b/src/MNH/spawn_model2.f90
index 05c0ff7bc..023138a47 100644
--- a/src/MNH/spawn_model2.f90
+++ b/src/MNH/spawn_model2.f90
@@ -228,7 +228,7 @@ USE MODD_CH_MNHC_n
 USE MODD_PASPOL_n
 !$20140515
 USE MODD_VAR_ll, ONLY : NPROC
-!USE MODD_IO_ll, ONLY : ISP,GSMONOPROC
+USE MODD_IO_ll, ONLY: TFILEDATA,LIOCDF4,LLFIOUT
 !
 USE MODE_GRIDCART         ! Executive modules
 USE MODE_GRIDPROJ
@@ -387,6 +387,8 @@ CHARACTER(LEN=4)    :: YLBTYPE
 INTEGER,DIMENSION(:,:),ALLOCATABLE   :: IJCOUNT 
 !
 REAL                :: ZZS_MAX, ZZS_MAX_ll
+!
+TYPE(TFILEDATA)     :: TZFILE
 !-------------------------------------------------------------------------------
 !
 ! Save model index and switch to model 2 variables
@@ -1427,7 +1429,27 @@ ELSE
      CMY_NAME(2)=ADJUSTL(ADJUSTR(CINIFILE)//'.spr'//ADJUSTL(HSPANBR))
 END IF
 !
-CALL FMOPEN_ll(CMY_NAME(2),'WRITE',CLUOUT,INPRAR,ITYPE,NVERB,ININAR,IRESP)
+TZFILE%CNAME      = CMY_NAME(2)
+TZFILE%CTYPE      = 'SPAWNING'
+IF (LIOCDF4) THEN
+  IF (.NOT.LLFIOUT) THEN
+    TZFILE%CFORMAT='NETCDF4'
+  ELSE
+    TZFILE%CFORMAT='LFICDF4'
+    TZFILE%NLFINPRAR= INPRAR
+  END IF
+ELSE IF (LLFIOUT) THEN
+  TZFILE%CFORMAT='LFI'
+  TZFILE%NLFINPRAR= INPRAR
+ELSE
+  PRINT *,'Error: unknown backup/output fileformat'
+  CALL ABORT
+ENDIF
+TZFILE%CMODE      = 'WRITE'
+TZFILE%NLFITYPE   = ITYPE
+TZFILE%NLFIVERB   = NVERB
+!
+CALL IO_FILE_OPEN_ll(TZFILE,CLUOUT,IRESP)
 !
 YDESFM=ADJUSTL(ADJUSTR(CMY_NAME(2))//'.des')
 !
@@ -1455,7 +1477,7 @@ ELSE
   CDAD_NAME(2)=CMY_NAME(1) ! model 1 becomes the DAD of model 2 (spawned one)
 ENDIF
 !
-CALL WRITE_LFIFM_n(CMY_NAME(2),CDAD_NAME(2))
+CALL WRITE_LFIFM_n(TZFILE,CDAD_NAME(2))
 !
 CALL SECOND_MNH(ZTIME2)
 !
@@ -1478,7 +1500,7 @@ ZSURF2 = ZTIME2 - ZTIME1
 !*	 8.    CLOSES THE FMFILE
 !	       ----------------- 
 !
-CALL FMCLOS_ll(CMY_NAME(2),'KEEP',CLUOUT,IRESP)
+CALL IO_FILE_CLOSE_ll(TZFILE,CLUOUT,IRESP)
 IF (LEN_TRIM(HSONFILE) /= 0 ) THEN
   CALL FMCLOS_ll(HSONFILE,'KEEP',CLUOUT,IRESP)
 END IF
diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90
index f71aacaba..67cec6460 100644
--- a/src/MNH/write_lfin.f90
+++ b/src/MNH/write_lfin.f90
@@ -14,16 +14,15 @@
 !
 INTERFACE
 !
-SUBROUTINE WRITE_LFIFM_n(HFMFILE,HDADFILE,TPFILE)
+SUBROUTINE WRITE_LFIFM_n(TPFILE,HDADFILE)
 !
 USE MODD_IO_ll, ONLY: TFILEDATA
 !
 IMPLICIT NONE
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
 CHARACTER(LEN=28), INTENT(IN) :: HDADFILE     ! corresponding FM-file name of 
                                               ! its DAD model
-TYPE(TFILEDATA),OPTIONAL,INTENT(IN) :: TPFILE ! File characteristics
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! File characteristics
 END SUBROUTINE WRITE_LFIFM_n
 !
 END INTERFACE
@@ -32,7 +31,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !
 !
 !     ##########################################
-      SUBROUTINE WRITE_LFIFM_n(HFMFILE,HDADFILE,TPFILE)
+      SUBROUTINE WRITE_LFIFM_n(TPFILE,HDADFILE)
 !     ##########################################
 !
 !!****  *WRITE_LFIFM_n* - routine to write a LFIFM file for model $n
@@ -40,7 +39,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !!    PURPOSE
 !!    -------
 !        The purpose of this routine is to write an initial LFIFM File 
-!     of name HFMFILE//'.lfi' with the FM routines.  
+!     of name YFMFILE//'.lfi' with the FM routines.  
 !
 !!**  METHOD
 !!    ------
@@ -119,7 +118,7 @@ END MODULE MODI_WRITE_LFIFM_n
 !!       J.Stein P.Jabouille  30/04/96 add the storage type
 !!       J.Stein P.Jabouille  20/05/96 switch for XSIGS and XSRC 
 !!       J.Stein              10/10/96 change Xsrc into XSRCM and XRCT
-!!       J.P. Lafore          30/07/96 add HFMFILE and HDADFILE writing
+!!       J.P. Lafore          30/07/96 add YFMFILE and HDADFILE writing
 !!                                     corresponding to MY_NAME and DAD_NAME (for nesting)
 !!       V.Masson      08/10/96 add LTHINSHELL
 !!       J.-P. Pinty   15/12/96 add the microphysics (ice)
@@ -270,10 +269,9 @@ IMPLICIT NONE
 !
 !*       0.1   Declarations of arguments
 !
-CHARACTER(LEN=28), INTENT(IN) :: HFMFILE      ! Name of FM-file to write
 CHARACTER(LEN=28), INTENT(IN) :: HDADFILE     ! corresponding FM-file name of 
                                               ! its DAD model
-TYPE(TFILEDATA),OPTIONAL,INTENT(IN) :: TPFILE ! File characteristics
+TYPE(TFILEDATA),   INTENT(IN) :: TPFILE ! File characteristics
 !
 !*       0.2   Declarations of local variables
 !
@@ -283,6 +281,7 @@ INTEGER           :: IRESP          ! IRESP  : return-code if a problem appears
 INTEGER           :: IGRID          ! IGRID : grid indicator
 INTEGER           :: ILENCH         ! ILENCH : length of comment string 
 !
+CHARACTER(LEN=28) :: YFMFILE        ! Name of FM-file to write
 CHARACTER(LEN=16) :: YRECFM         ! Name of the article to be written
 CHARACTER(LEN=100):: YCOMMENT       ! Comment string
 CHARACTER (LEN=2) :: YDIR           ! Type of the data field
@@ -330,6 +329,7 @@ CALL FMLOOK_ll(CLUOUT,CLUOUT,ILUOUT,IRESP)
 ALLOCATE(ZWORK2D(SIZE(XTHT,1),SIZE(XTHT,2)))
 ALLOCATE(ZWORK3D(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)))
 !
+YFMFILE = TPFILE%CNAME
 !
 !*       0.2     ARRAYS BOUNDS INITIALIZATION
 !
@@ -343,7 +343,7 @@ IKE=IKU-JPVEXT
 !*       1.     WRITES IN THE LFI FILE
 ! 
 !
-!*       1.0    HFMFILE and HDADFILE writing :
+!*       1.0    YFMFILE and HDADFILE writing :
 !
 YDIR='--'
 !
@@ -351,53 +351,49 @@ YRECFM='MASDEV'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NMASDEV,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
 YRECFM='BUGFIX'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NBUGFIX,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NBUGFIX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='BIBUSER'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,CBIBUSER,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,CBIBUSER,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='PROGRAM'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,CPROGRAM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,CPROGRAM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='FILETYPE'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-IF (PRESENT(TPFILE)) THEN
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CTYPE,IGRID,ILENCH,YCOMMENT,IRESP)
-ELSE
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,"UNKNOWN",IGRID,ILENCH,YCOMMENT,IRESP)
-ENDIF
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TPFILE%CTYPE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='MY_NAME'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,HFMFILE,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,YFMFILE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='DAD_NAME'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,HDADFILE,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,HDADFILE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 IF (LEN_TRIM(HDADFILE)>0) THEN
-  CALL FMWRIT(HFMFILE,'DXRATIO',CLUOUT,YDIR,NDXRATIO_ALL(IMI),0,ILENCH,YCOMMENT,IRESP)
-  CALL FMWRIT(HFMFILE,'DYRATIO',CLUOUT,YDIR,NDYRATIO_ALL(IMI),0,ILENCH,YCOMMENT,IRESP)
-  CALL FMWRIT(HFMFILE,'XOR' ,CLUOUT,YDIR,NXOR_ALL(IMI) ,0,ILENCH,YCOMMENT,IRESP)
-  CALL FMWRIT(HFMFILE,'YOR' ,CLUOUT,YDIR,NYOR_ALL(IMI) ,0,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,'DXRATIO',CLUOUT,YDIR,NDXRATIO_ALL(IMI),0,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,'DYRATIO',CLUOUT,YDIR,NDYRATIO_ALL(IMI),0,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,'XOR' ,CLUOUT,YDIR,NXOR_ALL(IMI) ,0,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,'YOR' ,CLUOUT,YDIR,NYOR_ALL(IMI) ,0,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !*       1.1    Type and Dimensions :
@@ -406,31 +402,31 @@ YRECFM='STORAGE_TYPE'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,CSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,CSTORAGE_TYPE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='IMAX'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NIMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NIMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='JMAX'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NJMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NJMAX_ll,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='JPHEXT'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,JPHEXT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,JPHEXT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='KMAX'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NKMAX,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NKMAX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !*       1.2    Grid variables :
 !
@@ -439,19 +435,19 @@ IF (.NOT.LCARTESIAN) THEN
   YCOMMENT=' '
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRPK,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRPK,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
   YRECFM='LONORI'
   YCOMMENT='DEGREES'
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLONORI,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='LATORI'
   YCOMMENT='DEGREES'
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLATORI,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
 !* diagnostic of 1st mass point
 !
@@ -467,59 +463,59 @@ IF (.NOT.LCARTESIAN) THEN
   YCOMMENT='DEGREES'
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZLONOR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZLONOR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='LATOR'
   YCOMMENT='DEGREES'
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZLATOR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZLATOR,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF 
 !
 YRECFM='THINSHELL'
 YCOMMENT=' '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LTHINSHELL,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LTHINSHELL,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='LAT0'
 YCOMMENT='reference latitude for conformal projection (DEGREES)'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLAT0,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLAT0,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
 YRECFM='LON0'
 YCOMMENT='reference longitude for conformal projection (DEGREES)'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLON0,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLON0,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='BETA'
 YCOMMENT='rotation angle (DEGREES)'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XBETA,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XBETA,IGRID,ILENCH,YCOMMENT,IRESP)
 ! 
 YRECFM='XHAT'
 YDIR='XX'
 YCOMMENT='Position x in the conformal or cartesian plane (METERS)'
 IGRID=2
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XXHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XXHAT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='YHAT'
 YDIR='YY'
 YCOMMENT='Position y in the conformal or cartesian plane (METERS)'
 IGRID=3
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XYHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XYHAT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='ZHAT'
 YDIR='--'
 YCOMMENT='height level without orography (METERS)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
 ! #ifdef MNH_NCWRIT
 ! !
 ! !*SB*MAY2012
@@ -529,7 +525,7 @@ CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XZHAT,IGRID,ILENCH,YCOMMENT,IRESP)
 !  YCOMMENT='X_Y_Z_ALTitude (M)'
 !  IGRID=4
 !  ILENCH=LEN(YCOMMENT)
-!  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XZZ,IGRID,ILENCH,YCOMMENT,IRESP)
+!  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XZZ,IGRID,ILENCH,YCOMMENT,IRESP)
 ! END IF
 ! #endif 
 IF (.NOT.LCARTESIAN) THEN
@@ -537,13 +533,13 @@ IF (.NOT.LCARTESIAN) THEN
  YCOMMENT='X_Y_latitude (degree)'
  IGRID=1
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLAT,IGRID,ILENCH,YCOMMENT,IRESP)
 
  YRECFM='LON'
  YCOMMENT='X_Y_longitude (degree)'
  IGRID=1
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XLON,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 YRECFM='ZS'
@@ -551,21 +547,21 @@ YDIR='XY'
 YCOMMENT='orography (METERS)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XZS,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XZS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='ZSMT'
 YDIR='XY'
 YCOMMENT='smooth orography (METERS)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XZSMT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XZSMT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='SLEVE'
 YDIR='--'
 YCOMMENT=''
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LSLEVE,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LSLEVE,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 IF (LSLEVE) THEN
   YRECFM='LEN1'
@@ -573,29 +569,29 @@ IF (LSLEVE) THEN
   YCOMMENT=''
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLEN1,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLEN1,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='LEN2'
   YDIR='--'
   YCOMMENT=''
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLEN2,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLEN2,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 YDIR='--'
 !
 YRECFM='DTCUR'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTCUR,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTCUR,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='DTEXP'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTEXP,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTEXP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='DTMOD'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTMOD,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTMOD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='DTSEG'
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTSEG,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTSEG,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !*       1.3    Configuration  variables :
 !
@@ -603,49 +599,49 @@ YRECFM='L1D'
 YCOMMENT='  '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,L1D,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,L1D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='L2D'
 YCOMMENT='  '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,L2D,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,L2D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='PACK'
 YCOMMENT='  '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LPACK,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LPACK,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='CARTESIAN'
 YCOMMENT='Logical for cartesian geometry'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LCARTESIAN,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCARTESIAN,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='LBOUSS'       
 YCOMMENT='Logical for boussinesq'         
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LBOUSS,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LBOUSS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='SURF'
 YCOMMENT='  '
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,CSURF,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,CSURF,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='CPL_AROME'
 YCOMMENT='Logical for arome coupling file'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LCPL_AROME,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCPL_AROME,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='COUPLING'
 YCOMMENT='Logical for coupling file'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,LCOUPLING,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,LCOUPLING,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !*       1.4    Prognostic variables :
 !
@@ -658,12 +654,15 @@ YDIR='XY'
 !  CALL EXTRAPOL('E',XUT)
 !  CALL EXTRAPOL('N',XUT)
 !  CALL EXTRAPOL('S',XUT)
+
+
+
 CALL MPPDB_CHECK3D(XUT,"write_lfifmn before FMWRIT::XUT",PRECISION)
 YRECFM='UT'
 YCOMMENT='X_Y_Z_U component of wind (m/s)'
 IGRID=2
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUT,IGRID,ILENCH,YCOMMENT,IRESP)
 CALL MPPDB_CHECK3D(XUT,"write_lfifmn after FMWRIT::XUT",PRECISION)
 !
 !20131128 check XVT-> X_Y_W_V wind component for PRC
@@ -673,19 +672,19 @@ YRECFM='VT'
 YCOMMENT='X_Y_Z_V component of wind (m/s)'
 IGRID=3
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='WT'
 YCOMMENT='X_Y_Z_vertical wind (m/s)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='THT'
 YCOMMENT='X_Y_Z_potential temperature (K)'
 IGRID=1
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHT,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !*       1.4.2  Time t-dt:
 
@@ -694,37 +693,37 @@ IF ( (CUVW_ADV_SCHEME == 'CEN4TH') .AND. (CTEMP_SCHEME == 'LEFR') ) THEN
   YCOMMENT='X_Y_Z_U component of wind (m/s)'
   IGRID=2
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='VM'
   YCOMMENT='X_Y_Z_V component of wind (m/s)'
   IGRID=3
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='WM'
   YCOMMENT='X_Y_Z_vertical wind (m/s)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
    YRECFM='DUM'
   YCOMMENT='X_Y_Z_U component of wind (m/s)'
   IGRID=2
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDUM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDUM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='DVM'
   YCOMMENT='X_Y_Z_V component of wind (m/s)'
   IGRID=3
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDVM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDVM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='DWM'
   YCOMMENT='X_Y_Z_vertical wind (m/s)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDWM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDWM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 END IF
 
@@ -737,120 +736,120 @@ IF (MEAN_COUNT /= 0) THEN
   IGRID=2
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XUM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='U2ME'
   YCOMMENT='X_Y_Z_U component of mean wind variance(m2/s2)'
   IGRID=2
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XU2_MEAN/MEAN_COUNT-XUM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='UMMA'
   YCOMMENT='X_Y_Z_U component of max wind (m/s)'
   IGRID=2
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='VMME'
   YCOMMENT='X_Y_Z_V component of mean wind (m/s)'
   IGRID=3
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XVM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='V2ME'
   YCOMMENT='X_Y_Z_V component of mean wind variance (m2/s2)'
   IGRID=3
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XV2_MEAN/MEAN_COUNT-XVM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='VMMA'
   YCOMMENT='X_Y_Z_V component of max wind (m/s)'
   IGRID=3
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='WMME'
   YCOMMENT='X_Y_Z_vertical mean wind (m/s)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
  ZWORK3D = XWM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='W2ME'
   YCOMMENT='X_Y_Z_vertical mean wind  variance(m2/s2)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XW2_MEAN/MEAN_COUNT-XWM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='WMMA'
   YCOMMENT='X_Y_Z_vertical max wind (m/s)'
   IGRID=4
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='THMME'
   YCOMMENT='X_Y_Z_mean potential temperature (K)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XTHM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='TH2ME'
   YCOMMENT='X_Y_Z_mean potential temperature variance (K2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XTH2_MEAN/MEAN_COUNT-XTHM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='THMMA'
   YCOMMENT='X_Y_Z_max potential temperature (K)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='TEMPMME'
   YCOMMENT='X_Y_Z_mean temperature (K)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D= XTEMPM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='TEMP2ME'
   YCOMMENT='X_Y_Z_mean temperature variance (K2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XTEMP2_MEAN/MEAN_COUNT-XTEMPM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='TEMPMMA'
   YCOMMENT='X_Y_Z_max  temperature (K)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTEMPM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTEMPM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   YRECFM='PABSMME'
   YCOMMENT='X_Y_Z_mean ABSolute Pressure (Pa)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D= XPABSM_MEAN/MEAN_COUNT
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='PABS2ME'
   YCOMMENT='X_Y_Z_mean ABSolute Pressure variance(Pa2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
   ZWORK3D = XPABS2_MEAN/MEAN_COUNT-XPABSM_MEAN**2/MEAN_COUNT**2
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='PABSMMA'
   YCOMMENT='X_Y_Z_max ABSolute Pressure (Pa)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPABSM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPABSM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   IF (CTURB /= 'NONE') THEN
     YRECFM='TKEMME'
@@ -858,13 +857,13 @@ IF (MEAN_COUNT /= 0) THEN
     IGRID=1
     ILENCH=LEN(YCOMMENT)
     ZWORK3D= XTKEM_MEAN/MEAN_COUNT
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     YRECFM='TKEMMA'
     YCOMMENT='X_Y_Z_max kinetic energy (m2/s2)'
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKEM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTKEM_MAX,IGRID,ILENCH,YCOMMENT,IRESP)
   END IF
 !
 END IF
@@ -875,14 +874,14 @@ IF (CTURB /= 'NONE') THEN
   YCOMMENT='X_Y_Z_Turbulent Kinetic Energy (M**2/S**2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTKET,IGRID,ILENCH,YCOMMENT,IRESP)
 !
  IF (CPROGRAM == 'MESONH') THEN
   YRECFM='TKEMS'
   YCOMMENT='X_Y_Z_Turbulent Kinetic Energy adv source (M**2/S**3)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRTKEMS,IGRID,ILENCH,YCOMMENT,IRESP)  
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRTKEMS,IGRID,ILENCH,YCOMMENT,IRESP)  
  END IF
 END IF
 !
@@ -892,7 +891,7 @@ YRECFM='PABST'
 YCOMMENT='X_Y_Z_ABSolute Pressure (Pa)'
 IGRID=1
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPABST,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 IF (NRR >=1) THEN
   IRR=0
@@ -902,7 +901,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RVT'
     YCOMMENT='X_Y_Z_Vapor mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
   END IF 
   IF (LUSERC) THEN
@@ -910,7 +909,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RCT'
     YCOMMENT='X_Y_Z_Cloud mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     WRITE (ILUOUT,*) IRR,' RC min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll)
   END IF
@@ -919,7 +918,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RRT'
     YCOMMENT='X_Y_Z_Rain mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     WRITE (ILUOUT,*) IRR,' RR min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll)
   END IF 
@@ -928,14 +927,14 @@ IF (NRR >=1) THEN
     YRECFM= 'RIT'
     YCOMMENT='X_Y_Z_Ice mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, &
                 YCOMMENT,IRESP)
     WRITE (ILUOUT,*) IRR,' RI min-max ',MIN_ll(XRT(:,:,:,IRR),INFO_ll),MAX_ll(XRT(:,:,:,IRR),INFO_ll)
     IF ( CPROGRAM == 'MESONH' .AND. CCLOUD(1:3) == 'ICE') THEN
       YRECFM= 'CIT'
       YCOMMENT='X_Y_Z_Cloud Ice concentration (/M3)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XCIT(:,:,:),   IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XCIT(:,:,:),   IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
     END IF
   END IF 
@@ -944,7 +943,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RST'
     YCOMMENT='X_Y_Z_Snow mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH, &
                 YCOMMENT,IRESP)
     WRITE (ILUOUT,*) IRR,' RS min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR))
   END IF
@@ -953,7 +952,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RGT'
     YCOMMENT='X_Y_Z_Graupel mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     WRITE (ILUOUT,*) IRR,' RG min-max ',MINVAL(XRT(:,:,:,IRR)),MAXVAL(XRT(:,:,:,IRR))
   END IF 
@@ -962,7 +961,7 @@ IF (NRR >=1) THEN
     YRECFM= 'RHT'
     YCOMMENT='X_Y_Z_Hail mixing Ratio (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRT(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
   END IF 
 END IF
@@ -975,7 +974,7 @@ IF (NSV >=1) THEN
     WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -984,7 +983,7 @@ IF (NSV >=1) THEN
     YRECFM=TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))//'T'
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -993,7 +992,7 @@ IF (NSV >=1) THEN
     YRECFM=TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))//'T'
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (/M3)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -1061,7 +1060,7 @@ IF (NSV >=1) THEN
 !
 !
      ILENCH=LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
           YCOMMENT,IRESP)
      JSA=JSA+1
   END DO
@@ -1074,7 +1073,7 @@ IF (NSV >=1) THEN
      YCOMMENT    = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)'
      IGRID       = 1
      ILENCH      = LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
      ZWORK2D(:,:)  = XRHOLW*XINPRR(:,:)*XSVT(:,:,2,NSV_LIMA_SCAVMASS)/ &
                                         max( 1.e-20,XRT(:,:,2,3) ) !~2=at ground level
@@ -1082,7 +1081,7 @@ IF (NSV >=1) THEN
      YCOMMENT    = 'X_Y_INstantaneous Precipitating Aerosol Rate (kg/m2/s)'
      IGRID       = 1
      ILENCH      = LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
 !
      ZWORK2D(:,:)  = XACPAP(:,:)
@@ -1090,7 +1089,7 @@ IF (NSV >=1) THEN
      YCOMMENT    = 'X_Y_ACcumulated Precipitating Aerosol Rate (kg/m2)'
      IGRID       = 1
      ILENCH      = LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
@@ -1108,7 +1107,7 @@ IF (NSV >=1) THEN
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = 0.
     ZWORK3D(:,:,:) = XSVT(:,:,:,JSV) * XRHODREF(:,:,:) ! C/kg --> C/m3
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -1116,19 +1115,19 @@ IF (NSV >=1) THEN
     YRECFM='EFIELDU'
     YCOMMENT='X_Y_Z_EFIELDU (V/m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDU(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDU(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     YRECFM='EFIELDV'
     YCOMMENT='X_Y_Z_EFIELDV (V/m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDV(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDV(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     YRECFM='EFIELDW'
     YCOMMENT='X_Y_Z_EFIELDW (V/m)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDW(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEFIELDW(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1136,7 +1135,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_EMODULE (V/m)'
     ZWORK3D(:,:,:) = (XEFIELDU**2 + XEFIELDV**2 + XEFIELDW**2)**0.5
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1144,7 +1143,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_NI_IAGGS (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = XNI_IAGGS(:,:,:) * 1.E12
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1152,7 +1151,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_NI_IDRYG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = XNI_IDRYG(:,:,:) * 1.E12
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1160,7 +1159,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_NI_SDRYG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = XNI_SDRYG(:,:,:) * 1.E12
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1168,7 +1167,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_INDUC_CG (pC/m3/s)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = XIND_RATE(:,:,:) * 1.E12
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK2D(:,:) = 0.
@@ -1176,7 +1175,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_TRIG_IC (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK2D(:,:) = FLOAT(NMAP_TRIG_IC(:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK2D(:,:) = 0.
@@ -1184,7 +1183,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_IMPACT_CG (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK2D(:,:) = FLOAT(NMAP_IMPACT_CG(:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK2D(:,:) = 0.
@@ -1192,7 +1191,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_CG (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK2D(:,:) = FLOAT(NMAP_2DAREA_CG(:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK2D(:,:) = 0.
@@ -1200,7 +1199,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_2DAREA_IC (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK2D(:,:) = FLOAT(NMAP_2DAREA_IC(:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D(:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1208,7 +1207,7 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_3DCG (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = FLOAT(NMAP_3DCG(:,:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     ZWORK3D(:,:,:) = 0.
@@ -1216,14 +1215,14 @@ IF (NSV >=1) THEN
     YCOMMENT='X_Y_Z_FLASH_MAP_3DIC (no unit)'
     ILENCH=LEN(YCOMMENT)
     ZWORK3D(:,:,:) = FLOAT(NMAP_3DIC(:,:,:))
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D(:,:,:),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
  !
     IF (LLNOX_EXPLICIT) THEN
       YRECFM='LINOX'
       WRITE(YCOMMENT,'(A6,A3,I3.3,A10)')'X_Y_Z_','SVT',JSV,' (mol/mol)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,NSV_LNOXEND),IGRID,ILENCH, &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,NSV_LNOXEND),IGRID,ILENCH, &
                   YCOMMENT,IRESP)
       JSA=JSA+1
     END IF
@@ -1233,7 +1232,7 @@ IF (NSV >=1) THEN
     YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T'
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -1243,7 +1242,7 @@ IF (NSV >=1) THEN
       WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
       WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                   YCOMMENT,IRESP)
       JSA=JSA+1
     END DO
@@ -1253,26 +1252,26 @@ IF (NSV >=1) THEN
       YRECFM= 'SUPSATMAX'
       YCOMMENT='X_Y_Z_Supersaturation'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSUPSAT(:,:,:),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSUPSAT(:,:,:),IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
 !
       YRECFM= 'NACT'
       YCOMMENT='X_Y_Z_Nact'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XNACT(:,:,:),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XNACT(:,:,:),IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
  END IF
  IF ( ((CCLOUD == 'KHKO') .OR.(CCLOUD == 'C2R2')) .AND. LSUPSAT) THEN
       YRECFM= 'SSPRO'
       YCOMMENT='X_Y_Z_Supersaturation'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSSPRO(:,:,:),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSSPRO(:,:,:),IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
 !
       YRECFM= 'NPRO'
       YCOMMENT='X_Y_Z_Nact'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XNPRO(:,:,:),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XNPRO(:,:,:),IGRID,ILENCH,  &
                   YCOMMENT,IRESP)
  END IF
 !
@@ -1283,7 +1282,7 @@ IF (NSV >=1) THEN
     WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -1295,7 +1294,7 @@ IF (NSV >=1) THEN
     WRITE(YRECFM,'(A3,I3.3)')'SVT',JSV
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (KG/KG)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
     JSA=JSA+1
   END DO
@@ -1320,7 +1319,7 @@ IF (NSV >=1) THEN
       YRECFM=TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))//'T'
       WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                   YCOMMENT,IRESP)
       YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) ! without T
     END DO
@@ -1329,7 +1328,7 @@ IF (NSV >=1) THEN
         YRECFM=TRIM(UPCASE(CICNAMES(JSV-NSV_CHICBEG+1)))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                     YCOMMENT,IRESP)
         YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1) ! without M
       END DO
@@ -1341,19 +1340,19 @@ IF (NSV >=1) THEN
     YCOMMENT    = 'X_Y_Accumulated moles of aqueous species at the surface (mol i/m2)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     END IF
     IF (LUSECHAQ.AND.LCH_PH) THEN  ! pH values in cloud
       YRECFM = 'PHC'
       YCOMMENT='X_Y_Z_PHC'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHC,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPHC,IGRID,ILENCH,YCOMMENT,IRESP)
       IF (NRR>=3) THEN
         YRECFM = 'PHR'
         YCOMMENT='X_Y_Z_PHR'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPHR,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPHR,IGRID,ILENCH,YCOMMENT,IRESP)
         ! compute mean pH in accumulated surface water
         !ZWORK2D(:,:) = 10**(-XCH_PHINIT)
         WHERE (XACPRR > 0.)
@@ -1367,7 +1366,7 @@ IF (NSV >=1) THEN
         YRECFM = 'MEANPHR'
         YCOMMENT='X_Y_MEAN_PH'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH,YCOMMENT,IRESP)        
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D,IGRID,ILENCH,YCOMMENT,IRESP)        
       ENDIF
     ENDIF
   ELSE IF (LCH_CONV_LINOX) THEN
@@ -1375,7 +1374,7 @@ IF (NSV >=1) THEN
       YRECFM='LINOXT'
       WRITE(YCOMMENT,'(A6,A3,I3.3,A)') 'X_Y_Z_','SVT',JSV,' (ppp)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
                   YCOMMENT,IRESP)
       YCHNAMES(JSV-JSA)=YRECFM(1:LEN_TRIM(YRECFM)-1)
     END DO
@@ -1390,7 +1389,7 @@ IF (NSV >=1) THEN
       YRECFM=TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))//'T'
       WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                   YCOMMENT,IRESP)
       IF (JSV==NSV_AERBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERBEG ',JSV
       IF (JSV==NSV_AEREND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AEREND ',JSV
@@ -1401,7 +1400,7 @@ IF (NSV >=1) THEN
         YRECFM=TRIM(CDEAERNAMES(JSV-NSV_AERDEPBEG+1))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (JSV==NSV_AERDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPBEG ',JSV
         IF (JSV==NSV_AERDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_AERDEPEND ',JSV
@@ -1443,7 +1442,7 @@ IF (IMOMENTS == 1) THEN
      YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'  
      WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
      ILENCH=LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,&
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,&
                      YCOMMENT,IRESP)
 
           YDSTNAMES((JMODE-1)*IMOMENTS+1)=YRECFM(1:LEN_TRIM(YRECFM)-1)
@@ -1458,7 +1457,7 @@ ELSE
     YRECFM = TRIM(YPDUST_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
                      YCOMMENT,IRESP)
     YDSTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1)
    END DO ! Loop on moment
@@ -1476,7 +1475,7 @@ END IF ! Valeur IMOMENTS
         YRECFM=TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (JSV==NSV_DSTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTBEG ',JSV
         IF (JSV==NSV_DSTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTEND ',JSV
@@ -1488,7 +1487,7 @@ END IF ! Valeur IMOMENTS
         YRECFM=TRIM(CDEDSTNAMES(JSV-NSV_DSTDEPBEG+1))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (JSV==NSV_DSTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPBEG ',JSV
         IF (JSV==NSV_DSTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_DSTDEPEND ',JSV
@@ -1530,7 +1529,7 @@ END IF ! Valeur IMOMENTS
           YRECFM = TRIM(YPSALT_INI(ISV_NAME_IDX))//'T'  !The refererence which will be written to file
           WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
           ILENCH=LEN(YCOMMENT)
-          CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
+          CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH, &
                      YCOMMENT,IRESP)
           YSLTNAMES((JMODE-1)*IMOMENTS+JMOM)=YRECFM(1:LEN_TRIM(YRECFM)-1)
         END DO ! Loop on moments
@@ -1547,7 +1546,7 @@ END IF ! Valeur IMOMENTS
         YRECFM=TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (JSV==NSV_SLTBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTBEG ',JSV
         IF (JSV==NSV_SLTEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTEND ',JSV
@@ -1559,7 +1558,7 @@ END IF ! Valeur IMOMENTS
         YRECFM=TRIM(CDESLTNAMES(JSV-NSV_SLTDEPBEG+1))//'T'
         WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (ppp)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,  &
                     YCOMMENT,IRESP)
         IF (JSV==NSV_SLTDEPBEG) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPBEG ',JSV
         IF (JSV==NSV_SLTDEPEND) WRITE(ILUOUT,*)'MNHC: write_lfin:NSV_SLTDEPEND ',JSV
@@ -1575,7 +1574,7 @@ END IF ! Valeur IMOMENTS
   YCOMMENT=' '
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',ICH_NBR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'--',ICH_NBR,IGRID,ILENCH,YCOMMENT,IRESP)
   !
   IF (ICH_NBR/=0) THEN
     YRECFM='NSV.TITRE'
@@ -1590,7 +1589,7 @@ END IF ! Valeur IMOMENTS
         ICH_NAMES(ILREC*(JSV-1)+JT) = ICHAR(YCHNAMES(JSV)(JT:JT))
       ENDDO
     ENDDO
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',ICH_NAMES,IGRID,ILENCH,YCOMMENT,IRESP)
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'--',ICH_NAMES,IGRID,ILENCH,YCOMMENT,IRESP)
     DEALLOCATE(YCHNAMES,ICH_NAMES)
   END IF 
   !
@@ -1599,7 +1598,7 @@ END IF ! Valeur IMOMENTS
     YRECFM=TRIM(CLGNAMES(JSV-NSV_LGBEG+1))//'T'
     WRITE(YCOMMENT,'(A6,A3,I3.3,A8)')'X_Y_Z_','SVT',JSV,' (M)'
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSVT(:,:,:,JSV),IGRID,ILENCH,    &
                 YCOMMENT,IRESP)
   END DO
 END IF
@@ -1609,35 +1608,35 @@ YRECFM='LSUM'
 YCOMMENT='X_Y_Z_Large Scale U component (M/S)'
 IGRID=2
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLSUM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSUM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='LSVM'
 YCOMMENT='X_Y_Z_Large Scale V component (M/S)'
 IGRID=3
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLSVM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSVM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='LSWM'
 YCOMMENT='X_Y_Z_Large Scale vertical wind (M/S)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLSWM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSWM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='LSTHM'
 YCOMMENT='X_Y_Z_Large Scale potential Temperature (K)'
 IGRID=1
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLSTHM,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSTHM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 IF (LUSERV) THEN
   YRECFM='LSRVM'
   YCOMMENT='X_Y_Z_Large Scale Vapor Mixing Ratio (KG/KG)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XLSRVM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XLSRVM,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
-CALL WRITE_LB_n(HFMFILE)
+CALL WRITE_LB_n(YFMFILE)
 !
 !
 YRECFM='DRYMASST'
@@ -1645,7 +1644,7 @@ YDIR='--'
 YCOMMENT='Total Dry Mass (KG)'
 IGRID=0
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDRYMASST,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRYMASST,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YDIR='XY'
 !
@@ -1654,7 +1653,7 @@ IF( CTURB /= 'NONE' .AND. CTOM=='TM06') THEN
   YCOMMENT='X_Y_BL_DEPTH (M)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 IF( CTURB /= 'NONE' .AND. LRMC01) THEN
@@ -1662,7 +1661,7 @@ IF( CTURB /= 'NONE' .AND. LRMC01) THEN
   YCOMMENT='X_Y_SBL_DEPTH (M)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSBL_DEPTH,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN
@@ -1670,7 +1669,7 @@ IF( CTURB /= 'NONE' .AND. (CPROGRAM == 'MESONH' .OR. CPROGRAM == 'DIAG')) THEN
   YCOMMENT='X_Y_WTHVMF (mK/s)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWTHVMF,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWTHVMF,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
@@ -1679,13 +1678,13 @@ IF( NRR > 1 .AND. CTURB /= 'NONE' ) THEN
   YCOMMENT='X_Y_Z_normalized 2nd_order moment s_r_c/2Sigma_s2 (KG/KG**2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSRCT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='SIGS'
   YCOMMENT='X_Y_Z_Sigma_s from turbulence scheme (KG/KG**2)'
   IGRID=1
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSIGS,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSIGS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 END IF
 !
@@ -1697,19 +1696,19 @@ YRECFM='RHOREFZ'
 YCOMMENT='rhodz for reference state without orography (kg/m3)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRHODREFZ,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRHODREFZ,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='THVREFZ'
 YCOMMENT='thetavz for reference state without orography (K)'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHVREFZ,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHVREFZ,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 YRECFM='EXNTOP'
 YCOMMENT='Exner function at model top'
 IGRID=4
 ILENCH=LEN(YCOMMENT)
-CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEXNTOP,IGRID,ILENCH,YCOMMENT,IRESP)
+CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEXNTOP,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !*       1.6  Tendencies                                         
 !
@@ -1720,25 +1719,25 @@ IF (CPROGRAM == 'MESONH') THEN
  YCOMMENT='X_Y_Z_US_PRES'                 
  IGRID=2
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRUS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRUS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
 !
  YRECFM='VS_PRES'
  YCOMMENT='X_Y_Z_VS_PRES'                       
  IGRID=3
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRVS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRVS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
 !
  YRECFM='WS_PRES'
  YCOMMENT='X_Y_Z_WS_PRES'             
  IGRID=4
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRWS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRWS_PRES,IGRID,ILENCH,YCOMMENT,IRESP)
 !
  YRECFM='THS_CLD'
  YCOMMENT='X_Y_Z_THS_CLD'                 
  IGRID=1
  ILENCH=LEN(YCOMMENT)
- CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRTHS_CLD,IGRID,ILENCH,YCOMMENT,IRESP)
+ CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRTHS_CLD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
  IF (NRR >=1) THEN
    IRR=0
@@ -1748,7 +1747,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RVS_CLD'
     YCOMMENT='X_Y_Z_RVS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERC) THEN
@@ -1756,7 +1755,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RCS_CLD'
     YCOMMENT='X_Y_Z_RCS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERR) THEN
@@ -1764,7 +1763,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RRS_CLD'
     YCOMMENT='X_Y_Z_RCS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERI) THEN
@@ -1772,7 +1771,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RIS_CLD'
     YCOMMENT='X_Y_Z_RIS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERS) THEN
@@ -1780,7 +1779,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RSS_CLD'
     YCOMMENT='X_Y_Z_RSS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERG) THEN
@@ -1788,7 +1787,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RGS_CLD'
     YCOMMENT='X_Y_Z_RGS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
    IF (LUSERH) THEN
@@ -1796,7 +1795,7 @@ IF (CPROGRAM == 'MESONH') THEN
     YRECFM= 'RHS_CLD'
     YCOMMENT='X_Y_Z_RHS_CLD'                        
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
    END IF 
  END IF 
@@ -1808,14 +1807,14 @@ IF (NSV >=1) THEN
       YRECFM='RSVS_CLD1'
       YCOMMENT='X_Y_Z_RHS_CLD'                        
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     END IF
     IF (JSV == NSV_C2R2END ) THEN
       YRECFM='RSVS_CLD2'
       YCOMMENT='X_Y_Z_RHS_CLD'                        
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRRS_CLD(:,:,:,IRR),IGRID,ILENCH,  &
                 YCOMMENT,IRESP)
     END IF
    END DO
@@ -1831,12 +1830,12 @@ IF (CRAD /= 'NONE') THEN
   YRECFM='DTRAD_FULL'
   YCOMMENT='-'
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTRAD_FULL,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTRAD_FULL,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM='DTRAD_CLLY'
   YCOMMENT='-'
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTRAD_CLONLY,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTRAD_CLONLY,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YDIR='XY'
 !
@@ -1844,73 +1843,73 @@ IF (CRAD /= 'NONE') THEN
   YCOMMENT    = 'X_Y_Z_RADiative heating/cooling rate (K/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHRAD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'FLALWD'
   YCOMMENT    = 'X_Y_Downward Long Waves on FLAT surface (W/M2)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XFLALWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DIRFLASWD'
   YCOMMENT    = 'X_Y_DIRect Downward Long Waves on FLAT surface (W/M2)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIRFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'SCAFLASWD'
   YCOMMENT    = 'X_Y_SCAttered Downward Long Waves on FLAT surface (W/M2)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSCAFLASWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DIRSRFSWD'
   YCOMMENT    = 'X_Y_DIRect Downward Long Waves (W/M2)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIRSRFSWD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'CLEARCOL_TM1'
   YCOMMENT    = 'TRACE OF CLOUD'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) 
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NCLEARCOL_TM1,IGRID,ILENCH,YCOMMENT,IRESP) 
 !
   YRECFM      = 'ZENITH'
   YCOMMENT    = 'X_Y_ZENITH (RAD)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XZENITH,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XZENITH,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'AZIM'
   YCOMMENT    = 'X_Y_AZIMuth (RAD)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XAZIM,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XAZIM,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'DIR_ALB'
   YCOMMENT    = 'X_Y_DIRect ALBedo (-)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDIR_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'SCA_ALB'
   YCOMMENT    = 'X_Y_SCAttered ALBedo (-)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XSCA_ALB,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'EMIS'
   YCOMMENT    = 'X_Y_EMISsivity (-)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XEMIS,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XEMIS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YRECFM      = 'TSRAD'
   YCOMMENT    = 'X_Y_RADiative Surface Temperature (K)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTSRAD,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 ENDIF
 !
@@ -1920,7 +1919,7 @@ IF (NRR > 1 .AND. CPROGRAM == 'MESONH') THEN
   IGRID=1
   ILENCH=LEN(YCOMMENT) 
   YDIR='XY'
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XCLDFR,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !
@@ -1935,7 +1934,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   YDIR='--'
   YCOMMENT    = '-'
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTDCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTDCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   YDIR='XY'
 !
@@ -1943,7 +1942,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   YCOMMENT    = 'X_Y_COUNTCONV'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NCOUNTCONV,IGRID,ILENCH,YCOMMENT, &
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NCOUNTCONV,IGRID,ILENCH,YCOMMENT, &
               IRESP)
 !
 !
@@ -1951,35 +1950,35 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   YCOMMENT    = 'X_Y_Z_CONVective heating/cooling rate (K/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
   YRECFM      = 'DRVCONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_v tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRVCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
   YRECFM      = 'DRCCONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_c tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRCCONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
   YRECFM      = 'DRICONV'
   YCOMMENT    = 'X_Y_Z_CONVective R_i tendency (1/s)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRICONV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
 !
   YRECFM      = 'PRCONV'
   YCOMMENT    = 'X_Y_CONVective instantaneous Precipitation Rate (MM/H)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPRCONV*3.6E6,IGRID,ILENCH, &
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRCONV*3.6E6,IGRID,ILENCH, &
                                                         YCOMMENT,IRESP)
 !
 !
@@ -1987,7 +1986,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   YCOMMENT    = 'X_Y_CONVective ACcumulated Precipitation rate (MM)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPACCONV*1.0E3,IGRID,ILENCH, &
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPACCONV*1.0E3,IGRID,ILENCH, &
                                                          YCOMMENT,IRESP)
 !
 !
@@ -1995,7 +1994,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
   YCOMMENT    = 'X_Y_CONVective instantaneous Precipitation Rate for Snow (MM/H)'
   IGRID       = 1
   ILENCH      = LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPRSCONV*3.6E6,IGRID,ILENCH, &
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPRSCONV*3.6E6,IGRID,ILENCH, &
                                                         YCOMMENT,IRESP)
 !
   IF ( LCH_CONV_LINOX ) THEN 
@@ -2003,28 +2002,28 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
     YCOMMENT    = 'X_Y_IntraCloud lightning Rate (/s)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XIC_RATE,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XIC_RATE,IGRID,ILENCH, &
                                                     YCOMMENT,IRESP)
     
     YRECFM      = 'CG_RATE'
     YCOMMENT    = 'X_Y_CloudGround lightning Rate (/s)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCG_RATE,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCG_RATE,IGRID,ILENCH, &
                                                     YCOMMENT,IRESP)
     
     YRECFM      = 'IC_TOTAL_NB'
     YCOMMENT    = 'X_Y_IntraCloud lightning Number (-)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XIC_TOTAL_NUMBER,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XIC_TOTAL_NUMBER,IGRID,ILENCH, &
                                                             YCOMMENT,IRESP)
     
     YRECFM      = 'CG_TOTAL_NB'
     YCOMMENT    = 'X_Y_CloudGround lightning Number (-)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XCG_TOTAL_NUMBER,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XCG_TOTAL_NUMBER,IGRID,ILENCH, &
                                                             YCOMMENT,IRESP)
   END IF
 !
@@ -2035,35 +2034,35 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
       WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH      = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_C2R2BEG, NSV_C2R2END
       YRECFM = 'DSVCONV_'//TRIM(C2R2NAMES(JSV-NSV_C2R2BEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_C1R3BEG, NSV_C1R3END
       YRECFM = 'DSVCONV_'//TRIM(C1R3NAMES(JSV-NSV_C1R3BEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_ELECBEG, NSV_ELECEND
       YRECFM = 'DSVCONV_'//TRIM(CELECNAMES(JSV-NSV_ELECBEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_PPBEG, NSV_PPEND
       WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
 #ifdef MNH_FOREFIRE
@@ -2072,7 +2071,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
       WRITE(YRECFM,'(A7,I3.3)')'DSVCONV',JSV
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
      ILENCH = LEN(YCOMMENT)
-     CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+     CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
        IGRID,ILENCH,YCOMMENT,IRESP)
      END DO
     END IF
@@ -2082,7 +2081,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
         YRECFM = 'DSVCONV_'//TRIM(UPCASE(CNAMES(JSV-NSV_CHEMBEG+1)))
         WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
         ILENCH = LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),        &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),        &
                     IGRID,ILENCH,YCOMMENT,IRESP)
       END DO
       IF (LORILAM) THEN
@@ -2090,7 +2089,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
           YRECFM = 'DSVCONV_'//TRIM(UPCASE(CAERONAMES(JSV-NSV_AERBEG+1)))
           WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
           ILENCH = LEN(YCOMMENT)
-          CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),      &
+          CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),      &
                       IGRID,ILENCH,YCOMMENT,IRESP)
         END DO
       END IF
@@ -2100,7 +2099,7 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
         YRECFM='DSVCONV_LINOX'
         WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),        &
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,'XY',XDSVCONV(:,:,:,JSV),        &
                     IGRID,ILENCH,YCOMMENT,IRESP)
       END DO
     END IF
@@ -2108,21 +2107,21 @@ IF (CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') THEN
       YRECFM = 'DSVCONV_'//TRIM(CLGNAMES(JSV-NSV_LGBEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_DSTBEG, NSV_DSTEND
       YRECFM = 'DSVCONV_'//TRIM(CDUSTNAMES(JSV-NSV_DSTBEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
     DO JSV = NSV_SLTBEG, NSV_SLTEND
       YRECFM = 'DSVCONV_'//TRIM(CSALTNAMES(JSV-NSV_SLTBEG+1))
       WRITE(YCOMMENT,'(A6,A7,I3.3,A6)')'X_Y_Z_','DSVCONV',JSV,' (1/S)'
       ILENCH = LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDSVCONV(:,:,:,JSV),          &
            IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
   END IF
@@ -2142,7 +2141,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous Cloud Precipitation Rain Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D(:,:)  = XACPRC(:,:)
@@ -2150,7 +2149,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_ACcumulated Cloud Precipitation Rain Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                                  YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF
@@ -2162,7 +2161,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous Precipitation Rain Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK3D(:,:,:)  = XINPRR3D(:,:,:)
@@ -2170,7 +2169,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous 3D Rain Precipitation flux (M/S)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK3D(:,:,:)  = XEVAP3D(:,:,:)
@@ -2178,7 +2177,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous 3D Rain Evaporation flux (KG/KG/S)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK3D,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D(:,:)  = XACPRR(:,:)
@@ -2186,7 +2185,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_ACcumulated Precipitation Rain Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                                  YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF
@@ -2198,7 +2197,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Snow Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D(:,:)  = XACPRS(:,:)
@@ -2206,7 +2205,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Snow Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
@@ -2218,7 +2217,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Graupel Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D(:,:)  = XACPRG(:,:)
@@ -2226,7 +2225,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Graupel Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
@@ -2238,7 +2237,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_INstantaneous PRecipitation Hail Rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D(:,:)  = XACPRH(:,:)
@@ -2246,7 +2245,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_ACcumulated PRecipitation Hail Rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                                YCOMMENT,IRESP) ! unit conversion
   ENDIF
   ENDIF
@@ -2261,7 +2260,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_Total INstantaneaous PRecipitation rate (MM/H)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*3.6E6,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
 !
     ZWORK2D = XACPRR + XACPRS
@@ -2272,7 +2271,7 @@ IF (CPROGRAM /= 'IDEAL') THEN
     YCOMMENT    = 'X_Y_Total ACcumulated PRecipitation rate (MM)'
     IGRID       = 1
     ILENCH      = LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,ZWORK2D*1.0E3,IGRID,ILENCH, &
                                              YCOMMENT,IRESP) ! unit conversion
   END IF
   END IF
@@ -2291,7 +2290,7 @@ IF (LFORCING) THEN
   YCOMMENT=' '
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NFRC,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NFRC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   DO JT=1,NFRC
 !
@@ -2299,7 +2298,7 @@ IF (LFORCING) THEN
 !
 !
     YRECFM='DTFRC'//YFRC
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTFRC(JT),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTFRC(JT),IGRID,ILENCH, &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2307,7 +2306,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUFRC(:,JT),IGRID,ILENCH,     &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUFRC(:,JT),IGRID,ILENCH,     &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2315,7 +2314,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVFRC(:,JT),IGRID,ILENCH,     &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVFRC(:,JT),IGRID,ILENCH,     &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2323,7 +2322,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=4
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWFRC(:,JT),IGRID,ILENCH,     &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWFRC(:,JT),IGRID,ILENCH,     &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2331,7 +2330,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHFRC(:,JT),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHFRC(:,JT),IGRID,ILENCH,    &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2339,7 +2338,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRVFRC(:,JT),IGRID,ILENCH,    &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRVFRC(:,JT),IGRID,ILENCH,    &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2347,7 +2346,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTENDTHFRC(:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENDTHFRC(:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2355,7 +2354,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTENDRVFRC(:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENDRVFRC(:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2363,7 +2362,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XGXTHFRC(:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XGXTHFRC(:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2371,7 +2370,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=1
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XGYTHFRC(:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XGYTHFRC(:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
 !
@@ -2379,7 +2378,7 @@ IF (LFORCING) THEN
     YCOMMENT=' '
     IGRID=0
     ILENCH=LEN(YCOMMENT)
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPGROUNDFRC(JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPGROUNDFRC(JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
   END DO
@@ -2396,14 +2395,14 @@ IF ( L2D_ADV_FRC ) THEN
   YCOMMENT=' '
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NADVFRC,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NADVFRC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   DO JT=1,NADVFRC
 !
     WRITE (YFRC,'(I3.3)') JT
 !
     YRECFM='DTADV'//YFRC
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTADVFRC(JT),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTADVFRC(JT),IGRID,ILENCH, &
                                                             YCOMMENT,IRESP)
 !                                                                
     YRECFM='TH_ADV'//YFRC
@@ -2411,7 +2410,7 @@ IF ( L2D_ADV_FRC ) THEN
     IGRID=1
     ILENCH=LEN(YCOMMENT)
 !    
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDTHFRC(:,:,:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDTHFRC(:,:,:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !    
     YRECFM='Q_ADV'//YFRC
@@ -2419,7 +2418,7 @@ IF ( L2D_ADV_FRC ) THEN
     IGRID=1
     ILENCH=LEN(YCOMMENT)
 !    
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDRVFRC(:,:,:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDRVFRC(:,:,:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
   ENDDO
@@ -2433,14 +2432,14 @@ IF ( L2D_REL_FRC ) THEN
   YCOMMENT=' '
   IGRID=0
   ILENCH=LEN(YCOMMENT)
-  CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,NRELFRC,IGRID,ILENCH,YCOMMENT,IRESP)
+  CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,NRELFRC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
   DO JT=1,NRELFRC
 !
     WRITE (YFRC,'(I3.3)') JT
 !
     YRECFM='DTREL'//YFRC
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,TDTRELFRC(JT),IGRID,ILENCH, &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,TDTRELFRC(JT),IGRID,ILENCH, &
                                                             YCOMMENT,IRESP)
 !                                                                
     YRECFM='TH_REL'//YFRC
@@ -2448,7 +2447,7 @@ IF ( L2D_REL_FRC ) THEN
     IGRID=1
     ILENCH=LEN(YCOMMENT)
 !    
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTHREL(:,:,:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTHREL(:,:,:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !    
     YRECFM='Q_REL'//YFRC
@@ -2456,7 +2455,7 @@ IF ( L2D_REL_FRC ) THEN
     IGRID=1
     ILENCH=LEN(YCOMMENT)
 !    
-    CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XRVREL(:,:,:,JT),IGRID,ILENCH,  &
+    CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XRVREL(:,:,:,JT),IGRID,ILENCH,  &
                                                             YCOMMENT,IRESP)
 !
   ENDDO
@@ -2470,13 +2469,13 @@ IF ( LTH_FLX ) THEN
    YCOMMENT='K M/S'
    IGRID=2
    ILENCH=LEN(YCOMMENT)
-   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)
+   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)
 !
    YRECFM='WT_FLX'
    YCOMMENT='K M/S'
    IGRID=4
    ILENCH=LEN(YCOMMENT)
-   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XWTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)!
+   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XWTH_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)!
 END IF
 !
 IF ( LUV_FLX) THEN
@@ -2484,13 +2483,13 @@ IF ( LUV_FLX) THEN
    YCOMMENT='M/S**2'
    IGRID=1
    ILENCH=LEN(YCOMMENT)
-   CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVU_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)
+   CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVU_FLUX_M,IGRID,ILENCH,YCOMMENT,IRESP)
 END IF
 !
 !*       1.12   Balloon variables
 !
 !
-IF (LFLYER) CALL WRITE_BALLOON_n(HFMFILE)
+IF (LFLYER) CALL WRITE_BALLOON_n(YFMFILE)
 !
 !
 !*       1.13    Filtered variables for hurricane initialization
@@ -2509,33 +2508,33 @@ IF ( CPROGRAM=='REAL  ' ) THEN
       YCOMMENT='X_Y_Z_U component of Total wind (m/s)'
       IGRID=2
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUTOT,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUTOT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='VT15'
       YCOMMENT='X_Y_Z_V component of Total wind (m/s)'
       IGRID=3
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVTOT,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTOT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='TEMPTOT'
       YCOMMENT='X_Y_Z_TOTal TEMPerature (K)'
       IGRID=1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTTOT,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTTOT,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       IF (INDEX(CFILTERING,'P')/=0) THEN
         YRECFM='PRESTOT'
         YCOMMENT='X_Y_Z_TOTal PRESsure (Pa)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPTOT,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPTOT,IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF
       IF (INDEX(CFILTERING,'Q')/=0) THEN
         YRECFM='HUMTOT'
         YCOMMENT='X_Y_Z_TOTal specific HUMidity (kg/kg)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XQTOT,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQTOT,IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF      
 !
 !             ii) Environmental fields (ENV=TOT-VORDIS)
@@ -2544,33 +2543,33 @@ IF ( CPROGRAM=='REAL  ' ) THEN
       YCOMMENT='X_Y_Z_U component of Environmental wind (m/s)'
       IGRID=2
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUENV,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUENV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='VT16'
       YCOMMENT='X_Y_Z_V component of Environmental wind (m/s)'
       IGRID=3
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVENV,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVENV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='TEMPENV'
       YCOMMENT='X_Y_Z_ENVironmental TEMPerature (K)'
       IGRID=1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTENV,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTENV,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       IF (INDEX(CFILTERING,'P')/=0) THEN
         YRECFM='PRESENV'
         YCOMMENT='X_Y_Z_ENVironmental PRESsure (Pa)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPENV,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPENV,IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF
       IF (INDEX(CFILTERING,'Q')/=0) THEN
         YRECFM='HUMENV'
         YCOMMENT='X_Y_Z_ENVironmental specific HUMidity (kg/kg)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XQENV,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQENV,IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF      
 !
     END IF
@@ -2582,19 +2581,19 @@ IF ( CPROGRAM=='REAL  ' ) THEN
       YCOMMENT='X_Y_Z_U component of Basic wind (m/s)'
       IGRID=2
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XUBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XUBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='VT17'
       YCOMMENT='X_Y_Z_V component of Basic wind (m/s)'
       IGRID=3
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       YRECFM='TEMPBAS'
       YCOMMENT='X_Y_Z_BASic TEMPerature (K)'
       IGRID=1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XTBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XTBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
 !
       IF (INDEX(CFILTERING,'P')/=0) THEN
         YRECFM='PRESBAS'
@@ -2602,7 +2601,7 @@ IF ( CPROGRAM=='REAL  ' ) THEN
         YCOMMENT='X_Y_Z_BASic PRESsure (Pa)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XPBASIC(:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XPBASIC(:,:,1),IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF
 !
       IF (INDEX(CFILTERING,'Q')/=0) THEN
@@ -2610,7 +2609,7 @@ IF ( CPROGRAM=='REAL  ' ) THEN
         YCOMMENT='X_Y_Z_BASic specific HUMidity (kg/kg)'
         IGRID=1
         ILENCH=LEN(YCOMMENT)
-        CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XQBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
+        CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XQBASIC,IGRID,ILENCH,YCOMMENT,IRESP)
       ENDIF
     END IF
     IF (NDIAG_FILT >=2) THEN
@@ -2621,7 +2620,7 @@ IF ( CPROGRAM=='REAL  ' ) THEN
       YCOMMENT='X_Y_Z_Total disturbance tangential wind (m/s)'
       IGRID=1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XVTDIS,IGRID,ILENCH,YCOMMENT,IRESP)
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XVTDIS,IGRID,ILENCH,YCOMMENT,IRESP)
 !
     END IF
 !
@@ -2636,7 +2635,7 @@ IF ( CPROGRAM=='REAL  ' ) THEN
       YCOMMENT='X_Y_Z_'//ADJUSTL(YRECFM)
       IGRID=1
       ILENCH=LEN(YCOMMENT)
-      CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,YDIR,XDUMMY_2D(:,:,JSA), &
+      CALL FMWRIT(YFMFILE,YRECFM,CLUOUT,YDIR,XDUMMY_2D(:,:,JSA), &
                   IGRID,ILENCH,YCOMMENT,IRESP)
     END DO
   END IF
-- 
GitLab