# AceGen: Deformation Dependent Load Element in Arc Length Procedure

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$$• I do not know AceGen, but are names with $$ at the end common or standard in it? It feels quite unsafe to me ... Apr 4, 2017 at 12:58
• 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? Apr 4, 2017 at 13:07
• @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. Apr 4, 2017 at 13:24
• @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. Apr 4, 2017 at 13:39 ## 1 Answer 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.