www.mooseframework.org
MooseParsedFunctionBase.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
12 // MOOSE includes
13 #include "InputParameters.h"
14 #include "MooseError.h"
16 
19 {
21  params.addDeprecatedParam<std::vector<std::string>>(
22  "vars",
23  "Variables (excluding t,x,y,z) that are bound to the values provided by the corresponding "
24  "items in the vals vector.",
25  "Use 'symbol_names' instead.");
26  params.addDeprecatedParam<std::vector<std::string>>(
27  "vals",
28  "Constant numeric values, postprocessor names, "
29  "function names, and scalar variables for vars.",
30  "Use 'symbol_values' instead.");
31  params.addParam<std::vector<std::string>>(
32  "symbol_names",
33  "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding "
34  "items in the vals vector.");
35  params.addParam<std::vector<std::string>>("symbol_values",
36  "Constant numeric values, postprocessor names, "
37  "function names, and scalar variables corresponding to"
38  " the symbols in symbol_names.");
39  return params;
40 }
41 
43  : _pfb_feproblem(*parameters.getCheckedPointerParam<FEProblemBase *>("_fe_problem_base")),
44  _vars(parameters.isParamValid("vars")
45  ? parameters.get<std::vector<std::string>>("vars")
46  : parameters.get<std::vector<std::string>>("symbol_names")),
47  _vals(parameters.isParamValid("vals")
48  ? parameters.get<std::vector<std::string>>("vals")
49  : parameters.get<std::vector<std::string>>("symbol_values"))
50 {
51  if (_vars.size() != _vals.size())
52  mooseError("Number of symbol_names must match the number of symbol_values!");
53 
54  // Loop through the variables assigned by the user and give an error if x,y,z,t are used
55  for (const auto & var : _vars)
56  if (var.find_first_of("xyzt") != std::string::npos && var.size() == 1)
57  mooseError("The variables \"x, y, z, and t\" in the ParsedFunction are pre-declared for use "
58  "and must not be declared in \"vars\"");
59 }
60 
62 
63 const std::string
64 MooseParsedFunctionBase::verifyFunction(const std::string & function_str)
65 {
66  // Throws an error if quotes are found
67  if (function_str.find("\"") != std::string::npos)
68  mooseError("The expression in ParsedFunction contains quotes which cannot be properly parsed");
69 
70  // Return the input equation (no error)
71  return function_str;
72 }
void addDeprecatedParam(const std::string &name, const T &value, const std::string &doc_string, const std::string &deprecation_message)
virtual ~MooseParsedFunctionBase()
Class destructor.
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:284
T * get(const std::unique_ptr< T > &u)
The MooseUtils::get() specializations are used to support making forwards-compatible code changes fro...
Definition: MooseUtils.h:1147
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
const std::vector< std::string > _vals
Values passed by the user, they may be Reals for Postprocessors.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
InputParameters emptyInputParameters()
const std::string verifyFunction(const std::string &function_str)
A helper method to check if the function value contains quotes.
static InputParameters validParams()
Class constructor for the interface.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an option parameter and a documentation string to the InputParameters object...
const std::vector< std::string > _vars
Variables passed to libMesh::ParsedFunction.
MooseParsedFunctionBase(const InputParameters &parameters)