diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 index 0a14564b0ae2305c896a426c8e8a22199b1d84de..0ec7744765e80f6213d09536da78c95a03946679 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_lfi.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2019 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. @@ -8,6 +8,7 @@ module mode_io_write_lfi ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! Philippe Wautelet: 21/06/2018: read and write correctly if MNH_REAL=4 ! Philippe Wautelet: 14/12/2018: split fmreadwrit.f90 +! Philippe Wautelet: 11/01/2019: do not write variables with a zero size ! USE MODD_IO_ll USE MODD_PARAMETERS, ONLY: NLFIMAXCOMMENTLENGTH @@ -100,6 +101,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_X1','writing '//TRIM(TPFIELD ! ILENG = SIZE(PFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X1','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -143,6 +150,13 @@ TYPE(TFILEDATA),POINTER :: TZFILE IRESP=0 ! ILENG = SIZE(PFIELD) +! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X2','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! IF (PRESENT(KVERTLEVEL)) THEN IF (.NOT.PRESENT(KZFILE)) THEN CALL PRINT_MSG(NVERB_ERROR,'IO','IO_WRITE_FIELD_LFI_X2','KZFILE argument not provided') @@ -198,6 +212,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_X3','writing '//TRIM(TPFIELD ! ILENG = SIZE(PFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X3','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -237,6 +257,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_X4','writing '//TRIM(TPFIELD ! ILENG = SIZE(PFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X4','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -276,6 +302,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_X5','writing '//TRIM(TPFIELD ! ILENG = SIZE(PFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X5','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -315,6 +347,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_X6','writing '//TRIM(TPFIELD ! ILENG = SIZE(PFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_X6','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -393,6 +431,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_N1','writing '//TRIM(TPFIELD ! ILENG = SIZE(KFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_N1','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -432,6 +476,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_N2','writing '//TRIM(TPFIELD ! ILENG = SIZE(KFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_N2','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -471,6 +521,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_N3','writing '//TRIM(TPFIELD ! ILENG = SIZE(KFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_N3','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! CALL WRITE_PREPARE(TPFIELD,ILENG,IWORK,ITOTAL,IRESP) ! IF (IRESP==0) THEN @@ -558,6 +614,12 @@ CALL PRINT_MSG(NVERB_DEBUG,'IO','IO_WRITE_FIELD_LFI_L1','writing '//TRIM(TPFIELD ! ILENG = SIZE(OFIELD) ! +IF ( ILENG==0 ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_LFI_L1','ignoring variable with a zero size ('//TRIM(TPFIELD%CMNHNAME)//')') + KRESP = 0 + RETURN +END IF +! !Convert LOGICAL to INTEGER (LOGICAL format not supported by LFI files) WHERE (OFIELD) IFIELD = 1 diff --git a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 index fef41bd3cde09ff0394440a17efaa3bcd5309fed..eb032d9aff601e0e879d7989a067b29460e289d3 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_write_nc4.f90 @@ -9,6 +9,7 @@ ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O ! P. Wautelet : 13/12/2018 : split of mode_netcdf into multiple modules/files ! Philippe Wautelet: 10/01/2019: replace handle_err by io_handle_err_nc4 for better netCDF error messages +! P. Wautelet : 11/01/2019 : NVERB_INFO->NVERB_WARNING for zero size fields !----------------------------------------------------------------- #if defined(MNH_IOCDF4) module mode_io_write_nc4 @@ -337,7 +338,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -432,7 +433,7 @@ CALL CLEANMNHNAME(TZFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X2','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X2','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -503,7 +504,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X3','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X3','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -575,7 +576,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X4','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X4','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -647,7 +648,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X5','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X5','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -719,7 +720,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(PFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_X6','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_X6','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -885,7 +886,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(KFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_N1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_N1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -947,7 +948,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(KFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_N2','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_N2','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -1013,7 +1014,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(KFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_N3','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_N3','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF @@ -1147,7 +1148,7 @@ CALL CLEANMNHNAME(TPFIELD%CMNHNAME,YVARNAME) STATUS = NF90_INQ_VARID(INCID, YVARNAME, IVARID) IF (STATUS /= NF90_NOERR) THEN IF (SIZE(OFIELD)==0) THEN - CALL PRINT_MSG(NVERB_INFO,'IO','IO_WRITE_FIELD_NC4_L1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') + CALL PRINT_MSG(NVERB_WARNING,'IO','IO_WRITE_FIELD_NC4_L1','ignoring variable with a zero size ('//TRIM(YVARNAME)//')') KRESP = 0 RETURN END IF