deal.II---A general-purpose object-oriented finite element library (original) (raw)

An Object Oriented Finite Element Toolkit

We present an object oriented finite element library written in C++. We outline the main motivations in developing such a library. Through a simple example program we show a typical use of the library. We describe the main class categories and typical problems to solve using the library.

Object-Oriented Finite Element Programming for Engineering Analysis in C++

Journal of Software, 2010

Recently there has been growing interest in applying object-oriented approach to large-scale programs with a view to treating the various complexities within these. Software designed using an object-oriented approach can be significantly more robust than traditional software. More codes can be reused and it can be easier to refine, test, maintain and extend the software. Several benefits of this approach may also be observed in the area of finite element analysis. This paper describes an implementation of objectoriented programming to the finite element method for engineering analysis using C++, and illustrates the advantages of this approach.

An object-oriented framework for finite element programming

Proceedings of the Fifth World Congress on …, 2002

This work describes an ongoing effort, initiated in early 1990s, in the development of a finite element analysis system, called FEMOOP, based on the object-oriented programming (OOP) paradigm. The overall class organization of the program will be presented and the main features will be thoroughly discussed. One important feature is the capability of treating multi-dimension finite element models in the same object oriented, generic fashion. This is accomplished through the definition of two OOP classes: Analysis Model and Shape. The former is responsible for handling the specific aspects related to the differential equation that governs the element behavior, while the latter deals with the geometric and field interpolation aspects of the element. Another interesting feature of FEMOOP is the generic handling of natural boundary conditions. This is implemented through the automatic creation of fictitious elements responsible for translating these boundary conditions into nodal coefficients of the solution matrices and forcing vectors. These elements are instances (objects) of a class called Load Element. At the global level, another class (Control) is responsible for the implementation of the algorithm that controls the analysis of the problem, from which a derived class, called Equilibrium Path, handles the different path-following methods implemented in the program.

Unified framework for finite element assembly

International Journal of Computational Science and Engineering, 2009

Over the last fifty years, the finite element method has emerged as a successful methodology for solving a wide range of partial differential equations. At the heart of any finite element simulation is the assembly of matrices and vectors from finite element variational forms. In this paper, we present a general and unified framework for finite element assembly. Based on this framework, we propose a specific software interface (UFC) between problem-specific and general-purpose components of finite element programs. The interface is general in the sense that it applies to a wide range of finite element problems (including mixed finite elements and discontinuous Galerkin methods) and may be used with libraries that differ widely in their design. The interface consists of a minimal set of abstract C++ classes and data transfer is via plain C arrays.

Toward object-oriented parallel finite element computations

Research on an object-oriented application framework for parallel finite element computations is currently underway in the School of Civil Engineering at Purdue University. The main goal of this research is to facilitate reuse and rapid prototyping of a wide variety of parallel finite element software in Structural Engineering applications. The framework is being developed by taking advantage of the object-oriented methodologies supported by C++ as well as recent advances in parallel computing. This paper gives an overview of the ongoing research effort by highlighting several reusable components that have been or are being developed within the target framework.

Data structures and requirements for hp finite element software

ACM Transactions on Mathematical Software, 2009

Finite element methods approximate solutions of partial differential equations by restricting the problem to a finite dimensional function space. In hp adaptive finite element methods, one defines these discrete spaces by choosing different polynomial degrees for the shape functions defined on a locally refined mesh.

FEMPAR: An Object-Oriented Parallel Finite Element Framework

Archives of computational methods in engineering : state of the art reviews, 2018

FEMPAR is an open source object oriented Fortran200X scientific software library for the high-performance scalable simulation of complex multiphysics problems governed by partial differential equations at large scales, by exploiting state-of-the-art supercomputing resources. It is a highly modularized, flexible, and extensible library, that provides a set of modules that can be combined to carry out the different steps of the simulation pipeline. FEMPAR includes a rich set of algorithms for the discretization step, namely (arbitrary-order) grad, div, and curl-conforming finite element methods, discontinuous Galerkin methods, B-splines, and unfitted finite element techniques on cut cells, combined with -adaptivity. The linear solver module relies on state-of-the-art bulk-asynchronous implementations of multilevel domain decomposition solvers for the different discretization alternatives and block-preconditioning techniques for multiphysics problems. FEMPAR is a framework that provide...

Applying object-oriented design to finite element programming

Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing states of the art and practice - SAC '93, 1993

Finite ekment(FE) software development is complex and expensive. In the university research Betting, its current status is characterized by uncoordinated proliferation of varioua programs. Those programs lack crkply detined high-level component and adeqnste modularity. They are diflicult to maintain and extend, and have very limited reuaabfity. Object-oriented Ianguagee offer data abstraction, encapsulation, inheritame and dynamic binding of operation to objects, making it poeaibk h conetruct software dug eoftware components directly modeling red-world high-level entities. Unfortunately, current existing FE packageB generally do not UBBan object-oriented model, and an efFkknt and practical FE package based on the object-oriented paradigm iB still yet to he devdoped. Her&u, we have defined a Bet of btic component in C++ that preeent an object-oriented model to a programmer. The Element claBBdefinee a general fly-weight object from which a rich set of elements satisfying different needs may be derived. The Aseembler, a corner Btone in the FE++ application frunework, iB C* pable of aeaembling heterogeneous elements. The FE++ object-oriented architecture promkee simplicity, flexibility, extendibility, reusability and rdiabiity. 1 Introduct"mn The finite element method(FEM), having its roots in tiructurd mechanica, has become an important and powerful nnmericd technique for eolving probkma in variouB areaB such BB structural mechanica, fluid mechanics, heat trs fer and ekctromagnetics. The FEM ia an efkctive technique in solving boundary value problem formulated in the weak form[l, 15, 29]. After nearly three decadea of devdopment, the FEM iB a key link in the computerized tiructurd andysia[21, 12]. Since the 1950's, many comprehensive larg~smle FEM packagee have been developed. They include NASTRAN[18], NORSAM[3], ASKA[24], POLO FINITE[1o], STRUDL in ICES[23], SAP[28], etc. However, to meet the Bpedc application needs, there haB been the ?e.mbdmbmpy xboaearpaf ab~ls~~lb, tb0cqJkm8dmdD0r~~-~~~-W@#t~d*wd*~dbb~,4&h

Object Oriented Finite Element Implementation

Abstract. The objective of this work was to study the finite element method implementation techniques using object-oriented analysis. This paper presents a software for design of spatial metal structures by means of the finite element method, using the admissible stress method and the Limit States method, joint with the development of a Computer Aided Design environment for structural drawing input and output, and also with the possibility of consideration of semi-rigid joints for the beam element. Among the main characteristics of this system, named CAE 2002, there is the concept of Object Oriented Analysis, which was applied to the finite element method through Object Oriented Programming, implemented in Borland's C++ Builder. Finally, one example of a structure designed using CAE 2002 is shown, demonstrating the developed interface. Through object oriented analysis, a high level of flexibility in the development of a finite element software was achieved, allowing for other st...