> For the complete documentation index, see [llms.txt](https://docs.openbrim.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.openbrim.org/templates/openbrimfea/geometry-fea/equal-constraints-fea.md).

# Equal Constraints \[FEA]

An Equal Constraint ties selected degrees of freedom of one joint to the **same** degrees of freedom of another joint, with a coefficient of one. In the constrained directions the two joints share a single equation and therefore move identically — the slave joint's own equation is eliminated from the system.

Use it wherever two coincident or nearly-coincident joints must move together in some directions but remain independent in others: a pinned splice that transfers translation but not moment, a shear key, a bearing that is fixed longitudinally and free transversely, or two meshes that must be stitched along a line without welding every rotational DOF.

Equal Constraints affect **connectivity and the stiffness matrix**. They add no stiffness of their own, generate no load, and add no mass — they remove equations by merging them. This makes them exact rather than approximate, which is the main reason to prefer them over a very stiff spring.

{% hint style="info" %}
**Equal Constraint vs. Rigid Diaphragm.** An Equal Constraint is a strict same-DOF tie with no lever arm: `Ux_slave = Ux_master`. It cannot represent a body that *rotates* about the master, because a lever-arm term couples a slave translation to a master rotation. When you need in-plane rigid-body behaviour — a deck acting as a rigid diaphragm — use **Rigid Diaphragms** instead.
{% endhint %}

{% hint style="warning" %}
**Prefer a constraint over a very stiff spring.** Modelling a rigid tie as a large spring stiffness introduces an artificial term many orders of magnitude larger than the surrounding structure, which degrades the conditioning of the stiffness matrix and can produce numerical noise in reactions and higher modes. An Equal Constraint eliminates the DOF exactly and adds no conditioning penalty.
{% endhint %}

## Geometry

**Master Node:** The joint whose degrees of freedom are **retained**. In the constrained directions the master's equation is the one both joints solve on, so the pair's response is reported at the master. This is a **connectivity** parameter. Which of the two joints you nominate as master does not change the physics of a coefficient-one tie, but it does determine where the retained equation lives — choose the joint that is genuinely part of the structure rather than a stray or mass-only joint. Define together with Slave Node and at least one constrained direction. Verify by checking that the two joints report identical displacements in the tied directions.

**Slave Node:** The joint whose selected degrees of freedom are **eliminated**. Its own equations in those directions are left orphaned and stabilized internally, so the slave no longer has independent freedom there. Because the slave's equation is removed rather than penalized, a reaction cannot appear at a slaved DOF — restraints applied to a slaved direction on the slave joint are effectively superseded by the master's. If you need the restraint, apply it to the master.

**Chaining is supported.** A slave may itself act as another constraint's master: the solver resolves the tie set iteratively to a fixed point, so chained equal constraints come out the same regardless of the order they were defined in. You do not need to flatten a chain by hand.

What is *not* safe is mixing mechanisms — tying a joint that is **also** a slave of a Rigid Diaphragm in the same direction. The two express different relationships (a coefficient-one tie versus a lever-arm transform), they cannot both hold, and the outcome depends on which is applied last. The program warns when it detects that combination; resolve it rather than ignoring it.

**Group:** The activation group used for construction-stage and group filtering. This is a **selection** parameter: it decides *when* the constraint exists, not what it does. If the group is inactive in a given stage, the tie is not applied for that stage and the two joints move independently. Leave it empty for a constraint that should always be active. Define together with the staging scheme; a splice that is only made continuous after erection is modelled by assigning the constraint to the group activated at that stage. Verify by comparing displacements at the two joints stage by stage — they should diverge before activation and coincide after.

## Constrained DOFs

Each of the six switches turns the tie on for one direction. They are independent, and **all six default to NO** — a constraint with no direction switched on is created successfully but does nothing at all. Directions are in **global** axes, not the local axes of any element.

**Tie Tx:** Ties translation along global X. When YES, `Ux_slave = Ux_master`.

**Tie Ty:** Ties translation along global Y.

**Tie Tz:** Ties translation along global Z.

**Tie Rx:** Ties rotation about global X.

**Tie Ry:** Ties rotation about global Y.

**Tie Rz:** Ties rotation about global Z.

*Engineering influence, common to all six.* Switching a direction ON removes one equation from the system, which makes the structure **stiffer or equally stiff in that direction — never softer**. The effect on any particular result depends on whether the two joints wanted to move differently there: tying a direction in which they were already moving together changes nothing measurable. A value of NO means the direction is simply not tied; it does **not** mean "free to slide" in any special sense — it means no relationship is imposed at all. There is no negative or intermediate value; this is a yes/no switch, not a stiffness, so partial fixity cannot be expressed here (use a spring or a partial-fixity release for that).

Tying **rotations** is the switch most often set incorrectly. A moment-transferring connection needs the relevant rotations tied; a true pin must leave them NO. Tying all six is a full weld and will carry moment across a joint you may have intended to be released.

Over-constraining is the main hazard: tying directions that are already restrained elsewhere, or tying two joints that are also connected by stiff elements, creates redundant relationships that can leave the system with orphaned equations or produce reactions that do not sum as expected. Under extreme over-constraint the solver may report a singular or ill-conditioned system.

These switches do not affect mass, do not generate loads, and are ignored entirely in a direction where the model has no such DOF — for example rotational ties on a model built purely from truss elements.

## Verification

* Compare displacements at the master and slave joints in each tied direction; they must be identical to solver precision. A difference means the constraint is inactive, filtered out by its group, or the direction is not actually switched on.
* Confirm directions you left as NO show genuinely different displacements — if they match too, the joints are tied by something else (coincident-node merging, a stiff element, or a second constraint).
* Check reactions: a slaved direction on the slave joint should not carry a reaction.
* Review the constraint warnings after analysis; a joint constrained by both an Equal Constraint and a Rigid Diaphragm in the same direction is flagged.
* Step through construction stages and confirm the tie appears only in the stages where its group is active.
* For a simple two-joint model, hand-check that the tied assembly behaves as a single joint.

## Common mistakes

* **Creating the constraint but leaving every direction NO.** The object exists, the sheet shows a row, and nothing is tied. This is the single most common cause of "my constraint did nothing".
* **Expecting rigid-body rotation.** An Equal Constraint has no lever arm. Tying Tx, Ty and Rz on a set of deck joints does *not* make the deck a rigid diaphragm — the translations are forced equal everywhere instead of varying with distance from the master. Use Rigid Diaphragms.
* **Restraining the slave joint** in a direction that is slaved. The restraint has no effect because the equation belongs to the master.
* **Tying all six directions to "make it simple"**, converting an intended pin or expansion joint into a moment-and-axial-carrying weld, which redistributes forces across the whole structure.
* **Tying joints that are far apart.** The constraint is geometric-distance-blind: it will happily force two joints metres apart to have identical displacement, which is almost never intended and produces a stiff, unrealistic model with no warning.
* **Using it where a release or a spring was wanted.** Constraints are all-or-nothing; partial fixity belongs in the element's end releases or a spring.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.openbrim.org/templates/openbrimfea/geometry-fea/equal-constraints-fea.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
