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