1% Brusselator reaction-diffusion on a closed surface. Turing stripes and spots,
2% from a smaller diffusivity contrast than Schnakenberg but a stiffer reaction.
3%
4% du/dt = D1*lap_g(u) + A - (B+1)*u + u^2*v
5% dv/dt = D2*lap_g(v) + B*u - u^2*v
6%
7% See models/schnakenberg.m for what the caller provides and for how the
8% implicit solve is split between the round-sphere operator and the geometry.
10function [U, V, u, v] = init(noise, A, B)
11 U = analys(A + noise);
12 V = analys((B / A) * ones(numel(noise), 1));
13 u = synth(U);
14 v = synth(V);
15end
17function [Un, Vn, u, v] = step(U, V, lam, gx, gy, gz, A, B, D1, D2, dt, niter)
18 u = synth(U);
19 v = synth(V);
20 uuv = u .* u .* v;
22 Bu = U + dt * analys(A - (B + 1) * u + uuv);
23 Bv = V + dt * analys(B * u - uuv);
25 Un = Bu ./ (1 + (dt * D1) * lam);
26 Vn = Bv ./ (1 + (dt * D2) * lam);
28 for k = 1:niter
29 % ---- placeholder: dlap = lap_g - lap_s (see models/schnakenberg.m) ----
30 dLu = 0 * Un;
31 dLv = 0 * Vn;
32 % ----------------------------------------------------------------------
33 Un = (Bu + (dt * D1) * dLu) ./ (1 + (dt * D1) * lam);
34 Vn = (Bv + (dt * D2) * dLv) ./ (1 + (dt * D2) * lam);
35 end
36end