Change of DualMortarCoupling assembly/mortar transformation
Dear dune-contact-users,
we (Elias and me) would like to change the internal implementation of the (non-)mortar matrix storage/usage a bit to improve the usability of the code for the case of perodic contact boundaries and large deformation contact problems. In particular we want to change the following:
- The
DualMortarCoupling*
should store the non-mortar/mortar matrix with global indices as column indices (not the inverse non-mortar matrix with local column indices and the scaled mortar matrix like it is currently the case) On this occasion the matrix types should also be changed to BCRSMatrix to be more efficient. Further, the weak obstacles won't be scaled with the inverse non-mortar matrix which is explained in point 2. - The inversion of the non-mortar matrix and scaling of mortar matrix is done directly when the transformation matrix
BT_
is assembled. Additionally the inverse non-mortar matrix enters in the non-mortar block as well to make a scaling of the weak obstacles obsolete. - The multigrid transfer operators are setup from contact assemblers directly. By now the
setup
method gets a bunch of things that all have to be extracted from the contact assemblers first. This will be avoided that way.
As long as users are only using the methods assembleTransferOperator
, setup
, assembleJacobians/RightHandSide
and
don't use the special structure of the stored non-mortar and mortar matrix these implementation changes should not be seen by the users.
Only the transfer-operator assembly will simplify.
Are there any opinions on this change?