15 integer(I4B),
pointer :: id
16 integer(I4B),
pointer :: mxiter
17 integer(I4B),
pointer :: nsolutions
18 integer(I4B),
dimension(:),
allocatable :: idsolutions
36 integer(I4B),
intent(in) :: id
40 call sgp%allocate_scalars()
65 integer(I4B) :: kpicard, isgcnvg, isuppress_output
66 integer(I4B) :: is, isoln
68 character(len=*),
parameter :: fmtnocnvg = &
69 "(1X,'Solution Group ', i0, ' did not converge for stress period ', i0, &
70 &' and time step ', i0)"
74 if (this%mxiter > 1)
then
84 picardloop:
do kpicard = 1, this%mxiter
85 if (this%mxiter > 1)
then
86 write (
iout,
'(/a,i6/)')
'SOLUTION GROUP PICARD ITERATION: ', kpicard
89 do is = 1, this%nsolutions
90 isoln = this%idsolutions(is)
92 call sp%sln_ca(isgcnvg, isuppress_output)
94 if (isgcnvg == 1)
exit picardloop
101 if (isgcnvg == 1)
then
102 if (this%mxiter > 1)
then
104 do is = 1, this%nsolutions
105 isoln = this%idsolutions(is)
107 call sp%sln_ca(isgcnvg, isuppress_output)
131 deallocate (this%mxiter)
132 deallocate (this%nsolutions)
133 deallocate (this%idsolutions)
150 allocate (this%mxiter)
151 allocate (this%nsolutions)
171 integer(I4B),
intent(in) :: isoln
178 ipos =
size(this%idsolutions)
179 this%idsolutions(ipos) = isoln
180 this%nsolutions = this%nsolutions + 1
188 class(*),
pointer,
intent(inout) :: obj
192 if (.not.
associated(obj))
return
204 type(
listtype),
intent(inout) :: list
207 class(*),
pointer :: obj
218 type(
listtype),
intent(inout) :: list
219 integer(I4B),
intent(in) :: idx
222 class(*),
pointer :: obj
224 obj => list%GetItem(idx)
subroutine, public addbasesolutiontolist(list, solution)
class(basesolutiontype) function, pointer, public getbasesolutionfromlist(list, idx)
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
This module defines variable data types.
type(listtype), public basesolutionlist
This module contains simulation variables.
integer(i4b) laststepfailed
flag indicating if the last step failed (1) if last step failed; (0) otherwise (set in converge_check...
integer(i4b) iout
file unit number for simulation output
integer(i4b) isimcnvg
simulation convergence flag (1) if all objects have converged, (0) otherwise
class(solutiongrouptype) function, pointer, private castassolutiongroupclass(obj)
subroutine add_solution(this, isoln, sp)
class(solutiongrouptype) function, pointer, public getsolutiongroupfromlist(list, idx)
subroutine, public solutiongroup_create(sgp, id)
subroutine, public addsolutiongrouptolist(list, solutiongroup)
subroutine allocate_scalars(this)
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
A generic heterogeneous doubly-linked list.