15 integer(I4B),
pointer :: id
16 integer(I4B),
pointer :: mxiter
17 integer(I4B),
pointer :: nsolutions
18 integer(I4B),
dimension(:),
allocatable :: idsolutions
35 integer(I4B),
intent(in) :: id
38 call sgp%allocate_scalars()
57 integer(I4B) :: kpicard, isgcnvg, isuppress_output
58 integer(I4B) :: is, isoln
60 character(len=*),
parameter :: fmtnocnvg = &
61 "(1X,'Solution Group ', i0, ' did not converge for stress period ', i0, &
62 &' and time step ', i0)"
65 if (this%mxiter > 1)
then
75 picardloop:
do kpicard = 1, this%mxiter
76 if (this%mxiter > 1)
then
77 write (
iout,
'(/a,i6/)')
'SOLUTION GROUP PICARD ITERATION: ', kpicard
80 do is = 1, this%nsolutions
81 isoln = this%idsolutions(is)
83 call sp%sln_ca(isgcnvg, isuppress_output)
85 if (isgcnvg == 1)
exit picardloop
92 if (isgcnvg == 1)
then
93 if (this%mxiter > 1)
then
95 do is = 1, this%nsolutions
96 isoln = this%idsolutions(is)
98 call sp%sln_ca(isgcnvg, isuppress_output)
115 deallocate (this%mxiter)
116 deallocate (this%nsolutions)
117 deallocate (this%idsolutions)
127 allocate (this%mxiter)
128 allocate (this%nsolutions)
141 integer(I4B),
intent(in) :: isoln
147 ipos =
size(this%idsolutions)
148 this%idsolutions(ipos) = isoln
149 this%nsolutions = this%nsolutions + 1
155 class(*),
pointer,
intent(inout) :: obj
160 if (.not.
associated(obj))
return
171 type(
listtype),
intent(inout) :: list
174 class(*),
pointer :: obj
183 type(
listtype),
intent(inout) :: list
184 integer(I4B),
intent(in) :: idx
187 class(*),
pointer :: obj
189 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)
Add solution.
class(solutiongrouptype) function, pointer, public getsolutiongroupfromlist(list, idx)
subroutine, public solutiongroup_create(sgp, id)
Create a new solution group.
subroutine sgp_da(this)
Deallocate.
subroutine sgp_ca(this)
Calculate the solution group.
subroutine, public addsolutiongrouptolist(list, solutiongroup)
subroutine allocate_scalars(this)
Allocate scalars.
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number
A generic heterogeneous doubly-linked list.