*/
const std::vector<Tensor<1,dim> > & get_boundary_forms () const;
+ /**
+ * Return the index of the face
+ * selected the last time the
+ * reinit() function was called.
+ */
+ unsigned int get_face_index() const;
+
/**
* Return a reference to the copy
* of the quadrature formula
unsigned int memory_consumption () const;
protected:
+
+ /**
+ * Index of the face selected the
+ * last time the reinit()
+ * function was called.
+ */
+ unsigned int present_face_index;
+
/**
* Store a copy of the quadrature
* formula here.
}
+template <int dim>
+inline
+unsigned int
+FEFaceValuesBase<dim>::get_face_index () const
+{
+ return present_face_index;
+}
+
/*------------------------ Inline functions: FE*FaceValues --------------------*/
(new typename FEValuesBase<dim>::template
CellIterator<typename DoFHandler<dim>::cell_iterator> (cell));
+ // set the present face index
+ this->present_face_index=cell->face_index(face_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
(new typename FEValuesBase<dim>::template
CellIterator<typename hp::DoFHandler<dim>::cell_iterator> (cell));
+ // set the present face index
+ this->present_face_index=cell->face_index(face_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
(new typename FEValuesBase<dim>::template
CellIterator<typename MGDoFHandler<dim>::cell_iterator> (cell));
+ // set the present face index
+ this->present_face_index=cell->face_index(face_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
this->present_cell.reset
(new typename FEValuesBase<dim>::TriaCellIterator (cell));
+ // set the present face index
+ this->present_face_index=cell->face_index(face_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
ExcMessage ("You can't use subface data for cells that are "
"already refined. Iterate over their children "
"instead in these cases."));
+
+ // set the present face index
+ unsigned int real_subface_no=subface_no;
+ if (dim==3)
+ real_subface_no=GeometryInfo<dim>::standard_to_real_face_vertex(
+ subface_no, cell->face_orientation(face_no), cell->face_flip(face_no), cell->face_rotation(face_no));
+ this->present_face_index=cell->face(face_no)->child_index(real_subface_no);
// set new cell. auto_ptr will take
// care that old object gets
(new typename FEValuesBase<dim>::template
CellIterator<typename hp::DoFHandler<dim>::cell_iterator> (cell));
+ // set the present face index
+ unsigned int real_subface_no=subface_no;
+ if (dim==3)
+ real_subface_no=GeometryInfo<dim>::standard_to_real_face_vertex(
+ subface_no, cell->face_orientation(face_no), cell->face_flip(face_no), cell->face_rotation(face_no));
+ this->present_face_index=cell->face(face_no)->child_index(real_subface_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
(new typename FEValuesBase<dim>::template
CellIterator<typename MGDoFHandler<dim>::cell_iterator> (cell));
+ // set the present face index
+ unsigned int real_subface_no=subface_no;
+ if (dim==3)
+ real_subface_no=GeometryInfo<dim>::standard_to_real_face_vertex(
+ subface_no, cell->face_orientation(face_no), cell->face_flip(face_no), cell->face_rotation(face_no));
+ this->present_face_index=cell->face(face_no)->child_index(real_subface_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now
this->present_cell.reset
(new typename FEValuesBase<dim>::TriaCellIterator (cell));
+ // set the present face index
+ unsigned int real_subface_no=subface_no;
+ if (dim==3)
+ real_subface_no=GeometryInfo<dim>::standard_to_real_face_vertex(
+ subface_no, cell->face_orientation(face_no), cell->face_flip(face_no), cell->face_rotation(face_no));
+ this->present_face_index=cell->face(face_no)->child_index(real_subface_no);
+
// this was the part of the work
// that is dependent on the actual
// data type of the iterator. now