From 9a7586b9eb46af6cb6156000cf2f2681f102ef46 Mon Sep 17 00:00:00 2001
From: Batti Filippi <batti.filippi@gmail.com>
Date: Mon, 13 Nov 2023 15:52:46 +0100
Subject: [PATCH] bugfix to run with ForeFire

---
 src/LIB/FOREFIRE/coupling_forefiren.f90 | 49 ++++++++++++-------------
 src/MNH/ini_one_wayn.f90                | 10 +++--
 src/MNH/spawn_field2.f90                |  2 +-
 3 files changed, 31 insertions(+), 30 deletions(-)

diff --git a/src/LIB/FOREFIRE/coupling_forefiren.f90 b/src/LIB/FOREFIRE/coupling_forefiren.f90
index 0791f7f1c..a4f1a86d0 100644
--- a/src/LIB/FOREFIRE/coupling_forefiren.f90
+++ b/src/LIB/FOREFIRE/coupling_forefiren.f90
@@ -1,9 +1,8 @@
-!MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
-!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
+!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt  
 !MNH_LIC for details. version 1.
-!-----------------------------------------------------------------
-!##############################
+!############################## 
 MODULE MODI_COUPLING_FOREFIRE_n
 !############################## 
 
@@ -83,20 +82,20 @@ INTEGER											:: JSV
 	PSFTQ(:, :) = PSFTQ(:, :) + FF_VAPORFLUX(:, :)
 
 	DO JSV = 1, NSV_FF
-		CALL MNH_GET_DOUBLEARRAY(sScalarVariables(JSV), FF_SVFLUXES(:, :, JSV), FF_MATRIXSIZE, 1)
+		CALL MNH_GET_DOUBLEARRAY(sScalarVariables(JSV), FF_SVFLUXES(:, :, JSV), FF_MATRIXSIZE, 1) 
 		PSFSV(:, :, NSV_FFBEG-1+JSV) = PSFSV(:, :, NSV_FFBEG-1+JSV) + FF_SVFLUXES(:, :, JSV)
 	END DO
-
+	
 	IF ( LFFCHEM ) THEN
 		DO JSV = 1, NFFCHEMVAR
-			CALL MNH_GET_DOUBLEARRAY(sChemicalVariables(JSV), FF_CVFLUXES(:, :, JSV), FF_MATRIXSIZE, 1)
+			CALL MNH_GET_DOUBLEARRAY(sChemicalVariables(JSV), FF_CVFLUXES(:, :, JSV), FF_MATRIXSIZE, 1) 
 			PSFSV(:, :, FF_CHEMINDICES(JSV)) = PSFSV(:, :, FF_CHEMINDICES(JSV)) + FF_CVFLUXES(:, :, JSV)
 		END DO
 	ENDIF
 
 END SUBROUTINE COUPLING_FOREFIRE_n
 
-
+      	
 !##############################################
 SUBROUTINE SEND_GROUND_WIND_n (U, V, KG, IINFO)
 !##############################################
@@ -139,7 +138,7 @@ TYPE(LIST_ll), POINTER           	:: FOREFIREFIELD_ll    ! list of fields to exc
 		FFOUTERWINDV(2,JFF) = V(3,JFF,KG)
 		FFOUTERWINDV(FF_NX-1,JFF) = V(FF_NX-2,JFF,KG)
 	END DO
-
+	  
 	VAL1 = INT(U(2,3,KG)*FFMULT+0.5)
 	VAL2 = INT(U(3,3,KG)*FFMULT+0.5)
 	VAL3 = INT(U(3,2,KG)*FFMULT+0.5)
@@ -177,8 +176,8 @@ TYPE(LIST_ll), POINTER           	:: FOREFIREFIELD_ll    ! list of fields to exc
 	FFOUTERWINDV(FF_NX-1,FF_NY-1) = VAL1*FFMULT*FFMULT*100 + VAL2*FFMULT*10 + VAL3
 
 	NULLIFY(FOREFIREFIELD_ll)
