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

Helper class for ParsedMaterial and DerivativeParsedMaterial to declare and read the input parameters. More...

#include <ParsedMaterialBase.h>

Inheritance diagram for ParsedMaterialBase:
[legend]

Public Member Functions

 ParsedMaterialBase (const InputParameters &parameters)
 
virtual ~ParsedMaterialBase ()=default
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Member Functions

void validateVectorNames (const std::set< std::string > &reserved_names={})
 Function to ensure that the names of constants, tolerances, and functors do not overlap with each other and (optional) additional names.
 

Protected Attributes

const std::string _function_param
 Parameter that the function comes from.
 
const std::string _function
 function expression
 
std::vector< std::string > _constant_names
 constant vectors
 
std::vector< std::string > _constant_expressions
 
std::vector< std::string > _tol_names
 tolerance vectors
 
std::vector< Real > _tol_values
 
std::vector< MooseFunctorName > _functor_names
 Functor vectors (names, count, and symbols)
 
std::vector< std::string > _functor_symbols
 

Detailed Description

Helper class for ParsedMaterial and DerivativeParsedMaterial to declare and read the input parameters.

Definition at line 18 of file ParsedMaterialBase.h.

Constructor & Destructor Documentation

◆ ParsedMaterialBase()

ParsedMaterialBase::ParsedMaterialBase ( const InputParameters parameters)

Definition at line 76 of file ParsedMaterialBase.C.

77 : _function_param(parameters.isParamValid("function") ? "function" : "expression"),
78 _function(parameters.get<std::string>(_function_param))
79{
80 // get constant vectors
81 _constant_names = parameters.get<std::vector<std::string>>("constant_names");
82 _constant_expressions = parameters.get<std::vector<std::string>>("constant_expressions");
83
84 // get tolerance vectors
85 _tol_names = parameters.get<std::vector<std::string>>("tol_names");
86 _tol_values = parameters.get<std::vector<Real>>("tol_values");
87
88 // get functor vectors
89 _functor_names = parameters.get<std::vector<MooseFunctorName>>("functor_names");
90 _functor_symbols = parameters.get<std::vector<std::string>>("functor_symbols");
91
92 // validate all vector names (constants, tolerances, and functors)
94}
std::vector< std::pair< R1, R2 > > get(const std::string &param1, const std::string &param2) const
Combine two vector parameters into a single vector of pairs.
bool isParamValid(const std::string &name) const
This method returns parameters that have been initialized in one fashion or another,...
std::vector< MooseFunctorName > _functor_names
Functor vectors (names, count, and symbols)
const std::string _function_param
Parameter that the function comes from.
std::vector< std::string > _tol_names
tolerance vectors
std::vector< Real > _tol_values
std::vector< std::string > _constant_names
constant vectors
const std::string _function
function expression
std::vector< std::string > _functor_symbols
std::vector< std::string > _constant_expressions
void validateVectorNames(const std::set< std::string > &reserved_names={})
Function to ensure that the names of constants, tolerances, and functors do not overlap with each oth...
const Elem & get(const ElemType type_in)

◆ ~ParsedMaterialBase()

virtual ParsedMaterialBase::~ParsedMaterialBase ( )
virtualdefault

Member Function Documentation

◆ validateVectorNames()

void ParsedMaterialBase::validateVectorNames ( const std::set< std::string > &  reserved_names = {})
protected

Function to ensure that the names of constants, tolerances, and functors do not overlap with each other and (optional) additional names.

Parameters
reserved_namesoptional set of names additionaly not to be allowed.

Definition at line 97 of file ParsedMaterialBase.C.

98{
99 // helper method to raise an paramError
100 auto raiseErr = [this](std::string param_name, std::string msg)
101 {
102 if (auto derived_object = dynamic_cast<MooseObject *>(this))
103 derived_object->paramError(param_name, msg);
104 else
105 mooseException(msg);
106 };
107
108 auto hasDuplicates = [](const std::vector<std::string> & values)
109 {
110 std::set<std::string> s(values.begin(), values.end());
111 return values.size() != s.size();
112 };
113
114 // helper function to check if the name given is one of the constants
115 auto isKnownConstantName = [this](const std::string & name)
116 {
117 return (
118 _constant_names.size() &&
119 (std::find(_constant_names.begin(), _constant_names.end(), name) != _constant_names.end()));
120 };
121
122 // helper function to check if the name given is one of the reserved_names
123 auto isReservedName = [reserved_names](const std::string & name)
124 { return reserved_names.find(name) != reserved_names.end(); };
125
126 // check constants
127 if (hasDuplicates(_constant_names))
128 raiseErr("constant_names", "In the constants duplicate names are not permitted.");
129 for (const auto & name : _constant_names)
130 {
131 if (isReservedName(name))
132 raiseErr("constant_names", "In constants, the name '" + name + "' is not permitted.");
133 }
134
135 // check tolerance vectors
136 if (hasDuplicates(_tol_names))
137 raiseErr("tol_names", "In the tolerances duplicate names are not permitted.");
138
139 // check functor vectors
140 if (_functor_symbols.empty())
141 {
142 if (!_functor_names.empty())
143 raiseErr("functor_names", "functor_symbols must be the same length as functor_names.");
144 }
145 else
146 {
147 if (_functor_symbols.size() != _functor_names.size())
148 raiseErr("functor_names", "functor_symbols must be the same length as functor_names.");
149 std::vector<std::string> names;
150 if (_functor_symbols.empty())
151 std::copy(_functor_names.begin(), _functor_names.end(), std::back_inserter(names));
152 else
153 std::copy(_functor_symbols.begin(), _functor_symbols.end(), std::back_inserter(names));
154 if (hasDuplicates(names))
155 raiseErr(_functor_symbols.empty() ? "functor_names" : "functor_symbols",
156 "In functors, duplicate names are not permitted.");
157 for (const auto & name : names)
158 {
159 if (isKnownConstantName(name))
160 raiseErr(_functor_symbols.empty() ? "functor_names" : "functor_symbols",
161 "In functors, the name '" + name + "' is already in use as a constant.");
162 if (isReservedName(name))
163 raiseErr(_functor_symbols.empty() ? "functor_names" : "functor_symbols",
164 "In functors, the name '" + name + "' is not permitted.");
165 }
166 }
167}
std::array< Real, 2 > values
Definition MortarUtils.C:52
Every object that can be built by the factory should be derived from this class.
Definition MooseObject.h:31
std::string name(const ElemQuality q)

