OctMesh is a toolbox for the resolution of partial differential equations (PDE) by means of the ﬁnite element method on Octave. Octave is “a high-level language, primarily intended for numerical computations (...) that is mostly compatible with Matlab”. It may be used interactively or as a batch-oriented language.
Technically, OctMesh, constitutes an interface for the access from Octave to LibMesh, a C++ library for the numerical simulation of PDE by means of the ﬁnite element method (also with free license) developed, mostly, in the CFDLab of the University of Texas (although also it has counted with the contribution of other people and organizations). LibMesh facilitates the development of numerical simulations using 1D, 2D or 3D elements in parallel architectures (although it can work in sequential machines). It also includes methods for adaptive mesh reﬁnement/coarsening.
OctMesh has been developed with the intention to unite the power of LibMesh with the ease of use of the Matlab language, and trying to facilitate the development from Octave of parallel numerical 1D, 2D or 3D, experiments.
Internally, it consists of a series of dynamic extensions for Octave (.oct-ﬁles), written in C++, that acts as a connection with LibMesh, introducing a space of additional functions that extend the Octave ones. These functions allow deﬁning meshes, associating them ﬁnite elements spaces and quadrature formulae, mounting and solving the equation systems associated to the variational formulations of the EDP. All in a interactive way or in programs (.m-ﬁles) that use the Octave/Matlab interpreted language.
When creating these new functions in Octave, we have tried to conserve, as far as possible, the original syntax of the C++ classes that compose LibMesh. This has not been easy, because the Matlab language (and therefore Octave) is not Object Oriented. Nevertheless, some techniques was used that allowed to avoid this disadvantage successfully.
Although using an interpreted language implies certain performance loss in OctMesh, it exist a possibility that will be useful to advanced users: critic parts of the algorithm may be developed in C++ (with LibMesh) and used from Octave (with OctMesh).
OctMesh has been developed by J. Rafael Rodríguez Galván (Mathematics Department) at University of Cádiz. It has free license (GPL) and can be downloaded from https://forja.rediris.es/projects/octmesh