2
$\begingroup$

I have posted a previous question at this post. Thanks @AlexTrounex and @user21 for providing very useful comments. The more rigorous 2D plane stress stress operator by considering both position and time dependent temperature fields is: (a=thermal expansion coefficient, ρρ=density)

pst = {Inactive[
  Div][{{-(Y/(1 - nu^2)), 
    0}, {0, -((Y*(1 - nu))/(2*(1 - nu^2)))}} . 
  Inactive[Grad][u[x, y, t], {x, y}], {x, y}] + 
Inactive[
  Div][{{0, -((Y*nu)/(1 - 
         nu^2))}, {-((Y*(1 - nu))/(2*(1 - nu^2))), 0}} . 
  Inactive[Grad][v[x, y, t], {x, y}], {x, y}] + 
     (a*Y*Inactive[D][T[x, y, t], {x}])/(1 - nu) - ρρ*
 Inactive[D][u[x, y, t], {t}], 
 Inactive[
  Div][{{0, -((Y*(1 - nu))/(2*(1 - nu^2)))}, {-((Y*nu)/(1 - 
         nu^2)), 0}} . Inactive[Grad][u[x, y, t], {x, y}], {x, 
  y}] + 
     Inactive[
  Div][{{-((Y*(1 - nu))/(2*(1 - nu^2))), 
    0}, {0, -(Y/(1 - nu^2))}} . 
  Inactive[Grad][v[x, y, t], {x, y}], {x, 
  y}] + (a*Y*Inactive[D][T[x, y, t], {y}])/(1 - 
   nu) - ρρ*Inactive[D][v[x, y, t], {t}]};

By defining displacement and temperature fields as a function of time, I initially thought it would naturally handle a non-steady problem. However, I still have troubles getting reasonable results. Let's consider a simple example. The temperature field is just a function of time: T[t]=10t. The boundary conditions are the left and bottom surfaces of the body are fixed. The code for this problem is:

 Needs["NDSolve`FEM`"];
 L = 1;
 h = 1;
 reg = Rectangle[{0, 0}, {L, h}];
 mesh = ToElementMesh[reg];
 materialParameters = {Y -> 10^10, nu -> 33/100, 
 a -> -0.001, ρρ -> 2000};

 T = 10 t;

 pst = {Inactive[
  Div][{{-(Y/(1 - nu^2)), 
    0}, {0, -((Y*(1 - nu))/(2*(1 - nu^2)))}} . 
  Inactive[Grad][u[x, y, t], {x, y}], {x, y}] + 
  Inactive[
  Div][{{0, -((Y*nu)/(1 - 
         nu^2))}, {-((Y*(1 - nu))/(2*(1 - nu^2))), 0}} . 
  Inactive[Grad][v[x, y, t], {x, y}], {x, y}] + 
     (a*Y*Inactive[D][T, {x}])/(1 - nu) - ρρ*
 Inactive[D][u[x, y, t], {t,2}], 
 Inactive[
  Div][{{0, -((Y*(1 - nu))/(2*(1 - nu^2)))}, {-((Y*nu)/(1 - 
         nu^2)), 0}} . Inactive[Grad][u[x, y, t], {x, y}], {x, 
  y}] + 
     Inactive[
  Div][{{-((Y*(1 - nu))/(2*(1 - nu^2))), 
    0}, {0, -(Y/(1 - nu^2))}} . 
  Inactive[Grad][v[x, y, t], {x, y}], {x, 
  y}] + (a*Y*Inactive[D][T, {y}])/(1 - nu) - ρρ*
 Inactive[D][v[x, y, t], {t,2}]};

 ic = {u[x, y, 0] == 0, 
 v[x, y, 0] == 0, (D[u[x, y, t], t] /. t -> 0) == 
 0, (D[v[x, y, t], t] /. t -> 0) == 0};

{uif, vif} = 
NDSolveValue[{Activate[pst == {0, 0} /. materialParameters], ic, 
DirichletCondition[u[x, y, t] == 0, x == 0], 
DirichletCondition[v[x, y, t] == 0, y == 0]}, {u, v}, {t, 0, 
3}, {x, y} ∈ mesh];

{DensityPlot[uif[x, y, 3], {x, y} ∈ mesh, 
ColorFunction -> "Rainbow", 
PlotLegends -> Placed[Automatic, Bottom], PlotLabel -> "u", 
AspectRatio -> Automatic], 
DensityPlot[vif[x, y, 3], {x, y} ∈ mesh, 
ColorFunction -> "Rainbow", 
PlotLegends -> Placed[Automatic, Bottom], PlotLabel -> "v", 
AspectRatio -> Automatic]}

However, by running this code, all the solved displacements are 0, which obviously does not make any sense.

enter image description here

Looks like that the system equation lacks a term which can account for the time change of the temperature field. Can anyone please help me?

$\endgroup$
3
  • 2
    $\begingroup$ Yes, it should be a second time derivative and that is fixed in the upcoming 12.1.1 release. $\endgroup$
    – user21
    Commented May 6, 2020 at 5:24
  • $\begingroup$ @user21, thanks for the confirmation. Unfortunately, after changing the first time derivative to the second time derivative, the FE problem cannot be solved by Mathematica. $\endgroup$
    – XIJUN SHI
    Commented May 6, 2020 at 5:47
  • 1
    $\begingroup$ @user21, thanks. I just sent. $\endgroup$
    – XIJUN SHI
    Commented May 6, 2020 at 13:49

1 Answer 1

1
$\begingroup$

There is now an application example in the FEMAddOns paclet that contains such a model. You can see it here.

To download the FEMAddOns use:

ResourceFunction["FEMAddOnsInstall"][]
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.