Difference between revisions of "ONELAB"

From ONELAB
Jump to: navigation, search
(Technical information)
 
(98 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
__NOTOC__
 
__NOTOC__
 +
<span style="white-space:nowrap">[[Inductor|<img width="25%" src="http://onelab.info/files/inductor/screenshot2_512.png"/>]][[Magnetometer|<img width="25%" src="http://onelab.info/files/magnetometer/screenshot1_512.png"/>]][[Electric machines|<img width="25%" src="http://onelab.info/files/machines/screenshot2_512.png"/>]][[Magnetodynamics with cohomology conditions|<img width="25%" src="http://onelab.info/files/indheat/screenshot1_512.png"/>]]</span><br><span style="white-space:nowrap">[[Waveguides|<img width="25%" src="http://onelab.info/files/waveguides/screenshot2_512.png"/>]][[Electromechanical relay|<img width="25%" src="http://onelab.info/files/relay/screenshot2_512.png"/>]][[Bloch modes in periodic waveguides|<img width="25%" src="http://onelab.info/files/bloch_periodic_waveguides/screenshot1_512.png"/>]][[Acoustic scattering|<img width="25%" src="http://onelab.info/files/acoustic_scattering/screenshot2_512.png"/>]]</span>
  
<center>
+
ONELAB (''Open Numerical Engineering LABoratory'') is an open-source, lightweight interface to finite element software. It is completely free: the default ONELAB software bundle contains the mesh generator [http://gmsh.info Gmsh] and the finite element solver [http://getdp.info GetDP]. Many other codes (free or not) can be easily interfaced as well.
[[Inductor|<img height="192" src="http://onelab.info/files/inductor/screenshot2_512.png"/>]]
 
[[Magnetometer|<img height="192" src="http://onelab.info/files/magnetometer/screenshot1_512.png"/>]]
 
[[Electric Machines|<img height="192" src="http://onelab.info/files/machines/screenshot2_512.png"/>]]
 
[[Magnetodynamics_with_cohomology_conditions|<img height="192" src="http://onelab.info/files/indheat/screenshot1_512.png"/>]]
 
[[Electromechanical relay|<img height="192" src="http://onelab.info/files/relay/screenshot2_512.png"/>]]
 
</center>
 
 
 
<br>
 
ONELAB (Open Numerical Engineering LABoratory) 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.  
 
  
 
== Give it a try! ==
 
== Give it a try! ==
  
# Download and uncompress the Gmsh/GetDP bundle for [http://onelab.info/files/gmsh-getdp-Windows64.zip Windows64], [http://onelab.info/files/gmsh-getdp-Windows32.zip Windows32], [http://onelab.info/files/gmsh-getdp-Linux64.zip Linux64], [http://onelab.info/files/gmsh-getdp-Linux32.zip Linux32] or [http://onelab.info/files/gmsh-getdp-MacOSX.zip MacOSX].
+
<ol>
# Double-click on the Gmsh executable ('''gmsh.exe''' [[File:GmshIcon.png|GmshIcon.png]] on Windows).
+
  <li>Download the ONELAB software bundle:
# Load one of the GetDP models ('''.pro''' file) through the '''File/Open''' menu, e.g. '''inductor.pro''' in the '''model/inductor''' directory.
+
  <ul>
# Click on '''Run'''.
+
    <li>Desktop version for [http://onelab.info/files/onelab-Windows64.zip Windows] ([http://onelab.info/files/onelab-Windows32.zip 32 bit]), [http://onelab.info/files/onelab-Linux64.zip Linux] ([http://onelab.info/files/onelab-Linux32.zip 32 bit]) and [http://onelab.info/files/onelab-MacOSX.dmg MacOS]
# ... that's it!
+
    <li>Mobile version for [https://play.google.com/store/apps/details?id=org.geuz.onelab Android] and [https://itunes.apple.com/us/app/onelab/id845930897 iOS]
 
+
    <li>[http://onelab.info/files/onelab-source.zip Source code]
== Use other clients ==
+
  </ul>
 +
  <li>Launch the app <img src="http://geuz.org/gmsh/gallery/icon.png" height=20px>
 +
  <li>Open a model:
 +
  <ul>
 +
    <li>Desktop version: go to the '''File/Open''' menu and select a GetDP '''.pro''' file, e.g. '''models/magnetometer/magnetometer.pro'''
 +
    <li>Mobile version: select one of the preloaded models
 +
  </ul>
 +
  <li>Press '''Run'''.
 +
  <li>... then explore [[GetDP#GetDP_models|other models]]!
 +
</ol>
  
Try out native ONELAB clients:
+
== Use existing clients ==
  
 +
''Native'' clients directly embed the ONELAB library:
 
* [[GetDP]]: a finite element solver for electromagnetism, heat transfer, acoustics and generic PDEs
 
* [[GetDP]]: a finite element solver for electromagnetism, heat transfer, acoustics and generic PDEs
 
* [[Gmsh]]: a mesh generator and post-processor (Gmsh also plays the role of ONELAB server)
 
* [[Gmsh]]: a mesh generator and post-processor (Gmsh also plays the role of ONELAB server)
* [[Mobile|Onelab/Mobile]]: a finite element package for iPhone, iPad and Android devices based on GetDP and Gmsh
+
* [[Onelab/Mobile]]: GetDP and Gmsh on iPhone, iPad and Android devices
  
Other clients (non-native) 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:
+
Other clients (''non-native'') 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:
<!-- I think this is too long for the homepage:
 
(metamodel)  that maintains a database of parameters shared by the clients and successively calls them.
 
Data communication is done in-memory with native clients, and by preprocessing input files instrumented
 
with specific ONELAB directives for non-native clients.
 
-->
 
 
* [[Elmer]]: a finite element solver for multi-physic problems developed by CSC
 
* [[Elmer]]: a finite element solver for multi-physic problems developed by CSC
 
* [[OpenFOAM]]: an open source CFD software package developed by OpenCFD
 
* [[OpenFOAM]]: an open source CFD software package developed by OpenCFD
 +
Any software driven by input data files (e.g. Code_Aster, Abaqus, CalculiX, FreeFem, Gnuplot, ...) can be readily interfaced in the same way.
  
Other clients can be interfaced readily by following the above examples.
+
Here are some [[Hints|useful hints to efficiently use the ONELAB graphical user interface]].
 
 
Finally, find here some useful [[Hints|hints]] to use efficiently the graphical front-end of ONELAB.
 
  
 
== Develop your own client ==
 
== Develop your own client ==
Line 48: Line 43:
 
* [[Python|With Python]]: any Python code can become a native ONELAB client
 
* [[Python|With Python]]: any Python code can become a native ONELAB client
 
* [[C++|With C++]]: how to create a native C++ ONELAB client
 
* [[C++|With C++]]: how to create a native C++ ONELAB client
 
<!--
 
* [[Interfaced|Examples for legacy codes]]:
 
* [[Tutorial|Introduction to the ONELAB scripting syntax]]: A tutorial example
 
* [[Elmer|Examples for Elmer (interfaced client)]]: fluid dynamics, mechanics
 
Technical information on how ONELAB works for [[Clients encapsulés|native clients]] and for [[Clients intefacés|interfaced clients]]
 
The complete ONELAB scripting syntax is available here : [[Clients intefacés|ONELAB scripting syntax]].
 
-->
 
  
 
== Technical information ==
 
== Technical information ==
  
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. 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 ONELAB interface 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. It 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, 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 an analysis phase, during which the clients are asked to upload their parameter set to the server.  
 
The implementation is based on a client-server model, with a server-side database and (optional) graphical front-end, 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 an 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 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. The parameters can be controlled and displayed interactively using [http://geuz.org/gmsh Gmsh].
+
Native ONELAB clients can be written in C++ or Python, and embed the ONELAB library. For native clients the specification of which data to share is completely dynamic. For non-native clients, the ONELAB server acts 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.
 +
 
 +
== Sponsors ==
 +
 
 +
The ONELAB project was funded by the Walloon Region under [http://recherche-technologie.wallonie.be/projets/index.html?IDD=17018 WIST3 grant n° 1017086] and ''Fonds de maturation'' grant n° 1217742 (AWE), and was sponsored by [http://www.gdtech.eu GDTech] and [http://www.audaxis.com Audaxis]. Additional funding has been provided by [http://www.belspo.be the Belgian Science Policy] under grant IAP P7/02.
  
The ONELAB project was funded by the Walloon Region under [http://recherche-technologie.wallonie.be/projets/index.html?IDD=17018 WIST3 grant n° 1017086].
+
<center style="margin-top:2ex;">
 +
[[File:logo_uliege.jpg|x68px|class=sponsors|link=http://www.ulg.ac.be]]
 +
[[File:logo_ucl.jpg|x68px|class=sponsors|link=http://www.uclouvain.be]]
 +
[[File:logo_rw.jpg|x68px|class=sponsors|link=http://www.wallonie.be]]
 +
[[File:logo_belspo.jpg|x68px|class=sponsors|link=http://www.belspo.be]]
 +
[[File:logo_gdtech.jpg|x68px|class=sponsors|link=http://www.gdtech.eu]]
 +
[[File:logo_audaxis.png|x68px|class=sponsors|link=http://www.audaxis.be]]
 +
</center>

Latest revision as of 18:06, 25 November 2017


ONELAB (Open Numerical Engineering LABoratory) is an open-source, lightweight interface to finite element software. It is completely free: the default ONELAB software bundle contains the mesh generator Gmsh and the finite element solver GetDP. Many other codes (free or not) can be easily interfaced as well.

Give it a try!

  1. Download the ONELAB software bundle:
  2. Launch the app
  3. Open a model:
    • Desktop version: go to the File/Open menu and select a GetDP .pro file, e.g. models/magnetometer/magnetometer.pro
    • Mobile version: select one of the preloaded models
  4. Press Run.
  5. ... then explore other models!

Use existing clients

Native clients directly embed the ONELAB library:

  • GetDP: a finite element solver for electromagnetism, heat transfer, acoustics and generic PDEs
  • Gmsh: a mesh generator and post-processor (Gmsh also plays the role of ONELAB server)
  • Onelab/Mobile: GetDP and Gmsh on iPhone, iPad and Android devices

Other clients (non-native) 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

Any software driven by input data files (e.g. Code_Aster, Abaqus, CalculiX, FreeFem, Gnuplot, ...) can be readily interfaced in the same way.

Here are some useful hints to efficiently use the ONELAB graphical user interface.

Develop your own client

Implement your own native ONELAB clients:

  • With Python: any Python code can become a native ONELAB client
  • With C++: how to create a native C++ ONELAB client

Technical information

The ONELAB interface 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. It 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, 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 an 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, and embed the ONELAB library. For native clients the specification of which data to share is completely dynamic. For non-native clients, the ONELAB server acts 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.

Sponsors

The ONELAB project was funded by the Walloon Region under WIST3 grant n° 1017086 and Fonds de maturation grant n° 1217742 (AWE), and was sponsored by GDTech and Audaxis. Additional funding has been provided by the Belgian Science Policy under grant IAP P7/02.

Logo uliege.jpg Logo ucl.jpg Logo rw.jpg Logo belspo.jpg Logo gdtech.jpg Logo audaxis.png