FINAM is a lighweight, easy to use model coupling framework. Written in Python, it can be used to link models written in virtually any language.
We put particular focus on ease of use. We want to make linking existing models easy, with as few programming work as possible.
FINAM is open source software under the LGPL3 license.
Use the power and convenience of Python to wrap you models, write adapters, and set up model linkage.
Benefit from Python as glue code to couple models from different programming languages. Exchange any data between models in any language!
A component-based coupling approach warrants high modularity and independence of linked components.
Models are wrapped into a unified interface, and communicate through adapters.
Wrapping existing models is easy!
Write Python bindings for initialization and step functionality, and implement the straight-forward FINAM interface.
A fully functional component can have less than 50 lines of code!
class MyComponent(TimeComponent):
def __init__(self, ...)
def initialize(self)
def connect(self)
def validate(self)
def update(self)
def finalize(self)
Adapters are used for data transformations between components. Examples are regridding, CRS transformations or temporal interpolation.
FINAM’s adapter interface is simple and easy to implement.
class ScaleAdapter(Adapter):
def __init__(self, scale):
super().__init__()
self.scale = scale
def _get_data(self, time):
d = self.pull_data(time)
return d * self.scale