FEM ConstraintDisplacement

From FreeCAD Documentation

FEM ConstraintDisplacement

Menu location
Model → Mechanical boundary conditions and loads → Displacement boundary condition
Default shortcut
Introduced in version
See also
FEM tutorial


Creates a FEM boundary condition for a prescribed displacement of a selected object for specified degrees of freedom.


  1. Press the Displacement boundary condition button or select the menu Model → Mechanical boundary conditions and loads → Displacement boundary condition.
  2. In the 3D view select the object the boundary condition should be applied to, which can be a vertex (corner), edge, or face.
  3. Press the Add button.
  4. Uncheck Unspecified to activate the necessary fields for editing.
  5. Set the values or (introduced in version 0.21) specify a formula for the displacements.


introduced in version 0.21


For the solver Elmer it is possible to define the displacement as a formula. In this case the solver sets the displacement according to the given formula variable.

Take for example the case that we want to perform a transient analysis. For every time step the displacement should be increased by 6 mm:

enter this in the Formula field:
Variable "time"; Real MATC "0.006*tx"

This code has the following syntax:

  • the prefix Variable specifies that the displacement is not a constant but a variable
  • the variable is the current time
  • the displacement values are returned as Real (floating point) values
  • MATC is a prefix for the Elmer solver indicating that the following code is a formula
  • tx is always the name of the variable in MATC formulas, no matter that tx in our case is actually t


Elmer only uses the Displacement * fields of the boundary condition. To define rotations, we need a formula.

If for example a face should be rotated according to this condition:

then we need to enter for Displacement x
Variable "time, Coordinate" Real MATC "(cos(tx(0)*pi)-1.0)*tx(1)-sin(tx(0)*pi)*tx(2)

and for Displacement y
Variable "time, Coordinate" Real MATC "(cos(tx(0)*pi)-1.0)*tx(2)+sin(tx(0)*pi)*tx(1)

This code has the following syntax:

  • we have 4 variables, the time and all possible coordinates (x, y z)
  • tx is a vector, tx(0) refers to the first variable, the time, while tx(1) refers to the first coordinate x
  • pi denotes and was added so that after a rotation of 180° is performed


For the solver CalculiX: