I've got another issue regarding the arc length method. In the analysis below, I introduce a load using a finite element. I then try to solve the problem using arc-length procedure.
First issue is: If there is only load applied through an element (no SMTAddNaturalBoundary) the procedure fails completely with indeterminate number in tangent matrix. Got an idea why but maybe anyone can explain how to overcome this issue?
Second issue: Additionally to the load applied by the element I want to use a SMTAddNaturalBoundary to introduce a force as done in the example code. Now the arc-length procedure does not fail at startup but on convergence. For me it seems to be related to the high difference of the "element"- and the "natural"-load.
Either way can anyone please explain how to resolve this issues?
<< AceFEM`;
{nx, ny} = {10, 10};
SMTInputData[];
SMTAddDomain[{{"\[CapitalOmega]",
"MLSEPET1DFHYT1DNeoHookeWBC", {}}, {"\[CapitalOmega]load",
"OL:SEC2L1DFFLL1Uniform", {"qx *" -> 10^3}}}];
SMTAddMesh[Polygon[{{0, 0}, {1, 0}, {1, 1}, {0, 1}}],
"\[CapitalOmega]", "T1-4", {nx, ny}];
SMTAddMesh[Line[{{1, 0}, {1, 1}}], "\[CapitalOmega]load", "L1", ny];
SMTAddEssentialBoundary["X" == 0 &, 1 -> 0, 2 -> 0];
SMTAddNaturalBoundary["X" == 1 &, 2 -> 10^-3];
SMTAnalysis[];
SMTArcLengthSet["\[Lambda]Target" -> 10];
sMax = 100;
s0 = 10^0;
\[CapitalDelta]sMin = 10^-2;
\[CapitalDelta]sMax = 10^0;
SMTNextStep["\[CapitalDelta]\[Gamma]" -> s0];
While[
While[
step =
SMTConvergence[10^-6,
100, {"Adaptive \[Gamma]",
8, \[CapitalDelta]sMin, \[CapitalDelta]sMax, sMax}]
, SMTArcLengthIteration[];
];
If[Not[step[[1]]],
If[SMTData["Multiplier"] >= 1, Break[];];
];
If[step[[4]] === "MinBound", SMTStatusReport["Analyze"];
SMTStepBack[];];
step[[3]]
,
If[step[[1]], SMTStepBack[];, SMTArcLengthNext[];];
SMTNextStep["\[CapitalDelta]\[Gamma]" -> step[[2]]]
];
SMTArcLengthFree[];
SMTData["Multiplier"]
SMTNodeData["X" == 1 && "Y" == 1 &, "at"]