-	CALL ADD2DFIELD_ll( FOREFIREFIELD_ll, FFOUTERWINDU, 'SEND_GROUND_WIND_n::FFOUTERWINDU' )
-	CALL ADD2DFIELD_ll( FOREFIREFIELD_ll, FFOUTERWINDV, 'SEND_GROUND_WIND_n::FFOUTERWINDV' )
+	CALL ADD2DFIELD_ll(FOREFIREFIELD_ll,FFOUTERWINDU,'FF2D::OUTERWINDU')
+	CALL ADD2DFIELD_ll(FOREFIREFIELD_ll,FFOUTERWINDV,'FF2D::OUTERWINDU')
 	CALL UPDATE_HALO_ll(FOREFIREFIELD_ll,IINFO)
 	CALL CLEANLIST_ll(FOREFIREFIELD_ll)
 	CALL MNH_PUT_DOUBLEARRAY(sOutWindU, FF_TIME, FFOUTERWINDU, FF_MATRIXSIZE, 1)
@@ -186,7 +185,7 @@ TYPE(LIST_ll), POINTER           	:: FOREFIREFIELD_ll    ! list of fields to exc
    
 END SUBROUTINE SEND_GROUND_WIND_n
 
-
+      	
 !#####################################
 SUBROUTINE FOREFIRE_RECEIVE_PARAL_n ()
 !#####################################
@@ -209,7 +208,7 @@ IMPLICIT NONE
    
 END SUBROUTINE FOREFIRE_RECEIVE_PARAL_n
 
-
+      	
 !#######################################
 SUBROUTINE FOREFIRE_SEND_PARAL_n (IINFO)
 !#######################################
@@ -239,18 +238,18 @@ TYPE(LIST_ll), POINTER           :: FOREFIREFIELD_ll    ! list of fields to exch
 !* Calling the MNH parallel routines for the forefire-related variables
 !
 	NULLIFY(FOREFIREFIELD_ll)
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_POSX, 'FOREFIRE_SEND_PARAL_n::FFNODES_POSX' )
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_POSY, 'FOREFIRE_SEND_PARAL_n::FFNODES_POSY' )
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_VELX, 'FOREFIRE_SEND_PARAL_n::FFNODES_VELX' )
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_VELY, 'FOREFIRE_SEND_PARAL_n::FFNODES_VELY' )
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_TIME, 'FOREFIRE_SEND_PARAL_n::FFNODES_TIME' )
-	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_ID,   'FOREFIRE_SEND_PARAL_n::FFNODES_ID'   )
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_POSX,'FF3D::NODEPOSX')
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_POSY,'FF3D::NODEPOSY')
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_VELX,'FF3D::NODEVELX')
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_VELY,'FF3D::NODEVELY')
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_TIME,'FF3D::NODETIME')
+	CALL ADD3DFIELD_ll(FOREFIREFIELD_ll, FFNODES_ID,'FF3D::NODEID')
 	CALL UPDATE_HALO_ll(FOREFIREFIELD_ll, IINFO)
 	CALL CLEANLIST_ll(FOREFIREFIELD_ll)
    
 END SUBROUTINE FOREFIRE_SEND_PARAL_n
-
-
+      	
+      	
 !#####################################################
 SUBROUTINE FOREFIRE_DUMP_FIELDS_n(U, V, W, MNHSV, TH &
 									, R, PABS, TKE, NX, NY, NZ)
@@ -281,7 +280,7 @@ INTEGER :: JSV
 		FF3DOUT = 1
 		FFNUMOUT = FFNUMOUT + 1
 	END IF
-
+	
 	IF ( FF3DOUTPUTSFLOW .AND. FF3DOUT.EQ.1 ) THEN
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sU, FF_TIME, U, NX*NY*NZ, NX, NY, NZ, 1)
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sV, FF_TIME, V, NX*NY*NZ, NX, NY, NZ, 1)
@@ -291,14 +290,14 @@ INTEGER :: JSV
 				, FF_TIME, MNHSV(:, :, :, NSV_FFBEG-1+JSV), NX*NY*NZ, NX, NY, NZ, 1)
 		END DO
 	END IF
