FINGER: A Symbolic System for Automatic Generation of Numerical Programs in Finite Element Analysis
Journal of Symbolic Computation
Spectral methods on triangles and other domains
Journal of Scientific Computing
A Heuristic Program that Solves Symbolic Integration Problems in Freshman Calculus
Journal of the ACM (JACM)
Introduction to the GiNaC framework for symbolic computation within the C++ programming language
Journal of Symbolic Computation
IEEE Transactions on Knowledge and Data Engineering
Algorithm 839: FIAT, a new paradigm for computing finite element basis functions
ACM Transactions on Mathematical Software (TOMS)
Topological Optimization of the Evaluation of Finite Element Matrices
SIAM Journal on Scientific Computing
A compiler for variational forms
ACM Transactions on Mathematical Software (TOMS)
deal.II—A general-purpose object-oriented finite element library
ACM Transactions on Mathematical Software (TOMS)
Geometric Optimization of the Evaluation of Finite Element Matrices
SIAM Journal on Scientific Computing
On the efficiency of symbolic computations combined with code generation for finite element methods
ACM Transactions on Mathematical Software (TOMS)
ACM Transactions on Mathematical Software (TOMS)
Unified framework for finite element assembly
International Journal of Computational Science and Engineering
Combinatorial Optimization of Matrix-Vector Multiplication in Finite Element Assembly
SIAM Journal on Scientific Computing
Optimizing Polynomial Expressions by Algebraic Factorization and Common Subexpression Elimination
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
Hi-index | 0.00 |
Automated code generators for finite element local assembly have facilitated exploration of alternative implementation strategies within generated code. However, even for a theoretical performance indicator such as operation count, an optimal strategy for local assembly is unknown. We explore a code generation strategy based on symbolic integration and polynomial common subexpression elimination (CSE). We present our implementation of a local assembly code generator using these techniques. We systematically evaluate the approach, measuring operation count, execution time and numerical error using a benchmark suite of synthetic variational forms, comparing against the FEniCS Form Compiler (FFC). Our benchmark forms span complexities chosen to expose the performance characteristics of different code generation approaches. We show that it is possible with additional computational cost, to consistently achieve much of, and sometimes substantially exceed, the performance of alternative approaches without compromising precision. Although the approach of using symbolic integration and CSE for optimizing local assembly is not new, we distinguish our work through our strategies for maintaining numerical precision and detecting common subexpressions. We discuss the benefits of the symbolic approach for inferring numerical relationships, and analyze the relationship to other proposed techniques which also have greater computational complexity than those of FFC.