From f4f28303e7b940e7d7ebcd3d5fb25b35d0dbd7e3 Mon Sep 17 00:00:00 2001 From: Jean-Paul Pelteret Date: Thu, 24 Aug 2017 11:08:39 +0200 Subject: [PATCH] Update FEValues::internal::do_function_* to use std::decay --- source/fe/fe_values.cc | 74 ++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/source/fe/fe_values.cc b/source/fe/fe_values.cc index f36d21b3eb..92bcd8dfe6 100644 --- a/source/fe/fe_values.cc +++ b/source/fe/fe_values.cc @@ -38,6 +38,7 @@ #include #include +#include #include @@ -461,21 +462,21 @@ namespace FEValuesViews do_function_values (const ArrayView &dof_values, const Table<2,double> &shape_values, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector::type,double>::type> &values) + std::vector::type,double>::type> &values) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? shape_values.n_cols() : values.size(); AssertDimension (values.size(), n_quadrature_points); - std::fill (values.begin(), values.end(), Number()); + std::fill (values.begin(), values.end(), dealii::internal::NumberType::type>::value(0.0)); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; const double *shape_value_ptr = @@ -494,7 +495,7 @@ namespace FEValuesViews do_function_derivatives (const ArrayView &dof_values, const Table<2,dealii::Tensor > &shape_derivatives, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &derivatives) + std::vector::type,dealii::Tensor >::type> &derivatives) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? @@ -502,14 +503,14 @@ namespace FEValuesViews AssertDimension (derivatives.size(), n_quadrature_points); std::fill (derivatives.begin(), derivatives.end(), - typename ProductType >::type()); + typename ProductType::type,dealii::Tensor >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; const dealii::Tensor *shape_derivative_ptr = @@ -542,7 +543,7 @@ namespace FEValuesViews if (shape_function_data[shape_function].is_nonzero_shape_function_component) { const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; const dealii::Tensor<2,spacedim> *shape_hessian_ptr = @@ -560,14 +561,14 @@ namespace FEValuesViews void do_function_values (const ArrayView &dof_values, const Table<2,double> &shape_values, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &values) + std::vector::type,dealii::Tensor<1,spacedim> >::type> &values) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? shape_values.n_cols() : values.size(); AssertDimension (values.size(), n_quadrature_points); - std::fill (values.begin(), values.end(), typename ProductType >::type()); + std::fill (values.begin(), values.end(), typename ProductType::type,dealii::Tensor<1,spacedim> >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; if (snc != -1) @@ -609,7 +610,7 @@ namespace FEValuesViews do_function_derivatives (const ArrayView &dof_values, const Table<2,dealii::Tensor > &shape_derivatives, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &derivatives) + std::vector::type,dealii::Tensor >::type> &derivatives) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? @@ -617,7 +618,7 @@ namespace FEValuesViews AssertDimension (derivatives.size(), n_quadrature_points); std::fill (derivatives.begin(), derivatives.end(), - typename ProductType >::type()); + typename ProductType::type,dealii::Tensor >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; if (snc != -1) @@ -663,7 +664,7 @@ namespace FEValuesViews do_function_symmetric_gradients (const ArrayView &dof_values, const Table<2,dealii::Tensor<1,spacedim> > &shape_gradients, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &symmetric_gradients) + std::vector::type,dealii::SymmetricTensor<2,spacedim> >::type> &symmetric_gradients) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? @@ -671,7 +672,7 @@ namespace FEValuesViews AssertDimension (symmetric_gradients.size(), n_quadrature_points); std::fill (symmetric_gradients.begin(), symmetric_gradients.end(), - typename ProductType >::type()); + typename ProductType::type,dealii::SymmetricTensor<2,spacedim> >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; if (snc != -1) @@ -736,7 +737,7 @@ namespace FEValuesViews continue; const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -767,14 +768,15 @@ namespace FEValuesViews do_function_curls (const ArrayView &dof_values, const Table<2,dealii::Tensor<1,spacedim> > &shape_gradients, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector::type>::type> &curls) + std::vector::type,typename dealii::internal::CurlType::type>::type> &curls) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? shape_gradients[0].size() : curls.size(); AssertDimension (curls.size(), n_quadrature_points); - std::fill (curls.begin(), curls.end(), typename ProductType::type>::type()); + std::fill (curls.begin(), curls.end(), + typename ProductType::type,typename dealii::internal::CurlType::type>::type()); switch (spacedim) { @@ -797,7 +799,7 @@ namespace FEValuesViews const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -857,7 +859,7 @@ namespace FEValuesViews const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -979,7 +981,7 @@ namespace FEValuesViews continue; const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -1013,7 +1015,7 @@ namespace FEValuesViews do_function_values (const ArrayView &dof_values, const dealii::Table<2,double> &shape_values, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &values) + std::vector::type,dealii::SymmetricTensor<2,spacedim> >::type> &values) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? @@ -1021,7 +1023,7 @@ namespace FEValuesViews AssertDimension (values.size(), n_quadrature_points); std::fill (values.begin(), values.end(), - typename ProductType >::type()); + typename ProductType::type,dealii::SymmetricTensor<2,spacedim> >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; if (snc != -1) @@ -1087,7 +1089,7 @@ namespace FEValuesViews continue; const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -1155,7 +1157,7 @@ namespace FEValuesViews do_function_values (const ArrayView &dof_values, const dealii::Table<2,double> &shape_values, const std::vector::ShapeFunctionData> &shape_function_data, - std::vector >::type> &values) + std::vector::type,dealii::Tensor<2,spacedim> >::type> &values) { const unsigned int dofs_per_cell = dof_values.size(); const unsigned int n_quadrature_points = dofs_per_cell > 0 ? @@ -1163,7 +1165,7 @@ namespace FEValuesViews AssertDimension (values.size(), n_quadrature_points); std::fill (values.begin(), values.end(), - typename ProductType >::type()); + typename ProductType::type,dealii::Tensor<2,spacedim> >::type()); for (unsigned int shape_function=0; shape_function::type>::value(0.0)) continue; if (snc != -1) @@ -1231,7 +1233,7 @@ namespace FEValuesViews continue; const Number &value = dof_values[shape_function]; - if (value == Number()) + if (value == dealii::internal::NumberType::type>::value(0.0)) continue; if (snc != -1) @@ -2672,7 +2674,7 @@ namespace internal AssertDimension(values.size(), n_quadrature_points); // initialize with zero - std::fill_n (values.begin(), n_quadrature_points, Number()); + std::fill_n (values.begin(), n_quadrature_points, dealii::internal::NumberType::type>::value(0.0)); // add up contributions of trial functions. note that here we deal with // scalar finite elements, so no need to check for non-primitivity of @@ -2740,7 +2742,7 @@ namespace internal for (unsigned int shape_func=0; shape_func::type>::value(0.0)) continue; if (fe.is_primitive(shape_func)) @@ -2815,7 +2817,7 @@ namespace internal for (unsigned int shape_func=0; shape_func::type>::value(0.0)) continue; const Tensor *shape_derivative_ptr @@ -2874,7 +2876,7 @@ namespace internal for (unsigned int shape_func=0; shape_func::type>::value(0.0)) continue; if (fe.is_primitive(shape_func)) @@ -2934,7 +2936,7 @@ namespace internal AssertDimension(laplacians.size(), n_quadrature_points); // initialize with zero - std::fill_n (laplacians.begin(), n_quadrature_points, Number()); + std::fill_n (laplacians.begin(), n_quadrature_points, dealii::internal::NumberType::type>::value(0.0)); // add up contributions of trial functions. note that here we deal with // scalar finite elements and also note that the Laplacian is @@ -3000,7 +3002,7 @@ namespace internal for (unsigned int shape_func=0; shape_func::type>::value(0.0)) continue; if (fe.is_primitive(shape_func)) -- 2.39.5