pre-alpha · Julia 1.10+ · MIT licensed

Model Order Reduction
for Finite Elements

MORFE.jl computes invariant manifolds of large finite-element models. Reduced order models have usually 2 to 4 variables and preserve the true backbone, internal resonances and bifurcations.

From a FE Model with $N$ DoFs and External Forcing
$$ \mathbf{B}_0\,\mathbf{u} + \mathbf{B}_1\,\dot{\mathbf{u}} + \mathbf{B}_2 \, \ddot{\mathbf{u}} + \cdots = \mathbf{F}(\mathbf{u},\,\dot{\mathbf{u}},\,\ldots,\,\mathbf{r}) \, , \qquad \qquad \dot{\mathbf{r}} = \mathbf{E}(\mathbf{r})$$
To a 1st order reduced order model with $n$ DoFs ($n \ll N$)
$$ \dot{\mathbf{z}} = \mathbf{R}(\mathbf{z}, \mathbf{r}) \,, \qquad \qquad \mathbf{u} = \mathbf{W}(\mathbf{z}, \mathbf{r}) $$
INVARIANT MANIFOLD REDUCTION
$n = 2 \sim 4 \ll N$
MULTIPHYSICS FEM
Tested $N>10^6$ DOFs
MODAL INTERACTIONS
$p:q$ resonances
Julia
Open-source · modular
01 — Capabilities

What MORFE.jl does.

02 — In code

Get started.

Installation guide →
from_a_mesh_to_a_rom.ipynb current common API
using MORFE, MORFEFerrite
const SVK = MORFEFerrite.StructuralSVK

order = 9
case = SVK.mechanical_model(joinpath(@__DIR__, "clamped_clamped_beam.msh");
    material = SVK.SVKMaterial(E = 160e3, ν = 0.22, ρ = 2.32e-3),
    damping = SVK.RayleighDamping(α = 0.0, β = 0.0),
    dirichlet = "Dirichlet")

(; model, spectral, meta) = build_model(case; master = [1], expansion_order = order)
W, R = parametrise(model, spectral, order;
    resonance = ResonanceConfig(style = :complex_normal_form, tol = 0.05))
03 — People

Team.

Full team page, collaborators, and contribution guide at team.html.