From: Wolfgang Bangerth Date: Wed, 12 Aug 2015 17:44:48 +0000 (-0500) Subject: Remove the is_first_cell/clear_first_cell() mechanism from Mapping. X-Git-Tag: v8.4.0-rc2~613^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8558c6ec700ae46f4ad9618b715138ef03643d7f;p=dealii.git Remove the is_first_cell/clear_first_cell() mechanism from Mapping. This truly makes the Mapping::InternalDataBase objects stateless: we no longer need to worry about whether we are on the first cell or not. --- diff --git a/include/deal.II/fe/mapping.h b/include/deal.II/fe/mapping.h index a2c10307fd..14b8761db4 100644 --- a/include/deal.II/fe/mapping.h +++ b/include/deal.II/fe/mapping.h @@ -475,44 +475,14 @@ public: virtual ~InternalDataBase (); /** - * Values updated by the constructor or by reinit. - */ - UpdateFlags update_flags; - - /** - * Values computed by constructor. - */ - UpdateFlags update_once; - - /** - * Values updated on each cell by reinit. + * Values updated on each cell by Mapping::fill_fe_values() and friends. */ UpdateFlags update_each; - /** - * If first_cell==true this function returns @p update_flags, - * i.e. update_once|update_each. If first_cell==false it - * returns @p update_each. - */ - UpdateFlags current_update_flags() const; - - /** - * Set the @p first_cell flag to @p false. Used by the @p FEValues class - * to indicate that we have already done the work on the first cell. - */ - virtual void clear_first_cell (); - /** * Return an estimate (in bytes) or the memory consumption of this object. */ virtual std::size_t memory_consumption () const; - - private: - /** - * Initially set to true, but reset to false when clear_first_cell() - * is called. - */ - bool first_cell; }; @@ -884,38 +854,6 @@ public: }; -/* ------------------------- inline functions ------------------------- */ - -#ifndef DOXYGEN - -template -inline -UpdateFlags -Mapping::InternalDataBase::current_update_flags () const -{ - if (first_cell) - { - Assert (update_flags==(update_once|update_each), - ExcInternalError()); - return update_flags; - } - else - return update_each; -} - - - -template -inline -void -Mapping::InternalDataBase::clear_first_cell () -{ - first_cell = false; -} - - -#endif // DOXYGEN - DEAL_II_NAMESPACE_CLOSE #endif diff --git a/source/fe/fe_values.cc b/source/fe/fe_values.cc index a5a19d25fb..5301c6c116 100644 --- a/source/fe/fe_values.cc +++ b/source/fe/fe_values.cc @@ -3528,7 +3528,6 @@ void FEValues::do_reinit () this->cell_similarity); this->fe_data->clear_first_cell (); - this->mapping_data->clear_first_cell (); } @@ -3724,7 +3723,6 @@ void FEFaceValues::do_reinit (const unsigned int face_no) *this); this->fe_data->clear_first_cell (); - this->mapping_data->clear_first_cell (); } @@ -3958,7 +3956,6 @@ void FESubfaceValues::do_reinit (const unsigned int face_no, *this); this->fe_data->clear_first_cell (); - this->mapping_data->clear_first_cell (); } diff --git a/source/fe/mapping.cc b/source/fe/mapping.cc index 46b5378c2a..c8e7d6405b 100644 --- a/source/fe/mapping.cc +++ b/source/fe/mapping.cc @@ -81,10 +81,7 @@ project_real_point_to_unit_point_on_face ( template Mapping::InternalDataBase::InternalDataBase (): - update_flags(update_default), - update_once(update_default), - update_each(update_default), - first_cell(true) + update_each(update_default) {} diff --git a/source/fe/mapping_cartesian.cc b/source/fe/mapping_cartesian.cc index b04abbfdea..5c04dce90c 100644 --- a/source/fe/mapping_cartesian.cc +++ b/source/fe/mapping_cartesian.cc @@ -86,9 +86,7 @@ MappingCartesian::get_data (const UpdateFlags update_flags, { InternalData *data = new InternalData (q); - data->update_once = update_once(update_flags); data->update_each = update_each(update_flags); - data->update_flags = data->update_once | data->update_each; return data; } @@ -103,9 +101,7 @@ MappingCartesian::get_face_data (const UpdateFlags update_flags, InternalData *data = new InternalData (QProjector::project_to_all_faces(quadrature)); - data->update_once = update_once(update_flags); data->update_each = update_each(update_flags); - data->update_flags = data->update_once | data->update_each; return data; } @@ -120,9 +116,7 @@ MappingCartesian::get_subface_data (const UpdateFlags update_flag InternalData *data = new InternalData (QProjector::project_to_all_subfaces(quadrature)); - data->update_once = update_once(update_flags); data->update_each = update_each(update_flags); - data->update_flags = data->update_once | data->update_each; return data; } @@ -555,7 +549,7 @@ MappingCartesian::transform ( { case mapping_covariant: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_contravariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform ( } case mapping_piola: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); for (unsigned int i=0; i::transform ( { case mapping_covariant: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_contravariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_covariant_gradient: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_contravariant_gradient: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_piola: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); for (unsigned int i=0; i::transform ( case mapping_piola_gradient: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); for (unsigned int i=0; i::transform ( { case mapping_covariant: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_contravariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_covariant_gradient: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_contravariant_gradient: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform ( case mapping_piola: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); for (unsigned int i=0; i::transform ( } case mapping_piola_gradient: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); for (unsigned int i=0; i::compute_data (const UpdateFlags upd const unsigned int n_original_q_points, InternalData &data) const { - const unsigned int n_q_points = q.size(); - - data.update_once = update_once(update_flags); data.update_each = update_each(update_flags); - data.update_flags = data.update_once | data.update_each; - const UpdateFlags flags(data.update_flags); + const unsigned int n_q_points = q.size(); + const UpdateFlags flags = update_once(update_flags) | update_each(update_flags); if (flags & update_transformation_values) data.shape_values.resize(data.n_shape_functions * n_q_points); @@ -272,7 +269,7 @@ MappingFEField::compute_face_data (const UpdateFlags upd if (dim > 1) { - if (data.update_flags & update_boundary_forms) + if (update_flags & update_boundary_forms) { data.aux.resize (dim-1, std::vector > (n_original_q_points)); @@ -991,7 +988,7 @@ void MappingFEField::transform_fields( { case mapping_contravariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform_fields( case mapping_piola: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); Assert (rank==1, ExcMessage("Only for rank 1")); for (unsigned int i=0; i::transform_fields( //rather than DerivativeForm case mapping_covariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform_differential_forms( { case mapping_covariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::compute_data (const UpdateFlags update_flags, const unsigned int n_original_q_points, InternalData &data) const { - const unsigned int n_q_points = q.size(); - - data.update_once = update_once(update_flags); data.update_each = update_each(update_flags); - data.update_flags = data.update_once | data.update_each; - const UpdateFlags flags(data.update_flags); + const unsigned int n_q_points = q.size(); + const UpdateFlags flags = update_once(update_flags) | update_each(update_flags); // see if we need the (transformation) shape function values // and/or gradients and resize the necessary arrays @@ -627,7 +624,7 @@ MappingQ1::compute_face_data (const UpdateFlags update_flags, if (dim > 1) { - if (data.update_flags & update_boundary_forms) + if (update_flags & update_boundary_forms) { data.aux.resize (dim-1, std::vector > (n_original_q_points)); @@ -1401,7 +1398,7 @@ void MappingQ1::transform_fields( { case mapping_contravariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform_fields( case mapping_piola: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); Assert (rank==1, ExcMessage("Only for rank 1")); if (rank!=1) @@ -1434,7 +1431,7 @@ void MappingQ1::transform_fields( //rather than DerivativeForm case mapping_covariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i::transform_gradients( { case mapping_contravariant_gradient: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); Assert (rank==2, ExcMessage("Only for rank 2")); @@ -1484,9 +1481,9 @@ void MappingQ1::transform_gradients( case mapping_covariant_gradient: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); Assert (rank==2, ExcMessage("Only for rank 2")); @@ -1506,11 +1503,11 @@ void MappingQ1::transform_gradients( case mapping_piola_gradient: { - Assert (data.update_flags & update_covariant_transformation, + Assert (data.update_each & update_covariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_covariant_transformation")); - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); - Assert (data.update_flags & update_volume_elements, + Assert (data.update_each & update_volume_elements, typename FEValuesBase::ExcAccessToUninitializedField("update_volume_elements")); Assert (rank==2, ExcMessage("Only for rank 2")); @@ -1554,7 +1551,7 @@ void MappingQ1::transform_differential_forms( { case mapping_covariant: { - Assert (data.update_flags & update_contravariant_transformation, + Assert (data.update_each & update_contravariant_transformation, typename FEValuesBase::ExcAccessToUninitializedField("update_contravariant_transformation")); for (unsigned int i=0; i