https://mooseframework.inl.gov
Loading...
Searching...
No Matches
AugmentedLagrangianContactProblemInterface.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
11#include "FEProblemBase.h"
12#include "Convergence.h"
13
16{
17 auto params = emptyInputParameters();
18 params.addParam<int>("maximum_lagrangian_update_iterations",
19 100,
20 "Maximum number of update Lagrangian Multiplier iterations per step");
21 return params;
22}
23
29
32{
33 mooseAssert(_problem.numNonlinearSystems() == 1, "Multiple nonlinear systems are not supported.");
34
35 const auto & name = _problem.getNonlinearConvergenceNames()[0];
36 const auto * const convergence = dynamic_cast<const AugmentedLagrangianContactConvergenceBase *>(
38 if (!convergence)
39 mooseError("The nonlinear convergence object '",
40 name,
41 "' is not an augmented Lagrangian contact convergence.");
42 return *convergence;
43}
InputParameters emptyInputParameters()
void mooseError(Args &&... args)
const std::string name
Definition Setup.h:21
Non-templated base of AugmentedLagrangianContactConvergence that owns the augmented Lagrangian iterat...
AugmentedLagrangianContactProblemInterface(const InputParameters &params, FEProblemBase &problem)
FEProblemBase & _problem
The problem that owns this interface, used to look up the convergence object.
virtual const AugmentedLagrangianContactConvergenceBase & getAugmentedLagrangianContactConvergence() const
const std::vector< ConvergenceName > & getNonlinearConvergenceNames() const
virtual std::size_t numNonlinearSystems() const override
virtual Convergence & getConvergence(const std::string &name, const THREAD_ID tid=0) const