https://mooseframework.inl.gov
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
ReferenceResidualInterface Class Reference

Interface class shared between ReferenceResidualProblem and ReferenceResidualConvergence. More...

#include <ReferenceResidualInterface.h>

Inheritance diagram for ReferenceResidualInterface:
[legend]

Public Member Functions

 ReferenceResidualInterface (const MooseObject *moose_object)
 
template<typename T >
void addGroupVariables (const std::set< T > &group_vars)
 Add a set of variables that need to be grouped together. More...
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

std::vector< std::vector< NonlinearVariableName > > _group_variables
 Name of variables that are grouped together to check convergence. More...
 
bool _use_group_variables
 True if any variables are grouped. More...
 

Detailed Description

Interface class shared between ReferenceResidualProblem and ReferenceResidualConvergence.

Definition at line 21 of file ReferenceResidualInterface.h.

Constructor & Destructor Documentation

◆ ReferenceResidualInterface()

ReferenceResidualInterface::ReferenceResidualInterface ( const MooseObject moose_object)

Definition at line 90 of file ReferenceResidualInterface.C.

91  : _use_group_variables(false)
92 {
93  if (moose_object->isParamValid("group_variables"))
94  {
96  moose_object->getParam<std::vector<std::vector<NonlinearVariableName>>>("group_variables");
97  _use_group_variables = true;
98  }
99 }
const T & getParam(const std::string &name) const
Retrieve a parameter for the object.
Definition: MooseBase.h:416
std::vector< std::vector< NonlinearVariableName > > _group_variables
Name of variables that are grouped together to check convergence.
bool _use_group_variables
True if any variables are grouped.
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
Definition: MooseBase.h:209

Member Function Documentation

◆ addGroupVariables()

template<typename T >
void ReferenceResidualInterface::addGroupVariables ( const std::set< T > &  group_vars)

Add a set of variables that need to be grouped together.

For use in actions that create variables. This is templated for backwards compatibility to allow passing in std::string or NonlinearVariableName.

Template Parameters
Tstring type used for variable names
Parameters
group_varsA set of solution variables that need to be grouped.

Definition at line 48 of file ReferenceResidualInterface.h.

49 {
50  _group_variables.push_back(
51  std::vector<NonlinearVariableName>(group_vars.begin(), group_vars.end()));
52  _use_group_variables = true;
53 }
std::vector< std::vector< NonlinearVariableName > > _group_variables
Name of variables that are grouped together to check convergence.
bool _use_group_variables
True if any variables are grouped.

◆ validParams()

InputParameters ReferenceResidualInterface::validParams ( )
static

Definition at line 15 of file ReferenceResidualInterface.C.

Referenced by ReferenceResidualProblem::validParams(), and ReferenceResidualConvergence::validParams().

16 {
18 
19  params.addParam<SolverSystemName>(
20  "solver_sys", "nl0", "Solver system for which this object applies.");
21  params.addParam<TagName>(
22  "residual_vector",
23  "The tag name of the custom vector tag to use in place of the residual vector. This can be "
24  "used to provide greater control over which variable is used in absolute and relative "
25  "tolerancing. If not provided, the full residual vector will be used.");
26  params.addParam<TagName>("reference_vector", "The tag name of the reference residual vector.");
27  params.addParam<Real>("acceptable_multiplier",
28  1.0,
29  "Multiplier applied to relative tolerance for acceptable limit");
30  params.addParam<unsigned int>(
31  "acceptable_iterations",
32  0,
33  "Iterations after which convergence to acceptable limits is accepted");
34  params.addParam<std::vector<std::vector<NonlinearVariableName>>>(
35  "group_variables",
36  "Name of variables that are grouped together to check convergence. (Multiple groups can be "
37  "provided, separated by semicolon)");
38  params.addParam<std::vector<NonlinearVariableName>>(
39  "converge_on",
40  {},
41  "If supplied, use only these variables in the individual variable convergence check");
42  params.addParam<bool>("unscale_the_residual",
43  false,
44  "If set to true, utilize the variable specific residual scalar to unscale "
45  "the residual before comparing against the absolute tolerance. This will "
46  "also print the un-scaled residual to console. This will not change the "
47  "relative tolerance check except for console output");
48  MooseEnum Lnorm("global_L2 local_L2 global_Linf local_Linf", "global_L2");
49  params.addParam<MooseEnum>(
50  "normalization_type",
51  Lnorm,
52  "The normalization type used to compare the reference and actual residuals.");
53  Lnorm.addDocumentation("global_L2",
54  "Compare the L2 norm of the residual vector to the L2 norm of the "
55  "absolute reference vector to determine relative convergence");
56  Lnorm.addDocumentation(
57  "local_L2",
58  "Compute the L2 norm of the residual vector divided component-wise by the absolute reference "
59  "vector to the L2 norm of the absolute reference vector to determine relative convergence");
60  Lnorm.addDocumentation(
61  "global_Linf",
62  "Compare the L-infinity norm of the residual vector to the L-infinity norm of the "
63  "absolute reference vector to determine relative convergence");
64  Lnorm.addDocumentation(
65  "local_Linf",
66  "Compute the L-infinity norm of the residual vector divided component-wise "
67  "by the absolute reference "
68  "vector to the L-infinity norm of the absolute reference vector to "
69  "determine relative convergence");
70 
71  MooseEnum zero_ref_res("zero_tolerance relative_tolerance", "relative_tolerance");
72  params.addParam<MooseEnum>("zero_reference_residual_treatment",
73  zero_ref_res,
74  "Determine behavior if a reference residual value of zero is present "
75  "for a particular variable.");
76  zero_ref_res.addDocumentation("zero_tolerance",
77  "Solve is treated as converged if the residual is zero");
78  zero_ref_res.addDocumentation(
79  "relative_tolerance",
80  "Solve is treated as converged if the residual is below the relative tolerance");
81 
82  params.addParamNamesToGroup("acceptable_iterations acceptable_multiplier",
83  "Acceptable convergence");
84  params.addParamNamesToGroup("reference_vector", "Reference residual");
85  params.addParamNamesToGroup("group_variables", "Variables to check for convergence");
86 
87  return params;
88 }
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
InputParameters emptyInputParameters()
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:54
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addDocumentation(const std::string &name, const std::string &doc)
Add an item documentation string.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object...
void addParamNamesToGroup(const std::string &space_delim_names, const std::string group_name)
This method takes a space delimited list of parameter names and adds them to the specified group name...

Member Data Documentation

◆ _group_variables

std::vector<std::vector<NonlinearVariableName> > ReferenceResidualInterface::_group_variables
protected

Name of variables that are grouped together to check convergence.

Definition at line 40 of file ReferenceResidualInterface.h.

Referenced by addGroupVariables(), ReferenceResidualConvergence::initialSetup(), and ReferenceResidualInterface().

◆ _use_group_variables

bool ReferenceResidualInterface::_use_group_variables
protected

True if any variables are grouped.

Definition at line 43 of file ReferenceResidualInterface.h.

Referenced by addGroupVariables(), ReferenceResidualConvergence::initialSetup(), and ReferenceResidualInterface().


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