diff --git a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 index e717d201713c3225b1a00df4738cfe048ce12d07..94485e3f10a5baca8caa1ac373b54389b31765d9 100644 --- a/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 +++ b/src/LIB/SURCOUCHE/src/mode_io_manage_struct.f90 @@ -141,6 +141,11 @@ DO IMI = 1, NMODEL CALL FIND_REMOVE_DUPLICATES(IBAK_NUMB,IBAK_STEP) CALL FIND_REMOVE_DUPLICATES(IOUT_NUMB,IOUT_STEP) ! + !* Find and remove out of time range entries + ! + CALL FIND_REMOVE_OUTOFTIMERANGE(IBAK_NUMB,IBAK_STEP) + CALL FIND_REMOVE_OUTOFTIMERANGE(IOUT_NUMB,IOUT_STEP) + ! !* Sort entries ! CALL SORT_ENTRIES(IBAK_NUMB,IBAK_STEP) @@ -154,6 +159,8 @@ DO IMI = 1, NMODEL IBAK_NUMB = IBAK_NUMB + 1 END IF END DO + IF (IBAK_NUMB==0) CALL PRINT_MSG(NVERB_ERROR,'IO','IO_PREPARE_BAKOUT_STRUCT','no (valid) backup time') + ! IOUT_NUMB = 0 DO JOUT = 1,SIZE(IOUT_STEP) IF (IOUT_STEP(JOUT) >= 0) THEN @@ -426,6 +433,21 @@ SUBROUTINE FIND_REMOVE_DUPLICATES(KNUMB,KSTEPS) END SUBROUTINE FIND_REMOVE_DUPLICATES ! !######################################################################### +SUBROUTINE FIND_REMOVE_OUTOFTIMERANGE(KNUMB,KSTEPS) +!######################################################################### + ! + INTEGER, INTENT(IN) :: KNUMB + INTEGER,DIMENSION(:), INTENT(INOUT) :: KSTEPS + ! + DO JOUT = 1,KNUMB + IF ( KSTEPS(JOUT) < 1 .OR. KSTEPS(JOUT) > ISTEP_MAX ) THEN + CALL PRINT_MSG(NVERB_WARNING,'IO','FIND_REMOVE_OUTOFTIMERANGE','found backup/output step outside of time range') + KSTEPS(JOUT) = NNEGUNDEF + END IF + END DO +END SUBROUTINE FIND_REMOVE_OUTOFTIMERANGE +! +!######################################################################### SUBROUTINE SORT_ENTRIES(KNUMB,KSTEPS) !######################################################################### ! diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 09005b315688b04b245a5fc974554e48b49fd66b..583b69f6cab3e443f39ddc9e87b88715d9b72ce8 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -540,7 +540,11 @@ IF (KMI == 1) THEN READ(UNIT=ILUSEG,NML=NAM_BACKUP) ELSE CALL POSNAM(ILUSEG,'NAM_FMOUT',GFOUND) - IF (GFOUND) CALL PRINT_MSG(NVERB_FATAL,'IO','READ_EXSEG_n','use namelist NAM_BACKUP instead of namelist NAM_FMOUT') + IF (GFOUND) THEN + CALL PRINT_MSG(NVERB_FATAL,'IO','READ_EXSEG_n','use namelist NAM_BACKUP instead of namelist NAM_FMOUT') + ELSE + CALL PRINT_MSG(NVERB_ERROR,'IO','READ_EXSEG_n','namelist NAM_BACKUP not found') + END IF END IF CALL POSNAM(ILUSEG,'NAM_OUTPUT',GFOUND,ILUOUT) IF (GFOUND) THEN