Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RANFS Contact #14454

Open
1 of 4 tasks
lindsayad opened this issue Nov 27, 2019 · 0 comments
Open
1 of 4 tasks

RANFS Contact #14454

lindsayad opened this issue Nov 27, 2019 · 0 comments
Assignees
Labels
C: Modules/Contact P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software.

Comments

@lindsayad
Copy link
Member

Reason

The Reduced Active Set (RAS) VI method in PETSc is a very robust algorithm that in my experience has shown robust monotonic convergence, e.g. no ping-ponging of the constraint set. However, PETSc's RAS algorithm is limited in that it only supports constraints that involve one degree of freedom. For MOOSE, I propose a more general algorithm called the Reduced Active Nonlinear Function Set (RANFS), name credit to @fdkong. This algorithm supports constraint equations that involve an arbitrary number of DOFs. The idea is that when a constraint is determined to be active, the standard non-linear residual is replaced by a constraint equation residual, thus ensuring that that constraint is enforced. A Lagrange Multiplier (LM) is then applied to the other dofs involved in the constraint. The LM can also be thought of as a slack variable that is equal to the replaced non-linear residual. Because of this equality, we can actually just apply the slack non-linear residual directly to the other dofs involved in the constraint; we do not actually have to create another non-linear variable to represent the LM.

Design

The easiest way to implement this is in constraint objects. These are executed after all other computing objects so we have access to the complete unconstrained residual and Jacobian.

Impact

This algorithm exactly satisfies constraints without introducing an LM variable into the system, which avoids a saddle-point formulation. Hence algorithms like AMG can be used. Moreover, no penalty factors are employed so the conditioning of the matrix is not impacted.

Items

  • Frictionless contact (RANFS for contact #14415)
  • Frictionless contact Jacobian
  • Frictional contact
  • Frictional contact Jacobian
@lindsayad lindsayad added T: task An enhancement to the software. P: normal A defect affecting operation with a low possibility of significantly affects. C: Modules labels Nov 27, 2019
@lindsayad lindsayad self-assigned this Nov 27, 2019
lindsayad added a commit to lindsayad/moose that referenced this issue Dec 16, 2019
A few lessons learned while implementing this algorithm:
Like Barry says, you should never alter your function
just because you're computing a linear vs a non-linear residual.
If you are doing that, then you are doing something wrong. So I
learned that I should not just do the computation of the lagrange
multiplier during the nonlinear residual evaluation because then
when doing JFNK there will appear to be no dependence of the master
residuals on the lagrange multiplier calculation which is function
of the slave node residual which is a function of all the dofs
on all the connected elements

The added test should always converge in two non-linear iterations
because aftr the first iteration we identify the active set,
and then we solve with the reduced residual set during the second
non-linear iteration and then we are golden

Refs idaholab#14454
lindsayad added a commit to lindsayad/moose that referenced this issue Dec 20, 2019
lindsayad added a commit to lindsayad/moose that referenced this issue Dec 24, 2019
dewenyushu added a commit to dewenyushu/moose that referenced this issue Feb 7, 2020
dewenyushu added a commit to dewenyushu/moose that referenced this issue Feb 11, 2020
dewenyushu added a commit to dewenyushu/moose that referenced this issue Feb 11, 2020
dewenyushu added a commit to dewenyushu/moose that referenced this issue Feb 11, 2020
aeslaughter pushed a commit to aeslaughter/moose that referenced this issue Feb 13, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C: Modules/Contact P: normal A defect affecting operation with a low possibility of significantly affects. T: task An enhancement to the software.
Projects
None yet
Development

No branches or pull requests

1 participant