Recently, I am trying to solve a 1-D PDE with a nonlinear boundary condition using the function NDSolveValue. However, it seems that MMA (12) cannot solve it directly with some computational issues.
The governing equation along with associated initial and boundary conditions are
where C, D, and E are constant and set as 10, 1, and 1, respectively. Note that both conditions Eqs. (3) and (4) for inner boundary conditions are required.
Accordingly, my code is like
c = 10; d = 1; e = 1; sys = {(1/r)*D[r*Derivative[1, 0][f][r, t], r] == Derivative[0, 1][f][r, t] +
NeumannValue[c*D[g[t], t], r == 1], DirichletCondition[
f[r, t] + (d + e*Derivative[1, 0][f][r, t])*Derivative[1, 0][f][r, t] == g[t],
r == 1], g[0] == 1, f[r, 0] == 0, f[5, t] == 0};
{fa, ga} = NDSolveValue[sys, {f, g}, {t, 0, 1000}, MaxStepSize -> 0.00001]
However, MMA said "There are more dependent variables". Is it possible to address this issue or MMA cannot deal with nonlinear PDE?
Following the suggestion of xzczd, I rearranged the code by combining (3) and (4) and the code becomes
c = 10; d = 1; e = 1; sys = {(1/r)*D[r*Derivative[1, 0][f][r, t], r] ==
Derivative[0, 1][f][r, t], DirichletCondition[
f[r, t] == g[t] - (d + e*c*D[g[t], t])*c*D[g[t], t], r == 1], g[0] == 1,
f[r, 0] == 0, f[5, t] == 0};
{fa, ga} = NDSolveValue[sys, {f, g}, {t, 0, 1000}, MaxStepSize -> 0.00001]
Note that the inner boundary condition is Dirichlet type only herein. But the code cannot be calculated with errors warned by MMA.
Derivative[……]
won't be copied correctly in this way. ) Please Ctrl+Shift+I to convert the code to input form, and Ctrl+C to copy it, for more info check this post: mathematica.meta.stackexchange.com/a/1585/1871 @user21 I think we can eliminate $g$ using $(3)$ and $(4)$. $\endgroup$ – xzczd Jun 4 '20 at 7:45