https://mooseframework.inl.gov
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 
11 #include "OptimizationFunction.h"
12 
13 registerMooseObject("OptimizationTestApp", OptimizationFunctionAuxTest);
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 
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 
46  for (unsigned int i = 0; i < _var.count(); ++i)
47  v(i) = pg[i];
48  return v;
49 }
const Node *const & _current_node
void addRequiredParam(const std::string &name, const std::string &doc_string)
registerMooseObject("OptimizationTestApp", OptimizationFunctionAuxTest)
virtual std::vector< Real > parameterGradient(Real t, const Point &pt) const =0
void paramError(const std::string &param, Args... args) const
virtual RealEigenVector computeValue() override
const OptimizationFunction *const _func
Function being used to compute the value of this kernel.
OptimizationFunctionAuxTest(const InputParameters &parameters)
MooseVariableField< ComputeValueType > & _var
static const std::string v
Definition: NS.h:84
Base class for functions used in inverse optimization The parameterDerivative function is used in adj...
unsigned int _qp
static InputParameters validParams()
static InputParameters validParams()
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
const MooseArray< Point > & _q_point
bool isNodal() const