AssertDimension(M.m(), i1.size());
AssertDimension(M.n(), i2.size());
+ if(mg_constrained_dofs == 0)
+ {
for (unsigned int j=0; j<i1.size(); ++j)
for (unsigned int k=0; k<i2.size(); ++k)
if (std::fabs(M(j,k)) >= threshold)
G.add(i1[j], i2[k], M(j,k));
+ }
+ else
+ {
+ for (unsigned int j=0; j<i1.size(); ++j)
+ for (unsigned int k=0; k<i2.size(); ++k)
+ if (std::fabs(M(j,k)) >= threshold)
+ {
+ if(!mg_constrained_dofs->continuity_across_refinement_edges())
+ G.add(i1[j], i2[k], M(j,k));
+ }
+ }
}
for (unsigned int j=0; j<i1.size(); ++j)
for (unsigned int k=0; k<i2.size(); ++k)
if (std::fabs(M(k,j)) >= threshold)
- {
- if(!mg_constrained_dofs->at_refinement_edge(level, i1[j]) ||
- mg_constrained_dofs->at_refinement_edge(level, i2[k]))
- {
- if(!mg_constrained_dofs->continuity_across_edges())
- G.add(i1[j], i2[k], M(k,j));
- }
- }
+ if(mg_constrained_dofs->at_refinement_edge(level, i1[j]) &&
+ !mg_constrained_dofs->at_refinement_edge(level, i2[k]))
+ G.add(i1[j], i2[k], M(k,j));
}
}
for (unsigned int j=0; j<i1.size(); ++j)
for (unsigned int k=0; k<i2.size(); ++k)
if (std::fabs(M(j,k)) >= threshold)
- {
- if(!mg_constrained_dofs->at_refinement_edge(level, i1[j]) ||
- mg_constrained_dofs->at_refinement_edge(level, i2[k]))
- {
- if(!mg_constrained_dofs->continuity_across_edges())
+ if(mg_constrained_dofs->at_refinement_edge(level, i1[j]) &&
+ !mg_constrained_dofs->at_refinement_edge(level, i2[k]))
G.add(i1[j], i2[k], M(j,k));
- }
- }
}
}
assemble((*matrix)[level], info.matrix(0,false).matrix, info.indices, info.indices, level);
if(mg_constrained_dofs != 0)
- //if(interface_in != 0 && interface_out != 0 && level>0)
{
assemble_in((*interface_in)[level], info.matrix(0,false).matrix, info.indices, info.indices, level);
assemble_out((*interface_out)[level],info.matrix(0,false).matrix, info.indices, info.indices, level);
const unsigned int dofs_per_cell = fe.dofs_per_cell;
const unsigned int dofs_per_face = fe.dofs_per_face;
+
+ deallog << "dofs_per_face" << dofs_per_face << std::endl;
+
std::vector<unsigned int> local_dof_indices (dofs_per_cell);
std::vector<unsigned int> face_dof_indices (dofs_per_face);
std::fill (cell_dofs.begin(), cell_dofs.end(), false);
std::fill (boundary_cell_dofs.begin(), boundary_cell_dofs.end(), false);
- if(fe.conforms(FiniteElementData<dim>::H1))
- {
for (unsigned int face_nr=0; face_nr<GeometryInfo<dim>::faces_per_cell; ++face_nr)
{
const typename DoFHandler<dim,spacedim>::face_iterator face = cell->face(face_nr);
boundary_interface_dofs[level][local_dof_indices[i]] = true;
}
}
- }
}
#endif