# ModalTruncation

## Description

The `ModalTruncation`

object stores model order reduction (MOR)
specifications for the modal truncation of ordinary (nonsparse) linear time-invariant (LTI)
models.

Modal truncation is based on the modal decomposition

$$G(s)=D+{\displaystyle \sum _{k=1}^{{n}_{c}}{G}_{k}(s)}.$$

Each modal component in *G _{k}*(

*s*) is associated with a single real pole, a pair of complex conjugate poles, or a cluster of repeated real or complex poles. Here, a

*cluster*means that the poles of

*G*(

_{k}*s*), while not identical, cannot be separated in a numerically safe way. The software obtains the modal decomposition by block diagonalization of

*A*or (

*A*,

*E*).

## Creation

The `reducespec`

function creates a modal truncation model order reduction object when you use this
syntax.

`R = reducespec(sys,"modal")`

Here, `sys`

is any nonsparse LTI model. The workflow uses this object to
set up MOR tasks and store results. For the full workflow, see Task-Based Model Order Reduction Workflow.

## Properties

## Object Functions

`process` | Run model order reduction algorithm |

`view (modal)` | Plot mode information when using modal truncation method |

`getrom (modal)` | Obtain reduced-order models when using modal truncation method |

## Examples

## Algorithms

When

`R.Options.ModeOnly`

is set to`true`

, the software just transforms*A*or (*A*,*E*) to Schur or QZ form.When

`R.Options.ModeOnly`

is set to`false`

, the software computes the full modal decomposition $$G(s)=D+{\displaystyle \sum _{k=1}^{{n}_{c}}{G}_{k}(s)}.$$.

In both cases, once you decide which modes to keep and which modes to discard, the
algorithm obtains the decomposition *G*(*s*) =
*G*_{1}(*s*) +
*G*_{2}(*s*) +
*D*, where *G*_{1}(*s*)
contains the desired modes. Then, based on the specified method, `getrom`

returns the reduced-order model as follows.

`"truncate"`

—*G*_{r}(*s*) =*G*_{1}(*s*) +*D*`"matchDC"`

—*G*_{r}(*s*) =*G*_{1}(*s*) +*D*+*G*_{2}(0)

## Version History

**Introduced in R2023b**