DisplacementControl

Contents

DisplacementControl#

In an analysis step with Displacement Control, the objective is to control the displacement of a particular degree-of-freedom at a node by a prescribed increment. To this end, the Displacement Control integrator will solve for the load multiplier \(d \lambda\) such that the displacement increment at the control DOF is equal to a prescribed value.

Model.integrator("DisplacementControl", node, dof, incr[, numIter, dUmin, dUmax])

Configure the DisplacementControl integrator.

Parameters:
node: integer

tag identifying the node whose response controls solution

dof: integer

tag identifying the degree of freedom at the node

incr

float value of the displacement increment

numIter

integer value of the number of iterations the user would like to occur in the solution algorithm. Optional; default = 1.0.

dUmin

float value of the min step size the user will allow. Optional; default \(\Delta U_{min} = \Delta U_0\)

dUmax

float value of the max step size the user will allow. Optional; default \(\Delta U_{max} = \Delta U_0\)

Examples#

The following example configures a displacement control algorithm to maintain a constant increment of 0.1 at node 1 in the direction of DOF 2.

model.integrator("DisplacementControl", 1, 2, 0.1)

Theory#

If we write the governing finite element equation at \(t + \Delta t\) as:

\[g(u_{t+\Delta t}, \lambda_{t+\Delta t}) = \lambda_{t+\Delta t} F^{ext} - F(u_{t+\Delta t})\]

where \(F(u_{t+\Delta t})\) are the internal forces which are a function of the displacements \(U_{t+\Delta t}\), \(F^{ext}\) is the set of reference loads and \(\lambda\) is the load multiplier. Linearizing the equation results in:

\[K_{t+\Delta t}^{*i} \Delta U_{t+\Delta t}^{i+1} = \left ( \lambda^i_{t+\Delta t} + \Delta \lambda^i \right ) F^{ext} - F(U_{t+\Delta t})\]

This equation represents n equations in \(n+1\) unknowns, and so an additional equation is needed to solve the equation. For displacement control, we introduce a new constraint equation in which in each analysis step we set to ensure that the displacement increment for the degree-of-freedom at the specified node is:

\[\Delta \boldsymbol{u}_\text{dof} = \text{incr}\]

In Displacement Control the \(\Delta u_{\text{dof}}\) set to \(t + \lambda_{t+1}\) where,

\[\Delta \boldsymbol{u}_{\text{dof}}^{t+1} = \max \left( \Delta \boldsymbol{u}_{\mathrm{min}}, \min \left( \Delta u_{\text{max}}, \frac{\text{numIter}}{\text{lastNumIter}} \Delta u_\text{dof}^{t} \right) \right)\]