Referenced by ParsedMaterialBase(), and ParsedMaterialTempl< is_ad >::ParsedMaterialTempl().

◆ validParams()

InputParameters ParsedMaterialBase::validParams ( )
static

Definition at line 15 of file ParsedMaterialBase.C.

16{
18 params.addCoupledVar("coupled_variables", "Vector of variables used in the parsed function");
19
20 // Constants and their values
21 params.addParam<std::vector<std::string>>(
22 "constant_names",
23 std::vector<std::string>(),
24 "Vector of constants used in the parsed function (use this for kB etc.)");
25 params.addParam<std::vector<std::string>>(
26 "constant_expressions",
27 std::vector<std::string>(),
28 "Vector of values for the constants in constant_names (can be an FParser expression)");
29
30 // Variables with applied tolerances and their tolerance values
31 params.addParam<std::vector<std::string>>("tol_names",
32 std::vector<std::string>(),
33 "Vector of variable names to be protected from "
34 "being 0 or 1 within a tolerance (needed for log(c) "
35 "and log(1-c) terms)");
36 params.addParam<std::vector<Real>>("tol_values",
37 std::vector<Real>(),
38 "Vector of tolerance values for the variables in tol_names");
39
40 // Functors and their symbols
41 params.addParam<std::vector<MooseFunctorName>>(
42 "functor_names", {}, "Functors to use in the parsed expression");
43 params.addParam<std::vector<std::string>>(
44 "functor_symbols",
45 {},
46 "Symbolic name to use for each functor in 'functor_names' in the parsed expression. If not "
47 "provided, then the actual functor names will be used in the parsed expression.");
48
49 // Material properties
50 params.addParam<std::vector<std::string>>(
51 "material_property_names",
52 std::vector<std::string>(),
53 "Vector of material properties used in the parsed function");
54
55 // Postprocessors
56 params.addParam<std::vector<PostprocessorName>>(
57 "postprocessor_names",
58 std::vector<PostprocessorName>(),
59 "Vector of postprocessor names used in the parsed function");
60
61 // Function expression
62 params.addDeprecatedCustomTypeParam<std::string>(
63 "function",
64 "FunctionExpression",
65 "Parsed function (see FParser) expression for the parsed material",
66 "'function' is deprecated, use 'expression' instead");
67 // TODO Make required once deprecation is handled, see #19119
68 params.addCustomTypeParam<std::string>(
69 "expression",
70 "FunctionExpression",
71 "Parsed function (see FParser) expression for the parsed material");
72
73 return params;
74}
InputParameters emptyInputParameters()
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addCustomTypeParam(const std::string &name, const T &value, const std::string &custom_type, const std::string &doc_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 addCoupledVar(const std::string &name, const std::string &doc_string)
This method adds a coupled variable name pair.
void addDeprecatedCustomTypeParam(const std::string &name, const std::string &custom_type, const std::string &doc_string, const std::string &deprecation_msg)

Referenced by DerivativeParsedMaterialTempl< is_ad >::validParams(), and ParsedMaterialTempl< is_ad >::validParams().

Member Data Documentation

◆ _constant_expressions

std::vector<std::string> ParsedMaterialBase::_constant_expressions
protected

◆ _constant_names

std::vector<std::string> ParsedMaterialBase::_constant_names
protected

◆ _function

const std::string ParsedMaterialBase::_function
protected

◆ _function_param

const std::string ParsedMaterialBase::_function_param
protected

Parameter that the function comes from.

Definition at line 28 of file ParsedMaterialBase.h.

◆ _functor_names

std::vector<MooseFunctorName> ParsedMaterialBase::_functor_names
protected

◆ _functor_symbols

std::vector<std::string> ParsedMaterialBase::_functor_symbols
protected

◆ _tol_names

std::vector<std::string> ParsedMaterialBase::_tol_names
protected

◆ _tol_values

std::vector<Real> ParsedMaterialBase::_tol_values
protected

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