> 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/rigid-diaphragms-fea.md).

# Rigid Diaphragms \[FEA]

A Rigid Diaphragm constrains a set of joints so that they translate and rotate together as one rigid body **within a plane**. Every slave joint's in-plane degrees of freedom are tied to the master joint's in-plane degrees of freedom **through a lever arm**, so a rotation of the master produces translations at the slaves proportional to their distance from it. For the default XY plane:

```
Ux_slave = Ux_master − (Y_slave − Y_master) · Rz_master
Uy_slave = Uy_master + (X_slave − X_master) · Rz_master
Rz_slave = Rz_master
```

The out-of-plane degrees of freedom are left **free**: an in-plane diaphragm couples only the two in-plane translations and the in-plane rotation. A deck constrained as an XY diaphragm can still deflect vertically and rotate about the horizontal axes exactly as it did before.

This is the standard idealization for a concrete deck or slab that is very stiff in its own plane compared with the elements below it. Its purpose is usually to distribute lateral load to substructure elements in proportion to their stiffness, and to collapse many in-plane deck DOFs into three — which also makes seismic and lateral models much smaller and better conditioned.

Rigid Diaphragms affect **connectivity and the stiffness matrix**. They add no stiffness, mass or load of their own; they eliminate equations by expressing them as weighted sums of the master's.

{% hint style="info" %}
**Rigid Diaphragm vs. Equal Constraint.** Use a Rigid Diaphragm when the constrained set must rotate as a body — translations must vary with distance from the master. Use an **Equal Constraint** when two joints must simply share the same value of a DOF with no lever arm. A Rigid Diaphragm is not a substitute for a moment connection between two coincident joints.
{% endhint %}

## Geometry

**Master Node:** The reference joint whose in-plane degrees of freedom are **retained** — commonly placed at the diaphragm's centre of mass for dynamic work, since the mass and the lateral response are reported there. This is a **connectivity** parameter and it defines the origin of every lever arm, so **moving the master changes the constraint equations** even if the slave set is unchanged.

The master does not need to be attached to any element: the program adds master and slave joints to the equation system explicitly, so a free-standing centre-of-mass joint carrying only a Nodal Mass is a valid and common master. Place it deliberately — a master at an arbitrary corner still gives correct rigid-body behaviour, but modal results and reported diaphragm displacements are then referenced to that corner rather than the centre of mass.

**Slave Node Group:** An FE Group containing the joints whose in-plane degrees of freedom are **eliminated**. This is the normal way to define a diaphragm — collect the deck joints into a group and point at it. Only joints in the group are constrained; anything you forget to add keeps its own in-plane freedom and will deform out of the rigid plane, usually showing up as a local mode.

Define together with the Master Node and the Plane. Verify by displaying the group and confirming it contains every joint that should be part of the diaphragm.

**Single Slave Node:** An optional single slave joint, for the convenience of a one-slave diaphragm where creating a group would be overhead. It is **additive** — if both this and Slave Node Group are set, the constrained set is the group plus this joint (duplicates are ignored). Leave it empty when using a group.

**Group:** The activation group used for construction-stage and group filtering. This is a **selection** parameter that decides *when* the diaphragm exists, not what it does. A deck that only becomes composite and diaphragm-like after the slab cures is modelled by assigning the constraint to the group activated at that stage; before it, the joints move independently. Leave empty for a diaphragm that is always active.

Note this is a different field from **Slave Node Group** — this one filters the constraint's activation, that one lists the joints being constrained. Confusing the two is easy and produces either a diaphragm that constrains nothing or one that never activates.

## Settings

**Diaphragm Plane:** Selects which plane the rigid body acts in, and therefore which three DOFs are constrained and which three stay free.

| Value            | Plane      | Normal | Constrained | Left free  |
| ---------------- | ---------- | ------ | ----------- | ---------- |
| **XY** (default) | horizontal | Z      | Ux, Uy, Rz  | Uz, Rx, Ry |
| **YZ**           |            | X      | Uy, Uz, Rx  | Ux, Ry, Rz |
| **XZ**           |            | Y      | Ux, Uz, Ry  | Uy, Rx, Rz |

{% hint style="warning" %}
**Re-check this field on any diaphragm created before this parameter became an enumeration.** In the earlier declaration the option list was inverted, so selecting YZ or XZ stored a value the getter did not recognise and silently fell back to **XY** — an in-plane diaphragm in the wrong plane, with no warning. Models saved under that declaration still open (the legacy text is read correctly now), but a YZ or XZ choice made then may never have taken effect. Confirm the plane and re-check the deformed shape.
{% endhint %}

*Engineering influence.* XY is correct for an ordinary bridge deck or building floor in the default orientation, where Z is vertical. Choosing the wrong plane is not a subtle error: it rigidly ties the *vertical* behaviour of the deck and leaves the lateral behaviour free, which typically makes the structure far too stiff vertically and too flexible laterally, and produces mode shapes that are obviously wrong. This parameter depends entirely on the model's global axis orientation — if the model was built with Y vertical, the appropriate plane changes accordingly.

The parameter is an enumeration; there is no partial or blended plane. It does not affect mass, loads, or out-of-plane stiffness.

## Verification

* Display the deformed shape under a lateral load. The diaphragm's joints should show a rigid-body pattern in plan — straight lines stay straight, and translations vary linearly with distance from the master. Any joint bulging out of that pattern was left out of the slave group.
* Confirm the out-of-plane behaviour is **unchanged** from the unconstrained model. Vertical deflections under gravity should be essentially the same; if gravity deflections collapse, the Plane is wrong.
* Check that the number of joints you expected is actually constrained by reviewing the slave group's object count.
* Review reactions: lateral load should distribute to the substructure in proportion to stiffness. A single element taking nearly all of it usually means the diaphragm is not active.
* Run a modal analysis: the lateral modes should show the deck moving as a unit, and the many local in-plane deck modes present in the unconstrained model should disappear.
* Check the post-analysis warnings for joints constrained by both a diaphragm and an Equal Constraint.
* Step through construction stages and confirm the diaphragm appears only where its activation group is active.

## Common mistakes

* **Confusing Slave Node Group with Group.** The first defines the diaphragm; the second controls when it is active. Swapping them silently produces a diaphragm that constrains nothing.
* **Choosing the wrong Diaphragm Plane** for the model's axis orientation — rigidly tying vertical behaviour instead of in-plane behaviour.
* **Expecting the diaphragm to carry vertical load or provide out-of-plane stiffness.** It does not; out-of-plane DOFs are untouched by design. A deck that also needs bending stiffness still needs elements.
* **Putting the master at an arbitrary joint** and then reading "the diaphragm displacement" from it in a dynamic analysis, where the centre of mass was intended.
* **Including joints that should not be rigid** — for example expansion-joint joints on both sides of a gap, which then cannot open.
* **Using a diaphragm where the deck is not actually rigid in plane**, such as a long, narrow, or precast deck with weak transverse connectivity. The idealization forces a distribution of lateral load that the real structure does not achieve, and the error is unconservative for the stiff elements it is supposed to protect.
* **Overlapping diaphragms** that share slave joints, where the joint ends up governed by whichever constraint is processed last.


---

# 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/rigid-diaphragms-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.
