IMPLEMENTATION OF A FINITE ELEMENT CLASS LIBRARY USING GENERALIZED PROGRAMMING
Keywords:finite element method, finite element, object-oriented programming, generic programming, software architecture.
Context. For computer modeling of complex objects and phenomena of various nature, in practice, the numerical finite element method is often used. Its software implementation (especially for the study of new classes of problems) is a rather laborious process. The high cost of software development makes the development of new approaches to improving the efficiency of programming and maintenance (including the addition of new functions) urgent.
Objective. The aim of the work is to create a new effective architecture of programs for finite element analysis of problems in mathematical physics, which makes it easy to expand their functionality to solve new classes of problems.
Method. A method for developing programs for finite element analysis using generalized programming is proposed, which makes it possible to significantly simplify the architecture of the software and make it more convenient for maintenance and modification by separating algorithms and data structures.
A new architecture of classes that implement finite element calculation is proposed, which makes it possible to easily expand the functionality of programs by adding new types of finite elements, methods for solving systems of linear algebraic equations, parallel computations, etc.
Results. The proposed approach was implemented in software as a class library in C ++. A number of computational experiments have been carried out, which have confirmed its efficiency in solving practical problems.
Conclusions. The developed approach can be used both to create general-purpose finite element analysis systems with an open architecture, and to implement specialized software packages focused on solving specific classes of problems (fracture mechanics, elastomers, contact interaction, etc.).
Zienkiewicz O. C., Taylor R. L., Zhu J. Z. The Finite Element Method: Its Basis and Fundamentals. Sixth edition. Oxford, Butterworth-Heinemann, 2016, 753 p. DOI: 10.1002/nme.1760
Madenci E., Guven I. The Finite Element Method and Applications in Engineering Using ANSYS®. Boston, Springer, 2015, 651 p. DOI: 10.1007/978-1-4899-7550-8
Zimmerman W. Multiphysics Modeling with Finite Element Methods. Singapore, World Scientific, 2006, 432 p. DOI: 10.1142/6141
MSC Nastran – Multidisciplinary Structural Analysis. [Electronic resource]. Access mode: https://www.mscsoftware.com/product/msc-nastran
Top Finite Element Analysis (FEA) Software: List, Reviews, Comparison & Price | TEC. [Electronic resource]. Access mode: https://www3.technologyevaluation.com/sd/category/finiteelement-analysis-fea
FreeFEM – An open-source PDE Solver using The Finite Element Method: [Electronic resource]. Access mode: https://freefem.org/
GetFEM Homepage – GetFEM. [Electronic resource]. Access mode: http://getfem.org/
OpenCAD The Programmers Solid 3D CAD Modeller. [Electronic resource]. Access mode: https://www.openscad.org/
The dial.II Finite Element Library. [Electronic resource]. Access mode: https://www.dealii.org/
Netgen/NGSolve. [Electronic resource]. Access mode: https://ngsolve.org/
Stepanov A. A., Rose D. E. From Mathematics to Generic Programming. Crawfordsville, Addison-Wesley, 2014, 292 p.
Meyers S. Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 / S. Sebastopol, O’Reilly, 2017, 316 p.
Galowicz J. C++17 STL Cookbook. Birmingham, Packt Publishing Ltd, 2017, 504 p.
Vandevoorde D., Josuttis N. M., Gregor D. C++ Templates: The Complete Guide. Boston, Addison-Wesley, 2017, 788 p.
Bittencourt M. L. Using C++ templates to implement finite element classes, Engineering Computation, 2000, Vol. 17(7), pp. 775–788. DOI: 10.1108/02644400010352243
Bangerth W. Using Modern Features of C++ for Adaptive Finite Element Methods: Dimension-Independent Programming in deal.II, Proceedings of the 16th IMACS World Congress, 2000, [Electronic resource], Access mode: https://www.dealii.org/7.3.0/
Gurin A. , Baykin A., Polyansky T. et al. FEMEngine: finite element method C++ code based on functional and template metaprogramming, IEEE Conference Proceedings, 2019, Vol. 2019, pp. 92–96. DOI: 10.1109/ISPRAS47671.2019.00020
Plagne L., Hülsemann F. Parallel expression template for large vectors, Conference: Workshop on Parallel/High-Performance Object-Oriented Scientific, 2009, [Electronic resource], Access mode: https://www.researchgate.net/publication/228965935_Parallel_e xpression_template_for_large_vectors DOI: 10.1145/1595655.1595663
Schöberl J. C++11 Implementation of Finite Elements in NGSolve, ASC Report, 2014, No. 30. [Electronic resource]. Access mode: https://www.asc.tuwien.ac.at/~schoeberl/wiki/publications/ngscpp11.pdf
Rupp К. Increased efficiency in finite element computations through template metaprogramming, Conference: Proceedings of the 2010 Spring Simulation Multiconference. 2010, [Electronic resource]. Access mode: https://www.iue.tuwien.ac.at/pdf/ib_2010/CP2010_Rupp_2.pdf DOI: 10.1145/1878537.1878633
Cirak F., Cummings J. C. Generic programming techniques for parallelizing and extending procedural finite element programs, Engineering with Computers, 2008. [Electronic resource]. Access mode: https://www.researchgate.net/publication/220677624_Generic_ programming_techniques_for_parallelizing_and_extending_procedural_ finite_element_programs DOI: 10.1007/s00366-007-0058-x
Bastian P., Heimann F., Marnach S. Generic implementation of finite element methods in the Distributed and Unified Numerics Environment (DUNE), Kybernetika, 2010, Vol. 46, pp. 294– 315.
The Simple FEM Solver. [Electronic resource]. Access mode: https://github.com/SeregaGomen/QFEM
Timoshenko S., Woinowsky-Krieger S. Theory of plates and Shells. Singapore, McGraw-Hill, Inc., 1964, 594 p.
How to Cite
Copyright (c) 2021 С. В. Чопоров, М. С. Игнатченко, А. В. Кудин, А. Г. Кривохата, С. И. Гоменюк
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Creative Commons Licensing Notifications in the Copyright Notices
The journal allows the authors to hold the copyright without restrictions and to retain publishing rights without restrictions.
The journal allows readers to read, download, copy, distribute, print, search, or link to the full texts of its articles.
The journal allows to reuse and remixing of its content, in accordance with a Creative Commons license СС BY -SA.
Authors who publish with this journal agree to the following terms:
Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License CC BY-SA that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal.
Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal.
Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work.