First I can solve a transport equation with a source (Is it still called transport equation?) using DSolve
. The form of the source serves only as an example. It can be anything.
sol1 = DSolve[
{ D[y[x, t], t] - 2 D[y[x, t], x] == Exp[-(t - 1)^2 - (x - 5)^2],
y[x, 0] == 0
},
y[x, t],
{x, t}
];
Plot3D[Evaluate[y[x, t] /. sol1], {x, -10, 10}, {t, 0, 15}, PlotRange -> All]
It will give me the following results. This is what I expected.
My question is, if I want to use NDSolve
instead, what should I use as boundary conditions? The BC should allow the bulk to follow out of the domain and never return. I have no idea how to write down the BC.
For example,
sol3 = NDSolve[
{ D[y[x, t], t] - 2 D[y[x, t], x] == Exp[-(t - 1)^2 - (x - 5)^2],
y[x, 0] == 0,
y[-10, t] == 0,
y[10, t] == 0},
y[x, t],
{x, -10, 10},
{t, 0, 15}];
Plot3D[Evaluate[y[x, t] /. sol3], {x, -10, 10}, {t, 0, 15}, PlotRange -> All]
will give me an error and the following results which is obviously wrong:
NDSolve::eerr: Warning: scaled local spatial error estimate of 89.96891825336817` at t = 15.` in the direction of independent variable x is much greater than the prescribed error tolerance. Grid spacing with 25 points may be too large to achieve the desired accuracy or precision. A singularity may have formed or a smaller grid spacing can be specified using the MaxStepSize or MinPoints method options. >>
I think the error might involve something besides BC.
Answer
Another way that works on this kind of problems is to impose the BC/ΙC on the characteristics. For this problem the characteristics are $$t+x/2=c$$ so by making the change of variables: $$ \xi=t+x/2,\, \eta=t $$
the PDE becomes (if I am correctly) $$ u_\eta=e^{-(-1+\eta )^2-(5+2 \eta -2 \xi )^2} $$ for this kind of equation I need just one condition, an initial one:
solalt = NDSolve[{D[y[ξ, η], η] ==E^(-(-1 + η)^2 - (5 + 2 η - 2 ξ)^2),
y[ξ, 0] == 1}, y, {ξ, -5, 20}, {η, 0, 15}][[1, 1]];
Plot3D[Evaluate[y[t + x/2, t] /. solalt], {x, -10, 10}, {t, 0, 15}, PlotRange -> All]
A little care must be given for the domains $(\xi,\eta)$ but its trivial to find it.
Comments
Post a Comment