https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
ContactSplit Class Reference

Split-based preconditioner for contact problems. More...

#include <ContactSplit.h>

Inheritance diagram for ContactSplit:
[legend]

Public Types

typedef DataFileName DataFileParameterType
 

Public Member Functions

 ContactSplit (const InputParameters &params)
 
virtual void setup (NonlinearSystemBase &nl, const std::string &prefix) override
 
virtual bool enabled () const
 
std::shared_ptr< MooseObjectgetSharedPtr ()
 
std::shared_ptr< const MooseObjectgetSharedPtr () const
 
bool isKokkosObject () const
 
MooseAppgetMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParametersparameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const TgetParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const TqueryParam (const std::string &name) const
 
const TgetRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 

Protected Types

enum  SplittingType
 

Protected Member Functions

void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 
TdeclareRestartableData (const std::string &data_name, Args &&... args)
 
ManagedValue< TdeclareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
const TgetRestartableData (const std::string &data_name) const
 
TdeclareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args)
 
TdeclareRecoverableData (const std::string &data_name, Args &&... args)
 
TdeclareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args)
 
TdeclareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args)
 
std::string restartableName (const std::string &data_name) const
 

Protected Attributes

const std::vector< std::pair< BoundaryName, BoundaryName > > _contact_pairs
 
std::vector< int_contact_displaced
 
const std::vector< std::pair< BoundaryName, BoundaryName > > _uncontact_pairs
 
std::vector< int_uncontact_displaced
 
bool _include_all_contact_nodes
 
 SplittingTypeAdditive
 
 SplittingTypeMultiplicative
 
 SplittingTypeSymmetricMultiplicative
 
 SplittingTypeSchur
 
FEProblemBase_fe_problem
 
std::vector< NonlinearVariableName > _vars
 
std::vector< std::string > _splitting
 
const bool & _enabled
 
MooseApp_app
 
Factory_factory
 
ActionFactory_action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters_pars
 
MooseApp_restartable_app
 
const std::string _restartable_system_name
 
const THREAD_ID _restartable_tid
 
const bool _restartable_read_only
 
std::vector< SubdomainName > _blocks
 
std::vector< BoundaryName > _sides
 
std::vector< BoundaryName > _unsides
 
MooseEnum _splitting_type
 
MooseEnum _schur_type
 
MooseEnum _schur_pre
 
const Parallel::Communicator & _communicator
 

Private Member Functions

RestartableDataValueregisterRestartableDataOnApp (std::unique_ptr< RestartableDataValue > data, THREAD_ID tid) const
 
void registerRestartableNameWithFilterOnApp (const std::string &name, Moose::RESTARTABLE_FILTER filter)
 
RestartableData< T > & declareRestartableDataHelper (const std::string &data_name, void *context, Args &&... args) const
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

const ParallelParamObject_parent
 
const MooseBase_si_moose_base
 
const FEProblemBase_si_problem
 
const RestartableDataMapName _metaname
 
std::string _restartable_name
 

Detailed Description

Split-based preconditioner for contact problems.

Definition at line 18 of file ContactSplit.h.

Constructor & Destructor Documentation

◆ ContactSplit()

ContactSplit::ContactSplit ( const InputParameters params)

Definition at line 45 of file ContactSplit.C.

