SCIKIT-ROM
  1. Welcome to skrom
  • Documentation
    • Function reference
    • Full-Order Model (FOM)
      • fom.fem_utils
    • Problem Classes
      • problem_classes.masterclass
      • problem_classes.masterclass_parallel
    • ROM
      • rom.bilinear_form_rom
      • rom.deim.bilinear_form_hyperrom_deim
      • rom.deim.deim
      • rom.deim.linear_form_hyperrom_deim
      • rom.ecm.bilinear_form_hyperrom_ecm
      • rom.ecm.empirical_cubature_method
      • rom.ecm.helpers
      • rom.ecm.linear_form_hyperrom_ecm
      • rom.ecm.train_ecm
      • rom.ecsw.bilinear_form_hyperrom_ecsw
      • rom.ecsw.custom_nnls
      • rom.ecsw.hyperreduce
      • rom.ecsw.linear_form_hyperrom_ecsw
      • rom.bilinear_form_rom
      • rom.rom_error_est
      • rom.rom_error_est_t
      • rom.rom_utils
    • Templates
      • templates.problem_template.bilinear_forms
      • templates.problem_template.domain
      • templates.problem_template.linear_forms
      • templates.problem_template.params
      • templates.problem_template.problem_def
      • templates.problem_template.properties
    • Utils
      • utils.data_io.save_h5
      • utils.dynamics.integrators
      • utils.reduced_basis.svd
      • utils.visualization.color_palette
      • utils.visualization.generate_vtk
      • utils.visualization.generate_vtu
      • utils.visualization.plot_utils
      • utils.visualization.vtuwriter
      • utils.hdf5_store
      • utils.imports
      • utils.save_h5
    • CLI
      • cli
  • Examples
    • Tutorial: 3D Static Linear Elasticity with Affine Reduced Order Model
    • Tutorial: Nonlinear Heat Conduction in a Two-Material 1-D Rod
    • Computational Mechanics
      • P.1 Nonlinear power-law (strain-hardening) bar under gravity and line load
      • P.2 Twisting of a Neo-Hookean Block
      • P.3 Heterogeneous linear elasticity in a two-material 3D block
      • P.4 Plane-stress plate with a circular hole in tension
      • P.5 Transient 3D beam vibration with affine material parameters
      • P.6 Two-segment Timoshenko cantilever beam vibration eigen problem
    • Heat Transfer
      • P.7 Linear heat conduction with non-affine parametric source on a star-shaped plate
      • P.8 Nonlinear heat conduction in a two-material 1-D rod
      • P.9 Piecewise 1D heat conduction with parameterized conductivity and source
      • P.10 Piecewise 1D heat conduction with parameterized conductivity and source
    • Neutronics
      • P.11 Three-material steady diffusion-reaction problem on a heterogeneous 2D domain

Welcome to skrom

scikit-rom

scikit-rom is a lightweight, Python-based platform designed for projection-based model reduction of finite element models with moderate to large problem sizes (up to approximately 600,000 degrees of freedom). Built on top of scikit-fem, an easy-to-use finite element assembly library, this repository demonstrates reduced-order modeling (ROM) techniques for a range of linear and nonlinear problems, including time-dependent ones. Current examples primarily focus on thermal and mechanical systems, with extensions to fluid dynamics planned for future releases.

Beyond its application to real-world finite element problems, the library also serves as a valuable testing ground for new model reduction algorithms and as a tutorial resource for those new to the field.


What is Reduced-Order Modeling?

Reduced-order modeling (ROM) is a computational strategy for approximating high-fidelity numerical models with significantly reduced computational cost. Instead of solving large-scale systems—often with millions of unknowns—ROM techniques construct low-dimensional surrogates that retain the dominant physics of the system, enabling efficient and repeated evaluations.

The underlying principle is that many physical systems exhibit behavior that can be captured by a small number of dominant modes, despite their discretization on fine spatial meshes. Techniques such as Proper Orthogonal Decomposition (POD) extract these modes from full-order simulations, enabling the construction of reduced models that are both accurate and computationally efficient.


Offline–Online Decomposition

scikit-rom implements the classical offline–online decomposition paradigm:

  • Offline Phase (computationally intensive, performed once):

    • Sampling of the parameter space
    • Generation of full-order solution snapshots
    • Computation of the reduced basis via singular value decomposition (SVD)
    • Assembly of parameter-independent reduced operators
  • Online Phase (efficient, performed repeatedly):

    • Evaluation of the system response for new parameter values using preassembled reduced operators
    • Speedups on the order of 10–500× relative to full-order models are typical

Installation

This tutorial explains how to install SKROM (scikit-ROM):

Installation Steps:

  1. Clone the repository:
git clone https://github.com/suparnob100/scikit-rom
cd scikit-rom
  1. Install with pip:
  • For developers (editable install):
pip install -e .
  • For regular users:
pip install .

(Use pip3 instead of pip on Mac)

Notes:

  • Use -e for development; it lets you edit the code without reinstalling.
  • Regular users should use standard installation.
  • Reinstallation automatically removes the old version.
  • The installation completes in seconds and shows “successfully built SKROM.”
  • All instructions are available on the GitHub page.

Getting Started

Recommended Reading

To dive deeper, check out:

  • Hyper-reduction Techniques for Efficient Simulation

© 2025. All rights reserved.