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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9aa535033f7e434aef145ea508b6fadbb0963602a6d5bf83a690a8b926328c78 |
|
MD5 | bccbbb6ad8ccf2b64e48a10621628ddd |
|
BLAKE2b-256 | 172183bcf0c6dca9c5f10ce3ac1a3a4c3b4055b9bc1ce2776da9ba700df81979 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 533b3de7ff3ae992fdacaaed3a2dce7d1b7cf223ef1774c85161b862ca6797a9 |
|
MD5 | 440891426cfb90da19e79798886a57e2 |
|
BLAKE2b-256 | fde416652a9bfaa53e555c663e901d3cc3d7ee0fe22c24e78646d24d66c1fb5d |