https://mooseframework.inl.gov
Loading...
Searching...
No Matches
OptimizationFunctionAuxTest.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
12
14
17{
19 params.addRequiredParam<FunctionName>("function", "Function evaluating parameter gradient.");
20 return params;
21}
22
24 : ArrayAuxKernel(parameters),
25 _func(dynamic_cast<const OptimizationFunction *>(&getFunction("function")))
26{
27 if (!_func)
28 paramError("function", getParam<FunctionName>("function"), " is not an OptimizationFunction.");
29}
30
31RealEigenVector
33{
34 const Point & p = isNodal() ? *_current_node : _q_point[_qp];
35
36 const std::vector<Real> pg = _func->parameterGradient(_t, p);
37 if (pg.size() != _var.count())
38 paramError("variable",
39 "Number of components in array variable (",
40 _var.count(),
41 ") does not match number of parameters (",
42 pg.size(),
43 ").");
44
45 RealEigenVector v(_var.count());
46 for (unsigned int i = 0; i < _var.count(); ++i)
47 v(i) = pg[i];
48 return v;
49}
const Real p
const double v
registerMooseObject("OptimizationTestApp", OptimizationFunctionAuxTest)
bool isNodal() const
const MooseArray< Point > & _q_point
const Node *const & _current_node
unsigned int _qp
MooseVariableField< ComputeValueType > & _var
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void paramError(const std::string &param, Args... args) const
unsigned int count() const
OptimizationFunctionAuxTest(const InputParameters &parameters)
virtual RealEigenVector computeValue() override
const OptimizationFunction *const _func
Function being used to compute the value of this kernel.
Base class for functions used in inverse optimization The parameterDerivative function is used in adj...
virtual std::vector< Real > parameterGradient(Real t, const Point &pt) const =0