I am solving the spherically symmetric wave equation in 3 dimensions on $r\in[0,2\pi]$ $$(\partial_t^2 - \frac{1}{r^2} \partial_r r^2 \partial_r) \theta(t,r)=0$$ with initial conditions $\theta(0,r)=e^{-(r-3)^2}$ and $\partial_t\theta(0,r)=0 $, imposing boundary conditions $$\partial_r\theta(t,0)=0, \qquad \partial_t(r\theta)(t,6)+\partial_r(6\theta)(t,6)=0.$$ The first is necessary for smoothness at the origin and the second (necessary to solve on a finite domain) should make sure that no information comes form outside the domain.
I include my code below. As you will see, the solution behaves reasonable at first and then starts growing for no reason. I would like to gain some intuition as to what numerically is the problem and how to extend the reasonable behaviour time.
tend = 100.;
rstart = 1/10^100;
rend = 6;
eq = D[θ[t, r], {t, 2}] - 1/r^2 D[r^2 D[θ[t, r], r], r] == 0;
ic = {θ[0, r] == Exp[-(r - 3)^2], (D[θ[t, r], t] /. t -> 0) == 0};
bc = {(D[θ[t, r], r] /. r -> rstart) ==
0, (D[r θ[t, r], t] /. r -> rend) + (D[r θ[t, r], r] /. r -> rend) == 0};
sol = NDSolve[Flatten@{eq, ic, bc}, θ, {t, 0, tend}, {r, rstart, rend}]
Animate[Plot[{θ[t, r] /. sol}, {r, rstart, rend}, PlotRange -> {{rstart, rend}, {-2, 2}}], {t, 0, tend}]
Edit: I'm running version 12.1. Below I include an snapshot of the animation when the solution starts to drift downwards



“DifferenceOrder” -> “Pseudospectral”in the spatial discretization help? – Michael E2 Jan 16 '22 at 19:32Method -> {"MethodOfLines", "SpatialDiscretization" -> {"TensorProductGrid", "MaxPoints" -> 45, "MinPoints" -> 45, "DifferenceOrder" -> 4}, Method -> "Adams"}toNDSolvein v12.1? Also, you may need"DifferentiateBoundaryConditions" -> {True, "ScaleFactor" -> 100}. (To learn more about this option, you can read the following post: https://mathematica.stackexchange.com/a/127411/1871 ) – xzczd Jan 17 '22 at 14:47MaxStepSize -> {0.05, Automatic}. Do these options work in v12.1? – xzczd Jan 17 '22 at 15:01