Hello,
Even though this discussion is a couple of months old, I would like to join, as I am confronted with the same issue as Vinayak.
Namely, for my problem, I need the solution to the global Lagrange multipliers during the assembly of the RHS. Hence, when looping over all cells during the numerical integration, I need to always have access to the solution on, e.g., the first cell. How is this compatible with the parallel approach using WorkStream presented in step-44, which I was hoping to use as a template?
---------------------------
Alternatively, I thought about using AffineConstraints, where all DOFs belonging to one Lagrange multiplier are constrained to the DOF with the lowest index. In this case, I would pass the constraints object to DoFTools::make_sparsity_pattern() hoping this might keep the size of the stiffness matrix reasonably small:
constraints.clear()
ComponentMask mask = fe.component_mask(multipliers_fe);
const IndexSet dofs =
DoFTools::extract_dofs(dof_handler, mask);
const types::global_dof_index first_dof =
dofs.nth_index_in_set(0);
for (const types::global_dof_index i : dofs)
{
if (i != first_dof)
{
constraints.add_constraint(i, {{first_dof, 1.0}});
}
}
constraints.close()
How do you rate this second approach compared to the first one? Are there any issues to be expected?
Thank you in advance.
Best regards
Jasper