2
$\begingroup$

I want to solve the nonlinear PDE for the anisotropic fluid flow:

$(C_{ijkl}v_{k,l})_{,j}-p_{,i}-v_jv_{i,j}=0$

Mathematica can solve it without last nonlinear term with the following code (using Finite Element Method):

Ui[x, y, z] := {u[x, y, z], v[x, y, z], w[x, y, z]};
coord := {x, y, z};

op = {
   Sum[D[Sum[Sum[Cijkl[[1, j, k, l]]*D[Ui[x, y, z][[k]], coord[[l]]], {l,3}], {k, 3}], coord[[j]]], {j, 3}] - D[p[x, y, z], x],
   Sum[D[Sum[Sum[Cijkl[[2, j, k, l]]*D[Ui[x, y, z][[k]], coord[[l]]], {l,3}], {k, 3}], coord[[j]]], {j, 3}] - D[p[x, y, z], y],
   Sum[D[Sum[Sum[Cijkl[[3, j, k, l]]*D[Ui[x, y, z][[k]], coord[[l]]], {l,3}], {k, 3}], coord[[j]]], {j, 3}] - D[p[x, y, z], z],
   Sum[D[Ui[x, y, z][[k]], coord[[k]]], {k, 3}]
   };

bcs = {
   DirichletCondition[u[x, y, z] == 4 - y^2 - z^2, x == 0],
   DirichletCondition[{u[x, y, z] == 0, v[x, y, z] == 0, w[x, y, z] == 0}, 0 < x < 8],
   DirichletCondition[p[x, y, z] == 0, x == 8]
   };

{xVel, yVel, zVel, pressure} = NDSolveValue[{op == {0, 0, 0, 0}, bcs}, {u, v, w, p}, {x, y, z} \[Element] mesh, Method -> {"FiniteElement", "InterpolationOrder" -> {u->2, v->2, w->2, p->1}}

(The mesh has been generated previously.)

But when I'm trying to add a nonlinear term in the 'op' as follow:

-Sum[Ui[x, y, z][[j]]*D[Ui[x, y, z][[1]], coord[[j]]], {j, 3}]

I get the error message:

Nonlinear coefficients are not supported in this version of NDSolve.

Are there in Mathematica any solvers or other methods for 'NDSolveValue' to solve nonlinear PDEs?

$\endgroup$
  • $\begingroup$ I'd say that depends on the geometry. If you have a rectangular geometry you may get lucky with the "TensorPruductGrid". You'd need to add the missing data C, etc for people to play with it. $\endgroup$ – user21 Apr 25 '18 at 7:17
  • $\begingroup$ No, unfortunatly my geometry is not rectangular. Does "TensorProductGrid" work only with the rectangular domains? There is the whole file in the working state: 1drv.ms/u/s!AvmYXV0MDC0Jh4YAI7UiZqUuRtgzAQ Uncomment strings in the 'op' section to add a nonlinear term. $\endgroup$ – Данил Семёнов Apr 25 '18 at 11:50
  • $\begingroup$ Yes, "TensorProductGrid" only works for rectangular domains. Maybe you can adapt this post for your needs? $\endgroup$ – user21 Apr 25 '18 at 12:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.