@@ -60,7 +60,7 @@ function DiffEqBase.init(prob::NonlinearProblem{uType, iip}, alg::AbstractNewton
60
60
fu = f (u, p)
61
61
end
62
62
63
-
63
+
64
64
sol = build_newton_solution (u, Val (iip))
65
65
if immutable
66
66
return NewtonImmutableSolver (1 , f, alg, u, fu, p, nothing , false , maxiters, internalnorm, :Default , tol, sol)
@@ -81,7 +81,7 @@ function DiffEqBase.solve!(solver::AbstractNonlinearSolver)
81
81
if solver. iter == solver. maxiters
82
82
solver. retcode = :MaxitersExceeded
83
83
end
84
- set_solution! (solver)
84
+ solver = set_solution (solver)
85
85
return solver. sol
86
86
end
87
87
@@ -151,19 +151,25 @@ function check_for_exact_solution!(solver::BracketingSolver)
151
151
return false
152
152
end
153
153
154
- function set_solution! (solver:: BracketingSolver )
155
- solver. sol. left = solver. left
156
- solver. sol. right = solver. right
157
- solver. sol. retcode = solver. retcode
154
+ function set_solution (solver:: BracketingSolver )
155
+ sol = solver. sol
156
+ @set! sol. left = solver. left
157
+ @set! sol. right = solver. right
158
+ @set! sol. retcode = solver. retcode
159
+ @set! solver. sol = sol
160
+ return solver
158
161
end
159
162
160
163
function get_solution (solver:: BracketingImmutableSolver )
161
164
return (left = solver. left, right = solver. right, retcode = solver. retcode)
162
165
end
163
166
164
- function set_solution! (solver:: NewtonSolver )
165
- solver. sol. u = solver. u
166
- solver. sol. retcode = solver. retcode
167
+ function set_solution (solver:: NewtonSolver )
168
+ sol = solver. sol
169
+ @set! sol. u = solver. u
170
+ @set! sol. retcode = solver. retcode
171
+ @set! solver. sol = sol
172
+ return solver
167
173
end
168
174
169
175
function get_solution (solver:: NewtonImmutableSolver )
0 commit comments