***equation#

Description#

This option is used to add linear relationships (equations) between different degrees of freedom in the problem. This allows the standard set of linear equations to include constraint conditions (MPC = multi-point constraint). In the current version of the code, these supplemental relationships are resolved by the direct elimination of degrees of freedom.

Syntax#

***equation \(~\,\) ** MPC_type \(~\,~\,\)

The relationship types which are currently defined are summarized in the following table:

Type

Description

**free

impose an arbitrary relation between a single DOF and any number of others (see page).

**mpc1

sets nodal DOFs of a given type to be equal within a node set (see page).

**mpc2

sets two groups of nodes on a paired basis. A linear relation is enforced between the ith DOF in one node set and the ith node on the other (see page).

**mpc2x

is similar to mpc2, and provides an extended syntax (see page).

**mpc2_dof_elset

Sets a condition similar to **mpc2 between two DOFs belonging to ELSETs (see page).

**mpc3

models sectorial symmetry of the 3-axis (see page).

**mpc4

sets the DOFs of an node set equal to a surface function (line set in 2D or face set in 3D); this condition allows incompatible meshes to be attached at the surface (see page).

**mpc2d3d

combines mixed dimension meshes (see page).

**mpc_periodic

periodic boundary conditions (see page).

**nul_div_u

this procedure imposes a constant volume in the interior of a line set in 2D or a face set in 3D (see page).

**mpc_rb

imposes a rigid body motion on a nset (see page).

**free#

Description#

This MPC imposes any relation between a single DOF and other DOFs. There are multiple ways to define the DOFs.

The equation applied is:

(70)#\[s = c_1m_1+\dots c_nm_n + C\]

Syntax#

This command has a slightly free form, non-standard format.

**free \(~\,~\,\) slave is \(~\,~\,~\,\) master1  coef1 \(~\,~\,~\,\)\(~\,~\,~\,\) masterN  coefN \(~\,~\,~\,\) coefficient

The terms above slave and master# are some special definitions of DOFs specific to this MPC condition. The syntax is given below. The coef# values are real number for the \(c_i\) terms above. And coefficient is a real value for the coefficient \(C\). Note that the is above is a necessary keyword.

node:id:XX
nodal dof, id is the node id, XX the dof type.
node:120:U2.
element:id:rk:XX
element dof, id is the element id, rk the rank of the dof in the element (counted from 1 to the number of element dof of type XX), XX the dof type.
element:25:3:EZ.
elset:name:XX

elset dof, name is the elset name, XX the dof type. | elset:metal:E33

**mpc1#

Description#

This equation type imposes that a given degree of freedom at all the nodes of a valid node set are equal in value.

Syntax#

**mpc1 nset_name  dof_name

nset_name

Character name for a valid node set.

dof_name

Character name for a DOF keyword. The keywords available for different problem types are described in the chapter DOF.

Example#

The following example could be used to assure that the top surface of a flat topped structure remains flat during deformation.

%  from cisap.inp
***equation
  **mpc1 top U2

**mpc2#

Description#

This equation type indicates that groups of nodes are tied on a paired basis. The \(i^\text{th}\) DOF in one node set will be equal to the \(i^\text{th}\) node on the other factored by a coefficient, plus a possible translation.

Alternatively, one can specify element sets to link DOFs belonging to elements. Note that node set names are search first, which could lead to some problems if element sets and node sets have similar names.

Syntax#

There are two possible syntaxes. A standard one and an extended one. The standard syntax is used to simply apply a factor between two degrees of freedom; the default value of ratio is equal to 1, and the relationship is such as dof2_in_name2 = ratio . dof1_in_name1

**mpc2 name1  dof1  name2  dof2ratio ]

The extended one is used to introduce the affine relationship

dof2_in_name2 = ratio . dof1_in_name1 + translation:

**mpc2 name1  dof1  name2  dof2 \(~\,\) *ratio ratio \(~\,\) *translation translation \(~\,\) *inversion

The *inversion keyword may be used to prescribe an inversion of the nset order.

Example#

This could be used to model in 2D a sectorial symmetry following an angle of \(45\) degrees. The nodes of the bisection line of the \(1\) and \(2\) axis should then be imposed to have the same displacement following the axis \(1\) and \(2\).

This condition also allows modeling of axisymmetric conditions (symmetry in relation to a point) by taking two symmetrical node sets in relation to a point and tying similar typed DOFs of the same type with a coefficient of \(-1\).

% from aube.inp
***equation
 **mpc2 n_fuite U1 n_fuite U2  0.4431622

