What about:
Noting that equations 1 and 3 form a complete set, and solve them first, treating the remaining equation 2 for
m
afterwards.Noting that your imposed initial conditions for
v
do not satisfy boundary conditions, i.e., they violate eq(3). If you insist to use Gaussian distribution, in this particular example the factor in the exponential can be easily calculated by hand.Writing eq(2) solely in terms of boundary parametrisation, in this case, a polar angle
phi
. The tricky part here for curved surfaces in more dimensions would be to express the Laplacian, however, there are recipes how to do it n-dimesnions. Anyway, for a circle this is straightforwardly done by hand.Note, that not surprisingly, our solution does not depend on 'phi' as the whole problem is rotational-symmetric.
Due to numerical reasons, I have defined
vBoundary
on a circle with a radius slightly smaller than1
. Alternatively, one could use as a boundary an approximation of a unit circle used in theInterpolatingFunction
, which would be necessary for more complex geometries anyhow.
I hope that helps with your investigations.
alpha = 1.0;
geometry = Disk[];
{x0, y0} = {.0, .0};
sol = NDSolve[{D[v[x, y, t], t] ==
D[v[x, y, t], x, x] + D[v[x, y, t], y, y] +
NeumannValue[-1*alpha*v[x, y, t], x^2 + y^2 == 1],
v[x, y, 0] == Exp[-(((x - x0)^2 + (y - y0)^2)/(2/alpha))]},
v, {x, y} \[Element] geometry, {t, 0, 10}]
sol[[1, 1]]
ContourPlot[v[x, y, 1] /. sol[[1, 1]], {x, y} \[Element] geometry,
PlotRange -> All, PlotLegends -> Automatic]
vsol = v /. sol[[1, 1]];
vBoundary[phi_, t_] := vsol[.99 Cos[phi], .99 Sin[phi], t]
sol = NDSolve[
{D[m[phi, t], t] == D[m[phi, t], {phi, 2}] + alpha*vBoundary[phi, t],
PeriodicBoundaryCondition[m[phi, t], phi == 2 \[Pi],
Function[x, x - 2 \[Pi]]],
m[phi, 0] == 0
},
m, {phi, 0, 2 \[Pi]}, {t, 0, 10}]
msol = m /. sol[[1, 1]]
huePlot[t_] :=
PolarPlot[1, {phi, 0, 2 Pi}, PlotStyle -> Thick,
ColorFunction ->
Function[{x, y, phi, r}, Hue[msol[phi, t]/msol[0, t]]],
ColorFunctionScaling -> False]
huePlot[1]