Skip to main content

Reduced order modeling for the masses

Project description

Rombus: Helps you qucikly and easily compute slow and complex models

Rombus is a tool for building reduced order models (ROMs): matrix representations of arbitrary models which can be rapidly and easily computed for arbitrary parameter sets.

Building a ROM with Rombus is easy. All you need to do is install it like so:

$ pip install rombus

define your model like this (in this trivial case, a file named my_model.py specifying a simple second-order polynomial):

from numpy import ndarray, polyval, linspace
from rombus.model import RombusModel
from typing import NamedTuple


class Model(RombusModel):
    """Class for creating a ROM for the function y(x)=a2*x^2+a1*x+a0"""

    coordinate.set("x", 0.0, 10.0, 11, label="$x$")

    ordinate.set("y", label="$y(x)$")

    params.add("a0", -10, 10)
    params.add("a1", -10, 10)
    params.add("a2", -10, 10)

    def compute(self, p: NamedTuple, x: ndarray) -> ndarray:
        """Compute the model for a given parameter set."""
        return polyval([p.a2, p.a1, p.a0], x)

and specify a set of points (in this case, the file my_model_samples.py) to build your ROM from:

-10, -10,-10
-10,  10,-10
-10, -10, 10
-10,  10, 10
 10, -10,-10
 10,  10,-10
 10, -10, 10
 10,  10, 10

You build your ROM like this:

$ rombus build my_model:Model my_model_samples.csv

This produces an HDF5 file named my_model.hdf5. You can then use your new ROM in your Python projects like this:

from rombus.rom import ReducedOrderModel

ROM = ReducedOrderModel.from_file('my_model.hdf5')
sample = ROM.model.sample({"a0":0,"a1":0,"a2":1})
model_ROM = ROM.evaluate(sample)
for x, y in zip(ROM.model.domain,model_ROM):
    print(f"{x:5.2f} {y:6.2f}")

which generates the output:

 0.00   0.00
 1.00   1.00
 2.00   4.00
 3.00   9.00
 4.00  16.00
 5.00  25.00
 6.00  36.00
 7.00  49.00
 8.00  64.00
 9.00  81.00
10.00 100.00

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rombus-1.0.6.tar.gz (38.2 kB view details)

Uploaded Source

Built Distribution

rombus-1.0.6-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file rombus-1.0.6.tar.gz.

File metadata

  • Download URL: rombus-1.0.6.tar.gz
  • Upload date:
  • Size: 38.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.6 Linux/5.15.0-1035-azure

File hashes

Hashes for rombus-1.0.6.tar.gz
Algorithm Hash digest
SHA256 9aa535033f7e434aef145ea508b6fadbb0963602a6d5bf83a690a8b926328c78
MD5 bccbbb6ad8ccf2b64e48a10621628ddd
BLAKE2b-256 172183bcf0c6dca9c5f10ce3ac1a3a4c3b4055b9bc1ce2776da9ba700df81979

See more details on using hashes here.

File details

Details for the file rombus-1.0.6-py3-none-any.whl.

File metadata

  • Download URL: rombus-1.0.6-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.4.2 CPython/3.10.6 Linux/5.15.0-1035-azure

File hashes

Hashes for rombus-1.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 533b3de7ff3ae992fdacaaed3a2dce7d1b7cf223ef1774c85161b862ca6797a9
MD5 440891426cfb90da19e79798886a57e2
BLAKE2b-256 fde416652a9bfaa53e555c663e901d3cc3d7ee0fe22c24e78646d24d66c1fb5d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page