@@ -11,7 +11,7 @@ using CairoMakie
1111
1212# F(u) = 0
1313
14- function bratu! (res, y, Δx, λ)
14+ function bratu! (res, y, ( Δx, λ) )
1515 N = length (y)
1616 for i in 1 : N
1717 y_l = i == 1 ? zero (eltype (y)) : y[i - 1 ]
@@ -23,9 +23,9 @@ function bratu!(res, y, Δx, λ)
2323 return nothing
2424end
2525
26- function bratu (y, dx, λ )
26+ function bratu (y, p )
2727 res = similar (y)
28- bratu! (res, y, dx, λ )
28+ bratu! (res, y, p )
2929 return res
3030end
3131
5757
5858# ## Solving using inplace variant and CG
5959uₖ, _ = newton_krylov! (
60- (res, u) -> bratu! (res, u, dx, λ) ,
61- copy (u₀), similar (u₀);
60+ bratu!,
61+ copy (u₀), (dx, λ), similar (u₀);
6262 Solver = CgSolver,
6363)
6464
8383# ## Solving using the out of place variant
8484
8585_, stats = newton_krylov (
86- (u) -> bratu (u, dx, λ) ,
87- copy (u₀);
86+ bratu,
87+ copy (u₀), (dx, λ) ;
8888 Solver = CgSolver
8989)
9090stats
9191
9292# ## Solving with a fixed forcing
9393_, stats = newton_krylov! (
94- (res, u) -> bratu! (res, u, dx, λ) ,
95- copy (u₀), similar (u₀);
94+ bratu!,
95+ copy (u₀), (dx, λ), similar (u₀);
9696 Solver = CgSolver,
9797 forcing = NewtonKrylov. Fixed (0.1 )
9898)
9999stats
100100
101101# ## Solving with no forcing
102102_, stats = newton_krylov! (
103- (res, u) -> bratu! (res, u, dx, λ) ,
104- copy (u₀), similar (u₀);
103+ bratu!,
104+ copy (u₀), (dx, λ), similar (u₀);
105105 Solver = CgSolver,
106106 forcing = nothing
107107)
@@ -110,17 +110,17 @@ stats
110110# ## Solve using GMRES -- doesn't converge
111111# ```julia
112112# _, stats = newton_krylov!(
113- # (res, u) -> bratu!(res, u, dx, λ) ,
114- # copy(u₀), similar(u₀);
113+ # bratu!,
114+ # copy(u₀), (dx, λ), similar(u₀);
115115# Solver = GmresSolver,
116116# )
117117# stats
118118# ```
119119
120120# ## Solve using GMRES + ILU Preconditoner
121121_, stats = newton_krylov! (
122- (res, u) -> bratu! (res, u, dx, λ) ,
123- copy (u₀), similar (u₀);
122+ bratu!,
123+ copy (u₀), (dx, λ), similar (u₀);
124124 Solver = GmresSolver,
125125 N = (J) -> ilu (collect (J)), # Assembles the full Jacobian
126126 krylov_kwargs = (; ldiv = true )
@@ -129,8 +129,8 @@ stats
129129
130130# ## Solve using FGMRES + ILU Preconditoner
131131_, stats = newton_krylov! (
132- (res, u) -> bratu! (res, u, dx, λ) ,
133- copy (u₀), similar (u₀);
132+ bratu!,
133+ copy (u₀), (dx, λ), similar (u₀);
134134 Solver = FgmresSolver,
135135 N = (J) -> ilu (collect (J)), # Assembles the full Jacobian
136136 krylov_kwargs = (; ldiv = true )
@@ -149,8 +149,8 @@ function LinearAlgebra.mul!(y, P::GmresPreconditioner, x)
149149end
150150
151151_, stats = newton_krylov! (
152- (res, u) -> bratu! (res, u, dx, λ) ,
153- copy (u₀), similar (u₀);
152+ bratu!,
153+ copy (u₀), (dx, λ), similar (u₀);
154154 Solver = FgmresSolver,
155155 N = (J) -> GmresPreconditioner (J, 5 ),
156156)
@@ -159,17 +159,17 @@ stats
159159# ## Explodes..
160160# ```julia
161161# newton_krylov!(
162- # (res, u) -> bratu!(res, u, dx, λ) ,
163- # copy(u₀), similar(u₀);
162+ # bratu!,
163+ # copy(u₀), (dx, λ), similar(u₀);
164164# Solver = CglsSolver, # CgneSolver
165165# krylov_kwargs = (; verbose=1)
166166# )
167167# ```
168168#
169169# ```julia
170170# newton_krylov!(
171- # (res, u) -> bratu!(res, u, dx, λ) ,
172- # copy(u₀), similar(u₀);
171+ # bratu!,
172+ # copy(u₀), (dx, λ), similar(u₀);
173173# verbose = 1,
174174# Solver = BicgstabSolver, # L=2
175175# η_max = nothing
0 commit comments