From 05212a2e8cf6ebf697936e9da75138ba36552d75 Mon Sep 17 00:00:00 2001 From: hartmann Date: Wed, 7 Mar 2001 11:05:23 +0000 Subject: [PATCH] TensorProductPolynomials keep their own copy of Polynomials. git-svn-id: https://svn.dealii.org/trunk@4139 0785d39b-7218-0410-832d-ea1e28bc413d --- .../include/base/tensor_product_polynomials.h | 23 +++++++++++++++---- .../base/source/tensor_product_polynomials.cc | 18 ++++----------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/deal.II/base/include/base/tensor_product_polynomials.h b/deal.II/base/include/base/tensor_product_polynomials.h index 2f7283f8e9..3f091d8807 100644 --- a/deal.II/base/include/base/tensor_product_polynomials.h +++ b/deal.II/base/include/base/tensor_product_polynomials.h @@ -43,7 +43,8 @@ class TensorProductPolynomials * and will be copied into the * member variable @p{polynomials}. */ - TensorProductPolynomials(const std::vector > > &pols); + template + TensorProductPolynomials(const std::vector &pols); /** * Calculates the polynomials @@ -78,10 +79,11 @@ class TensorProductPolynomials private: /** - * Pointer to the @p{polynomials} - * given to the constructor. + * Copy of the vector @p{pols} of + * polynomials given to the + * constructor. */ - std::vector > > polynomials; + std::vector > polynomials; /** * Number of tensor product @@ -89,10 +91,23 @@ class TensorProductPolynomials * polynomials this is $n^dim$. */ const unsigned int n_tensor_pols; + + + static unsigned int power(const unsigned int x, const unsigned int y); }; +template +template +TensorProductPolynomials::TensorProductPolynomials( + const std::vector &pols): + polynomials (pols.begin(), pols.end()), + n_tensor_pols(power(pols.size(), dim)) +{} + + + #endif diff --git a/deal.II/base/source/tensor_product_polynomials.cc b/deal.II/base/source/tensor_product_polynomials.cc index 4bb827db8e..67443cb4dc 100644 --- a/deal.II/base/source/tensor_product_polynomials.cc +++ b/deal.II/base/source/tensor_product_polynomials.cc @@ -17,25 +17,17 @@ -template static -number power(number x, unsigned int y) +template +unsigned int TensorProductPolynomials::power(const unsigned int x, + const unsigned int y) { - number value=1; + unsigned int value=1; for (unsigned int i=0; i -TensorProductPolynomials::TensorProductPolynomials( - const std::vector > > &pols): - polynomials(pols), - n_tensor_pols(power(polynomials.size(), dim)) -{} - - template void TensorProductPolynomials::compute( const Point &p, @@ -83,7 +75,7 @@ void TensorProductPolynomials::compute( std::vector > &v_d=v[d]; Assert(v_d.size()==n_pols, ExcInternalError()); for (unsigned int i=0; ivalue(p(d), v_d[i]); + polynomials[i].value(p(d), v_d[i]); } if (update_values) -- 2.39.5