Documente Academic
Documente Profesional
Documente Cultură
www.elsevier.com/locate/advengsoft
Abstract
In this paper, a general structure of a recently developed object oriented nite element code is presented. The main reasons which lead to
the development of the new general environment for a complex nite element computations are discussed. The principal requirements for
new FEM code are formulated. The attention in this paper is put on an overall description of the program design and, particularly, on the
description of representations of the general material modelelement frame and the analysis module. Finally, computational efciency of
developed environment is compared to existing codes. q 2001 Civil-Comp Ltd and Elsevier Science Ltd. All rights reserved.
Keywords: Object oriented programming; Finite element software
1. Introduction
The open nature of the kernel the kernel design and its
implementation must be extensible in a broad sense. This
should also be valid for a particular module design.
The program structure must comply with a modular
design. This is very important for teamwork support.
The code must be easily modiable and maintainable.
The portability over available platforms is an important
and natural requirement.
The computational performance, similar to programs
written in Fortran or C.
* Corresponding author.
E-mail address: borek.patzak@fsv.cvut.cz (B. Patzak).
2. General structure
The kernel provides abstractions (representations) for all
necessary building blocks of the nite element method.
These abstractions, represented by the corresponding
general classes, usually declare the common attributes and
services. The particular service may be declared as an
0965-9978/01/$ - see front matter q 2001 Civil-Comp Ltd and Elsevier Science Ltd. All rights reserved.
PII: S 0965-997 8(01)00027-8
760
Degree of freedom.
An entity like node or element side possessing DOFs.
761
762
Sparse matrix class interface. As a consequence, the Numerical method class instances will work with any sparse matrix
class implementation, without changing any part of a particular numerical method code, because all classes derived
from Sparse matrix base class have to implement the same
interface.
To summarize, the natural independence of problem
formulation, numerical solution, and data storage format
has been obtained, which leads to the modular and the
extensible structure of the engineering modelnumerical
method frame.
3.1. Program and data ow
The program ow in the engineering modelnumerical
method frame is explained in Fig. 3, showing the example of
a nonlinear static problem analysis. After Domain reads the
input le with the problem description, it starts computation
by invoking SolveYourself service of Engng model class.
The corresponding Engng model class (here represented
by instance of NLStatic class) solves the whole problem
as a series of load increments. Therefore, for each step of
computation, a SolveYourselfAt service is invoked. For the
rst step, the reference load vector is formed from element
and nodal contributions, so these components are accessed
from corresponding domain using its services. Then, for
each solution step, the stiffness matrix is formed and particular components of the governing equation are mapped to
the numerical method components. Here, CALM instance of
Numerical Method class is being used. For the solution of a
linearized problem, the CALM uses another instance of
Numerical method class here named Linear solver.
After components are mapped and the solution is obtained,
the CALM checks convergence. It asks Engng model to
compute (update) the vector of real nodal forces according
to the solution reached, and checks convergence. If convergence criterion is reached, the program control returns to
Engng model and the solution step is then terminated (stress
updates and necessary printing) and the solution continues
with next step. If prescribed accuracy is not reached, the
stiffness matrix can be updated by suitable Engng model
service and iteration continues.
4. Materialelement frame
The materialelement frame represents denition and
description of mutual element, cross section, and constitutive model interfaces. The overall design of this frame has
been motivated by the following requests:
general, easily extensible modular design,
763
764
765
nnodes/nelems
ndofs
jk3d
oofem
Ratio (jk3d/oofem)
1
2
3
3219/15849
6770/34642
12871/67277
9645
20298
38601
91
709
2141
116.55
847.85
2690
0.78
0.83
0.80
766
Table 2
Win NT computational performance on 2D plane stress specimen,
compared to specialized plain C in-house code (jk2d). User times are in
seconds and are shown for optimized code (optimization performed by the
compiler itself)
Mesh
nnodes/nelems
ndofs
jk2d
oofem
Ratio
(jk2d/oofem)
1
2
3
4
5030/9664
10022/19476
19997/39181
40006/78855
10057
20041
39991
80009
3
12
54
210
4
15
64
241
0.75
0.80
0.84
0.87
nnodes/nelems
ndofs
jk2d
oofem
Ratio
(jk2d/oofem)
1
2
3
4
5030/9664
10022/19476
19997/39181
40006/78855
10057
20041
39991
80009
2.02
6.85
37.84
141.60
3
8.17
30.74
102.20
0.67
0.83
1.23
1.38
Table 4
Linux computational performance on 2D plane stress specimen,
compared to specialized plain C in-house code (jk2d). User times are in
seconds for nonoptimized codes
Mesh
nnodes/nelems
ndofs
jk2d
oofem
Ratio
(jk2d/oofem)
1
2
3
4
5030/9664
10022/19476
19997/39181
40006/78855
10057
20041
39991
80009
3.36
12.38
56.27
240.
6.05
19.63
78.00
293.54
0.55
0.63
0.72
0.82
nnodes/nelems
ndofs
pl2
oofem
Ratio
(pl2/oofem)
1
2
3
5030/9664
10022/19476
19997/39181
15087
30063
59988
19.58
75.36
302.89
17.82
63.96
260.84
1.10
1.17
1.16
767
Table 6
Linux computational performance on 2D plate bending specimen, compared to specialized Fortran in-house code (pl2). User times are in seconds, shown for
optimized codes
Mesh
nnodes/nelems
ndofs
pl2-opt
oofem-opt
Ratio
(pl2-opt/oofem-opt)
1
2
3
5030/9664
10022/19476
19997/39181
15087
30063
59988
6.86
26.83
126.22
8.22
25.35
100.2
0.83
1.06
1.26
of numerical algorithms, which is similar to the implementation in compared codes. The performance loss arises
mainly in those parts of the code that perform problem
set-up, assembly and termination of the problem, which
are necessary due to generality of the code. But the examples demonstrate that these losses are becoming less important for larger problems.
7. Conclusions
To summarize, the general object oriented environment
for nite element computations has been developed. The
described structure leads to modular and extensible code
design. Special attention has been focused on the important
aspects of materialelement and analysis frame design.
Successful implementation using C11 language veries
the designed program structure and provides a robust
computational tool for nite element modeling.
Note added in proof
In the past several years, a number of articles on applying
an object-oriented approach to nite-element analysis have
been published. In 1990 Fenves [10] described the advantages of an object-oriented approach for engineering-software development. Forde et al. [12] presented one of the
rst applications of OOP to nite elements. Many authors
presented the complete architectures of OO nite element
codes, notably, a coordinate-free approach by Miller [16], a
non-anticipation principle by Zimmermann et al. [22] and
DuboisPelerin et al. [79]. Recent contributions include
the work of Mackie [14], Archer et al. [2,3], Menetrey et al.
[15], and Yu et al. [5]
Acknowledgements
This work was supported by the Grant Agency of the
Czech Republic, Project no.: 103/97/P106. Thanks are due
References
[2] Archer GC. Object-oriented nite element analysis. PhD Thesis.
University of California, Berkeley, April 1996.
[3] Archer GC, Fenves G, Thewalt C. A new object-oriented nite
element analysis program architecture. Comput Struct 1999;70:63
75.
[5] Yu L, Kumar AV. An object-oriented modular framework for implementing the nite element method, Computers and Structures
2001;79:91928.
[6] Coad P, Yourdon E. Object-oriented analysis. Englewood Cliffs, NJ:
Prentice-Hall, 1991.
[7] Dubois-Pelerin Y, Zimmermann T, Bomme P. Object-oriented nite
element programming. Part II. A prototype program in Smalltalk.
Comput Meth Appl Mech Engng 1992;98(3):261397.
[8] Dubois-Pelerin Y, Zimmermann T. Object-oriented nite element
programming. Part III. An efcient implementation in C11. Comput
Meth Appl Mech Engng 1993;108:16583.
[9] Dubois-Pelerin Y, Pegon P. Object-oriented programming in
nonlinear nite element analysis. Comput Struct 1998;67:22541.
[10] Fenves GL. Object-oriented programming for engineering software
development. Engng Comput 1990;6:115.
[12] Forde BWR, Foschi RO, Stiemer SF. Object-oriented nite element
analysis. Comput Struct 1990;6:115.
[14] Mackie RI. Object-oriented programming of the nite element
method. Int J Numer Meth Engng 1992;35:42536.
[15] Menetrey P, Zimmermann T. Object-oriented non-linear nite
element analysis application to J2 plasticity. Comput Struct
1993;49:76777.
[16] Miller GR. An object-oriented approach to structural analysis and
design. Comput Struct 1991;40:7582.
[17] Patzak B. Numerical modeling of concrete structures. PhD Thesis. (in
Czech) FSv CVUT, 1996.
[18] Patzak B. OOFEM home page, http://ksm.fsv.cvut.cz/oofem/
oofem.html, 2000.
[21] Stroustrup B. The C11 programming language. 3rd ed. Reading,
MA: Addison-Wesley, 1997.
[22] Zimmermann T, Dubois-Pelerin Y, Bomme P. Object-oriented nite
element programming. Part I. Governing principles. Comput Meth
Appl Mech Engng 1992;98(3):291303.