LLNL / libROM

Data-driven model reduction library with an emphasis on large scale parallelism and linear subspace methods
https://www.librom.net
Other
208 stars 37 forks source link
large-scale math-physics model-reduction modeling parallel-computing reduced-order-models scientific simulation subspace-learning

libROM Logo

Introduction

libROM is a free, lightweight, scalable C++ library for data-driven physical simulation methods from the intrusive projection-based reduced order models to non-intrusive black-box approaches.

The best starting point for new users interested in libROM's features is to review the examples. The code documentation provides more details about libROM's classes and functions.

Features

Features to be added

Installation

To compile libROM with default build settings (Mac and LLNL LC Machines):

 ./scripts/compile.sh

Compilation options:

Compiling on LC Machines

libROM provides several CMake toolchains which can be used to compile on LLNL LC machines. For more information on installing and using libROM on specific LC machines, refer to this wiki page.

Installing via Spack

There is a Spack package for libROM; however, the version it installs is the latest public release. See the spack documentation for details on how to use Spack.

To install libROM with default options using spack.

 spack install librom

To install libROM with MFEM using spack.

 spack install librom +mfem

Compiling and linking with libROM

To compile and link an existing code with libROM, follow these steps:

For example,

mpicxx myapp.cpp -I/path/to/libROM/lib -Wl,-rpath,/path/to/libROM/build/lib -L/path/to/libROM/build/lib -lROM -o myapp.out

Using Docker container

Docker container librom_env provides a containerized environment with all the prerequisites for libROM. For instruction on how to use it, check out the wiki page.

libROM CI

libROM leverages GitHub Actions for CI. The CI currently applies only to commits to pull requests. Unit tests run for all PR commits. Upon the addition of the LGTM label, both the unit tests and regression tests run. While the LGTM label is still present, all subsequent commits run both unit tests and regression tests.

To compile and run unit tests locally, build using the -r option to compile.sh or with -DENABLE_TESTS=ON. Building the unit tests will require Googletest to be installed. Unit tests can be run using ctest from the root build directory.

License

libROM is distributed under the terms of both the MIT license and the Apache License (Version 2.0). Users may choose either license at their option.

All new contributions must be made under both the MIT and Apache-2.0 licenses.

See LICENSE-MIT, LICENSE-APACHE, COPYRIGHT, and NOTICE for details.

Up to commit 299876e0a0304f25db56f1f9e2eb2c61ef199048, libROM was previously released under the terms of the BSD-3 license.

SPDX_License-Identifier: (Apache-2.0 OR MIT)

LLNL-CODE-686965 (up to commit 299876e0a0304f25db56f1f9e2eb2c61ef199048) LLNL-CODE-766763

Authors