https://mooseframework.inl.gov
Loading...
Searching...
No Matches
OptimizationFunctionTest.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
13
15
18{
21 "Outputs parameter gradients for the inputted optimization functions.");
22 params.addRequiredParam<std::vector<FunctionName>>("functions",
23 "Optimization functions to test.");
24 params.addParam<std::vector<Point>>(
25 "points",
26 std::vector<Point>(1, Point(0, 0, 0)),
27 "Points in domain to test the functions, default is single point at (0,0,0).");
28 params.addParam<std::vector<Real>>("times",
29 std::vector<Real>(1, 0),
30 "Times to test the functions, default is single time at 0.");
31 return params;
32}
33
36 _points(getParam<std::vector<Point>>("points")),
37 _times(getParam<std::vector<Real>>("times"))
38{
39 for (const auto & fnm : getParam<std::vector<FunctionName>>("functions"))
40 {
41 auto func = dynamic_cast<const OptimizationFunction *>(&getFunctionByName(fnm));
42 if (!func)
43 paramError("functions", fnm, " is not an OptimizationFunction.");
44 auto & vecs = _functions[func];
45 for (const auto & t : index_range(_times))
46 for (const auto & p : index_range(_points))
47 {
48 const std::string vnm = fnm + "_t" + std::to_string(t) + "_p" + std::to_string(p);
49 vecs.push_back(&declareVector(vnm));
50 }
51 }
52}
53
54void
56{
57 for (auto & it : _functions)
58 {
59 const auto & fun = *it.first;
60 auto & vecs = it.second;
61 std::size_t ind = 0;
62 for (const auto & t : _times)
63 for (const auto & p : _points)
64 (*vecs[ind++]) = fun.parameterGradient(t, p);
65 }
66}
const Real p
registerMooseObject("OptimizationTestApp", OptimizationFunctionTest)
const Function & getFunctionByName(const FunctionName &name) const
static InputParameters validParams()
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void paramError(const std::string &param, Args... args) const
const std::vector< Real > & _times
std::map< const OptimizationFunction *, std::vector< VectorPostprocessorValue * > > _functions
OptimizationFunctionTest(const InputParameters &params)
static InputParameters validParams()
const std::vector< Point > & _points
Base class for functions used in inverse optimization The parameterDerivative function is used in adj...
VectorPostprocessorValue & declareVector(const std::string &vector_name)