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

# Springs \[FEA]

A Spring (also called a link) is a two-node connector element with a defined stiffness in each of six directions, independent of any material or section. Where a node's own DOF values describe a support to ground, a Spring describes a connection **between two points in the model**.

Use it for bearings, isolators, shear keys, expansion-joint restrainers, soil springs alongside a pile, and any connection whose stiffness is known directly as force per unit displacement rather than derived from geometry.

A Spring contributes to the **stiffness matrix** only. It carries no mass and generates no load.

{% hint style="danger" %}
The stiffness columns use the same sign convention as node supports:

Entering **1** does not make a direction rigid; it creates a spring of stiffness 1 force unit per length unit, which for any real structure behaves as free.
{% endhint %}

| Value                 | Meaning                                                  |
| --------------------- | -------------------------------------------------------- |
| **0**                 | **Free** — no connection in that direction (the default) |
| **negative** (use −1) | **Rigid** — the two nodes are tied in that direction     |
| **positive**          | **Elastic spring** of that stiffness                     |

## Geometry

**Node 1 / Node 2:** The two joints the spring connects. These are **connectivity** parameters: they determine what is joined and, with the nodes' positions, the direction the spring acts in.

The two nodes are very often **coincident** — a bearing modelled as a zero-length link between the girder soffit node and the pier-top node. That is the normal arrangement, and it is why **Merge w/Same Loc Node** must usually be turned OFF on those nodes: if they merge, the spring has nothing left to connect and its stiffness disappears from the model with no warning.

The spring acts in **global** directions. Define together with the six stiffness values; a spring with both nodes set but every stiffness at 0 connects nothing.

**Tx / Ty / Tz:** Translational stiffness along each global axis, in force per unit length.

**Rx / Ry / Rz:** Rotational stiffness about each global axis, in moment per unit angle.

*Engineering influence, common to all six.* Each direction is independent — this is a diagonal stiffness, not a coupled one. Increasing a stiffness transfers more force through the connection and reduces relative movement between the two nodes; decreasing it toward zero lets them move independently and sheds that load elsewhere. What matters is the value **relative to** the members either side: a bearing stiffness that behaves as nearly rigid under a flexible pier is nearly free under a stiff one, so a number copied from another project without checking that ratio can behave completely differently.

A value of 0 means no connection in that direction — exactly how a guided bearing is modelled: rigid across the bearing line, free along it. Setting every direction rigid turns the spring into a full moment connection and defeats the purpose of modelling a bearing at all.

Very large positive values are a poor way to express "rigid": they add terms orders of magnitude larger than the surrounding structure, degrade conditioning, and produce noisy reactions and spurious high-frequency modes. Use a negative value.

Results sensitive to these: the force transferred through the connection, the distribution of lateral load between substructure elements, and — because a soft link lengthens periods — the whole dynamic response of an isolated structure.

**Group:** The FE Group used for construction-stage activation and selection. A spring whose group is inactive in a stage does not exist in that stage, which is how a temporary bearing or a restrainer installed partway through erection is modelled.

## Gap

**Tx Gap / Ty Gap / Tz Gap:** A translational gap, in length units, that must close before the spring engages in that direction.

**Rx Gap / Ry Gap / Rz Gap:** A rotational gap, in angle units, before the rotational spring engages.

*Engineering influence.* A gap makes the connection **nonlinear and one-sided**: the nodes move freely relative to one another until the gap closes, then the stiffness applies. This is the natural model for a shear key with a construction clearance, an expansion joint that closes under thermal contraction, or a restrainer cable that acts only once slack is taken up. Zero (the default) means the spring engages immediately.

Gaps are honoured only in a **nonlinear** analysis. In a linear static, modal or response-spectrum case the connection is linearized per the Stiffness Option settings and the gap has no effect — which is why a shear key entered with a gap can appear to carry load from the very first increment of a linear run.

Related to this, one-sided behaviour is expressed through the stiffness value itself rather than the gap column: a bracketed stiffness `[value]` denotes a **tension-only** (hook) spring and `[-value]` a **compression-only** (gap) spring. A shear key that must only push is entered as a negative-bracketed stiffness, not as a plain number with a gap.

Increasing a gap delays engagement and increases relative movement before load transfers. Results sensitive to it: the order in which restraints engage, displacements at low load, and any envelope spanning load levels either side of closure.

## Stiffness Option

