private:
/// Fill index vector
- void get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator c);
+ void get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator& c);
/// Fill index vector with level indices
- void get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator c);
+ void get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator& c);
/// Auxiliary vector
std::vector<unsigned int> indices_org;
template <int dim, int spacedim>
void
- DoFInfo<dim,spacedim>::get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator c)
+ DoFInfo<dim,spacedim>::get_indices(const typename DoFHandler<dim, spacedim>::cell_iterator& c)
{
indices.resize(c->get_fe().dofs_per_cell);
template <int dim, int spacedim>
void
- DoFInfo<dim,spacedim>::get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator c)
+ DoFInfo<dim,spacedim>::get_indices(const typename MGDoFHandler<dim, spacedim>::cell_iterator& c)
{
indices.resize(c->get_fe().dofs_per_cell);
const bool integrate_boundary = (boundary_worker != 0);
const bool integrate_interior_face = (face_worker != 0);
- const_cast<Triangulation<ITERATOR::AccessorType::Container::dimension>&>(
- begin->get_triangulation()).clear_user_flags();
-
// Loop over all cells
for (ITERATOR cell = begin; cell != end; ++cell)
{
for (unsigned int face_no=0; face_no < GeometryInfo<ITERATOR::AccessorType::Container::dimension>::faces_per_cell; ++face_no)
{
typename ITERATOR::AccessorType::Container::face_iterator face = cell->face(face_no);
- // Treat every face only once
- if (face->user_flag_set ()) continue;
-
if (cell->at_boundary(face_no))
{
if (integrate_boundary)
}
else if (integrate_interior_face)
{
- if (face->user_flag_set ()) continue;
- face->set_user_flag ();
// Interior face
typename ITERATOR::AccessorType::Container::cell_iterator
neighbor = cell->neighbor(face_no);
{
// Neighbor is
// on same
- // level
-
+ // level, but
+ // only do this
+ // from one side.
+ if (neighbor < cell) continue;
+
// If iterator
// is active
// and neighbor
face_worker(face_info, neighbor_info);
assembler.assemble (face_info, neighbor_info);
- neighbor->face(neighbor_face_no)->set_user_flag ();
}
}
} // faces