This is a very simple one-dimensional heat-conduct equation, the only special part of it is the piecewise initial condition:
b = NDSolve[{D[tes[t, x], t] == D[tes[t, x], x, x] + Exp[-1/(tes[t, x])],
tes[t, 0] == 1, tes[t, 1] == 1,
tes[0, x] == Piecewise[{{-100 (x - 0.1)^2 + 2, 0 <= x <= 0.1},
{2, 0.1 <= x <= 0.9},
{-100 (x - 0.9)^2 + 2, 0.9 <= x <= 1}}]},
{tes[t, x]}, {t, 0, 100}, {x, 0, 1}]
If you run the code, you will get this warning message:
NDSolve::mxsst: Using maximum number of grid points 10000 allowed by the MaxPoints or MinStepSize options for independent variable x
Why does this message come out? I read the help but I don't think my initial condition has that kind of fault: it's piecewise but smooth, right?
I'd like to add another sample here since its behavior makes an interesting contrast to the sample above:
c = NDSolve[{D[tes[t, x], t] == D[tes[t, x], x, x] + Exp[-1/(tes[t, x])],
tes[t, 0] == 1, tes[t, 1] == 1,
tes[0, x] == Piecewise[{{-Exp[-1000 x] + 2, 0 <= x <= 0.1},
{2, 0.1 <= x <= 0.9},
{-Exp[-1000 (1 - x)] + 2, 0.9 <= x <= 1}}]},
{tes[t, x]}, {t, 0, 100}, {x, 0, 1}]
In this example, Exp
is chosen to be the transition between initial condition and boundary conditions. This initial condition is not even continuous at x=0.1
and x=0.9
in the view of math, and the change of Exp
is more drastic than the polynomial function in my view, but it causes no warning message. Well, I should say, after all this time (notice the time I posted this question) I've already treated the warning as some kind of bug, but I still expect an in-depth explanation.