5
$\begingroup$

for a structural analysis, I'd like to use an finite element that introduces a deformation dependent load within an arc-length procedure. The Element gets the load value via an input parameter, which in a classical iterative Newton-Raphson is multiplied with the load multiplier.

SMSReal[rdata$$["Multiplier"]]

As far as I understand, within the arc-length procedure another factor, namely $\gamma$ is introduced.

My question is how to handle this within my load-element. Can I do something like:

$$\text{TotalLoad} = \text{InputLoad} \cdot \lambda \cdot \gamma$$

$\endgroup$
  • $\begingroup$ I do not know AceGen, but are names with $$ at the end common or standard in it? It feels quite unsafe to me ... $\endgroup$ – Szabolcs Apr 4 '17 at 12:58
  • $\begingroup$ Yes, it is a convention in AceGen that names for input and output parameters of subroutines end with $$. But at least for common finite element subroutines these symbols (e.g. rdata$$) are predefined in its own context when you load the main package. Why do you think these names could be unsafe? $\endgroup$ – Pinti Apr 4 '17 at 13:07
  • $\begingroup$ @Pinti Because adding trailing $s is one of the localization mechanisms used by Mathematica (e.g. in With, Function, etc.—not in Module, which adds $nnn instead) But maybe it doesn't create things with a double $$ at the end. I would be worried that using rdata may create an rdata$$ behind the scenes (in some very rare cases), and cause a conflict. $\endgroup$ – Szabolcs Apr 4 '17 at 13:24
  • $\begingroup$ @Szabolcs Thank you for the explanation. I don't know if this makes any difference, but rdata$$ and similar symbols act as "custom data types" in AceGen and currently cannot be avoided. I will try to ask the author of the package what he thinks about the issue. $\endgroup$ – Pinti Apr 4 '17 at 13:39
6
$\begingroup$

The load should only be multiplied with the "Multiplier" parameter. Simplified excerpt from an existing load element for ArcLength iteration:

SMSStandardModule["Tangent and residual"]
...
SMSFreeze[P, -lambda Pin];
W = P.u;
Rg = fGauss SMSD[W, pe, "Constant" -> P];
SMSExport[Rg, p$$, "AddIn" -> True];

Arch length parameter \gamma is not to be used directly, since its value is problem dependent. However if you make an element that calculates the load, you need to add an extra user soubroutine "User 1", which will return the derivaive of residual with respect to Multiplier, because the arc length procedure needs this derivative so that the new Multiplier is calculated calculate for each arc length iteration:

SMSStandardModule[FEMStep = "User 1","AdditionalArguments" -> Real[p$$[SMSNoDOFGlobal]]]
...
SMSFreeze[P, -lambda Pin];
W = P.u;
Rg = fGauss SMSD[W, pe, "Constant" -> P];
dRgdlam = SMSD[Rg, lambda];
SMSExport[dRgdlam, p$$, "AddIn" -> True];

If you use standard Essential and Natural boundaries, this is already considered. If you need full element I can send it to you. It is possible that "User 1" subroutine will get replaced in the future.

| improve this answer | |
$\endgroup$

Your Answer

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

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