On the other hand, the following syntax allows the user to impose a shift between two lips of a crack.

% from tsqu1.inp
***equation
 **mpc2  lipleft  U1  lipright U1  *ratio 1. *translation 0.15
 **mpc2  lipleft  U2  lipright U2  *ratio 1. *translation -0.1

**mpc2x#

Description#

This equation type indicates that groups of nodes are tied on a paired basis. The \(i^\text{th}\) DOF in one node set will be equal to the \(i^\text{th}\) node in the other factored by a coefficient, plus a possible translation:

(71)#\[\text{DOF}^B_Y = \alpha \cdot \text{DOF}^A_X + \tau\]

It generalizes the standard mpc2, by allowing both the translation and the ratio to be given by a basic value (i.e. the product of a value and a time-dependent table, see p. for more details).

Syntax#

**mpc2x \(~\,~\,\) nsetA dofX \(~\,~\,\) nsetB dofY [ *translation value table ] [ *ratio value table ] [ *cumulative] [ *inversion]

nsetA nsetB

character name of the two paired node sets.

*translation
1As for boundary conditions, the value may either be a real value, a function or a file.

value 1As for boundary conditions, the value may either be a real value, a function or a file. and table specifying the translation \(\tau\).

*ratio

value [1] and table specifying the proportionality coefficient \(\alpha\).

*cumulative

allows subsequent invocations of this mpc to be cumulated. It is otherwise forbidden, to avoid accidentally applying twice an MPC on the same DOF.

*inversion

may be used to prescribe an inversion of the nset order.

Example#

The first example (from $Z7TEST/Hyperelastic_test/INP/ring-3-degrees-mpc.inp) prescribes \(U_\theta = 0\) in a sectorial mesh:

**mpc2x     % U3 = z/x * U1 (ensures U_theta = 0)
  face.2 U1
  face.2 U3
 *ratio function z/x ; tab_constant

The second example imposes the relative slide of both faces of a crack, where the translation is stored in an file (one value per node in the nset):

**mpc2x
  faceA U1
  faceB U1
 *translation ascii_file slide_U1.dat tab_crack

**mpc2_dof_elset#

Description#

The syntax is the same as for mpc2 but the condition is used to link DOFs belonging to elements sets.

Example#

This could be used in the case of periodic elements. Here in the case of large strains periodic elements:

**mpc2_dof_elset ALL_ELEMENT E12 ALL_ELEMENT E21

**mpc3#

Description#

The mpc3 equation type models sectorial symmetry about the \(3^\text{rd}\) axis.

The following relation is applied to all the nodes of the given node set:

(72)#\[U_{\theta} =0.0 \Longleftrightarrow U_2 = tg(\theta) . U_1\]
../../_images/mpc3.fig.svg

Syntax#

For this relationship it is required to give a node set name situated on the symmetry plane, and the angle of the sector in degrees.

**mpc3 nset_name  theta

Character name for the node set in the plane of symmetry. Real value for the sectorial angle.

Example#

% from zcentrifuge3.inp
***equation
    **mpc1 haut U3
    **mpc3 p0 1.0

**mpc4#

Description#

The mpc4 relationship is used to interface incompatible meshes. The DOFs of a given node set will be set to the DOF value on a corresponding boundary. This boundary will generally be taken on the coarser mesh, and is entered as a line set in 2D or a face set in 3D problems. Satisfaction of the mpc4 condition is made by DOF elimination on the node set.

../../_images/mpc4.fig.svg

The position of each node in the node set is first searched in the corresponding line or face set. Two cases may present themselves during this search process. The first is that the node has no projected position on the surface in which case no constraint is applied to that node. The second case is that the node does have a projected position on the surface. In this case the DOF type will be verified for existence on the surface and then subjected to the following relation:

(73)#\[U_{\rm nset~nodes} = \sum_{\rm surface~nodes} N_i U_i\]

If the DOF is not found on the surface during the verification no condition will be placed on that DOF.

It may be noted here that the global solution size (front) will be reduced if the numbering scheme is such that the element numbers attached to the node set are lower than those attached to the line or face sets.

Syntax#

There are two possible syntaxes. A standard one and an extended one. The standard syntax is:

**mpc4 nset liset (faset)

and the extended one is:

**mpc4 \(~\,\) *nset nset \(~\,\) *bset liset (faset) \(~\,\) *delta (dx,dy) ((dx,dy,dz))

