From 3b86c439ee79dd06211434788c140651a98d7851 Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Mon, 8 Jan 2018 15:37:10 +0100 Subject: [PATCH] Philippe 08/01/2018: IO: move NF90_CLOSE outside of CLEANIOCDF --- src/LIB/SURCOUCHE/src/mode_fm.f90 | 11 ++++++++++- src/LIB/SURCOUCHE/src/mode_io.f90 | 11 ++++++++++- src/LIB/SURCOUCHE/src/mode_netcdf.f90 | 8 +------- 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/LIB/SURCOUCHE/src/mode_fm.f90 b/src/LIB/SURCOUCHE/src/mode_fm.f90 index d37ce4b88..2a7d97bd0 100644 --- a/src/LIB/SURCOUCHE/src/mode_fm.f90 +++ b/src/LIB/SURCOUCHE/src/mode_fm.f90 @@ -609,7 +609,16 @@ IF (TPFILE%LMASTER) THEN CALL LFIFER(IRESP8,TPFILE%NLFIFLU,YSTATU) IRESP = IRESP8 END IF - IF (ASSOCIATED(TPFILE%TNCDIMS)) CALL CLEANIOCDF(TPFILE%TNCDIMS) +#if defined(MNH_IOCDF4) + IF (TPFILE%NNCID/=-1) THEN + ! Close Netcdf File + IRESP = NF90_CLOSE(TPFILE%NNCID) + IF (IRESP /= NF90_NOERR) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','FMCLOS_ll','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP))) + END IF + IF (ASSOCIATED(TPFILE%TNCDIMS)) CALL CLEANIOCDF(TPFILE%TNCDIMS) + END IF +#endif IF (IRESP == 0) THEN !! Write in pipe #if defined(MNH_LINUX) || defined(MNH_SP4) diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 9cb6bee5a..8c2d65a50 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -786,7 +786,16 @@ CONTAINS CALL IOFREEFLU(INT(TPFILE%NLFIFLU)) IRESP2 = IRESP8 END IF - IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS) +#if defined(MNH_IOCDF4) + IF (TZFILE%NNCID/=-1) THEN + ! Close Netcdf File + IRESP = NF90_CLOSE(TZFILE%NNCID) + IF (IRESP /= NF90_NOERR) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','CLOSE_ll','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP))) + END IF + IF (ASSOCIATED(TZFILE%TNCDIMS)) CALL CLEANIOCDF(TZFILE%TNCDIMS) + END IF +#endif END IF END DO ! diff --git a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 index 86805e939..61b4ce68b 100644 --- a/src/LIB/SURCOUCHE/src/mode_netcdf.f90 +++ b/src/LIB/SURCOUCHE/src/mode_netcdf.f90 @@ -47,7 +47,7 @@ INTERFACE IO_READ_FIELD_NC4 END INTERFACE IO_READ_FIELD_NC4 ! Public from module netcdf -PUBLIC NF90_OPEN,NF90_CREATE,NF90_NOWRITE,NF90_CLOBBER,NF90_NETCDF4,NF90_NOERR,NF90_STRERROR +PUBLIC NF90_CLOSE,NF90_OPEN,NF90_CREATE,NF90_NOWRITE,NF90_CLOBBER,NF90_NETCDF4,NF90_NOERR,NF90_STRERROR ! Public from this module : PUBLIC NEWIOCDF,CLEANIOCDF,IO_WRITE_FIELD_NC4,IO_READ_FIELD_NC4,IO_WRITE_HEADER_NC4 @@ -92,12 +92,6 @@ INTEGER(KIND=IDCDF_KIND) :: IRESP CALL PRINT_MSG(NVERB_DEBUG,'IO','CLEANIOCDF','called') -! Close Netcdf File -IRESP = NF90_CLOSE(PIOCDF%NCID) -IF (IRESP /= NF90_NOERR) THEN - CALL PRINT_MSG(NVERB_WARNING,'IO','CLEANIOCDF','NF90_CLOSE error: '//TRIM(NF90_STRERROR(IRESP))) -END IF - ! Clean DIMLIST and DIMSTR CALL CLEANLIST(PIOCDF%DIMLIST) CALL CLEANLIST(PIOCDF%DIMSTR) -- GitLab