Multiphysics for designers / Products / The OOFELIE::Multiphysics Suite / OOFELIE::SDK

Software Development Kit (SDK)


What is the SDK used for?

Oofelie is technological platform used by Open Engineering to create multidisciplinary numerical simulation software solutions.

The Oofelie SDK is a development framework. It is based on the components of Oofelie provided as a set of dynamic libraries and it includes a software infrastructure for collaborative developments and testing of applications based on those Oofelie components.

The Oofelie SDK constitutes therefore a key component to support innovation.

  • To R&D people or scientists who have the willingness or the need to test their new ideas inside a commercial software solution to address industrial class problems, the SDK gives the opportunity to adapt the standard behavior of Oofelie to their needs. Using API's users defined material laws, elements or numerical resolution schemes can be introduced. Taking advantage of Object Oriented Programming techniques, advanced components can be developed.
    Interaction with other scientists that are using the same toolkit is promoted within the Oofelie Community.
  • To software developers from universities, research centers or within R&D laboratories in the industry who have feeling that they are reinventing the wheel or that have the need to spend more time on science than IT activities, the SDK constitutes a foundation block to perpetuate their work by making use of a modern framework.
  • To software editors who need to complement their existing solution with "finite elements", the SDK provides a collection of dynamic libraries that can be linked to their existing software to extend its capabilities. This shortens the time to market period to bring to the market innovative solutions.

In any case, either by making use of the epilogue or with the support of Open Engineering's development team, innovative functionalities can be made available within SAMCEF Field, the UI used by Oofelie.

What is Oofelie?

The name Oofelie stands for Object Oriented Finite Elements Led by an Interactive Executor. In the beginning, Oofelie was only based on the Finite Element Method (FEM). Today, the Oofelie Toolkit contains also the Boundary Element Method (BEM) and Finite Differences Method (FDM). Moreover, partners are also introducing the Extended Finite Element Method (X-FEM) into the toolkit.

Oofelie is a toolkit, designed with up to date modeling method (UML), written in C++ and posses an interactive command-line interpreter (CLI).

Oofelie has been built to favor (1) couplings, which are interactions between physical fields or exchanges with other solutions and (2) efficiency gains.

Natively, Oofelie manages several physical fields and couplings between those fields. Not all couplings are available and new ones are introduced by customization service activities.

The openness of Oofelie allows also interactions with other professional solutions and academic tools. Every day, engineers at Open Engineering are working on new developments to let Oofelie interact with more third parties solutions.

Oofelie is used by Open Engineering to create multidisciplinary numerical simulation tools, such as:

  • Oofelie::VibroAcoustics is dedicated to the study of vibro-acoustics problems
  • Oofelie::PiezoThermoElectric is dedicated to the study of piezoelectric system with the possibility to take also into account the thermal effect on the structural or electrical part.
  • Oofelie for MEMS is a solution dedicated to the study of micro electrical mechanical systems.
  • Oofelie for Advanced Optics is used to establish a connection between thermo mechanical and Optical design simulations

These products are interfaced with SAMCEF Field (SF), the graphical interface developed by the SAMTECH group.

Go to products page.

What is the Oofelie SDK?

The Oofelie SDK consists in the components of Oofelie provided as a set of dynamic libraries and their associated C++ header files.


The Oofelie SDK is a development framework that provides a software infrastructure adapted to collaborative developments and to the testing of application based on Oofelie components. It is available on both the Windows and Linux platforms.

Using Oofelie in standalone mode.

The stand alone mode refers to use of the Oofelie stand alone executable. This executable can either be the one provided with the product or a version generated with the SDK chat uses the built-in interactive command-line interpreter.

1. Using Oofelie through SAMCEFField.

The standard way to use Oofelie is through SAMCEF Field. The user defines his problem in the graphical interface inside which Oofelie is coarsely integrated and take benefits.

Go to application for examples.

2. Using Oofelie through scripts.

The user defines his problem in a plain text file. The extension of this file is “.e”. This file is interpreted by the built-in command- line interpreter and executed.

Standard resolution tools are available. However, users can also introduce innovative resolution methods together with the description of the problem. No compilation step is needed because resolution methods provided by users are also interpreted. Best numerical performances are kept due to high level access of algebraic entities.

In fact, using Oofelie through SAMCEF Field consists in using Oofelie’s scripting capabilities in an automated way. Indeed, the purpose of SAMCEF Field is simplifying the generation of the “.e” file so that Oofelie will process its content and generate a file with the results.


3. Openness strategy

