From 65fee7713ca8aa62538cef3cb33479925727b2fc Mon Sep 17 00:00:00 2001 From: kronbichler Date: Tue, 10 Mar 2009 14:53:36 +0000 Subject: [PATCH] Fixed a problem with a system of FE_RT when using CellSimilarity. Changed the calling of CellSimilarity slightly. Now all the regression tests pass (except rounding differences). git-svn-id: https://svn.dealii.org/trunk@18473 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/deal.II/include/fe/fe.h | 4 +- .../deal.II/include/fe/fe_dgp_nonparametric.h | 4 +- deal.II/deal.II/include/fe/fe_nedelec.h | 4 +- deal.II/deal.II/include/fe/fe_poly.h | 4 +- .../deal.II/include/fe/fe_poly.templates.h | 48 +++++++++---------- deal.II/deal.II/include/fe/fe_poly_tensor.h | 20 ++++---- deal.II/deal.II/include/fe/fe_system.h | 6 +-- deal.II/deal.II/include/fe/mapping.h | 4 +- .../deal.II/include/fe/mapping_cartesian.h | 4 +- deal.II/deal.II/include/fe/mapping_q.h | 4 +- deal.II/deal.II/include/fe/mapping_q1.h | 4 +- .../deal.II/include/fe/mapping_q1_eulerian.h | 4 +- .../deal.II/include/fe/mapping_q_eulerian.h | 4 +- .../deal.II/source/fe/fe_dgp_nonparametric.cc | 4 +- deal.II/deal.II/source/fe/fe_nedelec.cc | 4 +- deal.II/deal.II/source/fe/fe_poly_tensor.cc | 20 ++++++-- deal.II/deal.II/source/fe/fe_system.cc | 13 ++--- deal.II/deal.II/source/fe/fe_values.cc | 17 +++---- .../deal.II/source/fe/mapping_cartesian.cc | 4 +- deal.II/deal.II/source/fe/mapping_q.cc | 8 ++-- deal.II/deal.II/source/fe/mapping_q1.cc | 6 +-- .../deal.II/source/fe/mapping_q1_eulerian.cc | 10 ++-- .../deal.II/source/fe/mapping_q_eulerian.cc | 8 ++-- 23 files changed, 110 insertions(+), 98 deletions(-) diff --git a/deal.II/deal.II/include/fe/fe.h b/deal.II/deal.II/include/fe/fe.h index 7fef35499f..0d8a1a035f 100644 --- a/deal.II/deal.II/include/fe/fe.h +++ b/deal.II/deal.II/include/fe/fe.h @@ -2591,10 +2591,10 @@ class FiniteElement : public Subscriptor, fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_internal, typename Mapping::InternalDataBase &fe_internal, - FEValuesData &data) const = 0; + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const = 0; /** * Fill the fields of diff --git a/deal.II/deal.II/include/fe/fe_dgp_nonparametric.h b/deal.II/deal.II/include/fe/fe_dgp_nonparametric.h index 98b0c4f9e0..75fe93f390 100644 --- a/deal.II/deal.II/include/fe/fe_dgp_nonparametric.h +++ b/deal.II/deal.II/include/fe/fe_dgp_nonparametric.h @@ -481,10 +481,10 @@ class FE_DGPNonparametric : public FiniteElement fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_internal, typename Mapping::InternalDataBase &fe_internal, - FEValuesData& data) const; + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Implementation of the same diff --git a/deal.II/deal.II/include/fe/fe_nedelec.h b/deal.II/deal.II/include/fe/fe_nedelec.h index 5270ded777..ed790b721f 100644 --- a/deal.II/deal.II/include/fe/fe_nedelec.h +++ b/deal.II/deal.II/include/fe/fe_nedelec.h @@ -415,10 +415,10 @@ class FE_Nedelec : public FiniteElement fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_internal, typename Mapping::InternalDataBase &fe_internal, - FEValuesData& data) const; + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Implementation of the same diff --git a/deal.II/deal.II/include/fe/fe_poly.h b/deal.II/deal.II/include/fe/fe_poly.h index c014e6819a..a8f4228660 100644 --- a/deal.II/deal.II/include/fe/fe_poly.h +++ b/deal.II/deal.II/include/fe/fe_poly.h @@ -221,10 +221,10 @@ class FE_Poly : public FiniteElement fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_internal, typename Mapping::InternalDataBase &fe_internal, - FEValuesData& data) const; + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const; virtual void fill_fe_face_values (const Mapping &mapping, diff --git a/deal.II/deal.II/include/fe/fe_poly.templates.h b/deal.II/deal.II/include/fe/fe_poly.templates.h index 9f979ba926..d99571c016 100644 --- a/deal.II/deal.II/include/fe/fe_poly.templates.h +++ b/deal.II/deal.II/include/fe/fe_poly.templates.h @@ -239,13 +239,13 @@ template <> inline void FE_Poly,1,2>::fill_fe_values - (const Mapping<1,2> &mapping, + (const Mapping<1,2> &mapping, const Triangulation<1,2>::cell_iterator &/*cell*/, const Quadrature<1> &quadrature, - const enum CellSimilarity::Similarity cell_similarity, Mapping<1,2>::InternalDataBase &mapping_data, Mapping<1,2>::InternalDataBase &fedata, - FEValuesData<1,2> &data) const + FEValuesData<1,2> &data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with @@ -282,13 +282,13 @@ template <> inline void FE_Poly,2,3>::fill_fe_values - (const Mapping<2,3> &mapping, + (const Mapping<2,3> &mapping, const Triangulation<2,3>::cell_iterator &/* cell */, - const Quadrature<2> &quadrature, - const enum CellSimilarity::Similarity cell_similarity, - Mapping<2,3>::InternalDataBase & mapping_data, - Mapping<2,3>::InternalDataBase &fedata, - FEValuesData<2,3> &data) const + const Quadrature<2> &quadrature, + Mapping<2,3>::InternalDataBase &mapping_data, + Mapping<2,3>::InternalDataBase &fedata, + FEValuesData<2,3> &data, + enum CellSimilarity::Similarity &cell_similarity) const { // assert that the following dynamics @@ -324,13 +324,13 @@ template <> inline void FE_Poly,1,2>::fill_fe_values ( - const Mapping<1,2>& mapping, - const Triangulation<1,2>::cell_iterator& /*cell*/, - const Quadrature<1>& quadrature, - const enum CellSimilarity::Similarity cell_similarity, - Mapping<1,2>::InternalDataBase& mapping_data, - Mapping<1,2>::InternalDataBase& fedata, - FEValuesData<1,2>& data) const + const Mapping<1,2> &mapping, + const Triangulation<1,2>::cell_iterator & /*cell*/, + const Quadrature<1> &quadrature, + Mapping<1,2>::InternalDataBase &mapping_data, + Mapping<1,2>::InternalDataBase &fedata, + FEValuesData<1,2> &data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with @@ -369,13 +369,13 @@ template <> inline void FE_Poly,2,3>::fill_fe_values - (const Mapping<2,3>& mapping, + (const Mapping<2,3> &mapping, const Triangulation<2,3>::cell_iterator &/* cell */, - const Quadrature<2>& quadrature, - const enum CellSimilarity::Similarity cell_similarity, - Mapping<2,3>::InternalDataBase& mapping_data, - Mapping<2,3>::InternalDataBase &fedata, - FEValuesData<2,3> &data) const + const Quadrature<2> &quadrature, + Mapping<2,3>::InternalDataBase &mapping_data, + Mapping<2,3>::InternalDataBase &fedata, + FEValuesData<2,3> &data, + enum CellSimilarity::Similarity &cell_similarity) const { Assert (dynamic_cast (&fedata) != 0, ExcInternalError()); InternalData &fe_data = static_cast (fedata); @@ -411,10 +411,10 @@ FE_Poly::fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fedata, - FEValuesData &data) const + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with diff --git a/deal.II/deal.II/include/fe/fe_poly_tensor.h b/deal.II/deal.II/include/fe/fe_poly_tensor.h index 7d641c4450..afd36801c7 100644 --- a/deal.II/deal.II/include/fe/fe_poly_tensor.h +++ b/deal.II/deal.II/include/fe/fe_poly_tensor.h @@ -234,21 +234,21 @@ class FE_PolyTensor : public FiniteElement const Quadrature& quadrature) const ; virtual void - fill_fe_values (const Mapping &mapping, + fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, - const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, - typename Mapping::InternalDataBase &mapping_internal, - typename Mapping::InternalDataBase &fe_internal, - FEValuesData& data) const; + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_internal, + typename Mapping::InternalDataBase &fe_internal, + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const; virtual void fill_fe_face_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, - const unsigned int face_no, - const Quadrature &quadrature, - typename Mapping::InternalDataBase &mapping_internal, - typename Mapping::InternalDataBase &fe_internal, + const unsigned int face_no, + const Quadrature &quadrature, + typename Mapping::InternalDataBase &mapping_internal, + typename Mapping::InternalDataBase &fe_internal, FEValuesData& data) const ; virtual void diff --git a/deal.II/deal.II/include/fe/fe_system.h b/deal.II/deal.II/include/fe/fe_system.h index 336f74e7cc..349c0ae072 100644 --- a/deal.II/deal.II/include/fe/fe_system.h +++ b/deal.II/deal.II/include/fe/fe_system.h @@ -612,10 +612,10 @@ class FESystem : public FiniteElement fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fe_data, - FEValuesData &data) const; + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Implementation of the same @@ -685,7 +685,7 @@ class FESystem : public FiniteElement const unsigned int face_no, const unsigned int sub_no, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, + enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fe_data, FEValuesData &data) const ; diff --git a/deal.II/deal.II/include/fe/mapping.h b/deal.II/deal.II/include/fe/mapping.h index 334d2bff0e..ca4b219cd2 100644 --- a/deal.II/deal.II/include/fe/mapping.h +++ b/deal.II/deal.II/include/fe/mapping.h @@ -546,14 +546,14 @@ class Mapping : public Subscriptor virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, InternalDataBase &internal, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity ) const=0; diff --git a/deal.II/deal.II/include/fe/mapping_cartesian.h b/deal.II/deal.II/include/fe/mapping_cartesian.h index 2645ad8d3f..709a830abc 100644 --- a/deal.II/deal.II/include/fe/mapping_cartesian.h +++ b/deal.II/deal.II/include/fe/mapping_cartesian.h @@ -61,14 +61,14 @@ class MappingCartesian : public Mapping virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &) const ; + std::vector > &, + enum CellSimilarity::Similarity &cell_similarity) const ; virtual void diff --git a/deal.II/deal.II/include/fe/mapping_q.h b/deal.II/deal.II/include/fe/mapping_q.h index 9ca3716412..3860fac6c4 100644 --- a/deal.II/deal.II/include/fe/mapping_q.h +++ b/deal.II/deal.II/include/fe/mapping_q.h @@ -205,14 +205,14 @@ class MappingQ : public MappingQ1 virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const ; + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const ; /** * Implementation of the interface in diff --git a/deal.II/deal.II/include/fe/mapping_q1.h b/deal.II/deal.II/include/fe/mapping_q1.h index 8a8ee2f0a6..ea81d72fd2 100644 --- a/deal.II/deal.II/include/fe/mapping_q1.h +++ b/deal.II/deal.II/include/fe/mapping_q1.h @@ -295,14 +295,14 @@ class MappingQ1 : public Mapping virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const; + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Implementation of the interface in diff --git a/deal.II/deal.II/include/fe/mapping_q1_eulerian.h b/deal.II/deal.II/include/fe/mapping_q1_eulerian.h index ff2635e7cf..4fb9edd627 100644 --- a/deal.II/deal.II/include/fe/mapping_q1_eulerian.h +++ b/deal.II/deal.II/include/fe/mapping_q1_eulerian.h @@ -152,14 +152,14 @@ class MappingQ1Eulerian : public MappingQ1 virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const; + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Reference to the vector of diff --git a/deal.II/deal.II/include/fe/mapping_q_eulerian.h b/deal.II/deal.II/include/fe/mapping_q_eulerian.h index c1c5454e63..6bb053388e 100644 --- a/deal.II/deal.II/include/fe/mapping_q_eulerian.h +++ b/deal.II/deal.II/include/fe/mapping_q_eulerian.h @@ -155,14 +155,14 @@ class MappingQEulerian : public MappingQ virtual void fill_fe_values (const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const; + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const; /** * Reference to the vector of diff --git a/deal.II/deal.II/source/fe/fe_dgp_nonparametric.cc b/deal.II/deal.II/source/fe/fe_dgp_nonparametric.cc index e80074c73a..f87013a4c4 100644 --- a/deal.II/deal.II/source/fe/fe_dgp_nonparametric.cc +++ b/deal.II/deal.II/source/fe/fe_dgp_nonparametric.cc @@ -289,10 +289,10 @@ FE_DGPNonparametric::fill_fe_values ( const Mapping&, const typename Triangulation::cell_iterator&, const Quadrature&, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase&, typename Mapping::InternalDataBase& fedata, - FEValuesData& data) const + FEValuesData&data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with diff --git a/deal.II/deal.II/source/fe/fe_nedelec.cc b/deal.II/deal.II/source/fe/fe_nedelec.cc index 75ad0b8d5a..9582125302 100644 --- a/deal.II/deal.II/source/fe/fe_nedelec.cc +++ b/deal.II/deal.II/source/fe/fe_nedelec.cc @@ -994,10 +994,10 @@ FE_Nedelec::fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fedata, - FEValuesData &data) const + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with diff --git a/deal.II/deal.II/source/fe/fe_poly_tensor.cc b/deal.II/deal.II/source/fe/fe_poly_tensor.cc index ebc257d682..a6cc1f226b 100644 --- a/deal.II/deal.II/source/fe/fe_poly_tensor.cc +++ b/deal.II/deal.II/source/fe/fe_poly_tensor.cc @@ -362,10 +362,10 @@ FE_PolyTensor::fill_fe_values ( const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fedata, - FEValuesData &data) const + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with @@ -390,13 +390,23 @@ FE_PolyTensor::fill_fe_values ( // between two faces. std::vector sign_change (this->dofs_per_cell, 1.0); get_face_sign_change (cell, this->dofs_per_face, sign_change); + + // for Piola mapping, the similarity + // concept cannot be used because of + // possible sign changes from one cell to + // the next. + if (mapping_type == mapping_piola) + if (cell_similarity == CellSimilarity::translation) + cell_similarity = CellSimilarity::none; for (unsigned int i=0; idofs_per_cell; ++i) { const unsigned int first = data.shape_function_to_row_table[i]; - if (flags & update_values) + if (flags & update_values && cell_similarity != CellSimilarity::translation) { + if (cell_similarity == 1) + std::cout << "hier"; switch (mapping_type) { case mapping_none: @@ -437,7 +447,7 @@ FE_PolyTensor::fill_fe_values ( } } - if (flags & update_gradients) + if (flags & update_gradients && cell_similarity != CellSimilarity::translation) { std::vector > shape_grads1 (n_q_points); std::vector > shape_grads2 (n_q_points); @@ -493,7 +503,7 @@ FE_PolyTensor::fill_fe_values ( } } - if (flags & update_hessians) + if (flags & update_hessians && cell_similarity != CellSimilarity::translation) this->compute_2nd (mapping, cell, typename QProjector::DataSetDescriptor().cell(), mapping_data, fe_data, data); diff --git a/deal.II/deal.II/source/fe/fe_system.cc b/deal.II/deal.II/source/fe/fe_system.cc index 53917b353d..d6915d0cee 100644 --- a/deal.II/deal.II/source/fe/fe_system.cc +++ b/deal.II/deal.II/source/fe/fe_system.cc @@ -667,10 +667,10 @@ FESystem:: fill_fe_values (const Mapping &mapping, const typename Triangulation::cell_iterator &cell, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fe_data, - FEValuesData &data) const + FEValuesData &data, + enum CellSimilarity::Similarity &cell_similarity) const { compute_fill(mapping, cell, invalid_face_number, invalid_face_number, quadrature, cell_similarity, mapping_data, fe_data, data); @@ -723,7 +723,7 @@ compute_fill (const Mapping &mapping, const unsigned int face_no, const unsigned int sub_no, const Quadrature &quadrature, - const enum CellSimilarity::Similarity cell_similarity, + enum CellSimilarity::Similarity cell_similarity, typename Mapping::InternalDataBase &mapping_data, typename Mapping::InternalDataBase &fedata, FEValuesData &data) const @@ -838,7 +838,8 @@ compute_fill (const Mapping &mapping, // to correctly map the RT space from // the reference element to the global // coordinate system. - base_data.JxW_values = data.JxW_values; + if (cell_similarity != CellSimilarity::translation) + base_data.JxW_values = data.JxW_values; // Make sure that in the @@ -857,8 +858,8 @@ compute_fill (const Mapping &mapping, // therefore use // base_fe_data.update_flags. if (face_no==invalid_face_number) - base_fe.fill_fe_values(mapping, cell, *cell_quadrature, cell_similarity, - mapping_data, base_fe_data, base_data); + base_fe.fill_fe_values(mapping, cell, *cell_quadrature, mapping_data, + base_fe_data, base_data, cell_similarity); else if (sub_no==invalid_face_number) base_fe.fill_fe_face_values(mapping, cell, face_no, *face_quadrature, mapping_data, base_fe_data, base_data); diff --git a/deal.II/deal.II/source/fe/fe_values.cc b/deal.II/deal.II/source/fe/fe_values.cc index b3ff227694..f358211857 100644 --- a/deal.II/deal.II/source/fe/fe_values.cc +++ b/deal.II/deal.II/source/fe/fe_values.cc @@ -3266,7 +3266,7 @@ FEValuesBase::check_cell_similarity const typename Triangulation::cell_iterator & present_cell = *this->present_cell; - + // test for translation { // otherwise, go through the vertices and @@ -3280,10 +3280,11 @@ FEValuesBase::check_cell_similarity // others have the same. bool is_translation = true; const Point dist = cell->vertex(0) - present_cell->vertex(0); + const double tolerance = 1e-30 * dist.norm_square(); for (unsigned int i=1; i::vertices_per_cell; ++i) { Point dist_new = cell->vertex(i) - present_cell->vertex(i) - dist; - if (dist_new.norm_square() > 1e-30) + if (dist_new.norm_square() > tolerance) { is_translation = false; break; @@ -3548,22 +3549,22 @@ void FEValues::do_reinit () { this->get_mapping().fill_fe_values(*this->present_cell, quadrature, - this->cell_similarity, *this->mapping_data, this->quadrature_points, this->JxW_values, this->jacobians, this->jacobian_grads, this->inverse_jacobians, - this->cell_normal_vectors); - + this->cell_normal_vectors, + this->cell_similarity); + this->get_fe().fill_fe_values(this->get_mapping(), *this->present_cell, quadrature, - this->cell_similarity, *this->mapping_data, *this->fe_data, - *this); + *this, + this->cell_similarity); this->fe_data->clear_first_cell (); this->mapping_data->clear_first_cell (); @@ -3862,7 +3863,7 @@ void FEFaceValues::do_reinit (const unsigned int face_no) this->JxW_values, this->boundary_forms, this->normal_vectors); - + this->get_fe().fill_fe_face_values(this->get_mapping(), *this->present_cell, face_no, this->quadrature, diff --git a/deal.II/deal.II/source/fe/mapping_cartesian.cc b/deal.II/deal.II/source/fe/mapping_cartesian.cc index c5e55981e2..acdfc8b32f 100644 --- a/deal.II/deal.II/source/fe/mapping_cartesian.cc +++ b/deal.II/deal.II/source/fe/mapping_cartesian.cc @@ -303,14 +303,14 @@ void MappingCartesian:: fill_fe_values (const typename Triangulation::cell_iterator& cell, const Quadrature& q, - enum CellSimilarity::Similarity& cell_similarity, typename Mapping::InternalDataBase& mapping_data, std::vector >& quadrature_points, std::vector& JxW_values, std::vector >& jacobians, std::vector >& jacobian_grads, std::vector >& inverse_jacobians, - std::vector > &) const + std::vector > &, + enum CellSimilarity::Similarity& cell_similarity) const { // convert data object to internal // data for this class. fails with diff --git a/deal.II/deal.II/source/fe/mapping_q.cc b/deal.II/deal.II/source/fe/mapping_q.cc index 65ea8d8b6e..0cb43f683a 100644 --- a/deal.II/deal.II/source/fe/mapping_q.cc +++ b/deal.II/deal.II/source/fe/mapping_q.cc @@ -307,14 +307,14 @@ void MappingQ::fill_fe_values ( const typename Triangulation::cell_iterator &cell, const Quadrature &q, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const { // convert data object to internal // data for this class. fails with @@ -354,10 +354,10 @@ MappingQ::fill_fe_values ( cell_similarity = CellSimilarity::invalid_next_cell; } - MappingQ1::fill_fe_values(cell, q, cell_similarity, *p_data, + MappingQ1::fill_fe_values(cell, q, *p_data, quadrature_points, JxW_values, jacobians, jacobian_grads, inverse_jacobians, - cell_normal_vectors); + cell_normal_vectors, cell_similarity); } diff --git a/deal.II/deal.II/source/fe/mapping_q1.cc b/deal.II/deal.II/source/fe/mapping_q1.cc index 90741b0ad7..9309dca69f 100644 --- a/deal.II/deal.II/source/fe/mapping_q1.cc +++ b/deal.II/deal.II/source/fe/mapping_q1.cc @@ -739,14 +739,14 @@ void MappingQ1::fill_fe_values ( const typename Triangulation::cell_iterator &cell, const Quadrature &q, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const { // ensure that the following cast is really correct: Assert (dynamic_cast(&mapping_data) != 0, @@ -1363,7 +1363,7 @@ transform_real_to_unit_cell (const typename Triangulation::cell_it point_quadrature))); MappingQ1::compute_mapping_support_points (cell, - mdata->mapping_support_points); + mdata->mapping_support_points); Assert(mdata->mapping_support_points.size() == GeometryInfo::vertices_per_cell, ExcInternalError()); diff --git a/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc b/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc index d6dfaf9e66..15cb638043 100644 --- a/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc +++ b/deal.II/deal.II/source/fe/mapping_q1_eulerian.cc @@ -120,23 +120,23 @@ void MappingQ1Eulerian::fill_fe_values ( const typename Triangulation::cell_iterator &cell, const Quadrature &q, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const { // disable any previously detected - // similarity and hand on to the + // similarity and then enter the // respective function of the base class. cell_similarity = CellSimilarity::invalid_next_cell; - MappingQ1::fill_fe_values (cell, q, cell_similarity, mapping_data, + MappingQ1::fill_fe_values (cell, q, mapping_data, quadrature_points, JxW_values, jacobians, jacobian_grads, inverse_jacobians, - cell_normal_vectors); + cell_normal_vectors, cell_similarity); } diff --git a/deal.II/deal.II/source/fe/mapping_q_eulerian.cc b/deal.II/deal.II/source/fe/mapping_q_eulerian.cc index 1431787d12..568f9845fb 100644 --- a/deal.II/deal.II/source/fe/mapping_q_eulerian.cc +++ b/deal.II/deal.II/source/fe/mapping_q_eulerian.cc @@ -187,23 +187,23 @@ void MappingQEulerian::fill_fe_values ( const typename Triangulation::cell_iterator &cell, const Quadrature &q, - enum CellSimilarity::Similarity &cell_similarity, typename Mapping::InternalDataBase &mapping_data, std::vector > &quadrature_points, std::vector &JxW_values, std::vector > &jacobians, std::vector > &jacobian_grads, std::vector > &inverse_jacobians, - std::vector > &cell_normal_vectors) const + std::vector > &cell_normal_vectors, + enum CellSimilarity::Similarity &cell_similarity) const { // disable any previously detected // similarity and hand on to the respective // function of the base class. cell_similarity = CellSimilarity::invalid_next_cell; - MappingQ::fill_fe_values (cell, q, cell_similarity, mapping_data, + MappingQ::fill_fe_values (cell, q, mapping_data, quadrature_points, JxW_values, jacobians, jacobian_grads, inverse_jacobians, - cell_normal_vectors); + cell_normal_vectors, cell_similarity); } -- 2.39.5