I have a simple 2D finite element problem comprising a unit domain that is fully constrained on the left, vertically constrained on the bottom and subject to a uniformly distributed load at the top. See below
At present the load remains vertical throughout the deformation. How can I modify this problem so that the load follows the deformation and stays perpendicular to the top surface of the body?
My current code is shown below
(* Open AceFEM *)
<< AceFEM`;
(* Domain and load *)
DensityX = 10;
DensityY = 10;
Height = 1;
Width = 1;
Load = -50;
SMTInputData["Threads" -> 4];
(* Create domain *)
SMTAddDomain[
"CornerDomain", {"ML:", "SE", "PE", "Q1", "DF", "HY", "Q1",
"D", {{"NeoHooke", "WA"}}}, {"E *" -> 200}];
SMTMesh["CornerDomain",
"Q1", {DensityX,
DensityY}, {{{0, 0}, {Width, 0}}, {{0, Height}, {Width, Height}}}];
(* Boundary conditions *)
SMTAddEssentialBoundary["X" == 0 &, 1 -> 0, 2 -> 0];
SMTAddEssentialBoundary["Y" == 0 &, 2 -> 0];
SMTAddNaturalBoundary[Line[{{0, Height}, {Width, Height}}],
2 -> Line[{Load}]];
(* Begin analysis *)
SMTAnalysis[];
SMTShowMesh["BoundaryConditions" -> True]
(* Solution procedure *)
tolNR = 10^-5; maxNR = 500; targetNR = 100;
λMax = 1; λ0 = λMax/1000;
ΔλMin = λMax/10000; ΔλMax = λMax/100;
SMTNextStep["λ" -> λ0];
While[
While[
step =
SMTConvergence[tolNR,
maxNR, {"Adaptive BC",
targetNR, ΔλMin, ΔλMax, λMax}]
, SMTNewtonIteration[];
];
If[step[[4]] === "MinBound", SMTStatusReport["Analyze"];
SMTStepBack[];];
step[[3]]
, If[step[[1]], SMTStepBack[];];
SMTNextStep["Δλ" -> step[[2]]]
];
Which yields the deformed body
Any help would be appreciated!