Oofelie exhibits several levels of openness presented here after:

  1. The epilogue: In SAMCEF Field, the epilogue constitutes an advance feature that enables the user to introduce Oofelie commands directly in the “.e” file to adapt the behavior of Oofelie to its specific needs.
  2. Importation: Oofelie can also retrieve results computed by products of the SAMCEF family of solver (Dynam, Mecano, … ) and read matrices from Matlab .m ASCII files
  3. Post-processing: Oofelie can generate SAMCEF Field outputs (mesh and results) and/or ParaView outputs (mesh and results). Oofelie can also export matrices to Matlab using ASCII .m files
  4. DDE: DDE means Dynamic Data Exchange; it is an in-memory communication protocol of Microsoft Windows. Oofelie can participate to in-memory communications as a DDE client. This feature is used to exchange information with the optical design software ZEMAX where ZEMAX plays the role of the DDE server and Oofelie the role of a client.
  5. MPI: MPI means Message Passing Interface, it is an open communication protocol mainly used in the UNIX and Linux world. When the MPI capabilities are available, Oofelie can initiate communications using that protocol. This feature is used to exchange data's with NUMECA’s Fine/Hexa CFD solver in the FSI solution.

Using the Oofelie SDK.

The set of dynamic libraries that constitutes the Oofelie SDK gives to its user access to a framework to support its innovation process.

The Oofelie SDK provides the user with similar capabilities compared to the standalone version as it is possible to regenerate a standalone executable from the libraries.

The main advantage of this set of libraries is that it constitutes the building block of a numerical simulation tool whose functionalities can be extended.

Let’s innovate!

With the SDK, you can create innovative solutions:

  1. Customized Oofelie. Extending Oofelie capabilities to better suite your needs by taking advantage of the toolkit’s API's or polymorphism.
  2. Embedding Oofelie. Integrating Oofelie components inside an existing application.
  3. (Re)engineering. Creating a completely different application or reconstructing an in-house existing numerical simulation solution with modern components.
  4. Compiled model. Creating a so-called compiled model, a model which is not described in a text file (.e) but directly in C++ using Oofelie components.

Oofelie API's

The user of the SDK is also considered as a developer (or a researcher) who needs to provide a numerical simulation application with innovative functionalities.
Very often, researchers have to test new elements, new material laws or adapted resolution strategies to study their multidisciplinary problems. Emphasis was thus placed on the simplicity in the introduction of user defined elements, material laws and resolution schemes.


As the SDK is constituted of a set of libraries and their associated header files, Oofelie components can, to a certain point, be extended by making use of Object Oriented Programming (OOP) technique such as inheritance or polymorphism.

Open Engineering support

Open Engineering provides supports to its partners that have access to the Oofelie SDK. This support takes several forms that are presented hereafter.


The Oofelie toolkit is written in C++ and following Object Oriented Programming (OOP) techniques. The first type of support consists thus in providing general trainings related to C++ and OOP. While this first set of training is quite general, advanced trainings dedicated to C++ and OOP for scientific computing are also proposed together with trainings for programming within Oofelie.

Source code management

Partners are performing innovative research activities. In this process, new C++ classes are introduced that are complementing the Oofelie Toolkit. This set of C++ files needs to be managed. A second type of support provided by Open Engineering consists in the possibility to perform this files management process for its partners. Typically, those files are handled by a revision control system similar to the one used for the Oofelie Toolkit itself. The access to the partner’s files is restricted. Only the Open Engineering support team and the members of the partner’s team have access to the partner’s files. At the request of the partner, access to its files can be granted to others. The Oofelie Toolkit is continually evolving; partner’s files have to evolve accordingly if needed. When Open Engineering manages the files of its partners, it also adapts them according to the evolution of the toolkit. Otherwise, it is the partner’s responsibility to perform the adaptations which is a time consuming activity if it is not performed on a regular basis.

As usual in programming activities, if a development is not tested it is not working. Oofelie is provided with a set of tests. Those tests are performed each night on different platforms and different environments to check the portability and validity of new developments. Partners are encouraged to set up their own set of tests files. Open Engineering provides its support by creating the initial configuration environment for this testing activity. Of course, it is the responsibility of the partner to introduce pertinent tests. But, when those are available, they enable Open Engineering’s support team to track modifications of the Oofelie toolkit that have an impact on partner’s developments by compiling its partner’s developments on the supported platform of the Oofelie Toolkit and by launching the partner’s test battery.

Those supporting activities are of course not mandatory.
The purpose of this support is to help partners focus on its innovative activities rather than IT support tasks.

Oofelie Community website

Partners of Open Engineering that have access to the SDK or to the source code can have access to the Oofelie Community Website. This private portal provides members with updated information about the evolution of Oofelie, about components developed by community members, a forum for discussion.

This community offers the unique opportunity to promote your work to other members and to initiate contacts and start synergies with other Oofelie users.