diff --git a/src/LIB/SURCOUCHE/src/modd_io.f90 b/src/LIB/SURCOUCHE/src/modd_io.f90 index 8487b96c24e78b8494e77275c6f9202763045552..a19ff4c3e6b4018a10adfc34f60ad868dadfd9b4 100644 --- a/src/LIB/SURCOUCHE/src/modd_io.f90 +++ b/src/LIB/SURCOUCHE/src/modd_io.f90 @@ -19,6 +19,9 @@ USE MODD_NETCDF, ONLY: IDCDF_KIND IMPLICIT NONE ! ! +INTEGER, PARAMETER :: NVERB_NO=0, NVERB_FATAL=1, NVERB_ERROR=2, NVERB_WARNING=3, NVERB_INFO=4, NVERB_DEBUG=5 + + INTEGER, SAVE :: ISTDOUT, ISTDERR INTEGER, SAVE :: ISIOP !! IOproc number @@ -34,6 +37,12 @@ LOGICAL, SAVE :: LIOCDF4 = .FALSE. ! TRUE will enable full NetCDF4 (HDF5) I/O LOGICAL, SAVE :: LLFIOUT = .FALSE. ! TRUE will also force LFI output when LIOCDF4 is on (debug only) LOGICAL, SAVE :: LLFIREAD = .FALSE. ! TRUE will force LFI read (instead of NetCDF) when LIOCDF4 is on (debug only) +INTEGER, SAVE :: NIO_VERB = NVERB_WARNING ! Verbosity level for IO +INTEGER, SAVE :: NIO_ABORT_LEVEL = NVERB_ERROR ! Level of IO error necessary to force stop of application + +INTEGER, SAVE :: NGEN_VERB = NVERB_WARNING ! Verbosity level for 'GEN' (generic) messages +INTEGER, SAVE :: NGEN_ABORT_LEVEL = NVERB_ERROR ! Level of 'GEN' error necessary to force stop of application + TYPE LFIPARAM INTEGER :: FITYP ! FM File Type (used in FMCLOSE) END TYPE LFIPARAM diff --git a/src/LIB/SURCOUCHE/src/mode_io.f90 b/src/LIB/SURCOUCHE/src/mode_io.f90 index 82037434d4ce9d4829a8e896470030593985afcf..1675cf90aa2ef41c90f9601a1c980829f1bda3bc 100644 --- a/src/LIB/SURCOUCHE/src/mode_io.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io.f90 @@ -949,6 +949,70 @@ CONTAINS ENDIF END FUNCTION io_rank + ! + ! +END MODULE MODE_IO_ll -END MODULE MODE_IO_ll +MODULE MODE_MSG +! +IMPLICIT NONE +! +CONTAINS +! +SUBROUTINE PRINT_MSG(KVERB,HDOMAIN,HSUBR,HMSG) +! +USE MODD_IO_ll +USE MODD_VAR_ll, ONLY : NMNH_COMM_WORLD +! +INTEGER, INTENT(IN) :: KVERB !Verbosity level +CHARACTER(LEN=*),INTENT(IN) :: HDOMAIN !Domain/category of message +CHARACTER(LEN=*),INTENT(IN) :: HSUBR !Subroutine/function name +CHARACTER(LEN=*),INTENT(IN) :: HMSG !Message +! +INTEGER :: IERR, IMAXVERB,IABORTLEVEL +CHARACTER(LEN=9) :: YPRE +CHARACTER(LEN=28) :: YSUBR +! +SELECT CASE(HDOMAIN) + CASE('IO') + IMAXVERB = NIO_VERB + IABORTLEVEL = NIO_ABORT_LEVEL + CASE ('GEN') + IMAXVERB = NGEN_VERB + IABORTLEVEL = NGEN_ABORT_LEVEL + CASE DEFAULT + PRINT *,'ERROR: PRINT_MSG: wrong message category (',TRIM(HDOMAIN),')' + RETURN +END SELECT +! +IF (KVERB>IMAXVERB) RETURN +! +SELECT CASE(KVERB) + CASE(NVERB_FATAL) + YPRE='FATAL: ' + CASE(NVERB_ERROR) + YPRE='ERROR: ' + CASE(NVERB_WARNING) + YPRE='WARNING: ' + CASE(NVERB_INFO) + YPRE='INFO: ' + CASE(NVERB_DEBUG) + YPRE='DEBUG: ' + CASE DEFAULT + PRINT *,'ERROR: PRINT_MSG: wrong verbosity level' +END SELECT +! +YSUBR=TRIM(HSUBR)//':' +WRITE (*,"(A9,A28,A)") YPRE,YSUBR,HMSG +! +IF (KVERB<=IABORTLEVEL) THEN + PRINT *,'ABORT asked by application' + CALL MPI_ABORT(NMNH_COMM_WORLD, -10, IERR) + CALL ABORT +END IF +! +END SUBROUTINE PRINT_MSG +! +END MODULE MODE_MSG + diff --git a/src/LIB/SURCOUCHE/src/modn_confio.f90 b/src/LIB/SURCOUCHE/src/modn_confio.f90 index b0ae8246075ae540b5cb96d170cef7f45ffde12c..a23610af0611b5879d46a38d1315261e61972a79 100644 --- a/src/LIB/SURCOUCHE/src/modn_confio.f90 +++ b/src/LIB/SURCOUCHE/src/modn_confio.f90 @@ -29,14 +29,16 @@ !* 0. DECLARATIONS ! ------------ ! +USE MODD_IO_ll, ONLY : NIO_VERB, NIO_ABORT_LEVEL, NGEN_VERB, NGEN_ABORT_LEVEL +! IMPLICIT NONE ! LOGICAL,SAVE :: LCDF4 = .FALSE. ! TRUE : enable NetCDF4 Input/Output LOGICAL,SAVE :: LLFIOUT = .FALSE. ! TRUE : add LFI output when NetCDF4 I/O is enabled (debug) LOGICAL,SAVE :: LLFIREAD = .FALSE. ! TRUE : enable LFI reading (disable NetCDF4 reading) ! when NetCDF4 I/O is enabled (debug) -! -NAMELIST/NAM_CONFIO/ LCDF4, LLFIOUT, LLFIREAD + +NAMELIST/NAM_CONFIO/ LCDF4, LLFIOUT, LLFIREAD, NIO_VERB, NIO_ABORT_LEVEL, NGEN_VERB, NGEN_ABORT_LEVEL ! END MODULE MODN_CONFIO