The *delta keyword may be used to prescribe a fixed spatial offset between the nset and the liset. This is useful for instance to impose periodic conditions on a unit cell which exhibits incompatible pair sides (e.g. for a 2D square unit cell, left and right sides do not have the same number of nodes).

**mpc2d3d#

Description#

This MPC condition is used to “glue” a 3D mesh to a 2D mesh for mixed dimension analysis. The masters are the DOFs of the 2D mesh controlling the 3D slave DOFs. DOFs are attached (equal) if they have the same \(x_1\) and \(x_2\) coordinates.

Syntax#

**mpc2d3d nset2d  nset3d  dof  dx

nset2d

the name of a node set on the 2D mesh.

nset3d

the name of a node set on the 3D mesh.

dof

the DOF type to fix (e.g. U1, U2, …).

dx

a real value for the distance criteria for node position equivalence.

**mpc_periodic#

Description#

This procedure enables one to prescribe an average deformation with periodic boundary conditions, according to

(74)#\[u = E x + v(x)\]

where \(v(x)\) is periodic; the components are denoted \(E11, E22, E12, E21\) in the 2D case and \(E11, E22, E12, E21, E33, E13, E31, E23, E32\) in the 3D case. The actual value of the prescribed average deformation is equal to the product of the basic value \(i\) and the value in the table tab. Concerning the nsets it is important to distinguish faces, edges and corners.

Syntax#

**mpc_periodic [inv] \(~\,~\,\) dof nset1 nset2 component1 value1 component2 value2 … tab

**nul_div_u#

Description#

This relationship imposes a constant volume inside a surface (line set in 2D or face set in 3D) which is linearized by increment. The linearization cumulates an error of the same order as the incremental deformations. The condition may be strictly respected by demanding error correction, but only when the volume is calculated as follows: In 2D:

(75)#\[\int x \, dy \hskip.5cm\hbox{or}\hskip.5cm\int y \, dx\]

In axisymmetric:

(76)#\[\int 2\pi r z\, dr\]

In 3D:

(77)#\[\iint x \, dydz \hskip.5cm\hbox{or}\hskip.5cm \iint y \, dzdx \hskip.5cm\hbox{or}\hskip.5cm \iint z \, dxdy\]

Note

The surface must be closed, or at the least its limits must have fixed displacements.

This procedure may be introduced in the middle of a calculation by using ***restart. If the keyword correction is not present after ***restart the volume is maintained constant from the instant of restart. In the contrary case the volume is maintained constant, but by taking the reference volume as the volume at time \(t=0\).

Syntax#

**nul_div_u surf_name [correction dir]

surf_name

Character name of the line set in 2D or the face set in 3D.

correction

Keyword indicating that the corrections are to be activated.

dir

Direction indicating the manner which the volume is calculated: In 2D plane geometries:

(78)#\[\begin{split}\begin{aligned} &dir={\bf d1} \quad if \quad V = \int x \, dy \\ &dir={\bf d2} \quad if \quad V = \int y \, dx \end{aligned}\end{split}\]

In 2D axisymmetric geometry:

(79)#\[dir={\bf d2} \quad if \quad V = \int 2\pi r z\, dr\]

In 3D geometry:

(80)#\[\begin{split}\begin{aligned} & dir={\bf d1} \quad if \quad V =\iint x \, dydz \\ & dir={\bf d2} \quad if \quad V =\iint y \, dzdx \\ & dir={\bf d3} \quad if \quad V =\iint z \, dxdy \end{aligned}\end{split}\]

Example#

***equation
 **mpc1 bottom U1
 **mpc2 bottom U1 top U2
 **mpc3 nset1  20.
 **mpc4 nset1  surface1
 **nul_div_u  faset1

**mpc_rb#

Description#

This command imposes a rigid body motion relationship between all nodes of a nset. Mpc can only define linear relationships between dofs, so that mpc_rb is only valid under the small displacement assumption. The relationship is reactualized at every increment, so that mpc_rb can be reasonably used with finite transformation if the increments are small enough.

In 3D, 6 “well chosen” master dofs are sufficient to define the rigid body motion (i.e. 3 translation components and 3 rotation components). They are automatically selected so that the three rotation parameters can be determined.

Under the small displacement assumption, the displacement \(\vect{U}_i\) of every node \(i\) (at location \(O_i\)) of the nset can be expressed as:

(81)#\[\vect{U}_i = \vect{U}_m + \vect{O_iO_m} \wedge \vect{\theta}\]

where \(\vect{U}_m\) and \(\vect{\theta}\) are functions of the 6 master dofs.

Syntax#

**mpc_rb nset