diff --git a/toolbox/+otp/+allencahn/f_diffusion.m b/toolbox/+otp/+allencahn/f_diffusion.m new file mode 100644 index 00000000..bbbb7778 --- /dev/null +++ b/toolbox/+otp/+allencahn/f_diffusion.m @@ -0,0 +1,9 @@ +% Process splitting: +% f = f_diffusion + f_reaction +% Jacobian = Jacobian_diffusion + Jacobian_reaction +% +function du = f_diffusion(~, u, L, alpha, ~, ~) + +du = alpha*L*u; + +end diff --git a/toolbox/+otp/+allencahn/f_linear.m b/toolbox/+otp/+allencahn/f_linear.m new file mode 100644 index 00000000..52498144 --- /dev/null +++ b/toolbox/+otp/+allencahn/f_linear.m @@ -0,0 +1,8 @@ +% Linear-nonlinear splitting: f = f_linear + f_nonlinear +% f_linear(u) = Jac*u, f_nonlinear(u) = f(u)-Jac*u + +function du = f_linear(~, u, L, alpha, beta, ~) + +du = alpha*L*u + beta * (u - 3*u.^3); + +end diff --git a/toolbox/+otp/+allencahn/f_nonlinear.m b/toolbox/+otp/+allencahn/f_nonlinear.m new file mode 100644 index 00000000..0df35223 --- /dev/null +++ b/toolbox/+otp/+allencahn/f_nonlinear.m @@ -0,0 +1,8 @@ +% Linear-nonlinear splitting: f = f_linear + f_nonlinear +% f_linear(u) = Jac*u, f_nonlinear(u) = f(u)-Jac*u + +function du = f_nonlinear(t, u, ~, ~, beta, forcing) + +du = beta * (u - u.^3) - beta * (u - 3*u.^3) + forcing(t); + +end diff --git a/toolbox/+otp/+allencahn/f_reaction.m b/toolbox/+otp/+allencahn/f_reaction.m new file mode 100644 index 00000000..774d5bbd --- /dev/null +++ b/toolbox/+otp/+allencahn/f_reaction.m @@ -0,0 +1,9 @@ +% Process splitting: +% f = f_diffusion + f_reaction +% Jacobian = Jacobian_diffusion + Jacobian_reaction +% +function du = f_reaction(t, u, ~, ~, beta, forcing) + +du = beta * (u - u.^3) + forcing(t); + +end diff --git a/toolbox/+otp/+allencahn/jacobian_diffusion.m b/toolbox/+otp/+allencahn/jacobian_diffusion.m new file mode 100644 index 00000000..c6e84cb7 --- /dev/null +++ b/toolbox/+otp/+allencahn/jacobian_diffusion.m @@ -0,0 +1,9 @@ +% Process splitting: +% f = f_diffusion + f_reaction +% Jacobian = Jacobian_diffusion + Jacobian_reaction +% +function j = jacobian_diffusion(~, ~, L, alpha, ~, ~) + +j = alpha*L; + +end diff --git a/toolbox/+otp/+allencahn/jacobian_reaction.m b/toolbox/+otp/+allencahn/jacobian_reaction.m new file mode 100644 index 00000000..206d3b96 --- /dev/null +++ b/toolbox/+otp/+allencahn/jacobian_reaction.m @@ -0,0 +1,9 @@ +% Process splitting: +% f = f_diffusion + f_reaction +% Jacobian = Jacobian_diffusion + Jacobian_reaction +% +function j = jacobian_reaction(~, u, L, ~, beta, ~) + +j = spdiags(beta * (1 - 3*u.^2), 0, size(L, 1), size(L, 2)); + +end diff --git a/toolboxPackaging.prj b/toolboxPackaging.prj index c9ddefa4..b4dd6978 100644 --- a/toolboxPackaging.prj +++ b/toolboxPackaging.prj @@ -1,5 +1,5 @@ - + ODE Test Problems Steven Roberts, Andrey A. Popov, Arash Sarshar, Adrian Sandu @@ -14,7 +14,7 @@ 0970ed36-a788-484f-beca-105eecd2562a - + true @@ -85,5 +85,59 @@ + + /Users/sandu/GIT/GitHub/ODE-Test-Problems/ODE Test Problems.mltbx + + + + /Applications/MATLAB_R2024b.app + + + + + + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + + + + + true + true + false + false + false + false + false + false + 15.5 + true + false + maci64 + true + \ No newline at end of file