From c3051c1b6f50e251455af17373a6a4f692c145b5 Mon Sep 17 00:00:00 2001 From: kanschat Date: Sun, 17 Oct 2010 19:40:44 +0000 Subject: [PATCH] add documentation on local integrators to be continued later git-svn-id: https://svn.dealii.org/trunk@22354 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/integrators/laplace.h | 42 ++++++++++++++ .../include/integrators/local_integrators.h | 58 +++++++++++++++++++ deal.II/doc/doxygen/headers/glossary.h | 5 +- deal.II/doc/doxygen/headers/integrators.h | 49 ++++++++++++++++ deal.II/doc/doxygen/headers/mesh_worker.h | 2 + 5 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 deal.II/deal.II/include/integrators/laplace.h create mode 100644 deal.II/deal.II/include/integrators/local_integrators.h create mode 100644 deal.II/doc/doxygen/headers/integrators.h diff --git a/deal.II/deal.II/include/integrators/laplace.h b/deal.II/deal.II/include/integrators/laplace.h new file mode 100644 index 0000000000..1863ab5713 --- /dev/null +++ b/deal.II/deal.II/include/integrators/laplace.h @@ -0,0 +1,42 @@ +//--------------------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2010 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//--------------------------------------------------------------------------- +#ifndef __deal2__integrators_laplace_h +#define __deal2__integrators_laplace_h + + +#include +#include +#include +#include +#include +#include + +DEAL_II_NAMESPACE_OPEN + +namespace LocalIntegrators +{ +/** + * @brief Local integrators related to the Laplacian and its DG formulations + * + * @author Guido Kanschat + * @date 2010 + */ + namespace Laplace + { + } +} + + +DEAL_II_NAMESPACE_CLOSE + +#endif diff --git a/deal.II/deal.II/include/integrators/local_integrators.h b/deal.II/deal.II/include/integrators/local_integrators.h new file mode 100644 index 0000000000..da70499a8b --- /dev/null +++ b/deal.II/deal.II/include/integrators/local_integrators.h @@ -0,0 +1,58 @@ +//--------------------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2010 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//--------------------------------------------------------------------------- +#ifndef __deal2__integrators_local_integrators_h +#define __deal2__integrators_local_integrators_h + +// This file only provides definition and documentation of the +// namespace LocalIntegrators. There is no necessity to include it +// anywhere in a C++ code. Only doxygen will make use of it. + +#include + +DEAL_II_NAMESPACE_OPEN + + +/** + * @brief Library of integrals over cells and faces + * + * This namespace contains application specific local integrals for + * bilinear forms, forms and error estimates. It is a collection of + * functions organized into namespaces devoted to certain + * applications. For instance, the namespace Laplace contains + * functions for computing cell matrices and cell residuals for the + * Laplacian operator, as well as functions for the weak boundary + * conditions by Nitsche or the interior penalty discontinuous + * Galerkin method. The namespace Maxwell would do the same for + * curl-curl type problems. + * + * There is a namespace Differential containing general + * first order differential operators like divergence, gradient and + * curl, and their traces on faces. + * + * The namespace L2 contains functions for mass matrices and + * L2-inner products. + * + *

Signature of functions

+ * + * Functions in this namespace follow a generic signature. In the + * simplest case, you have two related functions + * \begin{code} + * \end{code} + */ +namespace LocalIntegrators +{ +} + +DEAL_II_NAMESPACE_CLOSE + +#endif diff --git a/deal.II/doc/doxygen/headers/glossary.h b/deal.II/doc/doxygen/headers/glossary.h index 20b4557775..d1a395fae5 100644 --- a/deal.II/doc/doxygen/headers/glossary.h +++ b/deal.II/doc/doxygen/headers/glossary.h @@ -116,8 +116,9 @@ * * For the purpose of a discretization, blocks are the better concept to use * since it is not always possible to address individual components of a - * solution. This is, in particular, the case for non-@ref GlossPrimitive - * "primitive" elements. Take for instance the solution of the mixed Laplacian + * solution. This is, in particular, the case for non-@ref + * GlossPrimitive "primitive" + * elements. Take for instance the solution of the mixed Laplacian * system with the FE_RaviartThomas element (see step-20). There, the first * dim components are the directional velocities. Since the shape * functions are linear combinations of those, these dim components diff --git a/deal.II/doc/doxygen/headers/integrators.h b/deal.II/doc/doxygen/headers/integrators.h new file mode 100644 index 0000000000..11f44a925a --- /dev/null +++ b/deal.II/doc/doxygen/headers/integrators.h @@ -0,0 +1,49 @@ +//------------------------------------------------------------------------- +// $Id$ +// Version: $Name$ +// +// Copyright (C) 2010 by the deal.II authors +// +// This file is subject to QPL and may not be distributed +// without copyright and license information. Please refer +// to the file deal.II/doc/license.html for the text and +// further information on this license. +// +//------------------------------------------------------------------------- + +/** + * @defgroup Integrators + * + * A collection of namespaces and functions which simplify the coding + * of forms and bilinear forms on finite element spaces. + * + *

Integration on finite element meshes

+ * + * When we integrate a function or a functional on a finite element + * space, the structure of the integration loop is always the same. We + * have between 3 and 5 nested loops, from outside to inside: + *
    + *
  1. Loop over all cells + *
  2. Optionally, loop over all faces to compute fluxes + *
  3. Loop over all quadrature points of the cell/face + *
  4. Optionally, loop over all test functions to compute forms + *
  5. Optionally, loop over all trial functions to compute bilinear + * forms + *
+ * + * These loops naturally fall into two classes, namely the computation + * of cell and face contributions (loops 3 to 5), and the outer loops + * over the mesh objects, often referred to as assembling. + * + * Support for the outer loop in deal.II can be found in the namespace + * MeshWorker (see the documentation there). In order to support the + * cell and face contributions (referred to as local contributions + * from now on), deal.II offers FEValuesBase and its derived + * classes. While the outer loop is generic (with exception of the + * data types), the computation of local contributions is problem + * dependent. Therefore, no generic algorithm is possible + * here. Nevertheless, we can define a generic interface for functions + * for this purpose and provide a library of local integrators for use + * in applications. These are collected in the namespace + * LocalIntegrators + */ diff --git a/deal.II/doc/doxygen/headers/mesh_worker.h b/deal.II/doc/doxygen/headers/mesh_worker.h index 76cd8bbf93..c23e4d46fd 100644 --- a/deal.II/doc/doxygen/headers/mesh_worker.h +++ b/deal.II/doc/doxygen/headers/mesh_worker.h @@ -19,4 +19,6 @@ * loops over all cells and faces. * All classes and functions of this module are in the MeshWorker * namespace, which also contains documentation on the usage. + * + * @ingroup Integrators */ -- 2.39.5