2

I am trying to solve the equilibrium equation $\text{DIV } \mathbf P(\textbf{u}(x,y)) = \mathbf{f}$, where $\mathbf P$ is the stress tensor defined by

$$ \mathbf P = \mathbf F + (1-\det\mathbf F)^2\quad\text{with}\quad \mathbf F = \text{GRAD } \mathbf u + \mathbf I. $$

I implemented the equations above in Mathematica as follows

ns[x,y] = {nx[x,y], ny[x,y]};
F = Inactive[Grad][ns[x,y], {x,y}] + IdentityMatrix[2];
J = Det[F] //FullSimplify;
μ = 10;
λ = 5;

P = λ F + μ (1 - J)^2

solInt = y * x^2; equation = Inactive[Div][P, {x, y}] == Inactive[Grad][solInt, {x, y}] ; boundaryConds1 = {ns[x, y] == {3, 0}}; boundaryConds2 = {ns[x, y] == {0, 0}}; boundaryConds3 = {ns[x, y] == {0, 0}};

Ω = Rectangle[{0, 0}, {1, 1}] un = NDSolveValue[{equation, { DirichletCondition[boundaryConds1, x == 1], DirichletCondition[boundaryConds2, x == 0], DirichletCondition[boundaryConds3, y == 0] }}, ns[x, y], {x, y} ∈ Ω]

This gives me the error:

"There are more dependent variables, {nx[x, y], ny[x, y]}, than equations, so the system is underdetermined."

I suspect that the culprit is the fact that Mathematica does not understand that the equation, once evaluated, will yield a vector with two entries.

Any way to fix the issue?

user21
  • 39,710
  • 8
  • 110
  • 167
rmk236
  • 21
  • 2
  • According to this answer, I indeed need to do something of the sort. However, they don't expose how it can be done. – rmk236 Sep 22 '20 at 15:36
  • You are using vector operators like Grad and Div. However, you set them all to: inactive. If they do not act, you have only 1 equation, not a vector equation. Then NDSolve complains that you have 1 equation and 2 dependent variables. – Daniel Huber Sep 22 '20 at 16:36
  • It looks like NDSolve resists to solve this kind of equations. – Alex Trounev Sep 23 '20 at 10:59
  • @DanielHuber, yes they are set to inactive. However, if they are left as active, NDSolve is not able to create the weak form necessary to calculate the answer. If I run this script without the Inactive, The maximum derivative order of the nonlinear PDE coefficients for the Finite Element Method is larger than 1. It may help to rewrite the PDE in inactive form.. – rmk236 Sep 24 '20 at 07:29
  • I do not know a good answer to this. But have you seen: "https://mathematica.stackexchange.com/questions/197046/ndsolve-error-what-does-it-may-help-to-rewrite-the-pde-in-inactive-form-mean" and "https://mathematica.stackexchange.com/questions/195477/how-do-i-use-the-new-nonlinear-finite-element-in-mathematica-12-for-this-equatio/195481#195481". If nothing helps I would write a message to support@wolfram,com – Daniel Huber Sep 24 '20 at 08:31

0 Answers0