www.mooseframework.org
LinearCombinationFunction.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 
13 
15 
18 {
20  params.addRequiredParam<std::vector<FunctionName>>(
21  "functions", "This function will return Sum_over_i(w_i * functions_i)");
22  params.addRequiredParam<std::vector<Real>>(
23  "w", "This function will return Sum_over_i(w_i * functions_i)");
24  params.addClassDescription("Returns the linear combination of the functions");
25  return params;
26 }
27 
29  : Function(parameters), FunctionInterface(this), _w(getParam<std::vector<Real>>("w"))
30 {
31 
32  const std::vector<FunctionName> & names = getParam<std::vector<FunctionName>>("functions");
33  const unsigned int len = names.size();
34  if (len != _w.size())
35  mooseError(
36  "LinearCombinationFunction: The number of functions must equal the number of w values");
37 
38  _f.resize(len);
39  for (unsigned i = 0; i < len; ++i)
40  {
41  if (name() == names[i])
42  mooseError("A LinearCombinationFunction must not reference itself");
43  const Function * const f = &getFunctionByName(names[i]);
44  if (!f)
45  mooseError("LinearCombinationFunction: The function ",
46  names[i],
47  " (referenced by ",
48  name(),
49  ") cannot be found");
50  _f[i] = f;
51  }
52 }
53 
54 Real
55 LinearCombinationFunction::value(Real t, const Point & p) const
56 {
57  Real val = 0;
58  for (unsigned i = 0; i < _f.size(); ++i)
59  val += _w[i] * _f[i]->value(t, p);
60  return val;
61 }
62 
63 RealGradient
64 LinearCombinationFunction::gradient(Real t, const Point & p) const
65 {
66  RealGradient g;
67  for (unsigned i = 0; i < _f.size(); ++i)
68  g += _w[i] * _f[i]->gradient(t, p);
69  return g;
70 }
71 
73 LinearCombinationFunction::vectorValue(Real t, const Point & p) const
74 {
76  for (unsigned i = 0; i < _f.size(); ++i)
77  v += _w[i] * _f[i]->vectorValue(t, p);
78  return v;
79 }
LinearCombinationFunction::LinearCombinationFunction
LinearCombinationFunction(const InputParameters &parameters)
Definition: LinearCombinationFunction.C:28
MooseObject::mooseError
void mooseError(Args &&... args) const
Definition: MooseObject.h:141
FunctionInterface::getFunctionByName
const Function & getFunctionByName(const FunctionName &name) const
Get a function with a given name.
Definition: FunctionInterface.C:37
LinearCombinationFunction::_f
std::vector< const Function * > _f
Definition: LinearCombinationFunction.h:37
FunctionInterface
Interface for objects that need to use functions.
Definition: FunctionInterface.h:38
LinearCombinationFunction::value
virtual Real value(Real t, const Point &pt) const override
Override this to evaluate the scalar function at point (t,x,y,z), by default this returns zero,...
Definition: LinearCombinationFunction.C:55
LinearCombinationFunction::validParams
static InputParameters validParams()
Definition: LinearCombinationFunction.C:17
libMesh::RealVectorValue
VectorValue< Real > RealVectorValue
Definition: Assembly.h:30
LinearCombinationFunction::vectorValue
virtual RealVectorValue vectorValue(Real t, const Point &p) const override
Override this to evaluate the vector function at a point (t,x,y,z), by default this returns a zero ve...
Definition: LinearCombinationFunction.C:73
InputParameters
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
Definition: InputParameters.h:53
registerMooseObject
registerMooseObject("MooseApp", LinearCombinationFunction)
LinearCombinationFunction
Sum_over_i (w_i * functions_i)
Definition: LinearCombinationFunction.h:23
LinearCombinationFunction::gradient
virtual RealGradient gradient(Real t, const Point &p) const override
Function objects can optionally provide a gradient at a point.
Definition: LinearCombinationFunction.C:64
InputParameters::addClassDescription
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
Definition: InputParameters.C:70
defineLegacyParams
defineLegacyParams(LinearCombinationFunction)
Function::validParams
static InputParameters validParams()
Class constructor.
Definition: Function.C:15
LinearCombinationFunction::_w
std::vector< Real > _w
Definition: LinearCombinationFunction.h:35
std
Definition: TheWarehouse.h:80
Function
Base class for function objects.
Definition: Function.h:40
LinearCombinationFunction.h
InputParameters::addRequiredParam
void addRequiredParam(const std::string &name, const std::string &doc_string)
This method adds a parameter and documentation string to the InputParameters object that will be extr...
Definition: InputParameters.h:1176
MooseObject::name
virtual const std::string & name() const
Get the name of the object.
Definition: MooseObject.h:70