46 : Split(params),
47 _contact_pairs(getParam<BoundaryName, BoundaryName>("contact_primary", "contact_secondary")),
48 _contact_displaced(getParam<std::vector<int>>("contact_displaced")),
50 getParam<BoundaryName, BoundaryName>("uncontact_primary", "uncontact_secondary")),
51 _uncontact_displaced(getParam<std::vector<int>>("uncontact_displaced")),
52 _include_all_contact_nodes(getParam<bool>("include_all_contact_nodes"))
53{
54 if (!_contact_displaced.empty() && _contact_pairs.size() != _contact_displaced.size())
55 mooseError("Primary and displaced contact lists must have matching sizes: ",
56 _contact_pairs.size(),
57 " != ",
58 _contact_displaced.size());
59
60 if (_contact_displaced.empty())
62
63 if (!_uncontact_displaced.empty() && _uncontact_pairs.size() != _uncontact_displaced.size())
64 mooseError("Primary and displaced uncontact lists must have matching sizes: ",
65 _uncontact_pairs.size(),
66 " != ",
68
69 if (!_uncontact_displaced.size())
71}
const std::vector< std::pair< BoundaryName, BoundaryName > > _uncontact_pairs
bool _include_all_contact_nodes
std::vector< int > _uncontact_displaced
std::vector< int > _contact_displaced
const std::vector< std::pair< BoundaryName, BoundaryName > > _contact_pairs
void mooseError(Args &&... args) const
const T & getParam(const std::string &name) const

Member Function Documentation

◆ setup()

void ContactSplit::setup ( NonlinearSystemBase nl,
const std::string &  prefix 
)
overridevirtual

Reimplemented from Split.

Definition at line 74 of file ContactSplit.C.

75{
76 // A reference to the PetscOptions
78 // prefix
79 const std::string dmprefix = '-' + prefix + "dm_moose_";
80
81 // contacts options
82 if (!_contact_pairs.empty())
83 {
84 // append PETSc options
85 po.pairs.emplace_back(dmprefix + "ncontacts", Moose::stringify(_contact_pairs.size()));
86
87 for (std::size_t j = 0; j < _contact_pairs.size(); ++j)
88 {
89 auto opt = dmprefix + "contact_" + Moose::stringify(j);
90 po.pairs.emplace_back(opt, Moose::stringify(_contact_pairs[j], ","));
91
92 if (_contact_displaced[j])
93 po.pairs.emplace_back(opt + "_displaced", "yes");
94 }
95 }
96
97 // uncontacts options
98 if (!_uncontact_pairs.empty())
99 {
100 po.pairs.emplace_back(dmprefix + "nuncontacts", Moose::stringify(_uncontact_pairs.size()));
101
102 for (std::size_t j = 0; j < _uncontact_pairs.size(); ++j)
103 {
104 auto opt = dmprefix + "uncontact_" + Moose::stringify(j);
105 po.pairs.emplace_back(opt, Moose::stringify(_uncontact_pairs[j], ","));
106
108 po.pairs.emplace_back(opt + "_displaced", "yes");
109 }
110 }
111
112 // Whether to include all nodes on the contact surfaces
113 // into the contact subsolver
114 po.pairs.emplace_back(dmprefix + "includeAllContactNodes",
115 _include_all_contact_nodes ? "yes" : "no");
116 Split::setup(nl, prefix);
117}
std::string opt
Moose::PetscSupport::PetscOptions & getPetscOptions()
std::vector< std::pair< std::string, std::string > > pairs
virtual void setup(NonlinearSystemBase &nl, const std::string &prefix="")
FEProblemBase & _fe_problem
std::string stringify(const T &t)

◆ validParams()

InputParameters ContactSplit::validParams ( )
static

Definition at line 18 of file ContactSplit.C.

19{
21 params.addParam<std::vector<BoundaryName>>("contact_primary",
22 "Primary surface list for included contacts");
23 params.addParam<std::vector<BoundaryName>>("contact_secondary",
24 "Secondary surface list for included contacts");
25 params.addParam<std::vector<int>>(
26 "contact_displaced",
27 {},
28 "List of indicators whether displaced mesh is used to define included contact");
29 params.addParam<std::vector<BoundaryName>>("uncontact_primary",
30 "Primary surface list for excluded contacts");
31 params.addParam<std::vector<BoundaryName>>("uncontact_secondary",
32 "Secondary surface list for excluded contacts");
33 params.addParam<std::vector<int>>(
34 "uncontact_displaced",
35 {},
36 "List of indicators whether displaced mesh is used to define excluded contact");
37 params.addRequiredParam<bool>("include_all_contact_nodes",
38 "Whether to include all nodes on the contact surfaces");
39 params.addClassDescription("Split-based preconditioner that partitions the domain into DOFs "
40 "directly involved in contact (on contact surfaces) and those "
41 "that are not");
42 return params;
43}
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
static InputParameters validParams()

Member Data Documentation

◆ _contact_displaced

std::vector<int> ContactSplit::_contact_displaced
protected

Definition at line 28 of file ContactSplit.h.

Referenced by ContactSplit(), and setup().

◆ _contact_pairs

const std::vector<std::pair<BoundaryName, BoundaryName> > ContactSplit::_contact_pairs
protected

Definition at line 27 of file ContactSplit.h.

Referenced by ContactSplit(), and setup().

◆ _include_all_contact_nodes

bool ContactSplit::_include_all_contact_nodes
protected

Definition at line 31 of file ContactSplit.h.

Referenced by setup().

◆ _uncontact_displaced

std::vector<int> ContactSplit::_uncontact_displaced
protected

Definition at line 30 of file ContactSplit.h.

Referenced by ContactSplit(), and setup().

◆ _uncontact_pairs

const std::vector<std::pair<BoundaryName, BoundaryName> > ContactSplit::_uncontact_pairs
protected

Definition at line 29 of file ContactSplit.h.

Referenced by ContactSplit(), and setup().


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