18 integer(I4B),
pointer :: neq => null()
19 integer(I4B),
pointer :: moffset => null()
20 integer(I4B),
pointer :: icnvg => null()
21 integer(I4B),
dimension(:),
pointer,
contiguous :: ia => null()
22 integer(I4B),
dimension(:),
pointer,
contiguous :: ja => null()
23 real(dp),
dimension(:),
pointer,
contiguous :: x => null()
24 real(dp),
dimension(:),
pointer,
contiguous :: rhs => null()
25 real(dp),
dimension(:),
pointer,
contiguous :: cond => null()
26 integer(I4B),
dimension(:),
pointer,
contiguous :: idxglo => null()
27 real(dp),
dimension(:),
pointer,
contiguous :: xold => null()
102 class(
bndtype),
pointer :: packobj
105 do ip = 1, this%bndlist%Count()
107 call packobj%bnd_reset()
118 integer(I4B),
intent(in) :: kiter
121 subroutine model_fc(this, kiter, matrix_sln, inwtflag)
123 integer(I4B),
intent(in) :: kiter
125 integer(I4B),
intent(in) :: inwtflag
130 integer(I4B),
intent(inout) :: iptc
137 integer(I4B),
intent(inout) :: iptc
138 real(DP),
intent(inout) :: ptcf
143 integer(I4B),
intent(in) :: kiter
145 integer(I4B),
intent(in) :: inwtflag
148 subroutine model_cc(this, innertot, kiter, iend, icnvgmod, cpak, ipak, dpak)
150 integer(I4B),
intent(in) :: innertot
151 integer(I4B),
intent(in) :: kiter
152 integer(I4B),
intent(in) :: iend
153 integer(I4B),
intent(in) :: icnvgmod
154 character(len=LENPAKLOC),
intent(inout) :: cpak
155 integer(I4B),
intent(inout) :: ipak
156 real(DP),
intent(inout) :: dpak
159 subroutine model_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
161 integer(I4B),
intent(in) :: neqmod
162 real(DP),
dimension(neqmod),
intent(inout) :: x
163 real(DP),
dimension(neqmod),
intent(in) :: xtemp
164 real(DP),
dimension(neqmod),
intent(inout) :: dx
165 integer(I4B),
intent(inout) :: inewtonur
166 real(DP),
intent(inout) :: dxmax
167 integer(I4B),
intent(inout) :: locmax
172 integer(I4B),
intent(in) :: icnvg
173 integer(I4B),
intent(in) :: isuppress_output
178 integer(I4B),
intent(in) :: icnvg
179 integer(I4B),
intent(in) :: isuppress_output
184 integer(I4B),
intent(in) :: icnvg
189 integer(I4B),
intent(in) :: icnvg
198 real(DP),
dimension(:, :),
intent(in) :: budterm
199 character(len=LENBUDTXT),
dimension(:),
intent(in) :: budtxt
200 character(len=*),
intent(in) :: rowlabel
217 deallocate (this%filename)
225 call this%bndlist%Clear()
226 deallocate (this%bndlist)
234 call this%BaseModelType%model_da()
240 integer(I4B),
intent(in) :: moffset
241 this%moffset = moffset
246 integer(I4B),
intent(inout) :: mstart
247 integer(I4B),
intent(inout) :: mend
248 mstart = this%moffset + 1
249 mend = mstart + this%neq - 1
254 integer(I4B),
intent(in) :: id
261 character(len=*),
intent(in) :: modelname
264 call this%BaseModelType%allocate_scalars(modelname)
270 call mem_allocate(this%moffset,
'MOFFSET', this%memoryPath)
271 allocate (this%filename)
272 allocate (this%bndlist)
287 call mem_allocate(this%xold, this%neq,
'XOLD', this%memoryPath)
288 call mem_allocate(this%flowja, this%nja,
'FLOWJA', this%memoryPath)
289 call mem_allocate(this%idxglo, this%nja,
'IDXGLO', this%memoryPath)
291 do i = 1,
size(this%flowja)
292 this%flowja(i) =
dzero
296 subroutine set_xptr(this, xsln, sln_offset, varNameTgt, memPathTgt)
300 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: xsln
301 integer(I4B) :: sln_offset
302 character(len=*),
intent(in) :: varNameTgt
303 character(len=*),
intent(in) :: memPathTgt
305 integer(I4B) :: offset
307 offset = this%moffset - sln_offset
308 this%x => xsln(offset + 1:offset + this%neq)
309 call mem_checkin(this%x,
'X', this%memoryPath, varnametgt, mempathtgt)
312 subroutine set_rhsptr(this, rhssln, sln_offset, varNameTgt, memPathTgt)
316 real(DP),
dimension(:),
pointer,
contiguous,
intent(in) :: rhssln
317 integer(I4B) :: sln_offset
318 character(len=*),
intent(in) :: varNameTgt
319 character(len=*),
intent(in) :: memPathTgt
321 integer(I4B) :: offset
323 offset = this%moffset - sln_offset
324 this%rhs => rhssln(offset + 1:offset + this%neq)
325 call mem_checkin(this%rhs,
'RHS', this%memoryPath, varnametgt, mempathtgt)
328 subroutine set_iboundptr(this, iboundsln, sln_offset, varNameTgt, memPathTgt)
332 integer(I4B),
dimension(:),
pointer,
contiguous,
intent(in) :: iboundsln
333 integer(I4B) :: sln_offset
334 character(len=*),
intent(in) :: varNameTgt
335 character(len=*),
intent(in) :: memPathTgt
337 integer(I4B) :: offset
339 offset = this%moffset - sln_offset
340 this%ibound => iboundsln(offset + 1:offset + this%neq)
341 call mem_checkin(this%ibound,
'IBOUND', this%memoryPath, varnametgt, &
349 integer(I4B),
intent(in) :: node
350 character(len=*),
intent(inout) :: mcellid
352 character(len=20) :: cellid
353 integer(I4B) :: ip, ipaknode, istart, istop
354 class(
bndtype),
pointer :: packobj
358 else if (node <= this%dis%nodes)
then
359 call this%dis%noder_to_string(node, cellid)
361 cellid =
'***ERROR***'
362 ipaknode = node - this%dis%nodes
364 do ip = 1, this%bndlist%Count()
366 if (packobj%npakeq == 0) cycle
367 istop = istart + packobj%npakeq - 1
368 if (istart <= ipaknode .and. ipaknode <= istop)
then
369 write (cellid,
'(a, a, a, i0, a, i0, a)')
'(', &
370 trim(packobj%filtyp),
'_', &
371 packobj%ibcnum,
'-', ipaknode - packobj%ioffset,
')'
377 write (mcellid,
'(i0, a, a, a, a)') this%id,
'_', this%macronym,
'-', &
378 trim(adjustl(cellid))
384 integer(I4B),
intent(in) :: node
385 integer(I4B),
intent(inout) :: nodeu
387 if (node <= this%dis%nodes)
then
388 nodeu = this%dis%get_nodeuser(node)
390 nodeu = -(node - this%dis%nodes)
396 integer(I4B) :: iasym
402 integer(I4B) :: idv_scale
408 class(*),
pointer,
intent(inout) :: obj
412 if (.not.
associated(obj))
return
423 type(
listtype),
intent(inout) :: list
426 class(*),
pointer :: obj
435 type(
listtype),
intent(inout) :: list
436 integer(I4B),
intent(in) :: idx
439 class(*),
pointer :: obj
441 obj => list%GetItem(idx)
This module contains the base boundary package.
class(bndtype) function, pointer, public getbndfromlist(list, idx)
Get boundary from package list.
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
integer(i4b), parameter lenpakloc
maximum length of a package location
real(dp), parameter dzero
real constant zero
integer(i4b), parameter lenbudtxt
maximum length of a budget component names
This module defines variable data types.
subroutine, public addnumericalmodeltolist(list, model)
subroutine model_ac(this, sparse)
subroutine model_df(this)
subroutine model_cc(this, innertot, kiter, iend, icnvgmod, cpak, ipak, dpak)
subroutine model_bdsave(this, icnvg)
subroutine model_ad(this)
subroutine model_solve(this)
subroutine get_mrange(this, mstart, mend)
subroutine model_mc(this, matrix_sln)
class(numericalmodeltype) function, pointer, public getnumericalmodelfromlist(list, idx)
subroutine set_rhsptr(this, rhssln, sln_offset, varNameTgt, memPathTgt)
subroutine model_ar(this)
subroutine model_nr(this, kiter, matrix, inwtflag)
subroutine set_idsoln(this, id)
subroutine get_mnodeu(this, node, nodeu)
subroutine model_nur(this, neqmod, x, xtemp, dx, inewtonur, dxmax, locmax)
subroutine model_cq(this, icnvg, isuppress_output)
subroutine model_da(this)
subroutine model_bd(this, icnvg, isuppress_output)
subroutine model_bdcalc(this, icnvg)
subroutine model_fp(this)
subroutine get_mcellid(this, node, mcellid)
subroutine model_reset(this)
class(numericalmodeltype) function, pointer castasnumericalmodelclass(obj)
subroutine model_ptc(this, vec_residual, iptc, ptcf)
subroutine set_moffset(this, moffset)
subroutine model_ptcchk(this, iptc)
subroutine allocate_arrays(this)
integer(i4b) function get_iasym(this)
subroutine allocate_scalars(this, modelname)
integer(i4b) function get_idv_scale(this)
subroutine set_iboundptr(this, iboundsln, sln_offset, varNameTgt, memPathTgt)
subroutine model_fc(this, kiter, matrix_sln, inwtflag)
subroutine model_ot(this)
subroutine model_cf(this, kiter)
subroutine set_xptr(this, xsln, sln_offset, varNameTgt, memPathTgt)
subroutine model_bdentry(this, budterm, budtxt, rowlabel)
subroutine model_rp(this)
Highest level model type. All models extend this parent type.
A generic heterogeneous doubly-linked list.