const Mapping<dim,spacedim> &mapping,
const Quadrature<dim-1> &quadrature) const;
- /**
- * Fill the fields of FEValues. This function performs all the operations
- * needed to compute the data of an FEValues object.
- *
- * The same function in @p mapping must have been called for the same cell
- * first!
- */
- virtual void
+ virtual
+ void
fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
const CellSimilarity::Similarity cell_similarity) const = 0;
- /**
- * Fill the fields of FEFaceValues. This function performs all the
- * operations needed to compute the data of an FEFaceValues object.
- *
- * The same function in @p mapping must have been called for the same cell
- * first!
- */
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const = 0;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const = 0;
- /**
- * Fill the fields of FESubfaceValues. This function performs all the
- * operations needed to compute the data of an FESubfaceValues object.
- *
- * The same function in @p mapping must have been called for the same cell
- * first!
- */
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const = 0;
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const = 0;
friend class InternalDataBase;
friend class FEValuesBase<dim,spacedim>;
const Mapping<dim,spacedim> &mapping,
const Quadrature<dim> &quadrature) const;
- /**
- * Implementation of the same function in FiniteElement.
- */
- virtual void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- /**
- * Implementation of the same function in FiniteElement.
- */
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- /**
- * Implementation of the same function in FiniteElement.
- */
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
private:
const Mapping<1,spacedim> &mapping,
const Quadrature<0> &quadrature) const;
- virtual void
- fill_fe_values (const Mapping<1,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<1,spacedim> &mapping,
const typename Triangulation<1,spacedim>::cell_iterator &cell,
- const Quadrature<1> &quadrature,
- const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<1,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<1> &quadrature,
+ const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- virtual void
- fill_fe_face_values (const Mapping<1,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<1,spacedim> &mapping,
const typename Triangulation<1,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<0> &quadrature,
- const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<1,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<0> &quadrature,
+ const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &output_data) const;
- virtual void
- fill_fe_subface_values (const Mapping<1,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<1,spacedim> &mapping,
const typename Triangulation<1,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<0> &quadrature,
- const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<1,spacedim> &data) const;
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<0> &quadrature,
+ const typename Mapping<1,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<1,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &output_data) const;
/**
double
shape_value (const unsigned int i, const Point<dim> &p) const;
- /**
- * Fill the fields of FEValues. This function performs all the operations
- * needed to compute the data of an FEValues object.
- *
- * In the current case, this function returns no meaningful information,
- * since the element has no degrees of freedom.
- */
virtual
void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- /**
- * Fill the fields of FEFaceValues. This function performs all the
- * operations needed to compute the data of an FEFaceValues object.
- *
- * In the current case, this function returns no meaningful information,
- * since the element has no degrees of freedom.
- */
virtual
void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face,
- const Quadrature<dim-1> & quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- /**
- * Fill the fields of FESubFaceValues. This function performs all the
- * operations needed to compute the data of an FESubFaceValues object.
- *
- * In the current case, this function returns no meaningful information,
- * since the element has no degrees of freedom.
- */
virtual
void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face,
- const unsigned int subface,
- const Quadrature<dim-1> & quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Prepare internal data structures and fill in values independent of the
const Mapping<dim,spacedim> &mapping,
const Quadrature<dim> &quadrature) const;
- virtual void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
-
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Determine the values that need to be computed on the unit cell to be able
template <class POLY, int dim, int spacedim>
void
-FE_Poly<POLY,dim,spacedim>::fill_fe_values
-(const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_Poly<POLY,dim,spacedim>::
+fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
// convert data object to internal
// data for this class. fails with
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i];
if (flags & update_gradients && cell_similarity != CellSimilarity::translation)
- mapping.transform(fe_data.shape_gradients[k], data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ mapping.transform(fe_data.shape_gradients[k],
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians && cell_similarity != CellSimilarity::translation)
this->compute_2nd (mapping, cell, QProjector<dim>::DataSetDescriptor::cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
const unsigned int face,
const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i+offset];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i+offset];
if (flags & update_gradients)
mapping.transform(make_slice(fe_data.shape_gradients[k], offset, quadrature.size()),
- data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians)
- this->compute_2nd (mapping, cell, offset, mapping_data, fe_data, data);
+ this->compute_2nd (mapping, cell, offset, mapping_internal, fe_data,
+ output_data);
}
template <class POLY, int dim, int spacedim>
void
-FE_Poly<POLY,dim,spacedim>::fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face,
- const unsigned int subface,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FE_Poly<POLY,dim,spacedim>::
+fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face,
+ const unsigned int subface,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i+offset];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i+offset];
if (flags & update_gradients)
mapping.transform(make_slice(fe_data.shape_gradients[k], offset, quadrature.size()),
- data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians)
- this->compute_2nd (mapping, cell, offset, mapping_data, fe_data, data);
+ this->compute_2nd (mapping, cell, offset, mapping_internal, fe_data,
+ output_data);
}
const Mapping<dim,spacedim> &mapping,
const Quadrature<dim-1>& quadrature) const;
- virtual void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
-
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Determine the values that need to be computed on the unit cell to be able
// ---------------------------------------------------------------------
//
-// Copyright (C) 2009 - 2014 by the deal.II authors
+// Copyright (C) 2009 - 2015 by the deal.II authors
//
// This file is part of the deal.II library.
//
//---------------------------------------------------------------------------
template <class POLY, int dim, int spacedim>
void
-FE_PolyFace<POLY,dim,spacedim>::fill_fe_values
-(const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const Quadrature<dim> &,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- FEValuesData<dim,spacedim> &,
- const CellSimilarity::Similarity ) const
+FE_PolyFace<POLY,dim,spacedim>::
+fill_fe_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const Quadrature<dim> &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &,
+ const CellSimilarity::Similarity ) const
{
// Do nothing, since we do not have
// values in the interior
template <class POLY, int dim, int spacedim>
void
-FE_PolyFace<POLY,dim,spacedim>::fill_fe_face_values (
- const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const unsigned int face,
- const Quadrature<dim-1>& quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FE_PolyFace<POLY,dim,spacedim>::
+fill_fe_face_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const unsigned int face,
+ const Quadrature<dim-1>& quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
for (unsigned int i=0; i<quadrature.size(); ++i)
{
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
- data.shape_values(k,i) = 0.;
+ output_data.shape_values(k,i) = 0.;
switch (dim)
{
case 3:
{
const unsigned int foffset = this->first_quad_index + this->dofs_per_quad * face;
for (unsigned int k=0; k<this->dofs_per_quad; ++k)
- data.shape_values(foffset+k,i) = fe_data.shape_values[k+this->first_face_quad_index][i];
+ output_data.shape_values(foffset+k,i) = fe_data.shape_values[k+this->first_face_quad_index][i];
}
}
case 2:
for (unsigned int line=0; line<GeometryInfo<dim>::lines_per_face; ++line)
{
for (unsigned int k=0; k<this->dofs_per_line; ++k)
- data.shape_values(foffset+GeometryInfo<dim>::face_to_cell_lines(face, line)*this->dofs_per_line+k,i) = fe_data.shape_values[k+(line*this->dofs_per_line)+this->first_face_line_index][i];
+ output_data.shape_values(foffset+GeometryInfo<dim>::face_to_cell_lines(face, line)*this->dofs_per_line+k,i)
+ = fe_data.shape_values[k+(line*this->dofs_per_line)+this->first_face_line_index][i];
}
}
}
// Fill data for vertex shape functions
if (this->dofs_per_vertex != 0)
for (unsigned int lvertex=0; lvertex<GeometryInfo<dim>::vertices_per_face; ++lvertex)
- data.shape_values(GeometryInfo<dim>::face_to_cell_vertices(face, lvertex),i) = fe_data.shape_values[lvertex][i];
+ output_data.shape_values(GeometryInfo<dim>::face_to_cell_vertices(face, lvertex),i)
+ = fe_data.shape_values[lvertex][i];
break;
}
}
template <class POLY, int dim, int spacedim>
void
-FE_PolyFace<POLY,dim,spacedim>::fill_fe_subface_values (
- const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const unsigned int face,
- const unsigned int subface,
- const Quadrature<dim-1>& quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FE_PolyFace<POLY,dim,spacedim>::
+fill_fe_subface_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const unsigned int face,
+ const unsigned int subface,
+ const Quadrature<dim-1>& quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
for (unsigned int i=0; i<quadrature.size(); ++i)
{
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
- data.shape_values(k,i) = 0.;
+ output_data.shape_values(k,i) = 0.;
for (unsigned int k=0; k<fe_data.shape_values.size(); ++k)
- data.shape_values(foffset+k,i) = fe_data.shape_values[k][i+offset];
+ output_data.shape_values(foffset+k,i) = fe_data.shape_values[k][i+offset];
}
Assert (!(flags & update_gradients), ExcNotImplemented());
const Mapping<dim,spacedim> &mapping,
const Quadrature<dim> &quadrature) const;
- virtual void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Fields of cell-independent data for FE_PolyTensor. Stores the values of
const Mapping<dim,spacedim> &mapping,
const Quadrature<dim-1> &quadrature) const;
- /**
- * Implementation of the same function in FiniteElement.
- *
- * Passes on control to @p compute_fill that does the work for all three
- * <tt>fill_fe*_values</tt> functions.
- */
- virtual void
- fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const;
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const;
- /**
- * Implementation of the same function in FiniteElement.
- *
- * Passes on control to @p compute_fill that does the work for all three
- * <tt>fill_fe*_values</tt> functions.
- */
- virtual void
- fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const;
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
- /**
- * Implementation of the same function in FiniteElement.
- *
- * Passes on control to @p compute_fill that does the work for all three
- * <tt>fill_fe*_values</tt> functions.
- */
- virtual void
- fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ virtual
+ void
+ fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const;
-
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_internal,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Do the work for the three <tt>fill_fe*_values</tt> functions.
const unsigned int sub_no,
const Quadrature<dim_1> &quadrature,
const CellSimilarity::Similarity cell_similarity,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const;
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
private:
*/
template <int dim_1>
void
- compute_fill_one_base (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const std::pair<unsigned int,unsigned int> face_sub_no,
- const Quadrature<dim_1> &quadrature,
- const CellSimilarity::Similarity cell_similarity,
- const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
- const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_data,
- const unsigned int base_element,
- FEValuesData<dim,spacedim> &data) const;
+ compute_fill_one_base (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const std::pair<unsigned int,unsigned int> face_sub_no,
+ const Quadrature<dim_1> &quadrature,
+ const CellSimilarity::Similarity cell_similarity,
+ const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
+ const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_internal,
+ const unsigned int base_element,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const;
/**
* Usually: Fields of cell-independent data.
template <int dim, int spacedim>
void
-FE_DGPNonparametric<dim,spacedim>::fill_fe_values (
- const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const Quadrature<dim> &,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity /*cell_similarity*/) const
+FE_DGPNonparametric<dim,spacedim>::
+fill_fe_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const Quadrature<dim> &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity /*cell_similarity*/) const
{
const UpdateFlags flags(fe_data.current_update_flags());
Assert (flags & update_quadrature_points, ExcInternalError());
- const unsigned int n_q_points = data.quadrature_points.size();
+ const unsigned int n_q_points = mapping_data.quadrature_points.size();
std::vector<double> values(flags & update_values ? this->dofs_per_cell : 0);
std::vector<Tensor<1,dim> > grads(flags & update_gradients ? this->dofs_per_cell : 0);
if (flags & (update_values | update_gradients))
for (unsigned int i=0; i<n_q_points; ++i)
{
- polynomial_space.compute(data.quadrature_points[i],
+ polynomial_space.compute(mapping_data.quadrature_points[i],
values, grads, grad_grads);
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
{
if (flags & update_values)
- data.shape_values[k][i] = values[k];
+ output_data.shape_values[k][i] = values[k];
if (flags & update_gradients)
- data.shape_gradients[k][i] = grads[k];
+ output_data.shape_gradients[k][i] = grads[k];
if (flags & update_hessians)
- data.shape_hessians[k][i] = grad_grads[k];
+ output_data.shape_hessians[k][i] = grad_grads[k];
}
}
}
template <int dim, int spacedim>
void
-FE_DGPNonparametric<dim,spacedim>::fill_fe_face_values (
- const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const unsigned int,
- const Quadrature<dim-1>&,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const
+FE_DGPNonparametric<dim,spacedim>::
+fill_fe_face_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const unsigned int,
+ const Quadrature<dim-1>&,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
const UpdateFlags flags(fe_data.update_once | fe_data.update_each);
Assert (flags & update_quadrature_points, ExcInternalError());
- const unsigned int n_q_points = data.quadrature_points.size();
+ const unsigned int n_q_points = mapping_data.quadrature_points.size();
std::vector<double> values(flags & update_values ? this->dofs_per_cell : 0);
std::vector<Tensor<1,dim> > grads(flags & update_gradients ? this->dofs_per_cell : 0);
if (flags & (update_values | update_gradients))
for (unsigned int i=0; i<n_q_points; ++i)
{
- polynomial_space.compute(data.quadrature_points[i],
+ polynomial_space.compute(mapping_data.quadrature_points[i],
values, grads, grad_grads);
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
{
if (flags & update_values)
- data.shape_values[k][i] = values[k];
+ output_data.shape_values[k][i] = values[k];
if (flags & update_gradients)
- data.shape_gradients[k][i] = grads[k];
+ output_data.shape_gradients[k][i] = grads[k];
if (flags & update_hessians)
- data.shape_hessians[k][i] = grad_grads[k];
+ output_data.shape_hessians[k][i] = grad_grads[k];
}
}
}
template <int dim, int spacedim>
void
-FE_DGPNonparametric<dim,spacedim>::fill_fe_subface_values (
- const Mapping<dim,spacedim> &,
- const typename Triangulation<dim,spacedim>::cell_iterator &,
- const unsigned int,
- const unsigned int,
- const Quadrature<dim-1>&,
- const typename Mapping<dim,spacedim>::InternalDataBase &,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const
+FE_DGPNonparametric<dim,spacedim>::
+fill_fe_subface_values (const Mapping<dim,spacedim> &,
+ const typename Triangulation<dim,spacedim>::cell_iterator &,
+ const unsigned int,
+ const unsigned int,
+ const Quadrature<dim-1>&,
+ const typename Mapping<dim,spacedim>::InternalDataBase &,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
const UpdateFlags flags(fe_data.update_once | fe_data.update_each);
Assert (flags & update_quadrature_points, ExcInternalError());
- const unsigned int n_q_points = data.quadrature_points.size();
+ const unsigned int n_q_points = mapping_data.quadrature_points.size();
std::vector<double> values(flags & update_values ? this->dofs_per_cell : 0);
std::vector<Tensor<1,dim> > grads(flags & update_gradients ? this->dofs_per_cell : 0);
if (flags & (update_values | update_gradients))
for (unsigned int i=0; i<n_q_points; ++i)
{
- polynomial_space.compute(data.quadrature_points[i],
+ polynomial_space.compute(mapping_data.quadrature_points[i],
values, grads, grad_grads);
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
{
if (flags & update_values)
- data.shape_values[k][i] = values[k];
+ output_data.shape_values[k][i] = values[k];
if (flags & update_gradients)
- data.shape_gradients[k][i] = grads[k];
+ output_data.shape_gradients[k][i] = grads[k];
if (flags & update_hessians)
- data.shape_hessians[k][i] = grad_grads[k];
+ output_data.shape_hessians[k][i] = grad_grads[k];
}
}
}
template <int spacedim>
void
-FE_FaceQ<1,spacedim>::fill_fe_values
-(const Mapping<1,spacedim> &,
- const typename Triangulation<1,spacedim>::cell_iterator &,
- const Quadrature<1> &,
- const typename Mapping<1,spacedim>::InternalDataBase &,
- const typename Mapping<1,spacedim>::InternalDataBase &,
- FEValuesData<1,spacedim> &,
- const CellSimilarity::Similarity ) const
+FE_FaceQ<1,spacedim>::
+fill_fe_values(const Mapping<1,spacedim> &,
+ const typename Triangulation<1,spacedim>::cell_iterator &,
+ const Quadrature<1> &,
+ const typename Mapping<1,spacedim>::InternalDataBase &,
+ const typename Mapping<1,spacedim>::InternalDataBase &,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &,
+ const CellSimilarity::Similarity ) const
{
// Do nothing, since we do not have values in the interior
}
template <int spacedim>
void
-FE_FaceQ<1,spacedim>::fill_fe_face_values (
- const Mapping<1,spacedim> &,
- const typename Triangulation<1,spacedim>::cell_iterator &,
- const unsigned int face,
- const Quadrature<0> &,
- const typename Mapping<1,spacedim>::InternalDataBase &,
- const typename Mapping<1,spacedim>::InternalDataBase &fedata,
- FEValuesData<1,spacedim> &data) const
+FE_FaceQ<1,spacedim>::
+fill_fe_face_values (const Mapping<1,spacedim> &,
+ const typename Triangulation<1,spacedim>::cell_iterator &,
+ const unsigned int face,
+ const Quadrature<0> &,
+ const typename Mapping<1,spacedim>::InternalDataBase &,
+ const typename Mapping<1,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &output_data) const
{
const UpdateFlags flags(fedata.update_once | fedata.update_each);
if (flags & update_values)
{
for (unsigned int k=0; k<this->dofs_per_cell; ++k)
- data.shape_values(k,0) = 0.;
- data.shape_values(foffset,0) = 1;
+ output_data.shape_values(k,0) = 0.;
+ output_data.shape_values(foffset,0) = 1;
}
}
template <int spacedim>
void
-FE_FaceQ<1,spacedim>::fill_fe_subface_values (
- const Mapping<1,spacedim> &,
- const typename Triangulation<1,spacedim>::cell_iterator &,
- const unsigned int ,
- const unsigned int ,
- const Quadrature<0> &,
- const typename Mapping<1,spacedim>::InternalDataBase &,
- const typename Mapping<1,spacedim>::InternalDataBase &,
- FEValuesData<1,spacedim> &) const
+FE_FaceQ<1,spacedim>::
+fill_fe_subface_values (const Mapping<1,spacedim> &,
+ const typename Triangulation<1,spacedim>::cell_iterator &,
+ const unsigned int ,
+ const unsigned int ,
+ const Quadrature<0> &,
+ const typename Mapping<1,spacedim>::InternalDataBase &,
+ const typename Mapping<1,spacedim>::InternalDataBase &,
+ const internal::FEValues::MappingRelatedData<1,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<1,spacedim> &) const
{
Assert(false, ExcMessage("There are no sub-face values to fill in 1D!"));
}
const Quadrature<dim> & /*quadrature*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*mapping_data*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*fedata*/,
- FEValuesData<dim,spacedim> & /*data*/,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &/*mapping_data*/,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &/*output_data*/,
const CellSimilarity::Similarity /*cell_similarity*/) const
{
// leave data fields empty
const Quadrature<dim-1> & /*quadrature*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*mapping_data*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*fedata*/,
- FEValuesData<dim,spacedim> & /*data*/) const
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &/*mapping_data*/,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &/*output_data*/) const
{
// leave data fields empty
}
const Quadrature<dim-1> & /*quadrature*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*mapping_data*/,
const typename Mapping<dim,spacedim>::InternalDataBase & /*fedata*/,
- FEValuesData<dim,spacedim> & /*data*/) const
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &/*mapping_data*/,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &/*output_data*/) const
{
// leave data fields empty
}
// ---------------------------------------------------------------------
//
-// Copyright (C) 2004 - 2014 by the deal.II authors
+// Copyright (C) 2004 - 2015 by the deal.II authors
//
// This file is part of the deal.II library.
//
template <>
void
-FE_Poly<TensorProductPolynomials<1>,1,2>::fill_fe_values
-(const Mapping<1,2> &mapping,
- const Triangulation<1,2>::cell_iterator &cell,
- const Quadrature<1> &quadrature,
- const Mapping<1,2>::InternalDataBase &mapping_data,
- const Mapping<1,2>::InternalDataBase &fedata,
- FEValuesData<1,2> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_Poly<TensorProductPolynomials<1>,1,2>::
+fill_fe_values (const Mapping<1,2> &mapping,
+ const Triangulation<1,2>::cell_iterator &cell,
+ const Quadrature<1> &quadrature,
+ const Mapping<1,2>::InternalDataBase &mapping_internal,
+ const Mapping<1,2>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<1,2> &,
+ internal::FEValues::FiniteElementRelatedData<1,2> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
// convert data object to internal
// data for this class. fails with
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i];
if (flags & update_gradients && cell_similarity != CellSimilarity::translation)
- mapping.transform(fe_data.shape_gradients[k], data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ mapping.transform(fe_data.shape_gradients[k],
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians && cell_similarity != CellSimilarity::translation)
this->compute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
template <>
void
-FE_Poly<TensorProductPolynomials<2>,2,3>::fill_fe_values
-(const Mapping<2,3> &mapping,
- const Triangulation<2,3>::cell_iterator &cell,
- const Quadrature<2> &quadrature,
- const Mapping<2,3>::InternalDataBase &mapping_data,
- const Mapping<2,3>::InternalDataBase &fedata,
- FEValuesData<2,3> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_Poly<TensorProductPolynomials<2>,2,3>::
+fill_fe_values (const Mapping<2,3> &mapping,
+ const Triangulation<2,3>::cell_iterator &cell,
+ const Quadrature<2> &quadrature,
+ const Mapping<2,3>::InternalDataBase &mapping_internal,
+ const Mapping<2,3>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<2,3> &,
+ internal::FEValues::FiniteElementRelatedData<2,3> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
// assert that the following dynamics
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i];
if (flags & update_gradients && cell_similarity != CellSimilarity::translation)
- mapping.transform(fe_data.shape_gradients[k], data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ mapping.transform(fe_data.shape_gradients[k],
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians && cell_similarity != CellSimilarity::translation)
this->compute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
template <>
void
-FE_Poly<PolynomialSpace<1>,1,2>::fill_fe_values (
- const Mapping<1,2> &mapping,
- const Triangulation<1,2>::cell_iterator &cell,
- const Quadrature<1> &quadrature,
- const Mapping<1,2>::InternalDataBase &mapping_data,
- const Mapping<1,2>::InternalDataBase &fedata,
- FEValuesData<1,2> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_Poly<PolynomialSpace<1>,1,2>::
+fill_fe_values (const Mapping<1,2> &mapping,
+ const Triangulation<1,2>::cell_iterator &cell,
+ const Quadrature<1> &quadrature,
+ const Mapping<1,2>::InternalDataBase &mapping_internal,
+ const Mapping<1,2>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<1,2> &,
+ internal::FEValues::FiniteElementRelatedData<1,2> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
// convert data object to internal
// data for this class. fails with
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i];
if (flags & update_gradients && cell_similarity != CellSimilarity::translation)
- mapping.transform(fe_data.shape_gradients[k], data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ mapping.transform(fe_data.shape_gradients[k],
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians && cell_similarity != CellSimilarity::translation)
this->compute_2nd (mapping, cell, QProjector<1>::DataSetDescriptor::cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
template <>
void
-FE_Poly<PolynomialSpace<2>,2,3>::fill_fe_values
-(const Mapping<2,3> &mapping,
- const Triangulation<2,3>::cell_iterator &cell,
- const Quadrature<2> &quadrature,
- const Mapping<2,3>::InternalDataBase &mapping_data,
- const Mapping<2,3>::InternalDataBase &fedata,
- FEValuesData<2,3> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_Poly<PolynomialSpace<2>,2,3>::
+fill_fe_values (const Mapping<2,3> &mapping,
+ const Triangulation<2,3>::cell_iterator &cell,
+ const Quadrature<2> &quadrature,
+ const Mapping<2,3>::InternalDataBase &mapping_internal,
+ const Mapping<2,3>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<2,3> &,
+ internal::FEValues::FiniteElementRelatedData<2,3> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
Assert (dynamic_cast<const InternalData *> (&fedata) != 0, ExcInternalError());
const InternalData &fe_data = static_cast<const InternalData &> (fedata);
{
if (flags & update_values)
for (unsigned int i=0; i<quadrature.size(); ++i)
- data.shape_values(k,i) = fe_data.shape_values[k][i];
+ output_data.shape_values(k,i) = fe_data.shape_values[k][i];
if (flags & update_gradients && cell_similarity != CellSimilarity::translation)
- mapping.transform(fe_data.shape_gradients[k], data.shape_gradients[k],
- mapping_data, mapping_covariant);
+ mapping.transform(fe_data.shape_gradients[k],
+ output_data.shape_gradients[k],
+ mapping_internal, mapping_covariant);
}
if (flags & update_hessians && cell_similarity != CellSimilarity::translation)
this->compute_2nd (mapping, cell, QProjector<2>::DataSetDescriptor::cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
template <class POLY, int dim, int spacedim>
void
-FE_PolyTensor<POLY,dim,spacedim>::fill_fe_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FE_PolyTensor<POLY,dim,spacedim>::
+fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
// convert data object to internal
// data for this class. fails with
for (unsigned int i=0; i<this->dofs_per_cell; ++i)
{
- const unsigned int first = data.shape_function_to_row_table[i * this->n_components() +
- this->get_nonzero_components(i).first_selected_component()];
+ const unsigned int first = output_data.shape_function_to_row_table[i * this->n_components() +
+ this->get_nonzero_components(i).first_selected_component()];
// update the shape function values as necessary
//
{
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = fe_data.shape_values[i][k][d];
+ output_data.shape_values(first+d,k) = fe_data.shape_values[i][k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(fe_data.shape_values[i],
- shape_values, mapping_data, mapping_type);
+ shape_values, mapping_internal, mapping_type);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = shape_values[k][d];
+ output_data.shape_values(first+d,k) = shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(fe_data.shape_values[i], shape_values,
- mapping_data, mapping_piola);
+ mapping_internal, mapping_piola);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k)
+ output_data.shape_values(first+d,k)
= sign_change[i] * shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform (fe_data.shape_values[i], shape_values,
- mapping_data, mapping_covariant);
+ mapping_internal, mapping_covariant);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
+ output_data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
break;
}
case mapping_none:
{
mapping.transform(fe_data.shape_grads[i], shape_grads1,
- mapping_data, mapping_covariant);
+ mapping_internal, mapping_covariant);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_covariant:
{
mapping.transform(fe_data.shape_grads[i], shape_grads1,
- mapping_data, mapping_covariant_gradient);
+ mapping_internal, mapping_covariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_contravariant:
{
mapping.transform(fe_data.shape_grads[i], shape_grads1,
- mapping_data, mapping_contravariant_gradient);
+ mapping_internal, mapping_contravariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
input[k] = fe_data.shape_grads[i][k];
mapping.transform(input, shape_grads1,
- mapping_data, mapping_piola_gradient);
+ mapping_internal, mapping_piola_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
for (unsigned int k=0; k<input.size(); ++k)
input[k] = fe_data.shape_grads[i][k];
mapping.transform (input,shape_grads1,
- mapping_data, mapping_covariant_gradient);
+ mapping_internal, mapping_covariant_gradient);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
|| (mapping_type == mapping_nedelec))))
this->compute_2nd (mapping, cell,
typename QProjector<dim>::DataSetDescriptor().cell(),
- mapping_data, fe_data, data);
+ mapping_internal, fe_data,
+ output_data);
}
template <class POLY, int dim, int spacedim>
void
-FE_PolyTensor<POLY,dim,spacedim>::fill_fe_face_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FE_PolyTensor<POLY,dim,spacedim>::
+fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
for (unsigned int i=0; i<this->dofs_per_cell; ++i)
{
- const unsigned int first = data.shape_function_to_row_table[i * this->n_components() +
- this->get_nonzero_components(i).first_selected_component()];
+ const unsigned int first = output_data.shape_function_to_row_table[i * this->n_components() +
+ this->get_nonzero_components(i).first_selected_component()];
if (flags & update_values)
{
{
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = fe_data.shape_values[i][k+offset][d];
+ output_data.shape_values(first+d,k) = fe_data.shape_values[i][k+offset][d];
break;
}
// for transformation
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(make_slice(fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_type);
+ shape_values, mapping_internal, mapping_type);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = shape_values[k][d];
+ output_data.shape_values(first+d,k) = shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(make_slice(fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_piola);
+ shape_values, mapping_internal, mapping_piola);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k)
+ output_data.shape_values(first+d,k)
= sign_change[i] * shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform (make_slice (fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_covariant);
+ shape_values, mapping_internal, mapping_covariant);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
+ output_data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
break;
}
case mapping_none:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant);
+ shape_grads1, mapping_internal, mapping_covariant);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_covariant:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant_gradient);
+ shape_grads1, mapping_internal, mapping_covariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_contravariant:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_contravariant_gradient);
+ shape_grads1, mapping_internal, mapping_contravariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
input[k] = fe_data.shape_grads[i][k];
mapping.transform(make_slice(input, offset, n_q_points), shape_grads1,
- mapping_data, mapping_piola_gradient);
+ mapping_internal, mapping_piola_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
for (unsigned int k=0; k<input.size(); ++k)
input[k] = fe_data.shape_grads[i][k];
mapping.transform (make_slice (input, offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant_gradient);
+ shape_grads1, mapping_internal, mapping_covariant_gradient);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
}
if (flags & update_hessians)
- this->compute_2nd (mapping, cell, offset, mapping_data, fe_data, data);
+ this->compute_2nd (mapping, cell, offset, mapping_internal, fe_data,
+ output_data);
}
template <class POLY, int dim, int spacedim>
void
-FE_PolyTensor<POLY,dim,spacedim>::fill_fe_subface_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face,
- const unsigned int subface,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FE_PolyTensor<POLY,dim,spacedim>::
+fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face,
+ const unsigned int subface,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
// convert data object to internal
// data for this class. fails with
for (unsigned int i=0; i<this->dofs_per_cell; ++i)
{
- const unsigned int first = data.shape_function_to_row_table[i * this->n_components() +
- this->get_nonzero_components(i).first_selected_component()];
+ const unsigned int first = output_data.shape_function_to_row_table[i * this->n_components() +
+ this->get_nonzero_components(i).first_selected_component()];
if (flags & update_values)
{
{
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = fe_data.shape_values[i][k+offset][d];
+ output_data.shape_values(first+d,k) = fe_data.shape_values[i][k+offset][d];
break;
}
// transformation
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(make_slice(fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_type);
+ shape_values, mapping_internal, mapping_type);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k) = shape_values[k][d];
+ output_data.shape_values(first+d,k) = shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform(make_slice(fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_piola);
+ shape_values, mapping_internal, mapping_piola);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_values(first+d,k)
+ output_data.shape_values(first+d,k)
= sign_change[i] * shape_values[k][d];
break;
}
{
std::vector<Tensor<1,dim> > shape_values (n_q_points);
mapping.transform (make_slice (fe_data.shape_values[i], offset, n_q_points),
- shape_values, mapping_data, mapping_covariant);
+ shape_values, mapping_internal, mapping_covariant);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
+ output_data.shape_values(first+d,k) = sign_change[i] * shape_values[k][d];
break;
}
case mapping_none:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant);
+ shape_grads1, mapping_internal, mapping_covariant);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_covariant:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant_gradient);
+ shape_grads1, mapping_internal, mapping_covariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
case mapping_contravariant:
{
mapping.transform(make_slice(fe_data.shape_grads[i], offset, n_q_points),
- shape_grads1, mapping_data, mapping_contravariant_gradient);
+ shape_grads1, mapping_internal, mapping_contravariant_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = shape_grads1[k][d];
break;
}
input[k] = fe_data.shape_grads[i][k];
mapping.transform(make_slice(input, offset, n_q_points), shape_grads1,
- mapping_data, mapping_piola_gradient);
+ mapping_internal, mapping_piola_gradient);
for (unsigned int k=0; k<n_q_points; ++k)
for (unsigned int d=0; d<dim; ++d)
- data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first+d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
input[k] = fe_data.shape_grads[i][k];
mapping.transform (make_slice (input, offset, n_q_points),
- shape_grads1, mapping_data, mapping_covariant_gradient);
+ shape_grads1, mapping_internal, mapping_covariant_gradient);
for (unsigned int k = 0; k < n_q_points; ++k)
for (unsigned int d = 0; d < dim; ++d)
- data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
+ output_data.shape_gradients[first + d][k] = sign_change[i] * shape_grads1[k][d];
break;
}
}
if (flags & update_hessians)
- this->compute_2nd (mapping, cell, offset, mapping_data, fe_data, data);
+ this->compute_2nd (mapping, cell, offset, mapping_internal, fe_data,
+ output_data);
}
template <int dim, int spacedim>
void
-FESystem<dim,spacedim>::fill_fe_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const Quadrature<dim> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data,
- const CellSimilarity::Similarity cell_similarity) const
+FESystem<dim,spacedim>::
+fill_fe_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const Quadrature<dim> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data,
+ const CellSimilarity::Similarity cell_similarity) const
{
compute_fill(mapping, cell, invalid_face_number, invalid_face_number,
- quadrature, cell_similarity, mapping_data, fe_data, data);
+ quadrature, cell_similarity, mapping_internal, fe_data,
+ mapping_data, output_data);
}
template <int dim, int spacedim>
void
-FESystem<dim,spacedim>::fill_fe_face_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const
+FESystem<dim,spacedim>::
+fill_fe_face_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
compute_fill (mapping, cell, face_no, invalid_face_number, quadrature,
- CellSimilarity::none, mapping_data, fe_data, data);
+ CellSimilarity::none, mapping_internal, fe_data,
+ mapping_data, output_data);
}
template <int dim, int spacedim>
void
-FESystem<dim,spacedim>::fill_fe_subface_values (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim-1> &quadrature,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
- FEValuesData<dim,spacedim> &data) const
+FESystem<dim,spacedim>::
+fill_fe_subface_values (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim-1> &quadrature,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fe_data,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
compute_fill (mapping, cell, face_no, sub_no, quadrature,
- CellSimilarity::none, mapping_data, fe_data, data);
+ CellSimilarity::none, mapping_internal, fe_data,
+ mapping_data, output_data);
}
template <int dim, int spacedim>
template <int dim_1>
void
-FESystem<dim,spacedim>::compute_fill_one_base (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const std::pair<unsigned int, unsigned int> face_sub_no,
- const Quadrature<dim_1> &quadrature,
- const CellSimilarity::Similarity cell_similarity,
- const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
- const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_data,
- const unsigned int base_no,
- FEValuesData<dim,spacedim> &data) const
+FESystem<dim,spacedim>::
+compute_fill_one_base (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const std::pair<unsigned int, unsigned int> face_sub_no,
+ const Quadrature<dim_1> &quadrature,
+ const CellSimilarity::Similarity cell_similarity,
+ const std::pair<const typename Mapping<dim,spacedim>::InternalDataBase *,
+ const typename Mapping<dim,spacedim>::InternalDataBase *> mapping_internal,
+ const unsigned int base_no,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
- const InternalData &fe_data = static_cast<const InternalData &> (*mapping_data.second);
+ const InternalData &fe_data = static_cast<const InternalData &> (*mapping_internal.second);
const unsigned int n_q_points = quadrature.size();
const FiniteElement<dim,spacedim> &
// that we store here into the corresponding objects we pass down
// to the various base elements. some of these arrays may be empty,
// in which case copying is cheap
- base_data.JxW_values = data.JxW_values;
- base_data.jacobians = data.jacobians;
- base_data.jacobian_grads = data.jacobian_grads;
- base_data.inverse_jacobians = data.inverse_jacobians;
- base_data.quadrature_points = data.quadrature_points;
- base_data.normal_vectors = data.normal_vectors;
- base_data.boundary_forms = data.boundary_forms;
+ base_data.JxW_values = mapping_data.JxW_values;
+ base_data.jacobians = mapping_data.jacobians;
+ base_data.jacobian_grads = mapping_data.jacobian_grads;
+ base_data.inverse_jacobians = mapping_data.inverse_jacobians;
+ base_data.quadrature_points = mapping_data.quadrature_points;
+ base_data.normal_vectors = mapping_data.normal_vectors;
+ base_data.boundary_forms = mapping_data.boundary_forms;
// Make sure that in the case of fill_fe_values the data is only
// copied from base_data to data if base_data is changed. therefore
// copied from base_data to data on each face, therefore use
// base_fe_data.update_flags.
if (face_sub_no.first==invalid_face_number)
- base_fe.fill_fe_values(mapping, cell, *cell_quadrature, *mapping_data.first,
- base_fe_data, base_data, cell_similarity);
+ base_fe.fill_fe_values(mapping, cell, *cell_quadrature, *mapping_internal.first,
+ base_fe_data, base_data, base_data, cell_similarity);
else if (face_sub_no.second==invalid_face_number)
base_fe.fill_fe_face_values(mapping, cell, face_sub_no.first,
- *face_quadrature, *mapping_data.first, base_fe_data, base_data);
+ *face_quadrature, *mapping_internal.first, base_fe_data, base_data, base_data);
else
base_fe.fill_fe_subface_values(mapping, cell, face_sub_no.first, face_sub_no.second,
- *face_quadrature, *mapping_data.first, base_fe_data, base_data);
+ *face_quadrature, *mapping_internal.first, base_fe_data, base_data, base_data);
// now data has been generated, so copy it. we used to work by
// looping over all base elements (i.e. this outer loop), then over
{
if (base_flags & update_values)
for (unsigned int q=0; q<n_q_points; ++q)
- data.shape_values[out_index+s][q] =
+ output_data.shape_values[out_index+s][q] =
base_data.shape_values(in_index+s,q);
if (base_flags & update_gradients)
for (unsigned int q=0; q<n_q_points; ++q)
- data.shape_gradients[out_index+s][q]=
+ output_data.shape_gradients[out_index+s][q] =
base_data.shape_gradients[in_index+s][q];
// _we_ handle computation of second derivatives, so the
template <int dim, int spacedim>
template <int dim_1>
void
-FESystem<dim,spacedim>::compute_fill (
- const Mapping<dim,spacedim> &mapping,
- const typename Triangulation<dim,spacedim>::cell_iterator &cell,
- const unsigned int face_no,
- const unsigned int sub_no,
- const Quadrature<dim_1> &quadrature,
- const CellSimilarity::Similarity cell_similarity,
- const typename Mapping<dim,spacedim>::InternalDataBase &mapping_data,
- const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
- FEValuesData<dim,spacedim> &data) const
+FESystem<dim,spacedim>::
+compute_fill (const Mapping<dim,spacedim> &mapping,
+ const typename Triangulation<dim,spacedim>::cell_iterator &cell,
+ const unsigned int face_no,
+ const unsigned int sub_no,
+ const Quadrature<dim_1> &quadrature,
+ const CellSimilarity::Similarity cell_similarity,
+ const typename Mapping<dim,spacedim>::InternalDataBase &mapping_internal,
+ const typename Mapping<dim,spacedim>::InternalDataBase &fedata,
+ const internal::FEValues::MappingRelatedData<dim,spacedim> &mapping_data,
+ internal::FEValues::FiniteElementRelatedData<dim,spacedim> &output_data) const
{
const unsigned int n_q_points = quadrature.size();
// compute update flags ...
const UpdateFlags base_update_flags
- = mapping_data.update_flags | base_fe_data.update_flags;
+ = mapping_internal.update_flags | base_fe_data.update_flags;
// Initialize the FEValuesDatas for the base elements.
FEValuesData<dim,spacedim> &base_data=fe_data.get_fe_values_data(base_no);
std::make_pair(face_no, sub_no),
std_cxx11::cref(quadrature),
CellSimilarity::none,
- std::make_pair(&mapping_data,
+ std::make_pair(&mapping_internal,
&fedata),
base_no,
- std_cxx11::ref(data))));
+ std_cxx11::ref(mapping_data),
+ std_cxx11::ref(output_data))));
task_group.join_all();
}
cell->subface_case(face_no));
}
- this->compute_2nd (mapping, cell, offset, mapping_data, fe_data, data);
+ this->compute_2nd (mapping, cell, offset, mapping_internal, fe_data,
+ output_data);
}
}
*this->mapping_data,
*this->fe_data,
*this,
+ *this,
this->cell_similarity);
this->fe_data->clear_first_cell ();
this->quadrature,
*this->mapping_data,
*this->fe_data,
+ *this,
*this);
this->fe_data->clear_first_cell ();
this->quadrature,
*this->mapping_data,
*this->fe_data,
+ *this,
*this);
this->fe_data->clear_first_cell ();