1797 class(MawType),
intent(inout) :: this
1799 character(len=LINELENGTH) :: title
1800 character(len=LINELENGTH) :: line
1801 character(len=LINELENGTH) :: text
1802 character(len=16) :: csteady
1804 logical :: endOfBlock
1805 integer(I4B) :: ierr
1806 integer(I4B) :: node
1808 integer(I4B) :: ntabcols
1809 integer(I4B) :: ntabrows
1810 integer(I4B) :: imaw
1811 integer(I4B) :: ibnd
1813 integer(I4B) :: jpos
1814 integer(I4B) :: iheadlimit_warning
1816 character(len=*),
parameter :: fmtblkerr = &
1817 &
"('Looking for BEGIN PERIOD iper. Found ', a, ' instead.')"
1818 character(len=*),
parameter :: fmtlsp = &
1819 &
"(1X,/1X,'REUSING ',A,'S FROM LAST STRESS PERIOD')"
1822 iheadlimit_warning = 0
1825 this%imawiss = this%gwfiss
1828 if (this%imawissopt == 1)
then
1833 this%nbound = this%maxbound
1837 if (this%inunit == 0)
return
1840 if (this%ionper <
kper)
then
1843 call this%parser%GetBlock(
'PERIOD', isfound, ierr, &
1844 supportopenclose=.true., &
1845 blockrequired=.false.)
1849 call this%read_check_ionper()
1855 this%ionper =
nper + 1
1858 call this%parser%GetCurrentLine(line)
1859 write (errmsg, fmtblkerr) adjustl(trim(line))
1860 call store_error(errmsg, terminate=.true.)
1866 if (this%ionper ==
kper)
then
1869 if (this%iprpak /= 0)
then
1872 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1873 trim(adjustl(this%packName))//
') DATA FOR PERIOD'
1874 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1875 call table_cr(this%inputtab, this%packName, title)
1876 call this%inputtab%table_df(1, 5, this%iout, finalize=.false.)
1878 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
1880 call this%inputtab%initialize_column(text, 20, alignment=tableft)
1882 write (text,
'(a,1x,i6)')
'VALUE', n
1883 call this%inputtab%initialize_column(text, 15, alignment=tabcenter)
1890 call this%parser%GetNextLine(endofblock)
1891 if (endofblock)
exit
1893 imaw = this%parser%GetInteger()
1894 if (imaw < 1 .or. imaw > this%nmawwells)
then
1895 write (errmsg,
'(2(a,1x),i0,a)') &
1896 'IMAW must be greater than 0 and', &
1897 'less than or equal to ', this%nmawwells,
'.'
1898 call store_error(errmsg)
1903 call this%maw_set_stressperiod(imaw, iheadlimit_warning)
1906 if (this%iprpak /= 0)
then
1907 call this%parser%GetCurrentLine(line)
1908 call this%inputtab%line_to_columns(line)
1911 if (this%iprpak /= 0)
then
1912 call this%inputtab%finalize_table()
1917 write (this%iout, fmtlsp) trim(this%filtyp)
1921 if (iheadlimit_warning > 0)
then
1922 write (warnmsg,
'(a,a,a,1x,a,1x,a)') &
1923 "HEAD_LIMIT in '", trim(this%packName),
"' was below the well bottom", &
1924 "for one or more multi-aquifer well(s). This may result in", &
1925 "convergence failures for some models."
1926 call store_warning(warnmsg, substring=warnmsg(:50))
1930 if (count_errors() > 0)
then
1931 call this%parser%StoreErrorUnit()
1935 if (this%check_attr /= 0)
then
1936 call this%maw_check_attributes()
1939 if (this%iprpak == 1)
then
1940 if (this%imawiss /= 0)
then
1941 csteady =
'STEADY-STATE '
1943 csteady =
'TRANSIENT '
1947 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1948 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
1949 ' RATE DATA FOR PERIOD'
1950 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1952 call table_cr(this%inputtab, this%packName, title)
1953 call this%inputtab%table_df(this%nmawwells, ntabcols, this%iout)
1955 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
1957 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1959 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1960 text =
'SPECIFIED HEAD'
1961 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1962 text =
'PUMP ELEVATION'
1963 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1964 text =
'REDUCTION LENGTH'
1965 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1966 do n = 1, this%nmawwells
1967 call this%inputtab%add_term(n)
1968 call this%inputtab%add_term(this%status(n))
1969 call this%inputtab%add_term(this%rate(n))
1970 if (this%iboundpak(n) < 0)
then
1971 call this%inputtab%add_term(this%well_head(n))
1973 call this%inputtab%add_term(
' ')
1975 call this%inputtab%add_term(this%pumpelev(n))
1976 if (this%reduction_length(n) /= dep20)
then
1977 call this%inputtab%add_term(this%reduction_length(n))
1979 call this%inputtab%add_term(
' ')
1984 if (this%iflowingwells > 0)
then
1987 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1988 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
1989 ' FLOWING WELL DATA FOR PERIOD'
1990 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1993 do n = 1, this%nmawwells
1994 if (this%fwcond(n) > dzero)
then
1995 ntabrows = ntabrows + 1
1998 if (ntabrows > 0)
then
1999 call table_cr(this%inputtab, this%packName, title)
2000 call this%inputtab%table_df(ntabrows, ntabcols, this%iout)
2002 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
2004 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2006 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2007 text =
'REDUCTION LENGTH'
2008 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2009 do n = 1, this%nmawwells
2010 if (this%fwcond(n) > dzero)
then
2011 call this%inputtab%add_term(n)
2012 call this%inputtab%add_term(this%fwelev(n))
2013 call this%inputtab%add_term(this%fwcond(n))
2014 call this%inputtab%add_term(this%fwrlen(n))
2021 title = trim(adjustl(this%text))//
' PACKAGE ('// &
2022 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
2023 ' WELL SHUTOFF DATA FOR PERIOD'
2024 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
2027 do n = 1, this%nmawwells
2028 if (this%shutofflevel(n) /= dep20)
then
2029 ntabrows = ntabrows + 1
2032 if (ntabrows > 0)
then
2033 call table_cr(this%inputtab, this%packName, title)
2034 call this%inputtab%table_df(ntabrows, ntabcols, this%iout)
2036 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
2038 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2040 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2042 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2043 do n = 1, this%nmawwells
2044 if (this%shutofflevel(n) /= dep20)
then
2045 call this%inputtab%add_term(n)
2046 call this%inputtab%add_term(this%shutofflevel(n))
2047 call this%inputtab%add_term(this%shutoffmin(n))
2048 call this%inputtab%add_term(this%shutoffmax(n))
2057 do n = 1, this%nmawwells
2058 do j = 1, this%ngwfnodes(n)
2059 jpos = this%get_jpos(n, j)
2060 node = this%get_gwfnode(n, j)
2061 this%nodelist(ibnd) = node
2062 this%bound(1, ibnd) = this%xnewpak(n)
2063 this%bound(2, ibnd) = this%satcond(jpos)
2064 this%bound(3, ibnd) = this%botscrn(jpos)
2065 if (this%iboundpak(n) > 0)
then
2066 this%bound(4, ibnd) = this%rate(n)
2068 this%bound(4, ibnd) = dzero
integer(i4b), pointer, public nper
number of stress period