Petrov-Galerkin approach for Lagrange multipliers

Overview

The Petrov–Galerkin method is acknowledged to be a numerical method used to approximate solutions of partial differential equations where the test function and solution function belong to different function spaces.

For mortar-based mechanical contact, when dual shape function is utilized for the Lagrange multiplier variable, we may end up with a negative weighted gap value at certain nodes. This negative weighted gap value not only contradicts the continuum setting, but also may lead to unacceptable errors or even a non-converging active set strategy.

In order to resolve this issue, a Petrov–Galerkin interpolation for the Lagrange multiplier is proposed (see e.g., Popp and Wall (2014)). Specifically, dual shape functions are employed for the Lagrange multiplier field, thus resulting in the desired diagonal structure of mortar matrix, which allows for the condensation of the discrete Lagrange multiplier degrees of freedom (see VCP). On the other hand, the interpolation of its variation in the constraint equations is done by standard shape functions. To this end, this approach combines the strengths of both standard and dual Lagrange multiplier interpolation methods. Mathematically, this means

where and are the Lagrange multiplier variable and its variation, respectively. The is the total number of nodes along the secondary contact interface. The and are the discretized nodal values of the Lagrange multiplier variable and its variation, respectively. The is the dual basis function, the is the standard basis function.

Implementation and Usage Details

The Petrov-Galerkin method is implemented in MOOSE by overwriting the Lagrange multiplier's (dual) test functions using that of a standard Lagrange multiplier variable. This functionality is enabled for all mortar-based constraints and the weighted-gap user object.

To successfully use this approach in the contact action, one just needs to set use_petrov_galerkin = true in the Contact block. For example:


[Contact]
  [mortar]
    primary = 'bottom_top'
    secondary = 'top_bottom'
    formulation = mortar
    model = coulomb
    friction_coefficient = 0.4
    c_normal = 1e4
    c_tangential = 1.0e4
    use_petrov_galerkin = true
  []
[]

To successfully use this approach in Constraints based input, one needs to enable dual shape function interpolation of the Lagrange multiplier variables (use_dual = true). Additionally, one needs to define a dummy auxiliary variable on the secondary interface that utilizes standard test/shape functions. An example syntax is as follows:


[AuxVariables]
  [aux_lm]
    block = 'secondary_lower'
    order = SECOND # needs to be consistent with the Lagrange multiplier variable
    use_dual = false
  []
[]

Then enable Petrov-Galerkin in mortar-based Constraint as follows:


[Constraints]
  [example_mortar_constraint]
    type = ...
    ...
    ...
    use_petrov_galerkin = true
    aux_lm = aux_lm
  []
[]

Similarly, in the LMWeightedGapUserObject:


[UserObjects]
  [weighted_gap_uo]
    type = LMWeightedGapUserObject
    ...
    ...
    use_petrov_galerkin = true
    aux_lm = aux_lm
  []
[]
commentnote

One can enable Petrov-Galerkin for mortar-based constraints not limited to mechanical contact (e.g., gap conductance). It is up to the user's discretion about the meaningful usage of Petrov-Galerkin interpolation for the Lagrange multipliers.

References

  1. Alexander Popp and WA Wall. Dual mortar methods for computational contact mechanics–overview and recent developments. GAMM-Mitteilungen, 37(1):66–84, 2014.[BibTeX]