These twelve columns decide what stiffness a **nonlinear** spring contributes when the analysis being run is **linear**. A linear static, modal, response-spectrum or non-FNA time-history case cannot represent gapping or a one-sided link, so it must substitute a constant stiffness.

**Tx / Ty / Tz / Rx / Ry / Rz Linear Mode:**

| Mode                    | Meaning                                                        |
| ----------------------- | -------------------------------------------------------------- |
| **Nonlinear** (default) | tangent/initial stiffness taken from the current state         |
| **Initial Stiffness**   | always the slope of the nonlinear curve at zero displacement   |
| **Effective Stiffness** | the constant value typed in the matching Eff. Stiffness column |

**Tx / Ty / Tz Eff. Stiffness** and **Rx / Ry / Rz Eff. Stiffness:** The constant stiffness used when that direction's Linear Mode is Effective Stiffness. Ignored in the other two modes.

*Engineering influence.* This is where a seismic isolator's design assumption is expressed. **Initial Stiffness** gives small-amplitude behaviour — shorter periods, higher spectral accelerations — appropriate for serviceability or wind-vibration checks. **Effective Stiffness** lets you enter the secant stiffness at the expected design displacement, which is what isolation design normally requires; it lengthens periods, generally lowers force demand, and increases displacement demand. The two can differ by a factor of several, and neither is universally conservative.

An Effective Stiffness of zero removes the connection entirely from every linear analysis, which commonly makes a linear case unstable on a model whose nonlinear case solves without complaint.

{% hint style="warning" %}
The twelve Stiffness Option columns and the 6×6 Stiffness Matrix are **not declared in the object type**. They remain writable from the agent API and `set_parameter` — those resolve any field the object exposes in its sheet — but they carry no unit category, no dropdown option list, and no authorability from a library template. Scripted writes bypass the sheet's own conversion, so a Linear Mode must be given as its raw number (0 Nonlinear, 1 Initial Stiffness, 2 Effective Stiffness).
{% endhint %}

## Settings

**Use Nonlinear Penalty:** Whether the nonlinear penalty formulation enforces this spring's nonlinear conditions. Defaults to YES. It changes **how** the condition is enforced numerically, not what the condition is; turning it off is a convergence-troubleshooting measure for a nonlinear case that will not converge, not a modelling decision.

## Stiffness Matrix

**6x6 Stiffness Matrix:** A full 6×6 stiffness matrix for the connection, edited in its own sub-sheet, for links whose behaviour is **coupled** between directions.

*Engineering influence.* The six values above form only the diagonal; they cannot express that a horizontal translation also produces a moment, as an eccentric or extended bearing does. A matrix produced by an **Equivalent Stiffness** point, or supplied by a bearing manufacturer, is normally full. It should be symmetric and positive-definite; one that is not can make the global system indefinite and cause the solve to fail. Leave empty when the diagonal values suffice.

## Verification

* Check the spring's force and the relative displacement between its two nodes; their ratio must return the stiffness you entered. This is the fastest way to catch a direction entered as 1 when −1 was meant, or a spring whose nodes were merged away.
* Confirm the two nodes still exist separately in the assembled model. If a coincident pair merged, the spring is inert.
* Check that a direction left at 0 shows genuine relative movement; if it does not, something else is connecting the nodes.
* For a guided bearing, confirm the reaction appears only in the restrained direction.
* For a gap, run the nonlinear case either side of closure and confirm engagement at the right relative displacement.
* Run a modal analysis on an isolated structure and confirm the isolated period matches a hand calculation from the effective stiffness and the supported mass.
* Compare a single bearing against a hand calculation: force = stiffness × relative displacement.

## Common mistakes

* **Leaving Merge w/Same Loc Node ON at a zero-length link**, merging the two nodes and silently deleting the connection.
* **Entering 1 to mean rigid**, producing an essentially free direction.
* **Using a huge stiffness instead of −1**, degrading matrix conditioning.
* **Making every direction rigid**, turning a bearing into a moment connection that attracts load the real bearing cannot carry.
* **Entering gaps and running a linear analysis**, where they are ignored.
* **Leaving Linear Mode at Nonlinear for an isolator** and reading modal periods based on the small-amplitude stiffness rather than the design displacement.
* **Copying bearing stiffnesses between projects** without checking them against the substructure stiffness they sit on.
* **Setting Effective Stiffness to zero**, removing the link from every linear analysis.


---

# 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/springs-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.
