Open Numerical Engineering LABoratory
ONELAB is a lightweight interface to finite element software for engineering applications. It allows calling sequences of independent clients (e.g. mesh generators, finite element solvers and other related tools) and have them share parameters and modeling information. The parameters can be controlled and displayed interactively using Gmsh.
Try out native ONELAB solvers:
- GetDP: a native ONELAB client for electromagnetism, heat transfer, acoustics and generic PDEs
- Gmsh: In addition to playing the role of ONELAB server, Gmsh is also a native ONELAB client
- Onelab/Mobile: Finite element simulations on your phone and tablet
Other solvers (non-native solvers) are interfaced with ONELAB by a system of input file pre-processing. The different steps of a simulation (meshing, solving, post-processing) are controlled by a python script. See worked-out examples with:
- Elmer: a finite element solver for multi-physic problems developed by CSC
- OpenFOAM: an open source CFD software package developed by OpenCFD
Other scientific computing software can be interfaced readily by following the above examples.
Implement ONELAB in your own solvers:
- Python example: any Python code can become a native ONELAB client
- C++ example: how to create a native C++ ONELAB client
The ONELAB interface is based on an abstraction of the interface to finite element solvers and related tools: for geometry modeling and meshing, for the definition of physical properties, constraints and other solver parameters, and for post-processing.
The implementation is based on a client-server model, with a server-side database and (optional) graphical front-end (implemented in Gmsh), and local or remote clients communicating in-memory or through TCP/IP sockets. Contrary to most available solver interfaces, the ONELAB server has no a priori knowledge about any specifics (input file format, syntax, ...) of the clients. In practice, this is made possible by having any simulation preceded by a analysis phase, during which the clients are asked to upload their parameter set to the server.
Native ONELAB clients can be written in C++ or Python. For native clients the specification of which data to share is completely dynamic. For non-native ("interfaced") clients, the ONELAB server can act as a pre-processor of their input files, which should be instrumented to specify the information to be shared. In all cases the issues of completeness and consistency of the parameter sets are completely dealt with on the client side: the role of ONELAB is limited to data centralization, modification and re-dispatching.