https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
AugmentedLagrangianContactProblemTempl< T > Class Template Reference

Class to manage nested solution for augmented Lagrange contact. More...

#include <AugmentedLagrangianContactProblem.h>

Inheritance diagram for AugmentedLagrangianContactProblemTempl< T >:
[legend]

Public Member Functions

 AugmentedLagrangianContactProblemTempl (const InputParameters &params)
 
virtual ~AugmentedLagrangianContactProblemTempl ()
 
virtual void addDefaultNonlinearConvergence (const InputParameters &params) override
 
virtual bool onlyAllowDefaultNonlinearConvergence () const override
 
void addDefaultNonlinearConvergence (const InputParameters &params_to_apply)
 
void addDefaultNonlinearConvergence (const InputParameters &params_to_apply)
 
virtual const AugmentedLagrangianContactConvergenceBase & getAugmentedLagrangianContactConvergence () const
 
virtual const unsigned int & getLagrangianIterationNumber () const
 

Static Public Member Functions

static InputParameters validParams ()
 

Private Attributes

FEProblemBase & _problem
 The problem that owns this interface, used to look up the convergence object.
 

Detailed Description

template<class T>
class AugmentedLagrangianContactProblemTempl< T >

Class to manage nested solution for augmented Lagrange contact.

The AugmentedLagrangianContactProblem manages the nested solution procedure, repeating the solution until convergence has been achieved, checking for convergence, and updating the Lagrangian multipliers.

Definition at line 25 of file AugmentedLagrangianContactProblem.h.

Constructor & Destructor Documentation

◆ AugmentedLagrangianContactProblemTempl()

Definition at line 46 of file AugmentedLagrangianContactProblem.C.

48 : T(params), AugmentedLagrangianContactProblemInterface(params, *this)
49{
50}
const double T
Class to provide an interface for parameters and routines required to check convergence for the augme...

◆ ~AugmentedLagrangianContactProblemTempl()

template<class T >
virtual AugmentedLagrangianContactProblemTempl< T >::~AugmentedLagrangianContactProblemTempl ( )
inlinevirtual

Definition at line 32 of file AugmentedLagrangianContactProblem.h.

32{}

Member Function Documentation

◆ addDefaultNonlinearConvergence() [1/3]

template<class T >
virtual void AugmentedLagrangianContactProblemTempl< T >::addDefaultNonlinearConvergence ( const InputParameters &  params)
overridevirtual

◆ addDefaultNonlinearConvergence() [2/3]

void AugmentedLagrangianContactProblemTempl< ReferenceResidualProblem >::addDefaultNonlinearConvergence ( const InputParameters &  params_to_apply)

Definition at line 54 of file AugmentedLagrangianContactProblem.C.

56{
57 std::string class_name = "AugmentedLagrangianContactReferenceConvergence";
58 InputParameters params = this->_factory.getValidParams(class_name);
59 params.applyParameters(params_to_apply);
60 params.applyParameters(parameters());
61 params.set<bool>("added_as_default") = true;
62 // TODO: Add multi-nonlinear system support
63 if (this->numNonlinearSystems() > 1)
64 mooseError("Multi-system not currently implemented");
65 this->addConvergence(class_name, this->getNonlinearConvergenceNames()[0], params);
66}
void mooseError(Args &&... args)
T & set(const std::string &name, bool quiet_mode=false)
void applyParameters(const InputParameters &common, const std::vector< std::string > &exclude={}, const bool allow_private=false)

◆ addDefaultNonlinearConvergence() [3/3]

void AugmentedLagrangianContactProblemTempl< FEProblem >::addDefaultNonlinearConvergence ( const InputParameters &  params_to_apply)

Definition at line 70 of file AugmentedLagrangianContactProblem.C.

72{
73 std::string class_name = "AugmentedLagrangianContactFEProblemConvergence";
74 InputParameters params = _factory.getValidParams(class_name);
75 params.applyParameters(params_to_apply);
76 params.applyParameters(parameters());
77 params.set<bool>("added_as_default") = true;
78 // TODO: Add multi-nonlinear system support
79 if (this->numNonlinearSystems() > 1)
80 mooseError("Multi-system not currently implemented");
81 this->addConvergence(class_name, this->getNonlinearConvergenceNames()[0], params);
82}

◆ getAugmentedLagrangianContactConvergence()

const AugmentedLagrangianContactConvergenceBase & AugmentedLagrangianContactProblemInterface::getAugmentedLagrangianContactConvergence ( ) const
virtualinherited
Returns
the augmented Lagrangian contact convergence object of the problem's nonlinear solve

Definition at line 31 of file AugmentedLagrangianContactProblemInterface.C.

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}
const std::string name
Definition Setup.h:21
Non-templated base of AugmentedLagrangianContactConvergence that owns the augmented Lagrangian iterat...
FEProblemBase & _problem
The problem that owns this interface, used to look up the convergence object.
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

Referenced by AugmentedLagrangianContactProblemInterface::getLagrangianIterationNumber().

◆ getLagrangianIterationNumber()

virtual const unsigned int & AugmentedLagrangianContactProblemInterface::getLagrangianIterationNumber ( ) const
inlinevirtualinherited

◆ onlyAllowDefaultNonlinearConvergence()

template<class T >
virtual bool AugmentedLagrangianContactProblemTempl< T >::onlyAllowDefaultNonlinearConvergence ( ) const
inlineoverridevirtual

Definition at line 35 of file AugmentedLagrangianContactProblem.h.

35{ return true; }

◆ validParams()

template<class T >
InputParameters AugmentedLagrangianContactProblemTempl< T >::validParams ( )
static

Definition at line 37 of file AugmentedLagrangianContactProblem.C.

38{
39 InputParameters params = T::validParams();
41 params.addClassDescription("Manages nested solution for augmented Lagrange contact");
42 return params;
43}
void addClassDescription(const std::string &doc_string)

Member Data Documentation

◆ _problem

FEProblemBase& AugmentedLagrangianContactProblemInterface::_problem
privateinherited

The problem that owns this interface, used to look up the convergence object.

Definition at line 40 of file AugmentedLagrangianContactProblemInterface.h.

Referenced by AugmentedLagrangianContactProblemInterface::getAugmentedLagrangianContactConvergence().


The documentation for this class was generated from the following files: