// Now create constraint matrix for the subfaces and
// assemble it. ignore all interfaces with artificial
// cells because we can only get to such interfaces if
- // the current cell is a ghost cell. also ignore the
- // interface if the neighboring cell is a ghost cell in
- // 2d: what we would compute here are the constraints
- // on the ghost cell's DoFs, but we are not interested
- // in those: we only want constraints on *locally
- // active* DoFs, not on *locally relevant* DoFs.
- // However, in 3d we must still compute those
- // constraints because it might happen that a
- // constraint is related to an edge where the hanging
- // node is only detected if we also look between ghosts
+ // the current cell is a ghost cell
for (unsigned int c=0; c<cell->face(face)->n_children(); ++c)
{
- if (cell->neighbor_child_on_subface (face, c)->is_artificial()
- ||
- (dim == 2 && cell->neighbor_child_on_subface (face, c)->is_ghost()))
+ if (cell->neighbor_child_on_subface (face, c)->is_artificial())
continue;
const typename DH::active_face_iterator
+DEAL:0::locally owned:
+DEAL:0::{[0,26]}
+DEAL:0::relevant set:
+DEAL:0::{[0,29], [33,34], [39,43]}
+DEAL:0::constraint_matrix:
+ 0 = 0
+ 1 = 0
+ 2 = 0
+ 4 = 0
+ 6 = 0
+ 8 3: 0.500000
+ 8 5: 0.500000
+ 9 3: 0.500000
+ 9 7: 0.500000
+ 12 7: 0.500000
+ 12 13: 0.500000
+ 14 = 0
+ 15 5: 0.500000
+ 17 = 0
+ 21 = 0
+ 23 = 0
+ 24 = 0
+ 26 = 0
+ 27 = 0
+ 41 13: 0.500000
+ 41 33: 0.500000
+ 43 = 0
DEAL:0::OK