-
+	
 	IF ( FF3DOUTPUTSPHYS .AND. FF3DOUT.EQ.1 ) THEN
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sT, FF_TIME, TH, NX*NY*NZ, NX, NY, NZ, 1)
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sMoist, FF_TIME, R, NX*NY*NZ, NX, NY, NZ, 1)
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sP, FF_TIME, PABS, NX*NY*NZ, NX, NY, NZ, 1)
 		CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, sTKE, FF_TIME, TKE, NX*NY*NZ, NX, NY, NZ, 1)
 	END IF
-
+	
 	IF ( LFFCHEM .AND. FF3DOUTPUTSCHEM .AND. FF3DOUT.EQ.1 ) THEN
 		DO JSV = 1, NFFCHEMVAR
 			CALL MNH_DUMP_DOUBLEARRAY(FFNMODEL, PROCID, cast_char_to_c(CNAMES(FF_CHEMINDICES(JSV))) &
@@ -309,7 +308,7 @@ INTEGER :: JSV
 						, FF_TIME, MNHSV(:, :, :, FF_CHEMINDOUT(JSV)), NX*NY*NZ, NX, NY, NZ, 1)
 		END DO
 	END IF
-
+	
 	FF3DOUT = 0
 
 END SUBROUTINE FOREFIRE_DUMP_FIELDS_n
diff --git a/src/MNH/ini_one_wayn.f90 b/src/MNH/ini_one_wayn.f90
index c18ff402a..aa8cb5ebb 100644
--- a/src/MNH/ini_one_wayn.f90
+++ b/src/MNH/ini_one_wayn.f90
@@ -1,4 +1,4 @@
-!MNH_LIC Copyright 1999-2022 CNRS, Meteo-France and Universite Paul Sabatier
+!MNH_LIC Copyright 1999-2021 CNRS, Meteo-France and Universite Paul Sabatier
 !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence
 !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
 !MNH_LIC for details. version 1.
@@ -103,10 +103,12 @@ USE MODD_NSV,            only: NSV_A, NSV_C1R3BEG_A, NSV_C1R3_A, NSV_C2R2BEG_A,
                                NSV_CHEM_A, NSV_CHICBEG_A, NSV_CHIC_A, NSV_DSTBEG_A, NSV_DSTDEPBEG_A, NSV_DSTDEP_A, NSV_DST_A, &
                                NSV_ELECBEG_A, NSV_ELEC_A, NSV_LGBEG_A, NSV_LG_A, NSV_LIMA_A, NSV_LIMA_BEG_A,                  &
                                NSV_LNOXBEG_A, NSV_LNOX_A, NSV_PPBEG_A, NSV_PP_A,                                              &
-                               NSV_SLTBEG_A, NSV_SLTDEPBEG_A, NSV_SLTDEP_A, NSV_SLT_A, NSV_USER_A
+
 #ifdef MNH_FOREFIRE
-USE MODD_NSV,            only: NSV_FF_A, NSV_FFBEG_A
-#endif
+                               NSV_FFBEG_A, NSV_FF_A, &
+#endif                                              
+                               NSV_SLTBEG_A, NSV_SLTDEPBEG_A, NSV_SLTDEP_A, NSV_SLT_A, NSV_USER_A
+
 USE MODD_PARAM_n,        only: CCLOUD
 USE MODD_REF,            ONLY: LCOUPLES
 USE MODD_REF_n,          only: XRHODJ, XRHODREF
diff --git a/src/MNH/spawn_field2.f90 b/src/MNH/spawn_field2.f90
index 50047fb02..5f4c6a177 100644
--- a/src/MNH/spawn_field2.f90
+++ b/src/MNH/spawn_field2.f90
@@ -175,7 +175,7 @@ USE MODD_IO,              ONLY: TFILEDATA
 USE MODD_LATZ_EDFLX,      ONLY: LTH_FLX, LUV_FLX
 USE MODD_LBC_n,           ONLY: LBC_MODEL
 USE MODD_LUNIT_n,         ONLY: TLUOUT
-USE MODD_NSV,             ONLY: NSV, NSV_CSBEG, NSV_CSEND, NSV_PPBEG, NSV_PPEND, NSV_USER, TSVLIST
+USE MODD_NSV             
 USE MODD_RELFRC_n,        ONLY: RELFRC_MODEL
 USE MODD_SPAWN
 !
-- 
GitLab