From c3bd4367a13593706b213862b00f958f88e8600c Mon Sep 17 00:00:00 2001
From: Philippe WAUTELET <philippe.wautelet@cnrs.fr>
Date: Thu, 29 Aug 2024 09:33:00 +0200
Subject: [PATCH] Philippe 29/08/2024: workaround for gfortran 14.x bug

---
 src/MNH/read_exsegn.f90  | 21 +++++++++++++++++++--
 src/MNH/write_desfmn.f90 | 21 +++++++++++++++++++--
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90
index c7f998073..cd9f74ac1 100644
--- a/src/MNH/read_exsegn.f90
+++ b/src/MNH/read_exsegn.f90
@@ -579,9 +579,9 @@ IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ADR)
 CALL POSNAM( TPEXSEGFILE, 'NAM_EOL_ALM', GFOUND )
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_EOL_ALM)
 CALL POSNAM( TPEXSEGFILE, 'NAM_PROFILERN', GFOUND )
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PROFILERn)
+IF (GFOUND) CALL READ_PROFILERN_NML()
 CALL POSNAM( TPEXSEGFILE, 'NAM_STATIONN', GFOUND )
-IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_STATIONn)
+IF (GFOUND) CALL READ_STATIONN_NML()
 CALL POSNAM( TPEXSEGFILE, 'NAM_FIREN', GFOUND )
 IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_FIREn)
 !
@@ -3109,4 +3109,21 @@ WRITE(UNIT=ILUOUT,FMT='(/)')
 !
 !-------------------------------------------------------------------------------
 !
+CONTAINS
+  SUBROUTINE READ_PROFILERN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_PROFILER_n
+
+    READ(UNIT=ILUSEG,NML=NAM_PROFILERn)
+  END SUBROUTINE READ_PROFILERN_NML
+
+  SUBROUTINE READ_STATIONN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_STATION_n
+
+    READ(UNIT=ILUSEG,NML=NAM_STATIONn)
+  END SUBROUTINE READ_STATIONN_NML
+
 END SUBROUTINE READ_EXSEG_n
diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90
index 207db65bb..f03405a24 100644
--- a/src/MNH/write_desfmn.f90
+++ b/src/MNH/write_desfmn.f90
@@ -404,10 +404,10 @@ IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOWn)
 IF(LBLOWSNOW) WRITE(UNIT=ILUSEG,NML=NAM_BLOWSNOW)
 !
 CALL INIT_NAM_PROFILERn
-IF(LPROFILER) WRITE(UNIT=ILUSEG,NML=NAM_PROFILERn)
+IF(LPROFILER) CALL WRITE_PROFILERN_NML()
 !
 CALL INIT_NAM_STATIONn
-IF(LSTATION) WRITE(UNIT=ILUSEG,NML=NAM_STATIONn)
+IF(LSTATION) CALL WRITE_STATIONN_NML()
 !
 IF(LDUST) WRITE(UNIT=ILUSEG,NML=NAM_DUST)
 IF(LSALT) WRITE(UNIT=ILUSEG,NML=NAM_SALT)
@@ -723,4 +723,21 @@ ENDIF
 CALL UPDATE_NAM_DYNn
 !------------------------------------------------------------------------------
 !
+CONTAINS
+  SUBROUTINE WRITE_PROFILERN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_PROFILER_n
+
+    WRITE(UNIT=ILUSEG,NML=NAM_PROFILERn)
+  END SUBROUTINE WRITE_PROFILERN_NML
+
+  SUBROUTINE WRITE_STATIONN_NML()
+    ! This intermediate subroutine is necessary to work around a bug in the gfortran compiler
+    ! (versions > 13: at least 14.1.0 and 14.2.0)
+    USE MODN_STATION_n
+
+    WRITE(UNIT=ILUSEG,NML=NAM_STATIONn)
+  END SUBROUTINE WRITE_STATIONN_NML
+
 END SUBROUTINE WRITE_DESFM_n
-- 
GitLab