From: Wolfgang Bangerth Date: Fri, 24 Feb 2006 16:41:54 +0000 (+0000) Subject: Make the conversion (tensor product) constructor of Quadrature explicit, to avoid... X-Git-Tag: v8.0.0~12187 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4c355bbe6b762339ffde3780f13116ddb693d6cc;p=dealii.git Make the conversion (tensor product) constructor of Quadrature explicit, to avoid funny surprises that for example it is allowed to assign a Quadrature<1> to a QCollection<3>. git-svn-id: https://svn.dealii.org/trunk@12495 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/base/include/base/quadrature.h b/deal.II/base/include/base/quadrature.h index ad317fe994..513f084053 100644 --- a/deal.II/base/include/base/quadrature.h +++ b/deal.II/base/include/base/quadrature.h @@ -122,13 +122,26 @@ class Quadrature : public Subscriptor * one dimension. * * Assuming that the points in - * the on-dimensional rule are in + * the one-dimensional rule are in * ascending order, the points of * the resulting rule are ordered * lexicographically with * x running fastest. + * + * In order to avoid a conflict + * with the copy constructor in + * 1d, we let the argument be a + * 0d quadrature formula for + * dim==1, and a 1d quadrature + * formula for all other space + * dimensions. */ - Quadrature (const Quadrature<1> &); + explicit Quadrature (const Quadrature &quadrature_1d); + + /** + * Copy constructor. + */ + Quadrature (const Quadrature &q); /** * Construct a quadrature formula @@ -330,9 +343,14 @@ Quadrature<0>::Quadrature (const Quadrature<-1> &, const Quadrature<1> &); template <> Quadrature<0>::~Quadrature (); + template <> Quadrature<1>::Quadrature (const Quadrature<0> &, const Quadrature<1> &); + +template <> +Quadrature<1>::Quadrature (const Quadrature<0> &); + template <> const Point<0> & Quadrature<0>::point (const unsigned int) const; template <> diff --git a/deal.II/base/source/quadrature.cc b/deal.II/base/source/quadrature.cc index 63d4e677e7..dbc6011ccb 100644 --- a/deal.II/base/source/quadrature.cc +++ b/deal.II/base/source/quadrature.cc @@ -155,8 +155,24 @@ Quadrature::Quadrature (const SubQuadrature &q1, +template <> +Quadrature<1>::Quadrature (const Quadrature<0> &) + : + Subscriptor(), + n_quadrature_points (deal_II_numbers::invalid_unsigned_int), + quadrature_points (), + weights () +{ + // this function should never be + // called -- this should be the + // copy constructor in 1d... + Assert (false, ExcInternalError()); +} + + + template -Quadrature::Quadrature (const Quadrature<1> &q) +Quadrature::Quadrature (const Quadrature &q) : Subscriptor(), n_quadrature_points (dimpow(q.n_quadrature_points)), @@ -190,6 +206,17 @@ Quadrature::Quadrature (const Quadrature<1> &q) +template +Quadrature::Quadrature (const Quadrature &q) + : + Subscriptor(), + n_quadrature_points (q.n_quadrature_points), + quadrature_points (q.quadrature_points), + weights (q.weights) +{} + + + template Quadrature::~Quadrature () {}