> For the complete documentation index, see [llms.txt](https://docs.enercalc.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.enercalc.com/e3d-user-manual/analysis/toc161394061/toc161394062.md).

# Solution Algorithm

Understand the subspace iteration solution algorithm used for frequency and eigenvalue analysis.

Mathematically, the frequency analysis involves solving the following Eigen problem:

\[K] \[Φi] = λi \[M] \[Φi]

where \[K] is the global stiffness matrix, \[M] is the global mass matrix, \[Φi] is the ith mode shape and λi is the ith eigenvalues which is equal to the free vibration circular frequency squared (ωi)2. Other related values are frequency fi which is 2π ωi and period Ti which is 1 / fi. For practical reasons, we are generally interested only in the lowest eigenvalues (and therefore lowest frequencies).

The solution of eigenvalue problems must be iterative in nature because it is equivalent to finding the roots of the polynomial p(λ). The solution algorithm to solve the equation above is given by K.J. Bathe \[Ref. 1]. It uses the subspace iteration method to iteratively find the lowest p eigenvalues λ1, λ2, … λp and corresponding vectors \[Φ1], \[Φ2], …\[Φp]. Eigenvalues are extracted in ascending order. Each eigenvector is then normalized such that \[Φi]T\[M] \[Φi] = \[I] where \[I] is the identity matrix, a diagonal matrix with unit values along the main diagonal.

A tolerance may be set before the solution to control the convergence of eigenvalues during each successive solver iteration. It is expressed as the following:

![](https://560001759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWNe8U6EBBBdUJHdb2X9G%2Fuploads%2Fgit-blob-d7fd10a100d2e03dfe71cd2ac89895f5e142fb14%2Fconvergence.jpg?alt=media) (i = 1, 2, …number of requested modes)

where k is the subspace iteration counter.

To prevent excessive computing time, a maximum number of subspace iterations may be set before the solution. If the solver reaches this limit without convergence, the eigen results should not be trusted.

![](https://560001759-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWNe8U6EBBBdUJHdb2X9G%2Fuploads%2Fgit-blob-4075ee20f75addf8ee2e25e98e4fdcb624baec42%2FFrequency%20Analysis.jpg?alt=media)


---

# 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.enercalc.com/e3d-user-manual/analysis/toc161394061/toc161394062.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.
