From: wolf Date: Tue, 18 May 1999 11:43:32 +0000 (+0000) Subject: Do some things about quadrature formulae in 0d, which does not make much sense but... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a328c933138f9fe0a6254dd72eb8f28a15ee3369;p=dealii-svn.git Do some things about quadrature formulae in 0d, which does not make much sense but enables writing programs with less preprocessor 'if deal_II_dimension ...' statements. The introduced functions for quadrature formulae in 0d all throw exceptions if called, apart from con/destructors. git-svn-id: https://svn.dealii.org/trunk@1337 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/base/include/base/quadrature.h b/deal.II/base/include/base/quadrature.h index 5d5e969950..5c78399d41 100644 --- a/deal.II/base/include/base/quadrature.h +++ b/deal.II/base/include/base/quadrature.h @@ -32,6 +32,16 @@ * one in one dimension. There is a special constructor to generate a * quadrature formula from two others. * + * + * For some programs it is necessary to have a quadrature object for faces. + * These programs fail to link if compiled for only one space dimension, + * since there quadrature rules for faces just don't make no sense. In + * order to allow these programs to be linked anyway, for class #Quadrature<0># + * all functions are provided in the #quadrature.cc# file, but they will + * throw exceptions if actually called. The only function which is allowed + * to be called is the constructor taking one integer, which in this case + * ignores its parameter, and of course the destructor. + * * @author Wolfgang Bangerth, 1998 */ template diff --git a/deal.II/base/include/base/tensor_base.h b/deal.II/base/include/base/tensor_base.h index 53724c43c4..d253ac37e7 100644 --- a/deal.II/base/include/base/tensor_base.h +++ b/deal.II/base/include/base/tensor_base.h @@ -227,7 +227,7 @@ Tensor<1,dim>::Tensor (const bool initialize) { Assert (dim>0, ExcDimTooSmall(dim)); if (initialize) - for (unsigned int i=0; i +template <> +Quadrature<0>::Quadrature (const unsigned int) +{}; + + + template Quadrature::Quadrature (const unsigned int n_q) : n_quadrature_points(n_q), @@ -12,6 +18,14 @@ Quadrature::Quadrature (const unsigned int n_q) : weights (n_q, 0) {}; +// template <> +// Quadrature<0>::Quadrature (const Quadrature<-1> &, +// const Quadrature<1> &) { +// Assert (false, ExcInternalError()); +// }; + + + template <> Quadrature<1>::Quadrature (const Quadrature<0> &, const Quadrature<1> &) { @@ -64,6 +78,15 @@ Quadrature::~Quadrature () {}; +template <> +const Point<0> & Quadrature<0>::quad_point (const unsigned int) const { + Assert (false, ExcInternalError()); + static const Point<0> dummy; + return dummy; +}; + + + template const Point & Quadrature::quad_point (const unsigned int i) const { Assert (i & Quadrature::quad_point (const unsigned int i) const { +template <> +const vector > & Quadrature<0>::get_quad_points () const { + Assert (false, ExcInternalError()); + return quadrature_points; +}; + + + template const vector > & Quadrature::get_quad_points () const { return quadrature_points; @@ -79,6 +110,14 @@ const vector > & Quadrature::get_quad_points () const { +template <> +double Quadrature<0>::weight (const unsigned int) const { + Assert (false, ExcInternalError()); + return 0; +}; + + + template double Quadrature::weight (const unsigned int i) const { Assert (i & Quadrature::get_weights () const { +template <> +const vector & Quadrature<0>::get_weights () const { + Assert (false, ExcInternalError()); + return weights; +}; + + + template <> void QProjector<2>::project_to_face (const Quadrature<1> &quadrature, const unsigned int face_no,