21 research outputs found
Efficient Compilation of a Class of Variational Forms
We investigate the compilation of general multilinear variational forms over
affines simplices and prove a representation theorem for the representation of
the element tensor (element stiffness matrix) as the contraction of a constant
reference tensor and a geometry tensor that accounts for geometry and variable
coefficients. Based on this representation theorem, we design an algorithm for
efficient pretabulation of the reference tensor. The new algorithm has been
implemented in the FEniCS Form Compiler (FFC) and improves on a previous
loop-based implementation by several orders of magnitude, thus shortening
compile-times and development cycles for users of FFC.Comment: ACM Transactions on Mathematical Software 33(3), 20 pages (2007
Automated code generation for discontinuous Galerkin methods
A compiler approach for generating low-level computer code from high-level
input for discontinuous Galerkin finite element forms is presented. The input
language mirrors conventional mathematical notation, and the compiler generates
efficient code in a standard programming language. This facilitates the rapid
generation of efficient code for general equations in varying spatial
dimensions. Key concepts underlying the compiler approach and the automated
generation of computer code are elaborated. The approach is demonstrated for a
range of common problems, including the Poisson, biharmonic,
advection--diffusion and Stokes equations
Recommended from our members
Representations of finite element tensors via automated code generation
We examine aspects of the computation of finite element matrices and vectors which are made possible by automated code generation. Given a variational form in a syntax which resembles standard mathematical notation, the low-level computer code for building finite element tensors, typically matrices, vectors and scalars, can be generated automatically via a form compiler. In particular, the generation of code for computing finite element matrices using a quadrature approach is addressed. For quadrature representations, a number of optimisation strategies which are made possible by automated code generation are presented. The relative performance of two different automatically generated representations of finite element matrices is examined, with a particular emphasis on complicated variational forms. It is shown that approaches which perform best for simple forms are not tractable for more complicated problems in terms of run time performance, the time required to generate the code or the size of the generated code. The approach and optimisations elaborated here are effective for a range of variational forms
Recommended from our members
Optimisations for quadrature representations of finite element tensors through automated code generation
We examine aspects of the computation of finite element matrices and vectors
which are made possible by automated code generation. Given a variational form
in a syntax which resembles standard mathematical notation, the low-level
computer code for building finite element tensors, typically matrices, vectors
and scalars, can be generated automatically via a form compiler. In particular,
the generation of code for computing finite element matrices using a quadrature
approach is addressed. For quadrature representations, a number of optimisation
strategies which are made possible by automated code generation are presented.
The relative performance of two different automatically generated
representations of finite element matrices is examined, with a particular
emphasis on complicated variational forms. It is shown that approaches which
perform best for simple forms are not tractable for more complicated problems
in terms of run time performance, the time required to generate the code or the
size of the generated code. The approach and optimisations elaborated here are
effective for a range of variational forms
Unified Framework for Finite Element Assembly
At the heart of any finite element simulation is the assembly of matrices and
vectors from discrete variational forms. We propose a general interface between
problem-specific and general-purpose components of finite element programs.
This interface is called Unified Form-assembly Code (UFC). A wide range of
finite element problems is covered, including mixed finite elements and
discontinuous Galerkin methods. We discuss how the UFC interface enables
implementations of variational form evaluation to be independent of mesh and
linear algebra components. UFC does not depend on any external libraries, and
is released into the public domain
Algorithms and Data Structures for Multi-Adaptive Time-Stepping
Multi-adaptive Galerkin methods are extensions of the standard continuous and
discontinuous Galerkin methods for the numerical solution of initial value
problems for ordinary or partial differential equations. In particular, the
multi-adaptive methods allow individual and adaptive time steps to be used for
different components or in different regions of space. We present algorithms
for efficient multi-adaptive time-stepping, including the recursive
construction of time slabs and adaptive time step selection. We also present
data structures for efficient storage and interpolation of the multi-adaptive
solution. The efficiency of the proposed algorithms and data structures is
demonstrated for a series of benchmark problems.Comment: ACM Transactions on Mathematical Software 35(3), 24 pages (2008
DOLFIN: Automated Finite Element Computing
We describe here a library aimed at automating the solution of partial differential equations using the finite element method. By employing novel techniques for automated code generation, the library combines a high level of expressiveness with efficient computation. Finite element variational forms may be expressed in near mathematical notation, from which low-level code is automatically generated, compiled and seamlessly integrated with efficient implementations of
computational meshes and high-performance linear algebra. Easy-to-use object-oriented interfaces to the library are provided in the form of a C++ library and a Python module. This paper discusses the mathematical abstractions and methods used in the design of the library and its implementation. A number of examples are presented to demonstrate the use of the library in application code