I am facing the following issue; I have the solution of a ParametricNDSolveValue and would like to plot several solutions with varying parameter in the same Manipulate to see qualitative differences. It works just fine when I only plot one function, but as soon as I try to pass multiple functions in a list I get an empty manipulate. I realize that this is probably just a syntax error, however I couldn't make it work. This is my code:
Diffus[x_] =
Piecewise[{{h1,
x < x1}, {((h2 - h1)/2)*Cos[(Pi/(x2 - x1))*x] + (h1 + h2)/2,
x1 <= x < x2}, {h2, x >= x2}}] /. {x1 -> 10, x2 -> 12, h1 -> 1,
h2 -> 20};
NeuB = NeumannValue[0, x == 0 || x == 30];
molfem[measure_ : Automatic] := {"MethodOfLines",
"SpatialDiscretization" -> {"FiniteElement",
"MeshOptions" -> MaxCellMeasure -> measure}};
SinglePeakParam[x_, h_] =
Piecewise[{{h1,x < x1}, {(-(h2 - h1)/2)*Cos[(Pi/(x2 - x1))*x] + ((h2 + h1)/2),x1<=x<x2},
{((h3 - h2)/2)*Cos[(Pi/(x3 - x2))*x] + ((h3 + h2)/2),x2 <= x < x3},
{h3, x3 <= x}}] /.{x1 -> 10, x2 -> 11, x3 -> 12,h1 -> 5, h2 -> h, h3 -> 10};
ClearAll[P2, pde2];
pde2 = D[P2[x, t], t] +
D[(-D[P2[x, t], x]*Diffus[x] -
P2[x, t]*D[SinglePeakParam[x, h], x]*Diffus[x]), x] == NeuB;
Evals = ParametricNDSolveValue[{pde2,
P2[x, 0] == UnitStep[x - 12]/18},
P2[x, t], {x, 0, 30}, {t, 0, 500}, {h}, Method -> molfem[0.01]];
Eval11[x_, t_] = Evals[11];
Eval12[x_, t_] = Evals[12];
Eval13[x_, t_] = Evals[13];
Eval14[x_, t_] = Evals[14];
Eval15[x_, t_] = Evals[15];
Eval16[x_, t_] = Evals[16];
Manlist = {Eval11[x, t], Eval12[x, t], Eval13[x, t], Eval14[x, t],
Eval15[x, t], Eval16[x, t]};
Manipulate[
Plot[Manlist, {x, 0, 15}, PlotRange -> {0, 0.5}], {t, 0, 100}];
However, I have also tried the following code for the Manipulate;
Manipulate[
Plot[Evaluate[Table[Evals[h][x, t], {h, {11, 12, 13, 14, 15, 16}}]], {x,
0, 15}, PlotRange -> {0, 0.5}], {t, 0, 100}]
Which also produced an empty Manipulate. I would like to understand what is going on, especially since the latter code has worked for me before. Thank you very much!
