I have problem with my PDE. The problem is as bellow:
I used "WhenEvent" operator to solve it. The code is:
a = 255
b = 2.5
heat1 = NDSolveValue[{D[u[t, x],
t] - (0.0000001 D[u[t, x], x, x] + b*Exp[a *x]) ==
NeumannValue[0, True] + NeumannValue[-7 (u[t, x] - 25), x == .05],
u[0, x] == 25,
WhenEvent[
u[t, x] > 250, {a = 0.01*a, b = .2 b, "RestartIntegration"}]},
u, {t, 0, 600}, {x, 0, .05},
Method -> {"MethodOfLines", "TemporalVariable" -> t,
"SpatialDiscretization" -> {"FiniteElement",
"MeshOptions" -> {"MaxCellMeasure" -> {"Length" -> 0.001}}}}]
pa = Plot[Evaluate[heat1[t, 0.05]], {t, 0, 600}, PlotRange -> All,
AxesLabel -> {t, "T(.05,t)"}]
After running this code, I got the following errors.
" NDSolveValue::nbnum1: The function value InterpolatingFunction[{{0.,0.05}},{5,4225,0,{101},{3},0,0,0,0,Automatic,{},{},False},{<<1>>},{25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,<<15>>,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,25.,<<51>>},{Automatic}][x]>250 is not True or False when the arguments are {0.,{<<1>>},{2.50058,3.22634,4.16337,5.37266,6.93321,8.94703,11.5458,14.8994,<<36>>,186525.,240704.,310619.,400841.,517266.,667489.,<<51>>}}. >>
General::stop: Further output of NDSolveValue::nbnum1 will be suppressed during this calculation. >> "
How can I fix it? Thank you




u[t, x]is an array of values. Which do you wish to compare with 250? Perhaps, the largest value? – bbgodfrey Dec 14 '16 at 20:53xjust less than.05is positive and large, but the coded boundary condition atx == 0.5has a negative and large spatial derivative. This incompatibility causes rapid variation inunearx == 0.5. – bbgodfrey Dec 14 '16 at 22:13f(x,u)is a discontinuous function ofxat anyt, becauseuis a function ofx. Is that what you intend? YourWhenEventappears to be attempting switcha,bfor allxbased on some critera. Can you clarify when you intend. – george2079 Dec 14 '16 at 22:22f[x,u[t,x]]in the latex formulation to make it clear if that's what you mean. – george2079 Dec 14 '16 at 22:39