38 integer(I4B) :: ts_active
57 integer(I4B) :: iboundname
72 subroutine bndlist_init(this, mf6_input, component_name, component_input_name, &
73 input_name, iperblock, parser, iout)
78 character(len=*),
intent(in) :: component_name
79 character(len=*),
intent(in) :: component_input_name
80 character(len=*),
intent(in) :: input_name
81 integer(I4B),
intent(in) :: iperblock
83 integer(I4B),
intent(in) :: iout
85 character(len=LINELENGTH) :: blockname
92 call this%base_init(mf6_input, component_name, component_input_name, &
93 input_name, iperblock, parser, loader, iout)
96 call this%bound_context%create(mf6_input, this%readasarrays)
99 do iblk = 1,
size(this%mf6_input%block_dfns)
104 blockname = this%mf6_input%block_dfns(iblk)%blockname
107 if (blockname ==
'OPTIONS' .or. blockname ==
'DIMENSIONS') cycle
108 if (blockname ==
'PERIOD')
exit
111 call loader%load_block(iblk)
113 if (this%mf6_input%block_dfns(iblk)%aggregate)
then
114 if (this%mf6_input%block_dfns(iblk)%timeseries)
then
115 if (this%ts_active > 0)
then
116 call this%ts_update(loader%structarray)
123 call loader%finalize()
126 call this%bound_context%bound_params(this%param_names, this%nparam, &
127 this%input_name, create=.false.)
130 call this%create_structarray()
133 call this%bound_context%allocate_arrays()
149 integer(I4B) :: ibinary
150 integer(I4B) :: oc_inunit
151 logical(LGP) :: ts_active
159 this%mf6_input%subcomponent_name, this%iout)
161 if (ibinary == 1)
then
163 this%bound_context%nbound = &
164 this%structarray%read_from_binary(oc_inunit, this%iout)
166 call parser%terminateblock()
172 ts_active = (this%ts_active /= 0)
174 this%bound_context%nbound = &
175 this%structarray%read_from_parser(parser, ts_active, this%iout)
179 if (this%ts_active /= 0)
then
180 call this%ts_update(this%structarray)
185 this%mf6_input%subcomponent_name, this%iout)
195 call this%base_destroy()
196 call this%bound_context%destroy()
212 real(DP),
pointer :: bndElem
215 character(len=LENBOUNDNAME) :: boundname
220 bndelem => structvector%dbl1d(ts_strloc%row)
224 ts_strloc%structarray_col, bndelem, &
225 this%mf6_input%subcomponent_name, &
226 'BND', this%tsmanager, &
227 this%bound_context%iprpak, tslinkbnd)
229 if (
associated(tslinkbnd))
then
232 tslinkbnd%Text = structvector%idt%mf6varname
235 if (this%bound_context%inamedbound > 0)
then
236 sv_bound => this%structarray%get(this%iboundname)
237 boundname = sv_bound%charstr1d(ts_strloc%row)
238 tslinkbnd%BndName = boundname
256 real(DP),
pointer :: bndElem
259 character(len=LENBOUNDNAME) :: boundname
264 bndelem => structvector%dbl2d(ts_strloc%col, ts_strloc%row)
268 ts_strloc%structarray_col, bndelem, &
269 this%mf6_input%subcomponent_name, &
270 'AUX', this%tsmanager, &
271 this%bound_context%iprpak, tslinkaux)
273 if (
associated(tslinkaux))
then
276 tslinkaux%Text = this%bound_context%auxname_cst(ts_strloc%col)
279 if (this%bound_context%inamedbound > 0)
then
280 sv_bound => this%structarray%get(this%iboundname)
281 boundname = sv_bound%charstr1d(ts_strloc%row)
282 tslinkaux%BndName = boundname
303 do m = 1, structarray%count()
305 sv => structarray%get(m)
307 if (sv%idt%timeseries)
then
309 do n = 1, sv%ts_strlocs%count()
310 ts_strloc => sv%get_ts_strloc(n)
311 call this%ts_link(sv, ts_strloc)
331 select case (structvector%memtype)
334 call this%ts_link_bnd(structvector, ts_strloc)
338 call this%ts_link_aux(structvector, ts_strloc)
359 this%bound_context%maxbound, 0, &
360 this%mf6_input%mempath, &
361 this%mf6_input%component_mempath)
364 do icol = 1, this%nparam
367 this%mf6_input%component_type, &
368 this%mf6_input%subcomponent_type, &
370 this%param_names(icol), this%input_name)
373 call this%structarray%mem_create_vector(icol, idt)
376 if (idt%mf6varname ==
'BOUNDNAME') this%iboundname = icol
384 subroutine base_init(this, mf6_input, component_name, component_input_name, &
385 input_name, iperblock, parser, loader, iout)
393 character(len=*),
intent(in) :: component_name
394 character(len=*),
intent(in) :: component_input_name
395 character(len=*),
intent(in) :: input_name
396 integer(I4B),
intent(in) :: iperblock
399 integer(I4B),
intent(in) :: iout
401 contiguous :: ts_fnames
402 character(len=LINELENGTH) :: fname
403 integer(I4B) :: ts6_size, n
404 character(len=LINELENGTH) :: blockname
408 call this%DynamicPkgLoadType%init(mf6_input, component_name, &
409 component_input_name, input_name, &
416 call loader%init(parser, mf6_input, this%input_name, iout)
419 do iblk = 1,
size(this%mf6_input%block_dfns)
422 blockname = this%mf6_input%block_dfns(iblk)%blockname
425 if (blockname /=
'OPTIONS' .and. blockname /=
'DIMENSIONS')
exit
428 call loader%load_block(iblk)
433 allocate (this%tsmanager)
437 call get_isize(
'TS6_FILENAME', this%mf6_input%mempath, ts6_size)
439 if (ts6_size > 0)
then
442 call mem_setptr(ts_fnames,
'TS6_FILENAME', this%mf6_input%mempath)
444 do n = 1,
size(ts_fnames)
446 call this%tsmanager%add_tsfile(fname,
getunit())
452 call this%tsmanager%tsmanager_df()
462 deallocate (this%tsmanager)
488 call this%tsmanager%ad()
499 call this%tsmanager%reset(this%mf6_input%subcomponent_name)
This module contains block parser methods.
This module contains the BoundInputContextModule.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lencomponentname
maximum length of a component name
integer(i4b), parameter lentimeseriesname
maximum length of a time series name
integer(i4b), parameter lenvarname
maximum length of a variable name
integer(i4b), parameter lenauxname
maximum length of a aux variable
integer(i4b), parameter lenboundname
maximum length of a bound name
integer(i4b), parameter izero
integer constant zero
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenmempath
maximum length of the memory path
This module contains the DefinitionSelectModule.
type(inputparamdefinitiontype) function, pointer, public get_param_definition_type(input_definition_types, component_type, subcomponent_type, blockname, tagname, filename)
Return parameter definition.
This module contains the Input Data Model Logger Module.
subroutine, public idm_log_close(component, subcomponent, iout)
@ brief log the closing message
subroutine, public idm_log_header(component, subcomponent, iout)
@ brief log a header message
This module defines variable data types.
This module contains the LoadMf6FileModule.
integer(i4b) function, public read_control_record(parser, oc_inunit, iout)
subroutine, public get_isize(name, mem_path, isize)
@ brief Get the number of elements for this variable
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.
This module contains simulation variables.
character(len=maxcharlen) errmsg
error message string
This module contains the StructArrayModule.
type(structarraytype) function, pointer, public constructstructarray(mf6_input, ncol, nrow, blocknum, mempath, component_mempath)
constructor for a struct_array
subroutine, public destructstructarray(struct_array)
destructor for a struct_array
This module contains the StructVectorModule.
subroutine, public tsmanager_cr(this, iout, removeTsLinksOnCompletion, extendTsToEndOfSimulation)
Create the tsmanager.
subroutine, public read_value_or_time_series(textInput, ii, jj, bndElem, pkgName, auxOrBnd, tsManager, iprpak, tsLink)
Call this subroutine if the time-series link is available or needed.
derived type for boundary package input context
This class is used to store a single deferred-length character string. It was designed to work in an ...
Static parser based input loader.
type for structured array
derived type for generic vector
derived type which describes time series string field