126 logical(LGP),
pointer :: reset_mapped_id
127 integer(I4B),
pointer :: ibudgetout => null()
128 integer(I4B),
pointer :: ibudcsv => null()
129 integer(I4B),
pointer :: maxmvr => null()
130 integer(I4B),
pointer :: maxpackages => null()
131 integer(I4B),
pointer :: maxcomb => null()
132 integer(I4B),
pointer :: nmvr => null()
133 integer(I4B),
pointer :: iexgmvr => null()
134 integer(I4B),
pointer :: imodelnames => null()
135 integer(I4B),
dimension(:),
pointer,
contiguous :: ientries => null()
136 character(len=LENMEMPATH), &
137 dimension(:),
pointer,
contiguous :: pckmempaths
138 character(len=LENPACKAGENAME), &
139 dimension(:),
pointer,
contiguous :: paknames => null()
140 type(
mvrtype),
dimension(:),
pointer,
contiguous :: mvr => null()
145 dimension(:),
pointer,
contiguous :: pakmovers => null()
184 subroutine mvr_cr(mvrobj, name_parent, inunit, iout, dis, iexgmvr)
187 character(len=*),
intent(in) :: name_parent
188 integer(I4B),
intent(in) :: inunit
189 integer(I4B),
intent(in) :: iout
191 integer(I4B),
optional :: iexgmvr
197 call mvrobj%mvr_init(name_parent, inunit, iout, dis, iexgmvr)
203 subroutine mvr_init(this, name_parent, inunit, iout, dis, iexgmvr)
205 character(len=*),
intent(in) :: name_parent
206 integer(I4B),
intent(in) :: inunit
207 integer(I4B),
intent(in) :: iout
209 integer(I4B),
optional :: iexgmvr
213 call this%set_names(1, name_parent,
'MVR',
'MVR')
216 call this%allocate_scalars()
226 if (
present(iexgmvr)) this%iexgmvr = iexgmvr
230 call budget_cr(this%budget, this%memoryPath)
233 call this%parser%Initialize(this%inunit, this%iout)
250 write (this%iout, 1) this%inunit
251 1
format(1x, /1x,
'MVR -- WATER MOVER PACKAGE, VERSION 8, 1/29/2016', &
252 ' INPUT READ FROM UNIT ', i0)
255 call this%read_options()
256 call this%check_options()
259 call this%read_dimensions()
262 call this%allocate_arrays()
265 call this%read_packages()
266 call this%check_packages()
269 call this%budget%budget_df(this%maxpackages,
'WATER MOVER')
270 call this%budget%set_ibudcsv(this%ibudcsv)
273 call this%mvr_setup_budobj()
292 integer(I4B) :: i, ierr, nlist, ipos
293 integer(I4B) :: ii, jj
295 character(len=LINELENGTH) :: line, errmsg
296 character(len=LENMODELNAME) :: mname
298 character(len=*),
parameter :: fmtblkerr = &
299 &
"('Error. Looking for BEGIN PERIOD iper. Found ', a, ' instead.')"
300 character(len=*),
parameter :: fmtlsp = &
301 &
"(1X,/1X,'REUSING ',A,'S FROM LAST STRESS PERIOD')"
302 character(len=*),
parameter :: fmtnbd = &
303 "(1X,/1X,'THE NUMBER OF ACTIVE ',A,'S (',I6, &
304 &') IS GREATER THAN MAXIMUM(',I6,')')"
308 if (this%inunit == 0)
return
311 if (this%ionper <
kper)
then
314 call this%parser%GetBlock(
'PERIOD', isfound, ierr, &
315 supportopenclose=.true., &
316 blockrequired=.false.)
320 call this%read_check_ionper()
326 this%ionper =
nper + 1
329 call this%parser%GetCurrentLine(line)
330 write (errmsg, fmtblkerr) adjustl(trim(line))
332 call this%parser%StoreErrorUnit()
338 if (this%ionper ==
kper)
then
339 write (this%iout,
'(/,2x,a,i0)')
'READING WATER MOVERS FOR PERIOD ',
kper
342 this%reset_mapped_id = .true.
345 if (this%iexgmvr == 0)
then
346 mname = this%name_model
353 call this%assign_packagemovers()
356 call this%gwfmvrperioddata%read_from_parser(this%parser, nlist, mname)
359 call this%initialize_movers(nlist)
363 call this%mvr(i)%prepare(this%parser%iuactive, &
366 if (this%iprpak == 1)
call this%mvr(i)%echo(this%iout)
368 write (this%iout,
'(/,1x,a,1x,i6,/)')
'END OF DATA FOR PERIOD',
kper
372 write (this%iout,
'(4x, i0, a, i0)') this%nmvr, &
373 ' MOVERS READ FOR PERIOD ',
kper
377 ipos =
ifind(this%pckMemPaths, this%mvr(i)%mem_path_src)
379 write (errmsg,
'(a,a,a)')
'Provider ', &
380 trim(this%mvr(i)%mem_path_src),
' not listed in packages block.'
383 ipos =
ifind(this%pckMemPaths, this%mvr(i)%mem_path_tgt)
385 write (errmsg,
'(a,a,a)')
'Receiver ', &
386 trim(this%mvr(i)%mem_path_tgt),
' not listed in packages block.'
391 call this%parser%StoreErrorUnit()
395 do i = 1, this%maxcomb
401 ii =
ifind(this%pckMemPaths, this%mvr(i)%mem_path_src)
402 jj =
ifind(this%pckMemPaths, this%mvr(i)%mem_path_tgt)
403 ipos = (ii - 1) * this%maxpackages + jj
404 this%ientries(ipos) = this%ientries(ipos) + 1
407 write (this%iout, fmtlsp)
'MVR'
417 integer(I4B) :: nr_active_movers
421 do i = 1, nr_active_movers
422 call this%mvr(i)%set_values(this%gwfmvrperioddata%mname1(i), &
423 this%gwfmvrperioddata%pname1(i), &
424 this%gwfmvrperioddata%id1(i), &
425 this%gwfmvrperioddata%mname2(i), &
426 this%gwfmvrperioddata%pname2(i), &
427 this%gwfmvrperioddata%id2(i), &
428 this%gwfmvrperioddata%imvrtype(i), &
429 this%gwfmvrperioddata%value(i))
441 call this%mvr(i)%advance()
456 call this%mvr(i)%update_provider()
457 call this%mvr(i)%update_receiver()
464 subroutine mvr_cc(this, innertot, kiter, iend, icnvgmod, cpak, ipak, dpak)
467 integer(I4B),
intent(in) :: innertot
468 integer(I4B),
intent(in) :: kiter
469 integer(I4B),
intent(in) :: iend
470 integer(I4B),
intent(in) :: icnvgmod
471 character(len=LENPAKLOC),
intent(inout) :: cpak
472 integer(I4B),
intent(inout) :: ipak
473 real(DP),
intent(inout) :: dpak
475 character(len=*),
parameter :: fmtmvrcnvg = &
476 "(/,1x,'MOVER PACKAGE REQUIRES AT LEAST TWO OUTER ITERATIONS. CONVERGE &
477 &FLAG HAS BEEN RESET TO FALSE.')"
480 if (this%nmvr > 0)
then
481 if (icnvgmod == 1 .and. kiter == 1)
then
483 cpak = trim(this%packName)
484 write (this%iout, fmtmvrcnvg)
504 if (this%reset_mapped_id)
then
505 call this%set_mapped_id()
506 this%reset_mapped_id = .false.
510 call this%fill_budobj()
518 subroutine mvr_bdsav(this, icbcfl, ibudfl, isuppress_output)
523 integer(I4B),
intent(in) :: icbcfl
524 integer(I4B),
intent(in) :: ibudfl
525 integer(I4B),
intent(in) :: isuppress_output
527 integer(I4B) :: ibinun
529 character(len=*),
parameter :: fmttkk = &
530 "(1X,/1X,A,' PERIOD ',I0,' STEP ',I0)"
533 if (ibudfl /= 0 .and. this%iprflow /= 0 .and. isuppress_output == 0)
then
534 call this%mvr_print_outputtab()
539 if (this%ibudgetout /= 0)
then
540 ibinun = this%ibudgetout
542 if (icbcfl == 0) ibinun = 0
543 if (isuppress_output /= 0) ibinun = 0
545 call this%budobj%save_flows(this%dis, ibinun,
kstp,
kper,
delt, &
560 integer(I4B),
intent(in) :: icbcfl
561 integer(I4B),
intent(in) :: ibudfl
563 integer(I4B) :: ibinun
567 if (this%ibudgetout /= 0)
then
568 ibinun = this%ibudgetout
570 if (icbcfl == 0) ibinun = 0
572 call this%budobj%save_flows(this%dis, ibinun,
kstp,
kper,
delt, &
585 integer(I4B),
intent(in) :: icbcfl
586 integer(I4B),
intent(in) :: ibudfl
589 if (ibudfl /= 0 .and. this%iprflow /= 0)
then
590 call this%mvr_print_outputtab()
604 integer(I4B),
intent(in) :: ibudfl
606 character(len=LENMEMPATH) :: pckMemPath
608 real(DP),
allocatable,
dimension(:) :: ratin, ratout
611 allocate (ratin(this%maxpackages), ratout(this%maxpackages))
612 do j = 1, this%maxpackages
619 do j = 1, this%maxpackages
620 if (this%pckMemPaths(j) == this%mvr(i)%mem_path_src)
then
621 ratin(j) = ratin(j) + this%mvr(i)%qpactual
623 if (this%pckMemPaths(j) == this%mvr(i)%mem_path_tgt)
then
624 ratout(j) = ratout(j) + this%mvr(i)%qpactual
630 call this%budget%reset()
631 do j = 1, this%maxpackages
632 if ((this%iexgmvr) == 1)
then
633 pckmempath = this%pckMemPaths(j)
635 pckmempath = this%paknames(j)
637 call this%budget%addentry(ratin(j), ratout(j),
delt, pckmempath)
641 call this%budget%finalize_step(
delt)
642 if (ibudfl /= 0)
then
643 call this%budget%budget_ot(
kstp,
kper, this%iout)
647 call this%budget%writecsv(
totim)
650 deallocate (ratin, ratout)
672 if (this%inunit > 0)
then
674 deallocate (this%mvr)
675 deallocate (this%pckMemPaths)
676 deallocate (this%paknames)
677 deallocate (this%pakmovers)
680 call this%gwfmvrperioddata%destroy()
681 deallocate (this%gwfmvrperioddata)
682 nullify (this%gwfmvrperioddata)
685 call this%budget%budget_da()
686 deallocate (this%budget)
689 call this%budobj%budgetobject_da()
690 deallocate (this%budobj)
691 nullify (this%budobj)
694 if (
associated(this%outputtab))
then
695 call this%outputtab%table_da()
696 deallocate (this%outputtab)
697 nullify (this%outputtab)
713 call this%NumericalPackageType%da()
730 character(len=LINELENGTH) :: errmsg
731 character(len=MAXCHARLEN) :: fname, keyword
733 logical :: isfound, endOfBlock
735 character(len=*),
parameter :: fmtmvrbin = &
736 "(4x, 'MVR ', 1x, a, 1x, ' WILL BE SAVED TO FILE: ', a, /4x, 'OPENED ON &
740 call this%parser%GetBlock(
'OPTIONS', isfound, ierr, &
741 supportopenclose=.true., blockrequired=.false.)
745 write (this%iout,
'(1x,a)')
'PROCESSING MVR OPTIONS'
747 call this%parser%GetNextLine(endofblock)
749 call this%parser%GetStringCaps(keyword)
750 select case (keyword)
752 call this%parser%GetStringCaps(keyword)
753 if (keyword ==
'FILEOUT')
then
754 call this%parser%GetString(fname)
756 call openfile(this%ibudgetout, this%iout, fname,
'DATA(BINARY)', &
758 write (this%iout, fmtmvrbin)
'BUDGET', trim(adjustl(fname)), &
762 &BE FOLLOWED BY FILEOUT')
765 call this%parser%GetStringCaps(keyword)
766 if (keyword ==
'FILEOUT')
then
767 call this%parser%GetString(fname)
769 call openfile(this%ibudcsv, this%iout, fname,
'CSV', &
770 filstat_opt=
'REPLACE')
771 write (this%iout, fmtmvrbin)
'BUDGET CSV', trim(adjustl(fname)), &
774 call store_error(
'OPTIONAL BUDGETCSV KEYWORD MUST BE FOLLOWED BY &
779 write (this%iout,
'(4x,a)')
'WATER MOVER INPUT '// &
780 'WILL BE PRINTED TO LIST FILE.'
783 write (this%iout,
'(4x,a)')
'LISTS OF WATER MOVER FLOWS '// &
784 'WILL BE PRINTED TO LIST FILE.'
787 write (this%iout,
'(4x,a)')
'ALL PACKAGE NAMES ARE PRECEDED '// &
788 'BY THE NAME OF THE MODEL CONTAINING THE PACKAGE.'
789 if (this%iexgmvr == 0)
then
790 write (errmsg,
'(a,a)') &
791 'MODELNAMES cannot be specified unless the '// &
792 'mover package is for an exchange.'
794 call this%parser%StoreErrorUnit()
797 write (errmsg,
'(a,a)')
'Unknown MVR option: ', trim(keyword)
799 call this%parser%StoreErrorUnit()
802 write (this%iout,
'(1x,a)')
'END OF MVR OPTIONS'
818 character(len=LINELENGTH) :: errmsg
821 if (this%iexgmvr == 0 .and. this%imodelnames == 1)
then
822 write (errmsg,
'(a,a)') &
823 'MODELNAMES cannot be specified unless the '// &
824 'mover package is for an exchange.'
826 call this%parser%StoreErrorUnit()
830 if (this%iexgmvr /= 0 .and. this%imodelnames == 0)
then
831 write (errmsg,
'(a,a)') &
832 'MODELNAMES option must be specified because '// &
833 'mover package is for an exchange.'
835 call this%parser%StoreErrorUnit()
851 character(len=LINELENGTH) :: errmsg, keyword
853 logical :: isfound, endOfBlock
858 call this%parser%GetBlock(
'DIMENSIONS', isfound, ierr, &
859 supportopenclose=.true.)
863 write (this%iout,
'(/1x,a)')
'PROCESSING MVR DIMENSIONS'
865 call this%parser%GetNextLine(endofblock)
867 call this%parser%GetStringCaps(keyword)
868 select case (keyword)
870 this%maxmvr = this%parser%GetInteger()
871 write (this%iout,
'(4x,a,i0)')
'MAXMVR = ', this%maxmvr
873 this%maxpackages = this%parser%GetInteger()
874 write (this%iout,
'(4x,a,i0)')
'MAXPACKAGES = ', this%maxpackages
876 write (errmsg,
'(a,a)') &
877 'Unknown MVR dimension: ', trim(keyword)
879 call this%parser%StoreErrorUnit()
882 write (this%iout,
'(1x,a)')
'END OF MVR DIMENSIONS'
884 call store_error(
'Required DIMENSIONS block not found.')
885 call this%parser%StoreErrorUnit()
890 do i = 1, this%maxpackages
891 do j = 1, this%maxpackages
892 this%maxcomb = this%maxcomb + 1
897 if (this%maxmvr < 0)
then
898 write (errmsg,
'(a)') &
899 'MAXMVR was not specified or was specified incorrectly.'
901 call this%parser%StoreErrorUnit()
903 if (this%maxpackages < 0)
then
904 write (errmsg,
'(a)') &
905 'MAXPACKAGES was not specified or was specified incorrectly.'
907 call this%parser%StoreErrorUnit()
924 character(len=LINELENGTH) :: errmsg, word, word1, word2
925 integer(I4B) :: lloc, ierr
927 logical :: isfound, endOfBlock
930 call this%parser%GetBlock(
'PACKAGES', isfound, ierr, &
931 supportopenclose=.true.)
935 write (this%iout,
'(/1x,a)')
'PROCESSING MVR PACKAGES'
938 call this%parser%GetNextLine(endofblock)
940 call this%parser%GetStringCaps(word1)
943 if (npak > this%maxpackages)
then
944 call store_error(
'ERROR. MAXPACKAGES NOT SET LARGE ENOUGH.')
945 call this%parser%StoreErrorUnit()
947 if (this%iexgmvr == 0)
then
951 call this%parser%GetStringCaps(word2)
955 this%paknames(npak) = trim(word)
956 write (this%iout,
'(3x,a,a)')
'INCLUDING PACKAGE: ', &
957 trim(this%pckMemPaths(npak))
959 write (this%iout,
'(1x,a)')
'END OF MVR PACKAGES'
961 call store_error(
'ERROR. REQUIRED PACKAGES BLOCK NOT FOUND.')
962 call this%parser%StoreErrorUnit()
966 if (npak /= this%maxpackages)
then
967 write (errmsg,
'(a, i0, a, i0, a)') &
968 'ERROR. NUMBER OF PACKAGES (', npak,
') DOES NOT EQUAL '// &
969 'MAXPACKAGES (', this%maxpackages,
').'
971 call this%parser%StoreErrorUnit()
988 character(len=LINELENGTH) :: errmsg
990 integer(I4B),
pointer :: imover_ptr
993 do i = 1,
size(this%pckMemPaths)
995 call mem_setptr(imover_ptr,
'IMOVER', trim(this%pckMemPaths(i)))
996 if (imover_ptr == 0)
then
997 write (errmsg,
'(a, a, a)') &
998 'ERROR. MODEL AND PACKAGE "', &
999 trim(this%pckMemPaths(i)), &
1000 '" DOES NOT HAVE MOVER SPECIFIED IN OPTIONS BLOCK.'
1007 call this%parser%StoreErrorUnit()
1025 do i = 1,
size(this%pckMemPaths)
1026 if (this%pakmovers(i)%memoryPath ==
'')
then
1028 trim(this%pckMemPaths(i)))
1046 call this%NumericalPackageType%allocate_scalars()
1049 call mem_allocate(this%reset_mapped_id,
'RESET_MAPPED_ID', this%memoryPath)
1050 call mem_allocate(this%ibudgetout,
'IBUDGETOUT', this%memoryPath)
1051 call mem_allocate(this%ibudcsv,
'IBUDCSV', this%memoryPath)
1052 call mem_allocate(this%maxmvr,
'MAXMVR', this%memoryPath)
1053 call mem_allocate(this%maxpackages,
'MAXPACKAGES', this%memoryPath)
1054 call mem_allocate(this%maxcomb,
'MAXCOMB', this%memoryPath)
1056 call mem_allocate(this%iexgmvr,
'IEXGMVR', this%memoryPath)
1057 call mem_allocate(this%imodelnames,
'IMODELNAMES', this%memoryPath)
1060 this%reset_mapped_id = .false.
1064 this%maxpackages = -1
1068 this%imodelnames = 0
1071 allocate (this%gwfmvrperioddata)
1090 allocate (this%mvr(this%maxmvr))
1091 allocate (this%pckMemPaths(this%maxpackages))
1092 allocate (this%paknames(this%maxpackages))
1093 allocate (this%pakmovers(this%maxpackages))
1096 do i = 1, this%maxpackages
1101 call this%gwfmvrperioddata%construct(this%maxmvr, this%memoryPath)
1105 call mem_allocate(this%ientries, this%maxcomb,
'IENTRIES', this%memoryPath)
1108 do i = 1, this%maxcomb
1109 this%ientries(i) = 0
1113 call this%mvr_setup_outputtab()
1128 integer(I4B) :: nbudterm
1132 integer(I4B) :: naux
1133 character(len=LENMODELNAME) :: modelname1, modelname2
1134 character(len=LENPACKAGENAME) :: packagename1, packagename2
1135 integer(I4B) :: maxlist
1137 character(len=LENBUDTXT) :: text
1143 do i = 1, this%maxpackages
1144 do j = 1, this%maxpackages
1145 nbudterm = nbudterm + 1
1154 call this%budobj%budgetobject_df(ncv, nbudterm, 0, 0)
1158 text =
' MOVER-FLOW'
1159 maxlist = this%maxmvr
1161 do i = 1, this%maxpackages
1163 call split_mem_path(this%pckMemPaths(i), modelname1, packagename1)
1165 do j = 1, this%maxpackages
1168 call split_mem_path(this%pckMemPaths(j), modelname2, packagename2)
1169 call this%budobj%budterm(idx)%initialize(text, &
1174 maxlist, .false., .false., &
1197 integer(I4B) :: n, n1, n2
1198 integer(I4B) :: ipos
1199 integer(I4B) :: ival
1200 integer(I4B) :: nitems
1201 integer(I4B) :: lloc
1202 integer(I4B) :: istart
1203 integer(I4B) :: istop
1205 character(len=LENMODELNAME) :: modelname1, modelname2
1206 character(len=LENPACKAGENAME) :: packagename1, packagename2
1207 character(len=LENMEMPATH) :: pckMemPathsDummy
1213 do i = 1, this%maxpackages
1216 call urword(this%pckMemPaths(i), lloc, istart, istop, 1, ival, rval, -1, -1)
1217 pckmempathsdummy = this%pckMemPaths(i)
1218 modelname1 = pckmempathsdummy(istart:istop)
1219 call urword(this%pckMemPaths(i), lloc, istart, istop, 1, ival, rval, -1, -1)
1220 pckmempathsdummy = this%pckMemPaths(i)
1221 packagename1 = pckmempathsdummy(istart:istop)
1222 do j = 1, this%maxpackages
1225 call urword(this%pckMemPaths(j), lloc, istart, istop, 1, ival, rval, &
1227 pckmempathsdummy = this%pckMemPaths(j)
1228 modelname2 = pckmempathsdummy(istart:istop)
1229 call urword(this%pckMemPaths(j), lloc, istart, istop, 1, ival, rval, &
1231 pckmempathsdummy = this%pckMemPaths(j)
1232 packagename2 = pckmempathsdummy(istart:istop)
1233 ipos = (i - 1) * this%maxpackages + j
1234 nitems = this%ientries(ipos)
1239 call this%budobj%budterm(idx)%reset(nitems)
1240 if (nitems < 1) cycle
1245 if (this%pckMemPaths(i) == this%mvr(n)%mem_path_src)
then
1246 if (this%pckMemPaths(j) == this%mvr(n)%mem_path_tgt)
then
1249 q = -this%mvr(n)%qpactual
1252 n1 = this%mvr(n)%iRchNrSrcMapped
1255 n2 = this%mvr(n)%iRchNrTgt
1258 call this%budobj%budterm(idx)%update_term(n1, n2, q)
1266 call this%budobj%accumulate_terms()
1278 character(len=LINELENGTH) :: title
1279 character(len=LINELENGTH) :: text
1280 integer(I4B) :: ntabcol
1281 integer(I4B) :: ilen
1284 if (this%iprflow /= 0)
then
1290 title =
'WATER MOVER PACKAGE ('//trim(this%packName)// &
1292 call table_cr(this%outputtab, this%packName, title)
1293 call this%outputtab%table_df(this%maxmvr, ntabcol, this%iout, &
1296 call this%outputtab%initialize_column(text, 10, alignment=
tabcenter)
1297 text =
'PROVIDER LOCATION'
1299 call this%outputtab%initialize_column(text, ilen)
1300 text =
'PROVIDER ID'
1301 call this%outputtab%initialize_column(text, 10)
1302 text =
'AVAILABLE RATE'
1303 call this%outputtab%initialize_column(text, 10)
1304 text =
'PROVIDED RATE'
1305 call this%outputtab%initialize_column(text, 10)
1306 text =
'RECEIVER LOCATION'
1308 call this%outputtab%initialize_column(text, ilen)
1309 text =
'RECEIVER ID'
1310 call this%outputtab%initialize_column(text, 10)
1326 character(len=LINELENGTH) :: title
1330 call this%outputtab%set_kstpkper(
kstp,
kper)
1333 title =
'WATER MOVER PACKAGE ('//trim(this%packName)// &
1335 call this%outputtab%set_title(title)
1336 call this%outputtab%set_maxbound(this%nmvr)
1338 call this%outputtab%add_term(i)
1339 call this%outputtab%add_term(this%mvr(i)%mem_path_src)
1340 call this%outputtab%add_term(this%mvr(i)%iRchNrSrc)
1341 call this%outputtab%add_term(this%mvr(i)%qavailable)
1342 call this%outputtab%add_term(this%mvr(i)%qpactual)
1343 call this%outputtab%add_term(this%mvr(i)%mem_path_tgt)
1344 call this%outputtab%add_term(this%mvr(i)%iRchNrTgt)
1371 integer(I4B) :: i, mapped_id
1379 mapped_id = pkg_mvr%iprmap(this%mvr(i)%iRchNrSrc)
1380 this%mvr(i)%iRchNrSrcMapped = mapped_id
1382 deallocate (pkg_mvr)
This module contains block parser methods.
This module contains the BudgetModule.
subroutine, public budget_cr(this, name_model)
@ brief Create a new budget object
subroutine, public budgetobject_cr(this, name)
Create a new budget object.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
@ tabcenter
centered table column
integer(i4b), parameter lenmodelname
maximum length of the model name
integer(i4b), parameter lenpackagename
maximum length of the package name
real(dp), parameter dnodata
real no data constant
integer(i4b), parameter lenpakloc
maximum length of a package location
integer(i4b), parameter lenauxname
maximum length of a aux variable
real(dp), parameter dzero
real constant zero
integer(i4b), parameter maxcharlen
maximum length of char string
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
integer(i4b), parameter lenmempath
maximum length of the memory path
real(dp), parameter done
real constant 1
subroutine, public mvr_cr(mvrobj, name_parent, inunit, iout, dis, iexgmvr)
Create a new mvr object.
subroutine mvr_da(this)
Deallocate.
subroutine allocate_scalars(this)
Allocate package scalars.
subroutine mvr_bdsav(this, icbcfl, ibudfl, isuppress_output)
Write mover terms.
subroutine initialize_movers(this, nr_active_movers)
subroutine fill_budobj(this)
subroutine check_packages(this)
Check to make sure packages have mover activated.
subroutine mvr_init(this, name_parent, inunit, iout, dis, iexgmvr)
subroutine mvr_setup_budobj(this)
Set up the budget object that stores all the mvr flows.
subroutine mvr_bd(this)
Fill the mover budget object.
subroutine read_options(this)
Read options specified in the input options block.
subroutine assign_packagemovers(this)
Assign pointer to each package's packagemover object.
subroutine mvr_ot_printflow(this, icbcfl, ibudfl)
Print mover flow table.
subroutine mvr_setup_outputtab(this)
Set up output table.
subroutine read_dimensions(this)
Read the dimensions for this package.
subroutine mvr_fc(this)
Calculate qfrommvr as a function of qtomvr.
subroutine mvr_rp(this)
Read and Prepare.
subroutine mvr_ot_saveflow(this, icbcfl, ibudfl)
Write mover terms.
subroutine mvr_cc(this, innertot, kiter, iend, icnvgmod, cpak, ipak, dpak)
Extra convergence check for mover.
subroutine mvr_ot_bdsummary(this, ibudfl)
Write mover budget to listing file.
subroutine mvr_print_outputtab(this)
Set up output table.
subroutine mvr_ar(this)
Allocate and read water mover information.
subroutine allocate_arrays(this)
Allocate package arrays.
subroutine set_mapped_id(this)
Set mapped id.
subroutine read_packages(this)
Read the packages that will be managed by this mover.
subroutine check_options(this)
Check MODELNAMES option set correctly.
This module contains the GwfMvrPeriodDataModule Module.
This module defines variable data types.
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
subroutine split_mem_path(mem_path, component, subcomponent)
Split the memory path into component(s)
This module contains the MvrModule Module.
This module contains the base numerical package type.
subroutine, public nulllify_packagemover_pointer(packagemover)
subroutine, public set_packagemover_pointer(packagemover, memPath)
This module contains simulation methods.
subroutine, public store_error(msg, terminate)
Store an error message.
integer(i4b) function, public count_errors()
Return number of errors.
subroutine, public store_error_unit(iunit, terminate)
Store the file unit number.
subroutine, public table_cr(this, name, title)
real(dp), pointer, public pertim
time relative to start of stress period
real(dp), pointer, public totim
time relative to start of simulation
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
real(dp), pointer, public delt
length of the current time step
integer(i4b), pointer, public nper
number of stress period
Derived type for the Budget object.
Derived type for GwfMvrPeriodDataType.
Derived type for MvrType.