1803 class(MawType),
intent(inout) :: this
1805 character(len=LINELENGTH) :: title
1806 character(len=LINELENGTH) :: line
1807 character(len=LINELENGTH) :: text
1808 character(len=16) :: csteady
1810 logical :: endOfBlock
1811 integer(I4B) :: ierr
1812 integer(I4B) :: node
1814 integer(I4B) :: ntabcols
1815 integer(I4B) :: ntabrows
1816 integer(I4B) :: imaw
1817 integer(I4B) :: ibnd
1819 integer(I4B) :: jpos
1820 integer(I4B) :: iheadlimit_warning
1822 character(len=*),
parameter :: fmtblkerr = &
1823 &
"('Looking for BEGIN PERIOD iper. Found ', a, ' instead.')"
1824 character(len=*),
parameter :: fmtlsp = &
1825 &
"(1X,/1X,'REUSING ',A,'S FROM LAST STRESS PERIOD')"
1828 iheadlimit_warning = 0
1831 this%imawiss = this%gwfiss
1834 if (this%imawissopt == 1)
then
1839 this%nbound = this%maxbound
1843 if (this%inunit == 0)
return
1846 if (this%ionper <
kper)
then
1849 call this%parser%GetBlock(
'PERIOD', isfound, ierr, &
1850 supportopenclose=.true., &
1851 blockrequired=.false.)
1855 call this%read_check_ionper()
1861 this%ionper =
nper + 1
1864 call this%parser%GetCurrentLine(line)
1865 write (errmsg, fmtblkerr) adjustl(trim(line))
1866 call store_error(errmsg, terminate=.true.)
1872 if (this%ionper ==
kper)
then
1875 if (this%iprpak /= 0)
then
1878 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1879 trim(adjustl(this%packName))//
') DATA FOR PERIOD'
1880 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1881 call table_cr(this%inputtab, this%packName, title)
1882 call this%inputtab%table_df(1, 5, this%iout, finalize=.false.)
1884 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
1886 call this%inputtab%initialize_column(text, 20, alignment=tableft)
1888 write (text,
'(a,1x,i6)')
'VALUE', n
1889 call this%inputtab%initialize_column(text, 15, alignment=tabcenter)
1896 call this%parser%GetNextLine(endofblock)
1897 if (endofblock)
exit
1899 imaw = this%parser%GetInteger()
1900 if (imaw < 1 .or. imaw > this%nmawwells)
then
1901 write (errmsg,
'(2(a,1x),i0,a)') &
1902 'IMAW must be greater than 0 and', &
1903 'less than or equal to ', this%nmawwells,
'.'
1904 call store_error(errmsg)
1909 call this%maw_set_stressperiod(imaw, iheadlimit_warning)
1912 if (this%iprpak /= 0)
then
1913 call this%parser%GetCurrentLine(line)
1914 call this%inputtab%line_to_columns(line)
1917 if (this%iprpak /= 0)
then
1918 call this%inputtab%finalize_table()
1923 write (this%iout, fmtlsp) trim(this%filtyp)
1927 if (iheadlimit_warning > 0)
then
1928 write (warnmsg,
'(a,a,a,1x,a,1x,a)') &
1929 "HEAD_LIMIT in '", trim(this%packName),
"' was below the well bottom", &
1930 "for one or more multi-aquifer well(s). This may result in", &
1931 "convergence failures for some models."
1932 call store_warning(warnmsg, substring=warnmsg(:50))
1936 if (count_errors() > 0)
then
1937 call this%parser%StoreErrorUnit()
1941 if (this%check_attr /= 0)
then
1942 call this%maw_check_attributes()
1945 if (this%iprpak == 1)
then
1946 if (this%imawiss /= 0)
then
1947 csteady =
'STEADY-STATE '
1949 csteady =
'TRANSIENT '
1953 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1954 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
1955 ' RATE DATA FOR PERIOD'
1956 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1958 call table_cr(this%inputtab, this%packName, title)
1959 call this%inputtab%table_df(this%nmawwells, ntabcols, this%iout)
1961 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
1963 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1965 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1966 text =
'SPECIFIED HEAD'
1967 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1968 text =
'PUMP ELEVATION'
1969 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1970 text =
'REDUCTION LENGTH'
1971 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
1972 do n = 1, this%nmawwells
1973 call this%inputtab%add_term(n)
1974 call this%inputtab%add_term(this%status(n))
1975 call this%inputtab%add_term(this%rate(n))
1976 if (this%iboundpak(n) < 0)
then
1977 call this%inputtab%add_term(this%well_head(n))
1979 call this%inputtab%add_term(
' ')
1981 call this%inputtab%add_term(this%pumpelev(n))
1982 if (this%reduction_length(n) /= dep20)
then
1983 call this%inputtab%add_term(this%reduction_length(n))
1985 call this%inputtab%add_term(
' ')
1990 if (this%iflowingwells > 0)
then
1993 title = trim(adjustl(this%text))//
' PACKAGE ('// &
1994 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
1995 ' FLOWING WELL DATA FOR PERIOD'
1996 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
1999 do n = 1, this%nmawwells
2000 if (this%fwcond(n) > dzero)
then
2001 ntabrows = ntabrows + 1
2004 if (ntabrows > 0)
then
2005 call table_cr(this%inputtab, this%packName, title)
2006 call this%inputtab%table_df(ntabrows, ntabcols, this%iout)
2008 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
2010 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2012 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2013 text =
'REDUCTION LENGTH'
2014 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2015 do n = 1, this%nmawwells
2016 if (this%fwcond(n) > dzero)
then
2017 call this%inputtab%add_term(n)
2018 call this%inputtab%add_term(this%fwelev(n))
2019 call this%inputtab%add_term(this%fwcond(n))
2020 call this%inputtab%add_term(this%fwrlen(n))
2027 title = trim(adjustl(this%text))//
' PACKAGE ('// &
2028 trim(adjustl(this%packName))//
') '//trim(adjustl(csteady))// &
2029 ' WELL SHUTOFF DATA FOR PERIOD'
2030 write (title,
'(a,1x,i6)') trim(adjustl(title)),
kper
2033 do n = 1, this%nmawwells
2034 if (this%shutofflevel(n) /= dep20)
then
2035 ntabrows = ntabrows + 1
2038 if (ntabrows > 0)
then
2039 call table_cr(this%inputtab, this%packName, title)
2040 call this%inputtab%table_df(ntabrows, ntabcols, this%iout)
2042 call this%inputtab%initialize_column(text, 10, alignment=tabcenter)
2044 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2046 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2048 call this%inputtab%initialize_column(text, 12, alignment=tabcenter)
2049 do n = 1, this%nmawwells
2050 if (this%shutofflevel(n) /= dep20)
then
2051 call this%inputtab%add_term(n)
2052 call this%inputtab%add_term(this%shutofflevel(n))
2053 call this%inputtab%add_term(this%shutoffmin(n))
2054 call this%inputtab%add_term(this%shutoffmax(n))
2063 do n = 1, this%nmawwells
2064 do j = 1, this%ngwfnodes(n)
2065 jpos = this%get_jpos(n, j)
2066 node = this%get_gwfnode(n, j)
2067 this%nodelist(ibnd) = node
2068 this%bound(1, ibnd) = this%xnewpak(n)
2069 this%bound(2, ibnd) = this%satcond(jpos)
2070 this%bound(3, ibnd) = this%botscrn(jpos)
2071 if (this%iboundpak(n) > 0)
then
2072 this%bound(4, ibnd) = this%rate(n)
2074 this%bound(4, ibnd) = dzero
integer(i4b), pointer, public nper
number of stress period