// Add the computed
// constraints to the
- // constraint matrix.
+ // constraint matrix,
+ // if the degree of
+ // freedom is not
+ // already constrained.
for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
- {
- constraints.add_line (face_dof_indices[dof]);
-
- if (std::abs (dof_values[dof]) > 1e-14)
- constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
- }
+ if (!(constraints.is_constrained (face_dof_indices[dof])))
+ {
+ constraints.add_line (face_dof_indices[dof]);
+
+ if (std::abs (dof_values[dof]) > 1e-14)
+ constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
+ }
}
break;
}
// Add the computed constraints
- // to the constraint matrix.
+ // to the constraint matrix, if
+ // the degree of freedom is not
+ // already constrained.
for (unsigned int dof = 0; dof < n_dofs; ++dof)
- if (projected_dofs[dof] != -1)
+ if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
{
constraints.add_line (dof);
constraints.set_inhomogeneity (dof, computed_constraints[dof]);
cell->active_fe_index ());
for (unsigned int dof = 0; dof < dofs_per_face; ++dof)
- {
- constraints.add_line (face_dof_indices[dof]);
-
- if (std::abs (dof_values[dof]) > 1e-14)
- constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
- }
+ if (!(constraints.is_constrained (face_dof_indices[dof])))
+ {
+ constraints.add_line (face_dof_indices[dof]);
+
+ if (std::abs (dof_values[dof]) > 1e-14)
+ constraints.set_inhomogeneity (face_dof_indices[dof], dof_values[dof]);
+ }
}
break;
}
for (unsigned int dof = 0; dof < n_dofs; ++dof)
- if (projected_dofs[dof] != -1)
+ if ((projected_dofs[dof] != -1) && !(constraints.is_constrained (dof)))
{
constraints.add_line (dof);
constraints.set_inhomogeneity (dof, computed_constraints[dof]);
<h3>deal.II</h3>
<ol>
+ <li><p>Fixed: The methods VectorTools::project_boundary_values_curl_conforming
+ set the boundary values now also H(curl)-conforming, when hanging node
+ constraints are present.
+ <br>
+ (Markus Buerg, 2010/10/11)
+ </p></li>
+
<li><p>Changed: The DataPostprocessor functions now take an additional
argument that indicates the location of an evaluation point. For backward
compatibility, the old function signature still exists so that applications