# NDSolve -- Solution to Wave Equation Unstable

Posted 9 years ago
2200 Views
|
0 Replies
|
0 Total Likes
|
 I'm trying to solve a very typical wave equation as a test problem. The codes are given below, L = 10; \[Lambda] = 2^0 L; c = 1; \[Omega] = 2 \[Pi] (c/L) (1/100); tMax = 100 L/c; Equation = D[\[Phi][x, t], t, t] == c^2 D[\[Phi][x, t], x, x]; IConds = {\[Phi][x, 0] == 0, Derivative[0, 1][\[Phi]][x, 0] == 0}; BConds = {Derivative[1, 0][\[Phi]][0, t] == Tanh[t] Sin[\[Omega] t], Derivative[1, 0][\[Phi]][L, t] == 0}; Sol = NDSolve[ Join[{Equation}, BConds, IConds], \[Phi], {x, 0, L}, {t, 0, tMax}, Method -> {"MethodOfLines", "SpatialDiscretization" -> {"TensorProductGrid", "MinPoints" -> 100}}] The problem can be solved for up to t ~ 10 L/c; for t > 20 L/c, the solution grows due to instabilities. I'm not sure about the discretization procedures that Mathematica employed in solving hyperbolic PDEs; it seems that if discretization had been done correctly the solution would not have blown up. For example, in one type of discretization scheme the Courant condition c/(Delta x/Delta t) << 1 has to be satisfied, where Delta x is the gridsize in the spatial direction, Delta t the gridsize in the temporal direction, and c the speed of wave.My question is just simply, is there a way for Mathematica to integrate a wave-like equation in the temporal direction stably, over a long time t, that is, t = n T, where n is an integer and T = L/c?