I have another MeshWorker problem that I am trying to work through. I am currently trying to assemble all face terms from the interior side of the element; this means that each face is visited twice (well, for conforming meshes). The problem I ran into is that MeshWorker only assembles face terms from the more refined side. I added some code (below, line ~187 of meshworker/loop.h) to enable assembling a face term from the coarser element side. This code will compile and run fine, but my test results do not look good; that is, it looks like the fluxes are not being assemble correctly. I have attached a picture of what *should* be a uniformly zero solution.
Thanks.
/************* Code snippet, starts at line 187 of meshworker/loop.h ***********/
else if (!unique_faces_only && neighbor->has_children())
{
// Since we are now dealing with assembling
// each face itself (i.e. !unique_faces_only),
// we must deal with assembly the current face
// when the neighbor is more refined
const unsigned int neighbor2=cell->neighbor_of_neighbor(face_no);
for (unsigned int subface_no=0;
subface_no < face->n_children();
++subface_no)
{
TriaIterator<typename ITERATOR::AccessorType>
neighbor_child
= cell->neighbor_child_on_subface (face_no, subface_no);
const typename ITERATOR::AccessorType::Container::face_iterator
nface = neighbor_child->face(neighbor2);
Assert (nface == face->child(subface_no), ExcInternalError());
Assert (neighbor_child->has_children() == false,
ExcInternalError());
dof_info.interior_face_available[face_no] = true;
dof_info.exterior_face_available[face_no] = true;
dof_info.interior[face_no].reinit(
cell, face, face_no, subface_no);
info.subface.reinit(dof_info.interior[face_no]);
dof_info.exterior[face_no].reinit(neighbor_child, nface, neighbor2);
info.neighbor.reinit(dof_info.exterior[face_no]);
face_worker(dof_info.interior[face_no], dof_info.exterior[face_no],
info.subface, info.neighbor);
}//subfaces
}
else {
// Neighbor is....
/****************************************************************************************************************/