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