c Copyright (C) Stichting Deltares, 2005-2014.
c
c This file is part of iMOD.
c
c This program is free software: you can redistribute it and/or modify
c it under the terms of the GNU General Public License as published by
c the Free Software Foundation, either version 3 of the License, or
c (at your option) any later version.
c
c This program is distributed in the hope that it will be useful,
c but WITHOUT ANY WARRANTY; without even the implied warranty of
c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c GNU General Public License for more details.
c
c You should have received a copy of the GNU General Public License
c along with this program. If not, see .
c
c Contact: imod.support@deltares.nl
c Stichting Deltares
c P.O. Box 177
c 2600 MH Delft, The Netherlands.
c
c iMod is partly based on the USGS MODFLOW2005 source code;
c for iMOD the USGS MODFLOW2005 source code has been expanded
c and extensively modified by Stichting Deltares.
c The original USGS MODFLOW2005 source code can be downloaded from the USGS
c website http://www.usgs.gov/. The original MODFLOW2005 code incorporated
c in this file is covered by the USGS Software User Rights Notice;
c you should have received a copy of this notice along with this program.
c If not, see .
C The hydrograph lables are established by the SE subroutines the
C first time they are called. SE is called the first time by the
C AR subroutine for the BAS, IBS, and SUB Packages. SE is called
C the first time by the RP subroutine for the STR and SFR Packages.
C Subsequent calls to SE subroutines in the Main must be made in
C the same order as the initial calls. A HYDMOD package that
C has an RP subroutine will always have the initial SE call after
C the initial SE calls for all of the packages that have the
C inital SE call in the AR subroutine.
MODULE HYDBASMODULE
INTEGER, SAVE, POINTER ::NHYDTOT
REAL, SAVE, POINTER,DIMENSION(:,:) ::HYDVAL
CHARACTER(LEN=20),SAVE, POINTER,DIMENSION(:) ::HYDLBL
INTEGER, SAVE, POINTER ::IHYDMUN,NHYDBAS
REAL, SAVE, POINTER ::HYDNOH
LOGICAL, SAVE, POINTER,DIMENSION(:) ::IBHYDBAS
LOGICAL, SAVE, POINTER,DIMENSION(:) ::INTRPHYDBAS
INTEGER, SAVE, POINTER,DIMENSION(:,:) ::JIKHYDBAS
REAL, SAVE, POINTER,DIMENSION(:,:) ::HYDBASWT
REAL, SAVE, POINTER,DIMENSION(:) ::HYDBASSTRT
CHARACTER(LEN=4),SAVE, POINTER,DIMENSION(:) ::HYDBASARR
TYPE HYDBASTYPE
INTEGER, POINTER ::NHYDTOT
REAL, POINTER,DIMENSION(:,:) ::HYDVAL
CHARACTER(LEN=20),POINTER,DIMENSION(:) ::HYDLBL
INTEGER, POINTER ::IHYDMUN,NHYDBAS
REAL, POINTER ::HYDNOH
LOGICAL, POINTER,DIMENSION(:) ::IBHYDBAS
LOGICAL, POINTER,DIMENSION(:) ::INTRPHYDBAS
INTEGER, POINTER,DIMENSION(:,:) ::JIKHYDBAS
REAL, POINTER,DIMENSION(:,:) ::HYDBASWT
REAL, POINTER,DIMENSION(:) ::HYDBASSTRT
CHARACTER(LEN=4), POINTER,DIMENSION(:) ::HYDBASARR
END TYPE
TYPE(HYDBASTYPE), SAVE :: HYDBASDAT(10)
END MODULE
MODULE HYDIBSMODULE
INTEGER, SAVE, POINTER ::NHYDIBS
LOGICAL, SAVE, POINTER,DIMENSION(:) ::IBHYDIBS
LOGICAL, SAVE, POINTER,DIMENSION(:) ::INTRPHYDIBS
INTEGER, SAVE, POINTER,DIMENSION(:,:) ::JIKHYDIBS
REAL, SAVE, POINTER,DIMENSION(:,:) ::HYDIBSWT
CHARACTER(LEN=4),SAVE, POINTER,DIMENSION(:) ::HYDIBSARR
TYPE HYDIBSTYPE
INTEGER, POINTER ::NHYDIBS
LOGICAL, POINTER,DIMENSION(:) ::IBHYDIBS
LOGICAL, POINTER,DIMENSION(:) ::INTRPHYDIBS
INTEGER, POINTER,DIMENSION(:,:) ::JIKHYDIBS
REAL, POINTER,DIMENSION(:,:) ::HYDIBSWT
CHARACTER(LEN=4), POINTER,DIMENSION(:) ::HYDIBSARR
END TYPE
TYPE(HYDIBSTYPE), SAVE ::HYDIBSDAT(10)
END MODULE
MODULE HYDSUBMODULE
INTEGER, SAVE, POINTER ::NHYDSUB
LOGICAL, SAVE, POINTER,DIMENSION(:) ::IBHYDSUB
LOGICAL, SAVE, POINTER,DIMENSION(:) ::INTRPHYDSUB
INTEGER, SAVE, POINTER,DIMENSION(:,:) ::JIKHYDSUB
REAL, SAVE, POINTER,DIMENSION(:,:) ::HYDSUBWT
CHARACTER(LEN=4),SAVE, POINTER,DIMENSION(:) ::HYDSUBARR
TYPE HYDSUBTYPE
INTEGER, POINTER ::NHYDSUB
LOGICAL, POINTER,DIMENSION(:) ::IBHYDSUB
LOGICAL, POINTER,DIMENSION(:) ::INTRPHYDSUB
INTEGER, POINTER,DIMENSION(:,:) ::JIKHYDSUB
REAL, POINTER,DIMENSION(:,:) ::HYDSUBWT
CHARACTER(LEN=4), POINTER,DIMENSION(:) ::HYDSUBARR
END TYPE
TYPE(HYDSUBTYPE), SAVE ::HYDSUBDAT(10)
END MODULE
MODULE HYDSTRMODULE
INTEGER, SAVE, POINTER ::NHYDSTR
INTEGER, SAVE, POINTER,DIMENSION(:) ::ISTRHYD
CHARACTER(LEN=4),SAVE, POINTER,DIMENSION(:) ::HYDSTRARR
TYPE HYDSTRTYPE
INTEGER, POINTER ::NHYDSTR
INTEGER, POINTER,DIMENSION(:) ::ISTRHYD
CHARACTER(LEN=4), POINTER,DIMENSION(:) ::HYDSTRARR
END TYPE
TYPE(HYDSTRTYPE), SAVE ::HYDSTRDAT(10)
END MODULE
MODULE HYDSFRMODULE
INTEGER, SAVE, POINTER ::NHYDSFR
INTEGER, SAVE, POINTER,DIMENSION(:) ::ISFRHYD
CHARACTER(LEN=4),SAVE, POINTER,DIMENSION(:) ::HYDSFRARR
TYPE HYDSFRTYPE
INTEGER, POINTER ::NHYDSFR
INTEGER, POINTER,DIMENSION(:) ::ISFRHYD
CHARACTER(LEN=4), POINTER,DIMENSION(:) ::HYDSFRARR
END TYPE
TYPE(HYDSFRTYPE), SAVE ::HYDSFRDAT(10)
END MODULE
SUBROUTINE GWF2HYD7BAS7AR(IN,IGRID)
C ******************************************************************
C ALLOCATE ARRAY STORAGE FOR HYDROGRAPH DATA FOR BAS PACKAGE
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL , ONLY: IOUT,NCOL,NROW,STRT
USE HYDBASMODULE
CHARACTER*80 LINE
CHARACTER*1 INTYP
CHARACTER*20 HYDBASLBL
C ------------------------------------------------------------------
ALLOCATE(NHYDTOT)
ALLOCATE(IHYDMUN,NHYDBAS,HYDNOH)
ONE=1.0
ZERO=0.0
NHYDTOT=0
C
C1------IDENTIFY PROGRAM.
WRITE(IOUT,1) IN
1 FORMAT(1X,/1X,'HYD -- HYDROGRAPH DATA FOR BAS PACKAGE,',
1 ' VERSION 7, 07/14/2006',/
2 1X,' INPUT READ FROM UNIT',I3)
C
C4------READ NUMBER OF HYDROGRAPHS AND UNIT FOR SAVING UNFORMATTED
C4------HYDROGRAPH FILE AND NUMERIC FLAG FOR DRY/INACTIVE CELLS
READ(IN,'(A)') LINE
LLOC=1
C Number of hydrographs (NHYDM) specified by the user is ignored --
C the program initially counts the number of hydrographs (NTOT).
C Note that there may be less than NHTOT hydrograps because some
C may be eliminated due to invalid values.
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,NHYDM,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,IHYDMUN,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,HYDNOH,IOUT,IN)
WRITE(IOUT,5) IHYDMUN,HYDNOH
5 FORMAT(1X,'HYDROGRAPH VALUES WILL BE SAVED ON UNIT:',I4,
2 /,1X,'HYDROGRAPH VALUES AT DRY CELLS WILL BE:',1PG14.5)
C
C4------COUNT NUMBER OF BAS PACKAGE AND OVERALL HYDROGRAPHS.
NTOT=0
NHYDBAS=0
REWIND(IN)
READ(IN,'(A)',END=19) LINE
10 READ(IN,'(A)',END=19) LINE
IF(LINE.EQ.' ') GO TO 10
NTOT=NTOT+1
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).EQ.'BAS') NHYDBAS=NHYDBAS+1
GO TO 10
C
C ALLOCATE MEMORY FOR ALL TYPES OF HYDROGRAPHS
19 IF(NTOT.GT.0) THEN
ALLOCATE(HYDVAL(NTOT,2))
ALLOCATE(HYDLBL(NTOT))
WRITE(IOUT,17)
17 FORMAT(1X,/1X,
1 'ARR INTYP KLAY XL YL HYDLBL',
2 /1X,64('-'))
ELSE
ALLOCATE(HYDVAL(1,2))
ALLOCATE(HYDLBL(1))
END IF
C
C ALLOCATE MEMORY FOR BAS HYDROGRAPH DATA
IF(NHYDBAS.GT.0) THEN
ALLOCATE(IBHYDBAS(NHYDBAS))
ALLOCATE(INTRPHYDBAS(NHYDBAS))
ALLOCATE(JIKHYDBAS(3,NHYDBAS))
ALLOCATE(HYDBASWT(4,NHYDBAS))
ALLOCATE(HYDBASSTRT(NHYDBAS))
ALLOCATE(HYDBASARR(NHYDBAS))
ELSE
ALLOCATE(IBHYDBAS(1))
ALLOCATE(INTRPHYDBAS(1))
ALLOCATE(JIKHYDBAS(3,1))
ALLOCATE(HYDBASWT(4,1))
ALLOCATE(HYDBASSTRT(1))
ALLOCATE(HYDBASARR(1))
WRITE(IOUT,18)
18 FORMAT(1X,'NO HYDROGRAPHS FOR BAS PACKAGE')
GO TO 999
END IF
IF(NTOT.LE.0) THEN
WRITE(IOUT,16)
16 FORMAT(1X,'NO HYDROGRAPHS FOR ANY PACKAGE')
GO TO 999
END IF
C
C READ BAS HYDROGRAPH DATA
NHYDBAS=0
REWIND(IN)
READ(IN,'(A)',END=99) LINE
20 READ(IN,'(A)',END=99) LINE
IF(LINE.EQ.' ') GO TO 20
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).NE.'BAS') GO TO 20
C
C Record applies to BAS Package
NHYDBAS=NHYDBAS+1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
HYDBASARR(NHYDBAS)=LINE(ISTART:ISTOP)
WRITE(HYDBASLBL(1:2),FMT='(A2)') HYDBASARR(NHYDBAS)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
INTYP=LINE(ISTART:ISTOP)
WRITE(HYDBASLBL(3:3),FMT='(A1)') LINE(ISTART:ISTOP)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,KLAY,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,XL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,YL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,0,N,R,IOUT,IN)
WRITE(HYDBASLBL(4:6),FMT='(I3.3)')KLAY
HYDBASLBL(7:20)=LINE(ISTART:ISTOP)
WRITE(IOUT,23) HYDBASARR(NHYDBAS),INTYP,KLAY,XL,YL,HYDBASLBL
23 FORMAT(1X,A,1X,A,I7,1PE14.5,E14.5,2X,A)
C
C Determine if head
IF(HYDBASARR(NHYDBAS).EQ.'HD') THEN
IBHYDBAS(NHYDBAS)=.TRUE.
C
C Determine if drawdown
ELSE IF(HYDBASARR(NHYDBAS).EQ.'DD') THEN
IBHYDBAS(NHYDBAS)=.TRUE.
C
C Not head or drawdown, so error.
ELSE
WRITE(IOUT,25) LINE
25 FORMAT(' Invalid array type was found on the following',
& ' record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDBAS=NHYDBAS-1
GO TO 20
ENDIF
C
C Find the grid coodrdinates for the cell.
CALL SGWF2HYD7GRDLOC(XL,YL,NR1,NC1,NR2,NC2,X1,X2,Y1,Y2)
C
C Check if interpolating between nodes.
IF(INTYP.EQ.'C') THEN
C
C Do not interpolate
INTRPHYDBAS(NHYDBAS)=.FALSE.
IF(NR1.LT.1.OR.NR1.GT.NROW.OR.NC1.LT.1.OR.NC1.GT.NCOL) THEN
WRITE(IOUT,26) LINE
26 FORMAT(' Coordinates of the following record are ',
& 'outside of the model grid:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDBAS=NHYDBAS-1
GO TO 20
ENDIF
JIKHYDBAS(1,NHYDBAS)=NC1
JIKHYDBAS(2,NHYDBAS)=NR1
JIKHYDBAS(3,NHYDBAS)=KLAY
HYDBASWT(1,NHYDBAS)=ONE
HYDBASWT(2,NHYDBAS)=ZERO
HYDBASWT(3,NHYDBAS)=ZERO
HYDBASWT(4,NHYDBAS)=ZERO
ELSE IF(INTYP.EQ.'I') THEN
C
C Interpolate between cells
INTRPHYDBAS(NHYDBAS)=.TRUE.
CALL SGWF2HYD7MW(XL,YL,X1,X2,Y1,Y2,W1,W2,W3,W4)
IF(NR2.LT.2.OR.NR2.GT.NROW.OR.NC2.LT.1.OR.NC2.GT.(NCOL-1)) THEN
WRITE(IOUT,26) LINE
NHYDBAS=NHYDBAS-1
GO TO 20
ENDIF
JIKHYDBAS(1,NHYDBAS)=NC2
JIKHYDBAS(2,NHYDBAS)=NR2
JIKHYDBAS(3,NHYDBAS)=KLAY
HYDBASWT(1,NHYDBAS)=W1
HYDBASWT(2,NHYDBAS)=W2
HYDBASWT(3,NHYDBAS)=W3
HYDBASWT(4,NHYDBAS)=W4
ELSE
C
C Interpolation coding error.
WRITE(IOUT,27) LINE
27 FORMAT(' Invalid interpolation type was found on the ',
& 'following record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDBAS=NHYDBAS-1
GO TO 20
ENDIF
C
C If computing drawdown, save the starting head
IF(HYDBASARR(NHYDBAS).EQ.'DD') THEN
IF(INTYP.EQ.'I')THEN
H1=STRT(NC2,NR2,KLAY)
H2=STRT(NC2+1,NR2,KLAY)
H3=STRT(NC2+1,NR2-1,KLAY)
H4=STRT(NC2,NR2-1,KLAY)
HYDBASSTRT(NHYDBAS)=H1*W1+H2*W2+H3*W3+H4*W4
ELSEIF(INTYP.EQ.'C')THEN
HYDBASSTRT(NHYDBAS)=STRT(NC1,NR1,KLAY)
ENDIF
ENDIF
C
C Save the hydrograph label and continue with the next record.
HYDLBL(NHYDBAS)=HYDBASLBL
GO TO 20
C
C End of file after all BAS HYDROGRAPH data have been processed
C Note that NHYDTOT is accumulated by each package from this point on.
C NHYDTOT is the total number of valid hydrographs after data are
C checked for errors.
99 NHYDTOT=NHYDBAS
C
999 CALL SGWF2HYD7BAS7PSV(IGRID)
IF(NHYDBAS.GT.0) CALL GWF2HYD7BAS7SE(2,IGRID)
RETURN
END
SUBROUTINE GWF2HYD7IBS7AR(IN,IGRID)
C ******************************************************************
C READ IBS PACKAGE DATA FOR HYDROGRAPHS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IOUT,NCOL,NROW,NLAY
USE HYDBASMODULE
USE HYDIBSMODULE
USE GWFIBSMODULE, ONLY: IBQ
C
CHARACTER LINE*80
CHARACTER HYDIBSLBL*20,PCKG*3,ARR*2,INTYP*1
C ------------------------------------------------------------------
ALLOCATE (NHYDIBS)
ONE=1.0
ZERO=0.0
NHYDIBS=0
REWIND(IN)
C
READ(IN,'(A)',END=19) LINE
10 READ(IN,'(A)',END=19) LINE
IF(LINE.EQ.' ') GO TO 10
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).EQ.'IBS') NHYDIBS=NHYDIBS+1
GO TO 10
C
C ALLOCATE MEMORY FOR IBS HYDROGRAPH DATA
19 IF(NHYDIBS.GT.0) THEN
ALLOCATE(IBHYDIBS(NHYDIBS))
ALLOCATE(INTRPHYDIBS(NHYDIBS))
ALLOCATE(JIKHYDIBS(3,NHYDIBS))
ALLOCATE(HYDIBSWT(4,NHYDIBS))
ALLOCATE(HYDIBSARR(NHYDIBS))
ELSE
ALLOCATE(IBHYDIBS(1))
ALLOCATE(INTRPHYDIBS(1))
ALLOCATE(JIKHYDIBS(3,1))
ALLOCATE(HYDIBSWT(4,1))
ALLOCATE(HYDIBSARR(1))
WRITE(IOUT,18)
18 FORMAT(1X,'NO HYDROGRAPHS FOR IBS PACKAGE')
GO TO 999
END IF
C
C Read IBS hydrograph data.
NHYDIBS=0
REWIND(IN)
READ(IN,'(A)',END=99) LINE
15 READ(IN,'(A)',END=99) LINE
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).NE.'IBS') GO TO 15
NHYDIBS=NHYDIBS+1
PCKG=LINE(ISTART:ISTOP)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
ARR=LINE(ISTART:ISTOP)
WRITE(HYDIBSLBL(1:2),FMT='(A2)')ARR
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
INTYP=LINE(ISTART:ISTOP)
WRITE(HYDIBSLBL(3:3),FMT='(A1)')INTYP
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,KLAY,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,XL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,YL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,0,N,R,IOUT,IN)
WRITE(HYDIBSLBL(4:6),FMT='(I3.3)')KLAY
HYDIBSLBL(7:20)=LINE(ISTART:ISTOP)
cc TIME SERIES FROM THE CRITICAL HEAD ARRAY
IF (ARR.EQ.'HC') THEN
HYDIBSARR(NHYDIBS)='HC'
IBHYDIBS(NHYDIBS)=.TRUE.
cc TIME SERIES FROM THE COMPACTION ARRAY
ELSE IF (ARR.EQ.'CP') THEN
HYDIBSARR(NHYDIBS)='CP'
IBHYDIBS(NHYDIBS)=.TRUE.
cc TIME SERIES ACCUMULATED OVER ALL LAYERS OF THE COMPACTION ARRAY
ELSE IF (ARR.EQ.'SB') THEN
HYDIBSARR(NHYDIBS)='SB'
IBHYDIBS(NHYDIBS)=.FALSE.
C Change the layer number to the number of subsidence layers
NQ=0
DO 20 K=1,KLAY
IF(IBQ(K).GT.0) NQ=NQ+1
20 CONTINUE
KLAY=NQ
ELSE
WRITE(IOUT,25) LINE
25 FORMAT(' Invalid array type was found on the following',
& ' record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDIBS=NHYDIBS-1
GO TO 15
ENDIF
WRITE(IOUT,23) HYDIBSARR(NHYDIBS),INTYP,KLAY,XL,YL,HYDIBSLBL
23 FORMAT(1X,A,1X,A,I7,1PE14.5,E14.5,2X,A)
C
C Get the cell location
CALL SGWF2HYD7GRDLOC(XL,YL,NR1,NC1,NR2,NC2,X1,X2,Y1,Y2)
IF(INTYP.EQ.'C') THEN
C Use cell value without interpolation
INTRPHYDIBS(NHYDIBS)=.FALSE.
IF(NR1.LT.1.OR.NR1.GT.NROW.OR.NC1.LT.1.OR.NC1.GT.NCOL) THEN
WRITE(IOUT,26) LINE
26 FORMAT(' Coordinates of the following record are ',
& 'outside of the model grid:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDIBS=NHYDIBS-1
GO TO 15
ENDIF
JIKHYDIBS(1,NHYDIBS)=NC1
JIKHYDIBS(2,NHYDIBS)=NR1
JIKHYDIBS(3,NHYDIBS)=KLAY
HYDIBSWT(1,NHYDIBS)=ONE
HYDIBSWT(2,NHYDIBS)=ZERO
HYDIBSWT(3,NHYDIBS)=ZERO
HYDIBSWT(4,NHYDIBS)=ZERO
ELSE IF(INTYP.EQ.'I') THEN
C Interpolate value between nodes
INTRPHYDIBS(NHYDIBS)=.TRUE.
CALL SGWF2HYD7MW(XL,YL,X1,X2,Y1,Y2,W1,W2,W3,W4)
IF(NR2.LT.2.OR.NR2.GT.NROW.OR.NC2.LT.1.OR.NC2.GT.NCOL-1) THEN
WRITE(IOUT,26) LINE
NHYDIBS=NHYDIBS-1
GO TO 15
ENDIF
JIKHYDIBS(1,NHYDIBS)=NC2
JIKHYDIBS(2,NHYDIBS)=NR2
JIKHYDIBS(3,NHYDIBS)=KLAY
HYDIBSWT(1,NHYDIBS)=W1
HYDIBSWT(2,NHYDIBS)=W2
HYDIBSWT(3,NHYDIBS)=W3
HYDIBSWT(4,NHYDIBS)=W4
ELSE
WRITE(IOUT,27) LINE
27 FORMAT(' Invalid interpolation type was found on the ',
& 'following hydrograph record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDIBS=NHYDIBS-1
GO TO 15
ENDIF
C
C Save the hydrograph label and process the next line in input file
HYDLBL(NHYDTOT+NHYDIBS)=HYDIBSLBL
GO TO 15
C
C End of file after all IBS hydrograph data have been processed
99 IF(NHYDIBS.GT.0) THEN
WRITE(IOUT,108) NHYDIBS
108 FORMAT(' A total of ',I3,' points have been added ',
& 'for the hydrographs of IBS arrays.')
END IF
C
999 CALL SGWF2HYD7IBS7PSV(IGRID)
IF(NHYDIBS.GT.0) CALL GWF2HYD7IBS7SE(2,IGRID)
RETURN
END
SUBROUTINE GWF2HYD7SUB7AR(IN,IGRID)
C ******************************************************************
C READ SUB PACKAGE DATA FOR HYDROGRAPHS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IOUT,NCOL,NROW,NLAY
USE HYDBASMODULE
USE HYDSUBMODULE
USE GWFSUBMODULE, ONLY: LN,HC,SUB,NNDB
C
CHARACTER LINE*80
CHARACTER HYDSUBLBL*20,PCKG*3,ARR*2,INTYP*1
C ------------------------------------------------------------------
ALLOCATE (NHYDSUB)
ONE=1.0
ZERO=0.0
NHYDSUB=0
REWIND(IN)
C
READ(IN,'(A)',END=19) LINE
10 READ(IN,'(A)',END=19) LINE
IF(LINE.EQ.' ') GO TO 10
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).EQ.'SUB') NHYDSUB=NHYDSUB+1
GO TO 10
C
C ALLOCATE MEMORY FOR SUB HYDROGRAPH DATA
19 IF(NHYDSUB.GT.0) THEN
ALLOCATE(IBHYDSUB(NHYDSUB))
ALLOCATE(INTRPHYDSUB(NHYDSUB))
ALLOCATE(JIKHYDSUB(3,NHYDSUB))
ALLOCATE(HYDSUBWT(4,NHYDSUB))
ALLOCATE(HYDSUBARR(NHYDSUB))
ELSE
ALLOCATE(IBHYDSUB(1))
ALLOCATE(INTRPHYDSUB(1))
ALLOCATE(JIKHYDSUB(3,1))
ALLOCATE(HYDSUBWT(4,1))
ALLOCATE(HYDSUBARR(1))
WRITE(IOUT,18)
18 FORMAT(1X,'NO HYDROGRAPHS FOR SUB PACKAGE')
GO TO 999
END IF
C
C Read SUB hydrograph data.
NHYDSUB=0
REWIND(IN)
READ(IN,'(A)',END=99) LINE
15 READ(IN,'(A)',END=99) LINE
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).NE.'SUB') GO TO 15
NHYDSUB=NHYDSUB+1
PCKG=LINE(ISTART:ISTOP)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
ARR=LINE(ISTART:ISTOP)
WRITE(HYDSUBLBL(1:2),FMT='(A2)')ARR
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
INTYP=LINE(ISTART:ISTOP)
WRITE(HYDSUBLBL(3:3),FMT='(A1)')INTYP
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,KLAY,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,XL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,YL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,0,N,R,IOUT,IN)
WRITE(HYDSUBLBL(4:6),FMT='(I3.3)')KLAY
HYDSUBLBL(7:20)=LINE(ISTART:ISTOP)
cc TIME SERIES FROM THE CRITICAL HEAD ARRAY
IF (ARR.EQ.'HC') THEN
HYDSUBARR(NHYDSUB)='HC'
IBHYDSUB(NHYDSUB)=.TRUE.
cc TIME SERIES FROM THE COMPACTION ARRAY
ELSE IF (ARR.EQ.'CP') THEN
HYDSUBARR(NHYDSUB)='CP'
IBHYDSUB(NHYDSUB)=.TRUE.
cc TIME SERIES ACCUMULATED OVER ALL LAYERS OF THE COMPACTION ARRAY
ELSE IF (ARR.EQ.'SB') THEN
HYDSUBARR(NHYDSUB)='SB'
IBHYDSUB(NHYDSUB)=.FALSE.
C Change the layer number to the number of subsidence layers
NQSUB=0
DO 20 K=1,KLAY
IF(LN(K).GT.0) NQSUB=NQSUB+1
20 CONTINUE
KLAY=NQSUB
ELSE
WRITE(IOUT,25) LINE
25 FORMAT(' Invalid array type was found on the following',
& ' record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDSUB=NHYDSUB-1
GO TO 15
ENDIF
WRITE(IOUT,23) HYDSUBARR(NHYDSUB),INTYP,KLAY,XL,YL,HYDSUBLBL
23 FORMAT(1X,A,1X,A,I7,1PE14.5,E14.5,2X,A)
C
C Get the cell location
CALL SGWF2HYD7GRDLOC(XL,YL,NR1,NC1,NR2,NC2,X1,X2,Y1,Y2)
IF(INTYP.EQ.'C') THEN
C Use cell value without interpolation
INTRPHYDSUB(NHYDSUB)=.FALSE.
IF(NR1.LT.1.OR.NR1.GT.NROW.OR.NC1.LT.1.OR.NC1.GT.NCOL) THEN
WRITE(IOUT,26) LINE
26 FORMAT(' Coordinates of the following record are ',
& 'outside of the model grid:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDSUB=NHYDSUB-1
GO TO 15
ENDIF
JIKHYDSUB(1,NHYDSUB)=NC1
JIKHYDSUB(2,NHYDSUB)=NR1
JIKHYDSUB(3,NHYDSUB)=KLAY
HYDSUBWT(1,NHYDSUB)=ONE
HYDSUBWT(2,NHYDSUB)=ZERO
HYDSUBWT(3,NHYDSUB)=ZERO
HYDSUBWT(4,NHYDSUB)=ZERO
ELSE IF(INTYP.EQ.'I') THEN
C Interpolate value between nodes
INTRPHYDSUB(NHYDSUB)=.TRUE.
CALL SGWF2HYD7MW(XL,YL,X1,X2,Y1,Y2,W1,W2,W3,W4)
IF(NR2.LT.2.OR.NR2.GT.NROW.OR.NC2.LT.1.OR.NC2.GT.NCOL-1) THEN
WRITE(IOUT,26) LINE
NHYDSUB=NHYDSUB-1
GO TO 15
ENDIF
JIKHYDSUB(1,NHYDSUB)=NC2
JIKHYDSUB(2,NHYDSUB)=NR2
JIKHYDSUB(3,NHYDSUB)=KLAY
HYDSUBWT(1,NHYDSUB)=W1
HYDSUBWT(2,NHYDSUB)=W2
HYDSUBWT(3,NHYDSUB)=W3
HYDSUBWT(4,NHYDSUB)=W4
ELSE
WRITE(IOUT,27) LINE
27 FORMAT(' Invalid interpolation type was found on the ',
& 'following hydrograph record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NHYDSUB=NHYDSUB-1
GO TO 15
ENDIF
C
C Save the hydrograph label and process the next line in input file
HYDLBL(NHYDTOT+NHYDSUB)=HYDSUBLBL
GO TO 15
C
C End of file after all SUB hydrograph data have been processed
99 IF(NHYDSUB.GT.0) THEN
WRITE(IOUT,108) NHYDSUB
108 FORMAT(' A total of ',I3,' points have been added ',
& 'for the hydrographs of SUB arrays.')
END IF
C
999 CALL SGWF2HYD7SUB7PSV(IGRID)
IF(NHYDSUB.GT.0) CALL GWF2HYD7SUB7SE(2,IGRID)
RETURN
END
SUBROUTINE GWF2HYD7STR7AR(IN,IGRID)
C ******************************************************************
C READ STREAM PACKAGE DATA FOR HYDROGRAPHS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IOUT
USE HYDBASMODULE
USE HYDSTRMODULE
CHARACTER LINE*80
C ------------------------------------------------------------------
ALLOCATE (NHYDSTR)
C Count number of Stream hydrographs
NHYDSTR=0
REWIND(IN)
READ(IN,'(A)',END=15) LINE
10 READ(IN,'(A)',END=15) LINE
IF(LINE.EQ.' ') GO TO 10
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).EQ.'STR') NHYDSTR=NHYDSTR+1
GO TO 10
C
C Allocate memory
15 IF(NHYDSTR.GT.0) THEN
ALLOCATE (ISTRHYD(NHYDSTR))
ALLOCATE (HYDSTRARR(NHYDSTR))
ELSE
ALLOCATE (ISTRHYD(1))
ALLOCATE (HYDSTRARR(1))
END IF
C
C ------RETURN.
CALL SGWF2HYD7STR7PSV(IGRID)
RETURN
END
SUBROUTINE GWF2HYD7STR7RP(IN,KPER,IGRID)
C ******************************************************************
C READ HYDROGRAPH RECORDS FOR STREAMS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IBOUND,IOUT
USE HYDBASMODULE
USE HYDSTRMODULE
USE GWFSTRMODULE, ONLY: ISTRM,STRM,NSTREM
CHARACTER HYDSTRLBL*20,LINE*80,INTYP*1
C ------------------------------------------------------------------
CALL SGWF2HYD7STR7PNT(IGRID)
C
IF(NSTREM.LT.1)THEN
WRITE(IOUT,8)
8 FORMAT(' No Active Streams in this Model')
WRITE(IOUT,'(1X,A)')
1 'Stream hydrograph records will be ignored.'
NHYDSTR=0
RETURN
END IF
C
C
C ------Read STR hydrograph data
C ------Reading is done here (rather than in AR) because stream data are
C ------not available until the first time step is initiated.
C ---- Reading could be done in a special RP routine right after STRRP
IF(KPER.EQ.1) THEN
NUMSTR=0
REWIND(IN)
READ(IN,'(A)',END=99) LINE
20 READ(IN,'(A)',END=99) LINE
IF(LINE.EQ.' ') GO TO 20
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).NE.'STR') GO TO 20
C
C ------PROCESS A STR HYDROGRAPH RECORD
NUMSTR=NUMSTR+1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
HYDSTRARR(NUMSTR)=LINE(ISTART:ISTOP)
WRITE(HYDSTRLBL(1:2),FMT='(A2)') HYDSTRARR(NUMSTR)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
INTYP=LINE(ISTART:ISTOP)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,KLAY,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,XL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,YL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,0,N,R,IOUT,IN)
WRITE(HYDSTRLBL(3:5),FMT='(I3.3)') INT(XL)
WRITE(HYDSTRLBL(6:8),FMT='(I3.3)') INT(YL)
HYDSTRLBL(9:20)=LINE(ISTART:ISTOP)
C
IF(HYDSTRARR(NUMSTR).NE.'ST' .AND.
1 HYDSTRARR(NUMSTR).NE.'SO' .AND.
2 HYDSTRARR(NUMSTR).NE.'SI' .AND.
3 HYDSTRARR(NUMSTR).NE.'SA') THEN
WRITE(IOUT,25) LINE
25 FORMAT(' Invalid streamflow array was found on the following'
& ,' record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSTR=NUMSTR-1
GO TO 20
ENDIF
C
C ------Look through all reaches to find the hydrograph reach.
DO 30 N=1,NSTREM
26 ISEG=ISTRM(4,N)
IRCH=ISTRM(5,N)
C XL contains the SEGMENT number and YL contains the REACH number.
IF(ISEG.EQ.INT(XL).AND.IRCH.EQ.INT(YL))THEN
ISTRHYD(NUMSTR)=N
GO TO 35
END IF
30 CONTINUE
WRITE(IOUT,*)
1 ' Hydrograph specified for non-existent stream reach'
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSTR=NUMSTR-1
GO TO 20
C
C ------The interpolation type must be 'C'
35 IF(INTYP.NE.'C') THEN
WRITE(IOUT,39) LINE
39 FORMAT(' Invalid interpolation type was found on the ',
& 'following record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSTR=NUMSTR-1
GO TO 20
ENDIF
C
C ------SAVE THE LABEL AND PROCESS NEXT RECORD.
HYDLBL(NHYDTOT+NUMSTR)=HYDSTRLBL
GO TO 20
C
C ------End of input file.
99 WRITE(IOUT,100) NUMSTR
100 FORMAT(' A total of ',I3,' hydrographs have been added ',
& 'for STR arrays.')
NHYDSTR=NUMSTR
C
C Create initial values for stream hydrographs
IF(NHYDSTR.GT.0) CALL GWF2HYD7STR7SE(2,IGRID)
END IF
C
C ------RETURN
RETURN
END
SUBROUTINE GWF2HYD7SFR7AR(IN,IGRID)
C ******************************************************************
C READ SFR2 PACKAGE DATA FOR HYDROGRAPHS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IOUT
USE HYDBASMODULE
USE HYDSFRMODULE
CHARACTER LINE*80
C ------------------------------------------------------------------
ALLOCATE (NHYDSFR)
C Count number of Stream hydrographs
NHYDSFR=0
REWIND(IN)
READ(IN,'(A)',END=15) LINE
10 READ(IN,'(A)',END=15) LINE
IF(LINE.EQ.' ') GO TO 10
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).EQ.'SFR') NHYDSFR=NHYDSFR+1
GO TO 10
C
C Allocate memory
15 IF(NHYDSFR.GT.0) THEN
ALLOCATE (ISFRHYD(NHYDSFR))
ALLOCATE (HYDSFRARR(NHYDSFR))
ELSE
ALLOCATE (ISFRHYD(1))
ALLOCATE (HYDSFRARR(1))
END IF
C
C ------RETURN.
CALL SGWF2HYD7SFR7PSV(IGRID)
RETURN
END
SUBROUTINE GWF2HYD7SFR7RP(IN,KPER,IGRID)
C ******************************************************************
C READ HYDROGRAPH RECORDS FOR STREAMS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IBOUND,IOUT
USE HYDBASMODULE
USE HYDSFRMODULE
USE GWFSFRMODULE, ONLY: ISTRM,STRM,NSTRM
CHARACTER HYDSFRLBL*20,LINE*80,INTYP*1
C ------------------------------------------------------------------
CALL SGWF2HYD7SFR7PNT(IGRID)
C
IF(NSTRM.LT.1)THEN
WRITE(IOUT,8)
8 FORMAT(' No Active Streams in this Model')
WRITE(IOUT,'(1X,A)')
1 'Stream hydrograph records will be ignored.'
NHYDSFR=0
RETURN
END IF
C
C
C ------Read SFR hydrograph data
C ------Reading is done here (rather than in AR) because stream data are
C ------not available until the first time step is initiated.
C ---- Reading could be done in a special RP routine right after SFRRP
IF(KPER.EQ.1) THEN
NUMSFR=0
REWIND(IN)
READ(IN,'(A)',END=99) LINE
20 READ(IN,'(A)',END=99) LINE
IF(LINE.EQ.' ') GO TO 20
LLOC=1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
IF(LINE(ISTART:ISTOP).NE.'SFR') GO TO 20
C
C ------PROCESS A SFR HYDROGRAPH RECORD
NUMSFR=NUMSFR+1
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
HYDSFRARR(NUMSFR)=LINE(ISTART:ISTOP)
WRITE(HYDSFRLBL(1:2),FMT='(A2)') HYDSFRARR(NUMSFR)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,1,N,R,IOUT,IN)
INTYP=LINE(ISTART:ISTOP)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,2,KLAY,R,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,XL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,3,N,YL,IOUT,IN)
CALL URWORD(LINE,LLOC,ISTART,ISTOP,0,N,R,IOUT,IN)
WRITE(HYDSFRLBL(3:5),FMT='(I3.3)') INT(XL)
WRITE(HYDSFRLBL(6:8),FMT='(I3.3)') INT(YL)
HYDSFRLBL(9:20)=LINE(ISTART:ISTOP)
C
IF(HYDSFRARR(NUMSFR).NE.'ST' .AND.
1 HYDSFRARR(NUMSFR).NE.'SO' .AND.
2 HYDSFRARR(NUMSFR).NE.'SI' .AND.
3 HYDSFRARR(NUMSFR).NE.'SA') THEN
WRITE(IOUT,25) LINE
25 FORMAT(' Invalid SFR array was found on the following'
& ,' record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSFR=NUMSFR-1
GO TO 20
ENDIF
C
C ------Look through all reaches to find the hydrograph reach.
DO 30 N=1,NSTRM
26 ISEG=ISTRM(4,N)
IRCH=ISTRM(5,N)
C XL contains the SEGMENT number and YL contains the REACH number.
IF(ISEG.EQ.INT(XL).AND.IRCH.EQ.INT(YL))THEN
ISFRHYD(NUMSFR)=N
GO TO 35
END IF
30 CONTINUE
WRITE(IOUT,*)
1 ' Hydrograph specified for non-existent stream reach'
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSFR=NUMSFR-1
GO TO 20
C
C ------The interpolation type must be 'C'
35 IF(INTYP.NE.'C') THEN
WRITE(IOUT,39) LINE
39 FORMAT(' Invalid interpolation type was found on the ',
& 'following record:',/,A80)
WRITE(IOUT,*) 'Hydrograph Record will be ignored.'
NUMSFR=NUMSFR-1
GO TO 20
ENDIF
C
C ------SAVE THE LABEL AND PROCESS NEXT RECORD.
HYDLBL(NHYDTOT+NUMSFR)=HYDSFRLBL
GO TO 20
C
C ------End of input file.
99 WRITE(IOUT,100) NUMSFR
100 FORMAT(' A total of ',I3,' hydrographs have been added ',
& 'for SFR arrays.')
NHYDSFR=NUMSFR
C
C Create initial values for stream hydrographs
IF(NHYDSFR.GT.0) CALL GWF2HYD7SFR7SE(2,IGRID)
END IF
C
C ------RETURN
RETURN
END
SUBROUTINE GWF2HYD7BAS7SE(IHYDLOC,IGRID)
C ******************************************************************
C COMPUTE HYDROGRAPH RECORDS FOR BAS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: HNEW,IBOUND,STRT,IOUT
USE HYDBASMODULE
C ------------------------------------------------------------------
CALL SGWF2HYD7BAS7PNT(IGRID)
C
C -----Return if no BAS hydrographs.
NHYDTOT=NHYDBAS
IF(NHYDBAS.LE.0) RETURN
C
C -----Calculate value for each hydrograph point.
DO 50 N=1,NHYDBAS
NN=N
C -----Determine interpolation type, word length, number of weights,
C -----and locations of IBOUND codes at or around hydrograph point.
J=JIKHYDBAS(1,N)
I=JIKHYDBAS(2,N)
K=JIKHYDBAS(3,N)
C
C -----If IBOUND is to be checked for inactive cells, retrieve values
C -----at or around hydrograph point.
IF(IBHYDBAS(N)) THEN
IB1=IBOUND(J,I,K)
IBFACT=IB1
IF(INTRPHYDBAS(N)) THEN
IB2=IBOUND(J+1,I,K)
IB3=IBOUND(J+1,I-1,K)
IB4=IBOUND(J,I-1,K)
IBFACT=IB1*IB2*IB3*IB4
ENDIF
ENDIF
C
C -----Check if hydrograph value is HEAD.
IF(HYDBASARR(N).EQ.'HD') THEN
IF(IBHYDBAS(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(N,IHYDLOC)=HYDNOH
ELSE
HYDVAL(N,IHYDLOC)=SHYD7WTAVG(NN)
ENDIF
C
C -----Hydrograph value is DRAWDOWN if NOT HEAD
ELSE
IF(IBHYDBAS(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(N,IHYDLOC)=HYDNOH
ELSE
HYDVAL(N,IHYDLOC)=HYDBASSTRT(N) - SHYD7WTAVG(NN)
ENDIF
ENDIF
50 CONTINUE
C
C ------ RETURN
RETURN
END
SUBROUTINE GWF2HYD7IBS7SE(IHYDLOC,IGRID)
C ******************************************************************
C COMPUTE HYDROGRAPH RECORDS FOR IBS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: HNEW,IBOUND,IOUT
USE HYDBASMODULE
USE HYDIBSMODULE
USE GWFIBSMODULE, ONLY: HC,SUB
C ------------------------------------------------------------------
CALL SGWF2HYD7IBS7PNT(IGRID)
C
C -----Return if no IBS hydrographs.
IF(NHYDIBS.LE.0) RETURN
C
C -----Calculate value for each hydrograph point.
DO 50 N=1,NHYDIBS
NN=N
C -----Determine interpolation type, word length, number of weights,
C -----and locations of IBOUND codes at or around hydrograph point.
J=JIKHYDIBS(1,N)
I=JIKHYDIBS(2,N)
K=JIKHYDIBS(3,N)
C
C -----If IBOUND is to be checked for inactive cells, retrieve values
C -----at or around hydrograph point.
IF(IBHYDIBS(N)) THEN
IB1=IBOUND(J,I,K)
IBFACT=IB1
IF(INTRPHYDIBS(N)) THEN
IB2=IBOUND(J+1,I,K)
IB3=IBOUND(J+1,I-1,K)
IB4=IBOUND(J,I-1,K)
IBFACT=IB1*IB2*IB3*IB4
ENDIF
ENDIF
C
C -----Check if hydrograph value is Preconsolidation Head.
IF(HYDIBSARR(N).EQ.'HC') THEN
IF(IBHYDIBS(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
ELSE
J=JIKHYDIBS(1,N)
I=JIKHYDIBS(2,N)
K=JIKHYDIBS(3,N)
W1=HYDIBSWT(1,N)
W2=HYDIBSWT(2,N)
W3=HYDIBSWT(3,N)
W4=HYDIBSWT(4,N)
HYDVAL(NHYDTOT+N,IHYDLOC)=
1 HC(J,I,K)*W1+HC(J+1,I,K)*W2+HC(J+1,I-1,K)*W3+HC(J,I-1,K)*W4
ENDIF
C
C -----Check if hydrograph value is compaction
ELSE IF(HYDIBSARR(N).EQ.'CP') THEN
IF(IBHYDIBS(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
ELSE
J=JIKHYDIBS(1,N)
I=JIKHYDIBS(2,N)
K=JIKHYDIBS(3,N)
W1=HYDIBSWT(1,N)
W2=HYDIBSWT(2,N)
W3=HYDIBSWT(3,N)
W4=HYDIBSWT(4,N)
HYDVAL(NHYDTOT+N,IHYDLOC)=
1 SUB(J,I,K)*W1+SUB(J+1,I,K)*W2+SUB(J+1,I-1,K)*W3+SUB(J,I-1,K)*W4
ENDIF
C
C -----Hydrograph value must be subsidence (not HC and not CP)
ELSE
KLAY=JIKHYDIBS(3,N)
TOTL=0.
DO 40 K=1,KLAY
J=JIKHYDIBS(1,N)
I=JIKHYDIBS(2,N)
W1=HYDIBSWT(1,N)
W2=HYDIBSWT(2,N)
W3=HYDIBSWT(3,N)
W4=HYDIBSWT(4,N)
TOTL=TOTL+
1 SUB(J,I,K)*W1+SUB(J+1,I,K)*W2+SUB(J+1,I-1,K)*W3+SUB(J,I-1,K)*W4
40 CONTINUE
HYDVAL(NHYDTOT+N,IHYDLOC)=TOTL
ENDIF
50 CONTINUE
NHYDTOT=NHYDTOT+NHYDIBS
C
C ------ RETURN
RETURN
END
SUBROUTINE GWF2HYD7SUB7SE(IHYDLOC,IGRID)
C ******************************************************************
C COMPUTE HYDROGRAPH RECORDS FOR SUB
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: HNEW,IBOUND,IOUT,nrow,ncol
USE HYDBASMODULE
USE HYDSUBMODULE
USE GWFSUBMODULE, ONLY: LN,HC,SUB,NNDB
C ------------------------------------------------------------------
CALL SGWF2HYD7SUB7PNT(IGRID)
C
C -----Return if no SUB hydrographs.
IF(NHYDSUB.LE.0) RETURN
C
C -----Calculate value for each hydrograph point.
DO 50 N=1,NHYDSUB
NN=N
C -----Determine interpolation type, word length, number of weights,
C -----and locations of IBOUND codes at or around hydrograph point.
J=JIKHYDSUB(1,N)
I=JIKHYDSUB(2,N)
K=JIKHYDSUB(3,N)
C
C -----If IBOUND is to be checked for inactive cells, retrieve values
C -----at or around hydrograph point.
IF(IBHYDSUB(N)) THEN
IB1=IBOUND(J,I,K)
IBFACT=IB1
IF(INTRPHYDSUB(N)) THEN
IB2=IBOUND(J+1,I,K)
IB3=IBOUND(J+1,I-1,K)
IB4=IBOUND(J,I-1,K)
IBFACT=IB1*IB2*IB3*IB4
ENDIF
ENDIF
C
C -----Check if hydrograph value is Preconsolidation Head.
IF(HYDSUBARR(N).EQ.'HC') THEN
IF(IBHYDSUB(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
ELSE
J=JIKHYDSUB(1,N)
I=JIKHYDSUB(2,N)
K=JIKHYDSUB(3,N)
W1=HYDSUBWT(1,N)
W2=HYDSUBWT(2,N)
W3=HYDSUBWT(3,N)
W4=HYDSUBWT(4,N)
icell1 = ((K-1)*nrow*ncol)+(J*nrow)+I
icell2 = ((K-1)*nrow*ncol)+((J+1)*nrow)+I
icell3 = ((K-1)*nrow*ncol)+((J+1)*nrow)+(I-1)
icell4 = ((K-1)*nrow*ncol)+(J*nrow)+(I-1)
HYDVAL(NHYDTOT+N,IHYDLOC)=
1 HC(icell1)*W1+HC(icell2)*W2+HC(icell3)*W3+HC(icell4)*W4
ENDIF
C
C -----Check if hydrograph value is compaction
ELSE IF(HYDSUBARR(N).EQ.'CP') THEN
IF(IBHYDSUB(N) .AND. IBFACT.EQ.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
ELSE
J=JIKHYDSUB(1,N)
I=JIKHYDSUB(2,N)
K=JIKHYDSUB(3,N)
W1=HYDSUBWT(1,N)
W2=HYDSUBWT(2,N)
W3=HYDSUBWT(3,N)
W4=HYDSUBWT(4,N)
icell1 = ((K-1)*nrow*ncol)+(J*nrow)+I
icell2 = ((K-1)*nrow*ncol)+((J+1)*nrow)+I
icell3 = ((K-1)*nrow*ncol)+((J+1)*nrow)+(I-1)
icell4 = ((K-1)*nrow*ncol)+(J*nrow)+(I-1)
HYDVAL(NHYDTOT+N,IHYDLOC)=
1 SUB(icell1)*W1+SUB(icell2)*W2+SUB(icell3)*W3+SUB(icell4)*W4
END IF
C
C -----Hydrograph value must be subsidence (not HC and not CP)
ELSE IF(HYDSUBARR(N).EQ.'SB') THEN
KLAY=JIKHYDSUB(3,N)
TOTL=0.
DO 40 K=1,KLAY
J=JIKHYDSUB(1,N)
I=JIKHYDSUB(2,N)
W1=HYDSUBWT(1,N)
W2=HYDSUBWT(2,N)
W3=HYDSUBWT(3,N)
W4=HYDSUBWT(4,N)
icell1 = ((KLAY-1)*nrow*ncol)+(J*nrow)+I
icell2 = ((KLAY-1)*nrow*ncol)+((J+1)*nrow)+I
icell3 = ((KLAY-1)*nrow*ncol)+((J+1)*nrow)+(I-1)
icell4 = ((KLAY-1)*nrow*ncol)+(J*nrow)+(I-1)
TOTL=TOTL+
1 SUB(icell1)*W1+SUB(icell2)*W2+SUB(icell3)*W3+SUB(icell4)*W4
40 CONTINUE
HYDVAL(NHYDTOT+N,IHYDLOC)=TOTL
ENDIF
50 CONTINUE
NHYDTOT=NHYDTOT+NHYDSUB
C
C ------RETURN
RETURN
END
SUBROUTINE GWF2HYD7STR7SE(IHYDLOC,IGRID)
C ******************************************************************
C COMPUTE HYDROGRAPH RECORDS FOR STREAMS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IBOUND,IOUT
USE HYDBASMODULE
USE HYDSTRMODULE
USE GWFSTRMODULE, ONLY: ISTRM,STRM,NSTREM
CHARACTER HYDSTRLBL*20,LINE*80,INTYP*1
C ------------------------------------------------------------------
CALL SGWF2HYD7STR7PNT(IGRID)
C
C ------Return if no STR hydrographs.
IF(NHYDSTR.LE.0) RETURN
C
C ------Calculate value for each stream hydrograph.
DO 50 N=1,NHYDSTR
ISTR=ISTRHYD(N)
C
C ------Check for the hydrograph type.
cc ARR/IRR designate the streamflow option with
cc ST==> stream stage, SO==> out of reach,
cc SI==> into reach, and SA==> into aquifer.
IF(HYDSTRARR(N).EQ.'ST') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(2,ISTR)
ELSE IF(HYDSTRARR(N).EQ.'SO') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(9,ISTR)
ELSE IF(HYDSTRARR(N).EQ.'SI') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(10,ISTR)
ELSE IF(HYDSTRARR(N).EQ.'SA') THEN
K=ISTRM(1,ISTR)
I=ISTRM(2,ISTR)
J=ISTRM(3,ISTR)
IF(IBOUND(J,I,K).NE.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(11,ISTR)
ELSE
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
END IF
ENDIF
50 CONTINUE
NHYDTOT=NHYDTOT+NHYDSTR
C
C ------RETURN
RETURN
END
SUBROUTINE GWF2HYD7SFR7SE(IHYDLOC,IGRID)
C ******************************************************************
C COMPUTE HYDROGRAPH RECORDS FOR STREAMS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IBOUND,IOUT
USE HYDBASMODULE
USE HYDSFRMODULE
USE GWFSFRMODULE, ONLY: ISTRM,STRM,NSTRM
CHARACTER HYDSFRLBL*20,LINE*80,INTYP*1
C ------------------------------------------------------------------
CALL SGWF2HYD7SFR7PNT(IGRID)
C
C ------Return if no SFR hydrographs.
IF(NHYDSFR.LE.0) RETURN
C
C ------Calculate value for each stream hydrograph.
DO 50 N=1,NHYDSFR
ISFR=ISFRHYD(N)
C
C ------Check for the hydrograph type.
cc ARR/IRR designate the streamflow option with
cc ST==> stream stage, SO==> out of reach,
cc SI==> into reach, and SA==> into aquifer.
IF(HYDSFRARR(N).EQ.'ST') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(15,ISFR)
ELSE IF(HYDSFRARR(N).EQ.'SO') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(9,ISFR)
ELSE IF(HYDSFRARR(N).EQ.'SI') THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(10,ISFR)
ELSE IF(HYDSFRARR(N).EQ.'SA') THEN
K=ISTRM(1,ISFR)
I=ISTRM(2,ISFR)
J=ISTRM(3,ISFR)
IF(IBOUND(J,I,K).NE.0) THEN
HYDVAL(NHYDTOT+N,IHYDLOC)=STRM(11,ISFR)
ELSE
HYDVAL(NHYDTOT+N,IHYDLOC)=HYDNOH
END IF
ENDIF
50 CONTINUE
NHYDTOT=NHYDTOT+NHYDSFR
C
C ------RETURN
RETURN
END
SUBROUTINE GWF2HYD7BAS7OT(KSTP,KPER,IGRID)
C ******************************************************************
C WRITE HYDROGRAPH DATA FOR ONE TIME STEP
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY:ITMUNI,IOUT
USE GWFBASMODULE, ONLY: TOTIM
USE HYDBASMODULE
C ------------------------------------------------------------------
CALL SGWF2HYD7BAS7PNT(IGRID)
C
C1------RETURN IF NO HYDROGRAPH RECORDS.
IF(NHYDTOT.LE.0) RETURN
C
C2------IF THIS IS THE FIRST TIME IN THE SIMULATION, WRITE HEADER RECORD.
IF(KPER.EQ.1 .AND. KSTP.EQ.1) THEN
WRITE(IOUT,130) NHYDTOT
130 FORMAT(1X,'A TOTAL OF ',I3,' HYDROGRAPH POINTS HAVE BEEN ',
1 'PREPARED.')
NDECDIG=PRECISION(TOTIM)
IF(NDECDIG.GT.9) THEN
WRITE(IHYDMUN) -NHYDTOT,ITMUNI
ELSE
WRITE(IHYDMUN) NHYDTOT,ITMUNI
END IF
WRITE(IHYDMUN) 'TIME',(HYDLBL(N),N=1,NHYDTOT)
WRITE(IHYDMUN) 0.0,(HYDVAL(N,2),N=1,NHYDTOT)
ENDIF
C
C3------WRITE HYDROGRAPH RECORD FOR ONE TIME STEP.
WRITE(IHYDMUN) TOTIM,(HYDVAL(N,1),N=1,NHYDTOT)
C
C4------RETURN.
RETURN
END
SUBROUTINE SGWF2HYD7GRDLOC(XL,YL,NR1,NC1,NR2,NC2,XX1,XX2,YY1,YY2)
C ******************************************************************
C LOCATE CELLS FOR HYDROGRAPH POINTS
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: NCOL,NROW,DELR,DELC
C ------------------------------------------------------------------
ZERO=0.
HALF=0.5
XX1=ZERO
XX2=ZERO
YY1=ZERO
YY2=ZERO
X1=ZERO
IF(XL.LT.X1) THEN
NC1=0
NC2=0
GO TO 100
ENDIF
XCB=ZERO
XCF=DELR(1)*HALF
DO 10 N=1,NCOL
X2=X1+DELR(N)
XC=XCF
DXF=ZERO
IF(N.LT.NCOL) DXF=DELR(N+1)*HALF
XCF=X2+DXF
IF(XL.LE.X2) THEN
NC1=N
IF(XL.LT.XC) THEN
NC2=N-1
XX1=XCB
XX2=XC
ELSE
NC2=N
XX1=XC
XX2=XCF
ENDIF
GO TO 100
ENDIF
X1=X2
XCB=XC
10 CONTINUE
NC1=NCOL+1
NC2=NCOL+1
100 Y1=ZERO
YCB=ZERO
YCF=DELC(NROW)*HALF
IF(YL.LT.Y1) THEN
NR1=NROW+1
NR2=NROW+1
RETURN
ENDIF
DO 110 N=NROW,1,-1
Y2=Y1+DELC(N)
YC=YCF
DYF=ZERO
IF(N.GT.1) DYF=DELC(N-1)*HALF
YCF=Y2+DYF
IF(YL.LE.Y2) THEN
NR1=N
IF(YL.LT.YC) THEN
NR2=N+1
YY1=YCB
YY2=YC
ELSE
NR2=N
YY1=YC
YY2=YCF
ENDIF
RETURN
ENDIF
Y1=Y2
YCB=YC
110 CONTINUE
NC1=0
NC2=0
RETURN
END
FUNCTION SHYD7WTAVG(N)
C ******************************************************************
C COMPUTE WEIGHTED AVERAGE OF HEAD
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: NCOL,NROW,NLAY,HNEW
USE HYDBASMODULE, ONLY: JIKHYDBAS,HYDBASWT
DOUBLE PRECISION W1,W2,W3,W4,HTOT
C ------------------------------------------------------------------
J=JIKHYDBAS(1,N)
I=JIKHYDBAS(2,N)
K=JIKHYDBAS(3,N)
W1=HYDBASWT(1,N)
W2=HYDBASWT(2,N)
W3=HYDBASWT(3,N)
W4=HYDBASWT(4,N)
HTOT=HNEW(J,I,K)*W1
if(W2.gt.0.)HTOT=HTOT+HNEW(J+1,I,K)*W2
if(W3.gt.0.)HTOT=HTOT+HNEW(J+1,I-1,K)*W3
if(W4.gt.0.)HTOT=HTOT+HNEW(J,I-1,K)*W4
SHYD7WTAVG=HTOT
RETURN
END
SUBROUTINE SGWF2HYD7MW(X0,Y0,X1,X2,Y1,Y2,W1,W2,W3,W4)
C ******************************************************************
C COMPUTE WEIGHTS FOR BILINEAR INTERPOLATION
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
C
DX=(X0-X1)/(X2-X1)
DY=(Y0-Y1)/(Y2-Y1)
DXY=DX*DY
W1=1-DX-DY+DXY
W2=DX-DXY
W3=DXY
W4=DY-DXY
RETURN
END
SUBROUTINE GWF2HYD7DA(IGRID)
C ******************************************************************
C SUBROUTINE TO DEALLOCATE ALL HYDMOD VARIABLES
C ******************************************************************
C
C SPECIFICATIONS:
C ------------------------------------------------------------------
USE GLOBAL, ONLY: IUNIT
use m_mf2005_iu, only: iuhyd, iuibs, iusub, iustr, iusfr
C ------------------------------------------------------------------
C1------DEALLOCATE HYDBAS VARIABLES
CALL SGWF2HYD7BAS7DA(IGRID)
C
C2------CHECK IF HYDMOD IS USED WITH OTHER PACKAGES. IF SO, DEALLOCATE
IF(IUNIT(IUHYD).GT.0 .AND. IUNIT(IUIBS).GT.0)
1 CALL SGWF2HYD7IBS7DA(IGRID)
IF(IUNIT(IUHYD).GT.0 .AND. IUNIT(IUSUB).GT.0)
1 CALL SGWF2HYD7SUB7DA(IGRID)
IF(IUNIT(IUHYD).GT.0 .AND. IUNIT(IUSTR).GT.0)
1 CALL SGWF2HYD7STR7DA(IGRID)
IF(IUNIT(IUHYD).GT.0 .AND. IUNIT(IUSFR).GT.0)
1 CALL SGWF2HYD7SFR7DA(IGRID)
C3
RETURN
END
SUBROUTINE SGWF2HYD7BAS7DA(IGRID)
C Deallocate HYD BAS memory
USE HYDBASMODULE
C
DEALLOCATE(HYDBASDAT(IGRID)%NHYDTOT)
DEALLOCATE(HYDBASDAT(IGRID)%HYDVAL)
DEALLOCATE(HYDBASDAT(IGRID)%HYDLBL)
DEALLOCATE(HYDBASDAT(IGRID)%IHYDMUN)
DEALLOCATE(HYDBASDAT(IGRID)%NHYDBAS)
DEALLOCATE(HYDBASDAT(IGRID)%HYDNOH)
DEALLOCATE(HYDBASDAT(IGRID)%IBHYDBAS)
DEALLOCATE(HYDBASDAT(IGRID)%INTRPHYDBAS)
DEALLOCATE(HYDBASDAT(IGRID)%JIKHYDBAS)
DEALLOCATE(HYDBASDAT(IGRID)%HYDBASWT)
DEALLOCATE(HYDBASDAT(IGRID)%HYDBASSTRT)
DEALLOCATE(HYDBASDAT(IGRID)%HYDBASARR)
C
RETURN
END
SUBROUTINE SGWF2HYD7BAS7PNT(IGRID)
C Change HYD BAS data to a different grid.
USE HYDBASMODULE
C
NHYDTOT=>HYDBASDAT(IGRID)%NHYDTOT
HYDVAL=>HYDBASDAT(IGRID)%HYDVAL
HYDLBL=>HYDBASDAT(IGRID)%HYDLBL
IHYDMUN=>HYDBASDAT(IGRID)%IHYDMUN
NHYDBAS=>HYDBASDAT(IGRID)%NHYDBAS
HYDNOH=>HYDBASDAT(IGRID)%HYDNOH
IBHYDBAS=>HYDBASDAT(IGRID)%IBHYDBAS
INTRPHYDBAS=>HYDBASDAT(IGRID)%INTRPHYDBAS
JIKHYDBAS=>HYDBASDAT(IGRID)%JIKHYDBAS
HYDBASWT=>HYDBASDAT(IGRID)%HYDBASWT
HYDBASSTRT=>HYDBASDAT(IGRID)%HYDBASSTRT
HYDBASARR=>HYDBASDAT(IGRID)%HYDBASARR
C
RETURN
END
SUBROUTINE SGWF2HYD7BAS7PSV(IGRID)
C Save HYD BAS data for a grid.
USE HYDBASMODULE
C
HYDBASDAT(IGRID)%NHYDTOT=>NHYDTOT
HYDBASDAT(IGRID)%HYDVAL=>HYDVAL
HYDBASDAT(IGRID)%HYDLBL=>HYDLBL
HYDBASDAT(IGRID)%IHYDMUN=>IHYDMUN
HYDBASDAT(IGRID)%NHYDBAS=>NHYDBAS
HYDBASDAT(IGRID)%HYDNOH=>HYDNOH
HYDBASDAT(IGRID)%IBHYDBAS=>IBHYDBAS
HYDBASDAT(IGRID)%INTRPHYDBAS=>INTRPHYDBAS
HYDBASDAT(IGRID)%JIKHYDBAS=>JIKHYDBAS
HYDBASDAT(IGRID)%HYDBASWT=>HYDBASWT
HYDBASDAT(IGRID)%HYDBASSTRT=>HYDBASSTRT
HYDBASDAT(IGRID)%HYDBASARR=>HYDBASARR
C
RETURN
END
SUBROUTINE SGWF2HYD7IBS7DA(IGRID)
C Deallocate HYD IBS memory
USE HYDIBSMODULE
C
DEALLOCATE(HYDIBSDAT(IGRID)%NHYDIBS)
DEALLOCATE(HYDIBSDAT(IGRID)%IBHYDIBS)
DEALLOCATE(HYDIBSDAT(IGRID)%INTRPHYDIBS)
DEALLOCATE(HYDIBSDAT(IGRID)%JIKHYDIBS)
DEALLOCATE(HYDIBSDAT(IGRID)%HYDIBSWT)
DEALLOCATE(HYDIBSDAT(IGRID)%HYDIBSARR)
C
RETURN
END
SUBROUTINE SGWF2HYD7IBS7PNT(IGRID)
C Change HYD IBS data to a different grid.
USE HYDIBSMODULE
C
NHYDIBS=>HYDIBSDAT(IGRID)%NHYDIBS
IBHYDIBS=>HYDIBSDAT(IGRID)%IBHYDIBS
INTRPHYDIBS=>HYDIBSDAT(IGRID)%INTRPHYDIBS
JIKHYDIBS=>HYDIBSDAT(IGRID)%JIKHYDIBS
HYDIBSWT=>HYDIBSDAT(IGRID)%HYDIBSWT
HYDIBSARR=>HYDIBSDAT(IGRID)%HYDIBSARR
C
RETURN
END
SUBROUTINE SGWF2HYD7IBS7PSV(IGRID)
C Save HYD IBS data for a grid.
USE HYDIBSMODULE
C
HYDIBSDAT(IGRID)%NHYDIBS=>NHYDIBS
HYDIBSDAT(IGRID)%IBHYDIBS=>IBHYDIBS
HYDIBSDAT(IGRID)%INTRPHYDIBS=>INTRPHYDIBS
HYDIBSDAT(IGRID)%JIKHYDIBS=>JIKHYDIBS
HYDIBSDAT(IGRID)%HYDIBSWT=>HYDIBSWT
HYDIBSDAT(IGRID)%HYDIBSARR=>HYDIBSARR
C
RETURN
END
SUBROUTINE SGWF2HYD7SUB7DA(IGRID)
C Deallocate HYD SUB memory
USE HYDSUBMODULE
C
DEALLOCATE(HYDSUBDAT(IGRID)%NHYDSUB)
DEALLOCATE(HYDSUBDAT(IGRID)%IBHYDSUB)
DEALLOCATE(HYDSUBDAT(IGRID)%INTRPHYDSUB)
DEALLOCATE(HYDSUBDAT(IGRID)%JIKHYDSUB)
DEALLOCATE(HYDSUBDAT(IGRID)%HYDSUBWT)
DEALLOCATE(HYDSUBDAT(IGRID)%HYDSUBARR)
C
RETURN
END
SUBROUTINE SGWF2HYD7SUB7PNT(IGRID)
C Change HYD SUB data to a different grid.
USE HYDSUBMODULE
C
NHYDSUB=>HYDSUBDAT(IGRID)%NHYDSUB
IBHYDSUB=>HYDSUBDAT(IGRID)%IBHYDSUB
INTRPHYDSUB=>HYDSUBDAT(IGRID)%INTRPHYDSUB
JIKHYDSUB=>HYDSUBDAT(IGRID)%JIKHYDSUB
HYDSUBWT=>HYDSUBDAT(IGRID)%HYDSUBWT
HYDSUBARR=>HYDSUBDAT(IGRID)%HYDSUBARR
C
RETURN
END
SUBROUTINE SGWF2HYD7SUB7PSV(IGRID)
C Save HYD SUB data for a grid.
USE HYDSUBMODULE
C
HYDSUBDAT(IGRID)%NHYDSUB=>NHYDSUB
HYDSUBDAT(IGRID)%IBHYDSUB=>IBHYDSUB
HYDSUBDAT(IGRID)%INTRPHYDSUB=>INTRPHYDSUB
HYDSUBDAT(IGRID)%JIKHYDSUB=>JIKHYDSUB
HYDSUBDAT(IGRID)%HYDSUBWT=>HYDSUBWT
HYDSUBDAT(IGRID)%HYDSUBARR=>HYDSUBARR
C
RETURN
END
SUBROUTINE SGWF2HYD7STR7DA(IGRID)
C Deallocate HYD STR memory
USE HYDSTRMODULE
C
DEALLOCATE(HYDSTRDAT(IGRID)%NHYDSTR)
DEALLOCATE(HYDSTRDAT(IGRID)%ISTRHYD)
DEALLOCATE(HYDSTRDAT(IGRID)%HYDSTRARR)
C
RETURN
END
SUBROUTINE SGWF2HYD7STR7PNT(IGRID)
C Change HYD STR data to a different grid.
USE HYDSTRMODULE
C
NHYDSTR=>HYDSTRDAT(IGRID)%NHYDSTR
ISTRHYD=>HYDSTRDAT(IGRID)%ISTRHYD
HYDSTRARR=>HYDSTRDAT(IGRID)%HYDSTRARR
C
RETURN
END
SUBROUTINE SGWF2HYD7STR7PSV(IGRID)
C Save HYD STR data for a grid.
USE HYDSTRMODULE
C
HYDSTRDAT(IGRID)%NHYDSTR=>NHYDSTR
HYDSTRDAT(IGRID)%ISTRHYD=>ISTRHYD
HYDSTRDAT(IGRID)%HYDSTRARR=>HYDSTRARR
C
RETURN
END
SUBROUTINE SGWF2HYD7SFR7DA(IGRID)
C Deallocate HYD SFR memory
USE HYDSFRMODULE
C
DEALLOCATE(HYDSFRDAT(IGRID)%NHYDSFR)
DEALLOCATE(HYDSFRDAT(IGRID)%ISFRHYD)
DEALLOCATE(HYDSFRDAT(IGRID)%HYDSFRARR)
C
RETURN
END
SUBROUTINE SGWF2HYD7SFR7PNT(IGRID)
C Change HYD SFR data to a different grid.
USE HYDSFRMODULE
C
NHYDSFR=>HYDSFRDAT(IGRID)%NHYDSFR
ISFRHYD=>HYDSFRDAT(IGRID)%ISFRHYD
HYDSFRARR=>HYDSFRDAT(IGRID)%HYDSFRARR
C
RETURN
END
SUBROUTINE SGWF2HYD7SFR7PSV(IGRID)
C Save HYD SFR data for a grid.
USE HYDSFRMODULE
C
HYDSFRDAT(IGRID)%NHYDSFR=>NHYDSFR
HYDSFRDAT(IGRID)%ISFRHYD=>ISFRHYD
HYDSFRDAT(IGRID)%HYDSFRARR=>HYDSFRARR
C
RETURN
END