> For the complete documentation index, see [llms.txt](https://alpaca4d.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://alpaca4d.gitbook.io/docs/basics/analysis/natural-vibration.md).

# Natural Vibration

Solves the eigenvalue problem and returns the **modes, periods and frequencies** of the structure. It is the first analysis worth running on any new model: the first period tells you immediately whether the stiffness and the mass are roughly right.

## 🔧 Grasshopper component

`Natural Vibration Analysis (Alpaca4d)` — **Alpaca4d ▸ 07\_Analysis**

No [Analysis Settings](/docs/basics/analysis/analysis-settings.md) are needed — an eigenvalue problem has nothing to converge.

### Inputs

| Name            | Nick              | Type    | Default          | Description                                                                                                   |
| --------------- | ----------------- | ------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |
| AlpacaModel     | `AlpacaModel`     | Model   | —                | The assembled model, from [Assemble](/docs/basics/assemble.md).                                               |
| Vibration Modes | `Vibration Modes` | Integer | `1`              | How many modes to extract.                                                                                    |
| Solver          | `Solver`          | Text    | `-genBandArpack` | Eigen solver: `-genBandArpack`, `-symmBandLapack`, `-fullGenLapack`. Attach a **Value List** for the options. |

### Outputs

| Name        | Nick          | Type          | Description                                                                                                                                                                                                                                          |
| ----------- | ------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| log         | `log`         | Text          | The OpenSees console output.                                                                                                                                                                                                                         |
| AlpacaModel | `AlpacaModel` | Model         | The model with mode shapes attached. Feed it to [Deformed Model View](/docs/basics/visualisation/deformed-model-view.md) — the **Step** input then selects the mode — and to [Modal Analysis Report](/docs/basics/results/modal-analysis-report.md). |
| Eigenvalues | `Eigenvalues` | Number (list) | $$\lambda\_n = \omega\_n^2$$, one per mode.                                                                                                                                                                                                          |
| Period      | `Period`      | Number (list) | $$T\_n$$, in `s`.                                                                                                                                                                                                                                    |
| Frequencies | `Frequencies` | Number (list) | $$f\_n = \sqrt{\lambda\_n}/2\pi$$, in `Hz`.                                                                                                                                                                                                          |

### The solvers

| Solver            | Use                                                                                          |
| ----------------- | -------------------------------------------------------------------------------------------- |
| `-genBandArpack`  | The default. Iterative, and the right choice when you want a few modes out of a large model. |
| `-symmBandLapack` | Direct, for a symmetric system.                                                              |
| `-fullGenLapack`  | Direct, forms the full matrices. Extracts **all** modes, but only viable on small models.    |

{% hint style="warning" %}
**Save the Grasshopper file first.** This component writes `AlpacaModel.tcl`, `recorder_eigen.mpco` and `ModalReport.txt` beside it, and throws *"Have you saved the Grasshopper script?"* if there is nowhere to put them.
{% endhint %}

## 📈 When to use it

**Use it when**

* You have just built a model and want to sanity-check it. A first period far from expectation means the mass or the stiffness is wrong, and finding out now is cheap.
* You need frequencies to calibrate [Damping](/docs/basics/analysis/damping.md).
* You need modal masses and participation factors for a response-spectrum check → read them from [Modal Analysis Report](/docs/basics/results/modal-analysis-report.md).

**Do not use it when** you want displacements or forces under load → those need [Run Analysis](/docs/basics/analysis/run-analysis.md).

{% hint style="info" %}
A model with no mass has no modes. Mass comes from the material density through the section, and from [Mass Point](/docs/basics/loads/mass-point.md). A [Gravity Load](/docs/basics/loads/gravity.md) does **not** create mass — it creates force.
{% endhint %}

## 🔗 Relation to OpenSees

```tcl
recorder mpco recorder_eigen.mpco ...
set lambdaN [eigen -genBandArpack $numModes]
puts "$lambdaN"
modalProperties -file "ModalReport.txt" -unorm
record
wipe
```

The eigenvalues are parsed back from the console output; the modal properties are read from `ModalReport.txt` by [Modal Analysis Report](/docs/basics/results/modal-analysis-report.md).
