Computational & Technology Resources
an online resource for computational,
engineering & technology publications
Civil-Comp Proceedings
ISSN 1759-3433
CCP: 99
PROCEEDINGS OF THE ELEVENTH INTERNATIONAL CONFERENCE ON COMPUTATIONAL STRUCTURES TECHNOLOGY
Edited by: B.H.V. Topping
Paper 255

Object Oriented Design of a Coupled, Multi-Physics Finite Element Kernel

M. Horák and B. Patzák

Faculty of Civil Engineering, Czech Technical University, Prague, Czech Republic

Full Bibliographic Reference for this paper
, "Object Oriented Design of a Coupled, Multi-Physics Finite Element Kernel", in B.H.V. Topping, (Editor), "Proceedings of the Eleventh International Conference on Computational Structures Technology", Civil-Comp Press, Stirlingshire, UK, Paper 255, 2012. doi:10.4203/ccp.99.255
Keywords: multi-physics simulations, finite element method, software design.

Summary
This paper presents the advanced object-oriented design of finite element representations in a complex multi-physics finite element environment OOFEM [1]. The focus is on reuse of existing single-physics capabilities when implementing new elements for coupled simulations.

The conventional designs of object-oriented finite element codes introduce an abstraction for the finite element method, which keeps the description of element geometry, properties and integration scheme and provides services for evaluating characteristic terms, such as stiffness matrix or element load vector. In more elaborated designs, a hierarchy of classes is developed, where the base parent element class contains only problem independent descriptions (such as element geometry) and specific functionality is implemented using derived classes, representing problem related base classes. This scheme works well when elements are to be solely used for specific analysis, e.g. elements for structural analysis.

Severe drawbacks happen, when one wishes to combine the capabilities of two or more elements to obtain an element for multi-physics analysis. Multiple inheritance provides only a partial solution, allowing for inherited problem specific capabilities from individual (single physics) elements. This could be an issue in some programming languages (C++ for example) where the use of multiple inheritance leads to duplication of parent element class data. Moreover, one has to manually fix name resolution problems with services defined on the Element level, as base Element class is duplicated in an element derived from single-physics elements.

The proposed solution consists in decoupling element geometry description and problem-specific functionality (represented by classes derived from the Evaluator class). The particular element is then assembled from geometry description and a suitable evaluator. The evaluator is responsible for evaluating characteristic terms of governing equation and it is parameterized by geometry, interpolation, and integration defined by element. The essential feature is possibility to assemble individual Evaluator instances together to form a high-level evaluator for coupled problem. Such design allows naturally the reuse of not only the evaluator for different type of problem-specific elements, but also reuse of problem-specific evaluators when implementing the complex evaluator for multi-physics problem. The design presented leads to an extremely flexible implementation, with clean modular design. The application is demonstrated for coupled analysis using implicit gradient formulation of a damage-plastic model.

References