Jean-François Remacle



Trellis is a software framework developed in C++ to make up a reusable design for software to solve problems in geometrically based numerical mechanics. Trellis is divided into 3 modules.

A mesh database, e.g. AOMD, that provides critical capabilities for accessing the mesh, doing mesh adaptation and handling parallel mesh representations. The mesh database is independent of the other modules and can be diffused separately. Some extensions have been added to the mesh database: integration, curved elements and mapping, geometrical queries and searches in large meshes, parallel toolbox.

A discretization library that provides generic approximation schemes capabilities for finite dimensional fields families contains the interpolation schemes (Lagrange, Szabo, Aiffa, Dubiner) as well as differential operators that act on interpolations (Grad, Div, Curl, Strains...) Multilinear as well as non-linear operators together with their linearizations are also available. The discretization library also provides the very important capability of managing degrees of freedom. Degrees of freedom (DOF's) are the coefficients of the interpolations. The DOF Manager is a purely algebraic tool that is able to store, retrieve, and delete degrees of freedom DOF's. The discretization library requires only a mesh database.

A Solver Driver that provides capabilities to solve multiphysics problems. The Solver Driver can interface solvers like PETSc, Sparskit or DASPK. The aim of this module is to find y in a given discrete space V defined in the discretization library so that:

f ( t , y , y' , y" ) = 0.

with its linearized formwhere f is defined in terms of operators that also belong to the discretization library and that automatically provides the linearized system around t , y = y0 , y' = y0' , y" = y0" ):

M y" + C y' + K y -f( t , y0 , y0' , y0" ) = 0

where M = df/dy" , C = df/dy' and K = df/dy. The idea is either to provide time stepping scheme with Newton solvers or to couple capabilities of external solvers like PETSc or DASPK with our adaptive discretization tools. The solver driver is designed so that it can perform distributed computing given a parallel solver (e.g. PETSc). Partitioned mesh information is used to assign processors with certain amount of computational load that is determined by the DOF Manager, and the solution is achieved concurrently. The final module is the Trellis module that that interacts with the other three to build a discrete system using both a space discretization (mesh, octree,...) and a functional discretization (finite elements, finite volumes). Basically, Trellis feeds the Solver Driver with M, K, C and f. Some capabilities have been added to, or extended within, Trellis for adaptivity include: Error estimation: Local a-posteriori error estimator operators have been added to the framework. Currently an operator based on the local flux projection is available, and it has been tested for 3D Heat transfer, and elasticity problems. Mesh adaptation: Based on the error estimate a size field is computed which is then utilized to adapt the mesh using the tools from the mesh database. During the mesh modification the mesh database interacts with Trellis via the callback functions in order to transfer all the fields that exist on the mesh to the new mesh. The transfer of the field is done locally for each local mesh modification.

The Official Web Site of Trellis may be found here. Some examples of simulations with Trellis may be found here .