diff --git a/model/src/w3iorsmd.F90 b/model/src/w3iorsmd.F90 index 7f5cbd1643..acbb81c1f3 100644 --- a/model/src/w3iorsmd.F90 +++ b/model/src/w3iorsmd.F90 @@ -328,6 +328,7 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT ) LOGICAL :: WRITE, IOSFLG LOGICAL :: FLOGOA(NOGRP,NGRPP) + LOGICAL :: NDSROPN CHARACTER(LEN=4) :: TYPE CHARACTER(LEN=10) :: VERTST ! CHARACTER(LEN=21) :: FNAME @@ -606,6 +607,13 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT ) #ifdef W3_T WRITE (NDST,9005) TYPE #endif + ! Clean up file handles and allocated arrays + INQUIRE (UNIT=NDSR, OPENED=NDSROPN) + IF (NDSROPN) CLOSE(NDSR) + IF (ALLOCATED(WRITEBUFF)) DEALLOCATE(WRITEBUFF) + IF (ALLOCATED(TMP)) DEALLOCATE(TMP) + IF (ALLOCATED(TMP2)) DEALLOCATE(TMP2) + RETURN ELSE IF ( IAPROC.LE.NAPROC .OR. IAPROC.EQ. NAPRST ) THEN #ifdef W3_DEBUGIO @@ -1479,9 +1487,13 @@ SUBROUTINE W3IORS ( INXOUT, NDSR, DUMFPI, IMOD, FLRSTRT ) ! ! Close file --------------------------------------------------------- * ! + IF (WRITE) THEN IF ( .NOT.IOSFLG .OR. IAPROC.EQ.NAPRST ) THEN CLOSE ( NDSR ) END IF + ELSE + CLOSE ( NDSR ) + END IF ! #ifdef W3_DEBUGIO WRITE(740+IAPROC,*) 'W3IORS, step 9'