Skip to content

MORFEproject/MORFE.jl

Repository files navigation

MORFE.jl

License: MIT Project Status: Pre-Alpha Julia 1.10+ Documentation

MORFE.jl implements the Direct Parametrisation of Invariant Manifolds (DPIM) algorithm — a spectral submanifold reduction technique for high-dimensional nonlinear dynamical systems arising from finite element models.


Features

  • DPIM implementation — Direct Parametrisation of Invariant Manifolds for nonlinear model order reduction
  • N-th order ODEs — native support for second-order (and higher-order) mechanical systems, no manual conversion to first-order form required
  • External forcing — polynomial external forcing systems handled at the level of the invariance equation
  • Resonance handling — graph-style, complex/real normal form, and condition-number–based resonance detection
  • Polynomial framework — built-in multiindex sets, dense polynomials, and realification utilities
  • FEM-agnostic — works with Gridap.jl, Ferrite.jl, or any custom FEM backend
  • Julia-native — multiple dispatch and static type parameters for performance

Installation

MORFE.jl is not yet registered in the Julia General Registry. Install directly from GitHub:

using Pkg
Pkg.add(url="https://github.com/MORFEproject/MORFE.jl.git")

Or in Pkg REPL mode (]):

add https://github.com/MORFEproject/MORFE.jl.git

Quick Start

using MORFE

# Define a second-order full-order model: M ẍ + C ẋ + K x = f(x, ẋ)
model = NDOrderModel((K, C, M), nonlinear_terms)

# Extract first-order matrices and compute eigenpairs
A, B = linear_first_order_matrices(model)
result = generalised_eigenpairs(A, B; nev = 4, sigma = 0.0)

# Build the resonance set and solve the parametrisation
# See demo/ for complete worked examples

For detailed examples, see the demo/ directory.


Project Structure

MORFE.jl/
├── src/
│   ├── MORFE.jl                      # Main package module
│   ├── Multiindices.jl               # Multiindex set utilities
│   ├── Polynomials.jl                # Dense polynomial representation
│   ├── Realification.jl              # Complex-to-real transformation
│   ├── FullOrderModel/               # FOM types and nonlinear maps
│   ├── SpectralDecomposition/        # Eigensolvers and mode propagation
│   └── ParametrisationMethod/        # DPIM core: resonance, invariance equation, ROM
├── demo/                             # Worked examples
├── test/                             # Test suite
└── docs/                             # Documentation source

Modules

Module Description
Multiindices Multiindex sets with graded lex ordering and factorisation utilities
Polynomials Dense multivariate polynomials aligned to multiindex sets
Realification Change of variables from complex (z, z̄) to real (x, y) coordinates
FullOrderModel NDOrderModel and FirstOrderModel with multilinear nonlinear terms
Eigensolvers ARPACK-based generalised eigensolver with shift-and-invert
EigenModesPropagation Left/right eigenvector and Jordan vector propagation for N-th order systems
Resonance Resonance set construction (graph, normal form, condition-number strategies)
InvarianceEquation Cohomological system assembly via fused Horner passes
MasterModeOrthogonality Orthogonality condition assembly for resonant master modes
ParametrisationMethod Core Parametrisation and ReducedDynamics types
MultilinearTerms Nonlinear right-hand side contributions with caching
LowerOrderCouplings Lower-order coupling vectors for the cohomological equation

Documentation

Full documentation is available at morfeproject.github.io/MORFE.jl.


Status

Pre-Alpha: The API may change significantly between versions.


Contributing

Contributions are welcome. Please open an issue or submit a pull request on GitHub.


References

  • Haller, G. & Ponsioen, S. (2016). Nonlinear normal modes and spectral submanifolds. Nonlinear Dynamics.
  • Opreni, A. et al. (2023). High-order direct parametrisation of invariant manifolds for model order reduction of finite element structures. Nonlinear Dynamics.

License

MIT License — see LICENSE for details.

About

A new modular version of MORFE

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors