Solve each solution group and each solution. Start with converge flag equal true and reset to zero if any non-convergence triggers are encountered.
54 class(SolutionGroupType) :: this
56 class(BaseSolutionType),
pointer :: sp
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)
82 sp => getbasesolutionfromlist(basesolutionlist, isoln)
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)
97 sp => getbasesolutionfromlist(basesolutionlist, isoln)
98 call sp%sln_ca(isgcnvg, isuppress_output)
This module contains simulation constants.
integer(i4b), parameter linelength
maximum length of a standard line
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
integer(i4b), pointer, public kstp
current time step number
integer(i4b), pointer, public kper
current stress period number