@@ -78,11 +78,10 @@ function brusselator_2d_loop(du, u, p)
7878 limit(j - 1, N)
7979 du[i, j, 1] = alpha * (u[im1, j, 1] + u[ip1, j, 1] + u[i, jp1, 1] + u[i, jm1, 1] -
8080 4u[i, j, 1]) +
81- B + u[i, j, 1]^2 * u[i, j, 2] - (A + 1) * u[i, j, 1] +
82- brusselator_f(x, y)
81+ B +
82+ u[i, j, 1]^2 * u[i, j, 2] - (A + 1) * u[i, j, 1] + brusselator_f(x, y)
8383 du[i, j, 2] = alpha * (u[im1, j, 2] + u[ip1, j, 2] + u[i, jp1, 2] + u[i, jm1, 2] -
84- 4u[i, j, 2]) +
85- A * u[i, j, 1] - u[i, j, 1]^2 * u[i, j, 2]
84+ 4u[i, j, 2]) + A * u[i, j, 1] - u[i, j, 1]^2 * u[i, j, 2]
8685 end
8786end
8887p = (3.4, 1.0, 10.0, step(xyd_brusselator))
@@ -100,8 +99,8 @@ function init_brusselator_2d(xyd)
10099end
101100
102101u0 = init_brusselator_2d(xyd_brusselator)
103- prob_brusselator_2d = NonlinearProblem(brusselator_2d_loop, u0, p; abstol = 1e-10,
104- reltol = 1e-10)
102+ prob_brusselator_2d = NonlinearProblem(
103+ brusselator_2d_loop, u0, p; abstol = 1e-10, reltol = 1e-10)
105104```
106105
107106## Choosing Jacobian Types
@@ -140,11 +139,11 @@ using BenchmarkTools # for @btime
140139@btime solve(prob_brusselator_2d,
141140 NewtonRaphson(; autodiff = AutoSparseForwardDiff(; chunksize = 32)));
142141@btime solve(prob_brusselator_2d,
143- NewtonRaphson(; autodiff = AutoSparseForwardDiff(; chunksize = 32),
144- linsolve = KLUFactorization()));
142+ NewtonRaphson(;
143+ autodiff = AutoSparseForwardDiff(; chunksize = 32), linsolve = KLUFactorization()));
145144@btime solve(prob_brusselator_2d,
146- NewtonRaphson(; autodiff = AutoSparseForwardDiff(; chunksize = 32),
147- linsolve = KrylovJL_GMRES()));
145+ NewtonRaphson(;
146+ autodiff = AutoSparseForwardDiff(; chunksize = 32), linsolve = KrylovJL_GMRES()));
148147nothing # hide
149148```
150149
@@ -164,8 +163,8 @@ kick out a sparse matrix with our pattern, that we can turn into our `jac_protot
164163``` @example ill_conditioned_nlprob
165164using Symbolics
166165du0 = copy(u0)
167- jac_sparsity = Symbolics.jacobian_sparsity((du, u) -> brusselator_2d_loop(du, u, p),
168- du0, u0)
166+ jac_sparsity = Symbolics.jacobian_sparsity(
167+ (du, u) -> brusselator_2d_loop(du, u, p), du0, u0)
169168```
170169
171170Notice that Julia gives a nice print out of the sparsity pattern. That's neat, and would be
@@ -275,8 +274,8 @@ function algebraicmultigrid(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
275274end
276275
277276@btime solve(prob_brusselator_2d_sparse,
278- NewtonRaphson(linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid,
279- concrete_jac = true));
277+ NewtonRaphson(
278+ linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid, concrete_jac = true));
280279nothing # hide
281280```
282281
@@ -286,8 +285,8 @@ or with a Jacobi smoother:
286285function algebraicmultigrid2(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
287286 if newW === nothing || newW
288287 A = convert(AbstractMatrix, W)
289- Pl = AlgebraicMultigrid.aspreconditioner(AlgebraicMultigrid.ruge_stuben(A,
290- presmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))),
288+ Pl = AlgebraicMultigrid.aspreconditioner(AlgebraicMultigrid.ruge_stuben(
289+ A, presmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1))),
291290 postsmoother = AlgebraicMultigrid.Jacobi(rand(size(A, 1)))))
292291 else
293292 Pl = Plprev
@@ -296,8 +295,8 @@ function algebraicmultigrid2(W, du, u, p, t, newW, Plprev, Prprev, solverdata)
296295end
297296
298297@btime solve(prob_brusselator_2d_sparse,
299- NewtonRaphson(linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2,
300- concrete_jac = true));
298+ NewtonRaphson(
299+ linsolve = KrylovJL_GMRES(), precs = algebraicmultigrid2, concrete_jac = true));
301300nothing # hide
302301```
303302
@@ -309,12 +308,10 @@ sparsity detection. Let's compare the two by setting the sparsity detection algo
309308
310309``` @example ill_conditioned_nlprob
311310prob_brusselator_2d_exact = NonlinearProblem(
312- NonlinearFunction(brusselator_2d_loop;
313- sparsity = SymbolicsSparsityDetection()),
311+ NonlinearFunction(brusselator_2d_loop; sparsity = SymbolicsSparsityDetection()),
314312 u0, p; abstol = 1e-10, reltol = 1e-10)
315313prob_brusselator_2d_approx = NonlinearProblem(
316- NonlinearFunction(brusselator_2d_loop;
317- sparsity = ApproximateJacobianSparsity()),
314+ NonlinearFunction(brusselator_2d_loop; sparsity = ApproximateJacobianSparsity()),
318315 u0, p; abstol = 1e-10, reltol = 1e-10)
319316
320317@btime solve(prob_brusselator_2d_exact, NewtonRaphson());
0 commit comments