I am trying to solve a problem that enforces some constraints on the system using Lagrange multipliers (LMs).  The constraints are sort of on the average behavior of certain quantities (for eg. centre of mass) in the domain which is why the LMs are not field variables. This implies they do not depend on the discretization and thus don't need to be a part of the FiniteElements. This is different from some of the problems already discussed in the tutorials, for eg., implementing incompressibility (step-44) wherein the LMs are taken as finite elements or the obstacle problem (step-42) in which the active-inactive set strategy is used.

Specifically, i have six constraint equations and thus six LMs. Therefore, the total number of unknowns becomes n_dofs+n_lagrange_multiplers(=6).

I have attempted to implement this using the naive way of simply augmenting the system_rhs(required size=n_dofs+6) and system_matrix(required size=n_dofs+6)  for these "extra dofs". The point where i get stuck is when the function make_sparsity_pattern() checks for the condition: sparsity.n_rows() == n_dofs

This condition is of course violated because i initialize my sparsity pattern with rows=dofs + n_lagrange_multiplers(=6), columns=dofs + n_lagrange_multiplers(=6) whereas the dof_handler has no information about the "extra dofs" i.e. the LMs.

How can i solve this problem? Is there a better way to approach it?

Vinayak:
This happens to be exactly the kind of situation that we're still discussing 
here:
  https://github.com/dealii/dealii/pull/16412
I think you want to specifically look at the last comment at the bottom where I point to a proposed code gallery program.

Best
 Wolfgang

--
------------------------------------------------------------------------
Wolfgang Bangerth          email:                 [email protected]
                           www: http://www.math.colostate.edu/~bangerth/


--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/030610cf-39aa-478c-a46e-23e365869814%40colostate.edu.

Reply via email to