Nonlinear Finite-Element Analysis Software Architecture Using Object Composition

Object composition offers significant advantages over class inheritance to develop a flexible software architecture for finite-element analysis. Using this approach, separate classes encapsulate fundamental finite-element algorithms and interoperate to form and solve the governing nonlinear equations. Communication between objects in the analysis composition is established using software design patterns. Root-finding algorithms, time integration methods, constraint handlers, linear equation solvers, and degree of freedom numberers are implemented as interchangeable components using the Strategy pattern. The Bridge and Factory Method patterns allow objects of the finite-element model to vary independently from objects that implement the numerical solution procedures. The Adapter and Iterator patterns permit equations to be assembled entirely through abstract interfaces that do not expose either the storage of objects in the analysis model or the computational details of the time integration method. Sequence diagrams document the interoperability of the analysis classes for solving nonlinear finite-element equations, demonstrating that object composition with design patterns provides a general approach to developing and refactoring nonlinear finite-element software.

[1]  Gul A. Agha,et al.  Concurrent object-oriented programming , 1993, CACM.

[2]  Gregory R. Miller,et al.  An object-oriented approach to structural analysis and design , 1991 .

[3]  John W. Baugh,et al.  Data Abstraction in Engineering Software Development , 1992 .

[4]  Ian Sommerville,et al.  Software engineering (5th ed.) , 1995 .

[5]  Gregory L. Fenves,et al.  Software framework for distributed experimental–computational simulation of structural systems , 2006 .

[6]  Grady Booch,et al.  Object-Oriented Analysis and Design with Applications , 1990 .

[7]  J. W. Walker,et al.  Direct solutions of sparse network equations by optimally ordered triangular factorization , 1967 .

[8]  Jaroslav Mackerle,et al.  Object-oriented programming in FEM and BEM: a bibliography (1990-2003) , 2004 .

[9]  E. Cuthill,et al.  Reducing the bandwidth of sparse symmetric matrices , 1969, ACM '69.

[10]  Jack P. Moehle,et al.  A framework methodology for performance-based earthquake engineering , 2004 .

[11]  K. Bathe Finite Element Procedures , 1995 .

[12]  Sashi K. Kunnath,et al.  Influence of soil–foundation–structure interaction on seismic response of the I-880 viaduct , 2004 .

[13]  Ashok K. Goel,et al.  Use of design patterns in analogy-based design , 2004, Adv. Eng. Informatics.

[14]  J. Z. Zhu,et al.  The finite element method , 1977 .

[15]  Elisa D. Sotelino,et al.  An object-oriented programming framework for the parallel dynamic analysis of structures , 2002 .

[16]  Thomas Zimmermann,et al.  Object-oriented finite element programming: III. An efficient implementation in C++ , 1993 .

[17]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[18]  Cv Clemens Verhoosel,et al.  Non-Linear Finite Element Analysis of Solids and Structures , 1991 .

[19]  Armen Der Kiureghian,et al.  Methods and Object-Oriented Software for FE Reliability and Sensitivity Analysis with Application to a Bridge Structure , 2007 .

[20]  Richard Barrett,et al.  Templates for the Solution of Linear Systems: Building Blocks for Iterative Methods , 1994, Other Titles in Applied Mathematics.

[21]  Pedro Arduino,et al.  Localized tensor-based solvers for interactive finite element applications using C++ and Java , 2003 .

[22]  James Demmel,et al.  LAPACK Users' Guide, Third Edition , 1999, Software, Environments and Tools.

[23]  Graham C. Archer,et al.  A new object-oriented finite element analysis program architecture , 1999 .

[24]  Gregory R. Miller,et al.  An algorithmic framework for flexible finite element-based structural modeling , 1996 .

[25]  Witawas Srisa-an,et al.  A study of the allocation behavior of C++ programs , 2001, J. Syst. Softw..

[26]  Robert Ian Mackie Object oriented programming of the finite element method , 1992 .

[27]  O. C. Zienkiewicz,et al.  The Finite Element Method for Solid and Structural Mechanics , 2013 .

[28]  William E. Lorensen,et al.  Object-Oriented Modeling and Design , 1991, TOOLS.

[29]  Max Jacobson,et al.  A Pattern Language: Towns, Buildings, Construction , 1981 .

[30]  Jing Chen,et al.  An object-oriented framework for modular chemical process simulation with semiconductor processing applications , 2006, Comput. Chem. Eng..

[31]  Gregory L. Fenves Object-oriented programming for engineering software development , 2005, Engineering with Computers.

[32]  Ricardo O. Foschi,et al.  Object-oriented finite element analysis , 1990 .

[33]  Michael H. Scott,et al.  Software Patterns for Nonlinear Beam-Column Models , 2008 .

[34]  Gregory L. Fenves,et al.  Object-oriented finite element programming: frameworks for analysis, algorithms and parallel computing , 1997 .

[35]  Bonnie MacKellar,et al.  Generating code for engineering design systems using software patterns , 2001, Artif. Intell. Eng..

[36]  Kincho H. Law,et al.  ParCYCLIC: finite element modelling of earthquake liquefaction response on parallel computers , 2004 .