https://mooseframework.inl.gov
OptimizationInfo.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 
10 #include "OptimizationInfo.h"
11 #include "Optimize.h"
12 
13 registerMooseObject("OptimizationApp", OptimizationInfo);
14 
17 {
19  params.addClassDescription("Reports Optimization Output");
20 
21  MultiMooseEnum items("current_iterate function_value gnorm cnorm xdiff");
22  params.addParam<MultiMooseEnum>(
23  "items",
24  items,
25  "The information to output, if nothing is provided everything will be output.");
26  params.set<ExecFlagEnum>("execute_on") = EXEC_TIMESTEP_END;
27  params.suppressParameter<ExecFlagEnum>("execute_on");
28  return params;
29 }
30 
32  : GeneralReporter(parameters),
33  _optimization_executioner(dynamic_cast<Optimize *>(_app.getExecutioner())),
34  _items(getParam<MultiMooseEnum>("items")),
35  _functionValue(declareHelper<std::vector<double>>("function_value", REPORTER_MODE_REPLICATED)),
36  _gnorm(declareHelper<std::vector<double>>("gnorm", REPORTER_MODE_REPLICATED)),
37  _cnorm(declareHelper<std::vector<double>>("cnorm", REPORTER_MODE_REPLICATED)),
38  _xdiff(declareHelper<std::vector<double>>("xdiff", REPORTER_MODE_REPLICATED)),
39  _currentIterate(declareHelper<std::vector<int>>("current_iterate", REPORTER_MODE_REPLICATED)),
40  _objectiveIterate(
41  (!_items.isValid() || _items.isValueSet("current_iterate"))
42  ? declareValueByName<std::vector<int>>("objective_iterate", REPORTER_MODE_REPLICATED)
43  : declareUnusedValue<std::vector<int>>()),
44  _gradientIterate(
45  (!_items.isValid() || _items.isValueSet("current_iterate"))
46  ? declareValueByName<std::vector<int>>("gradient_iterate", REPORTER_MODE_REPLICATED)
47  : declareUnusedValue<std::vector<int>>()),
48  _hessianIterate(
49  (!_items.isValid() || _items.isValueSet("current_iterate"))
50  ? declareValueByName<std::vector<int>>("hessian_iterate", REPORTER_MODE_REPLICATED)
51  : declareUnusedValue<std::vector<int>>()),
52  _functionSolves(
53  (!_items.isValid() || _items.isValueSet("current_iterate"))
54  ? declareValueByName<std::vector<int>>("function_solves", REPORTER_MODE_REPLICATED)
55  : declareUnusedValue<std::vector<int>>())
56 {
58  mooseError("The OptimizationInfo Reporter can only be used with a Optimize Executioner");
59 }
60 
61 void
63 {
65  _gnorm,
67  _cnorm,
69  _xdiff,
73 }
registerMooseObject("OptimizationApp", OptimizationInfo)
virtual void execute() override
void isValid(MooseObject *obj)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
std::vector< int > & _currentIterate
std::vector< int > & _hessianIterate
T & set(const std::string &name, bool quiet_mode=false)
static InputParameters validParams()
const ExecFlagType EXEC_TIMESTEP_END
OptimizeSolve & getOptimizeSolve()
Definition: Optimize.h:34
void suppressParameter(const std::string &name)
std::vector< double > & _cnorm
static InputParameters validParams()
void getTaoSolutionStatus(std::vector< int > &tot_iters, std::vector< double > &gnorm, std::vector< int > &obj_iters, std::vector< double > &cnorm, std::vector< int > &grad_iters, std::vector< double > &xdiff, std::vector< int > &hess_iters, std::vector< double > &f, std::vector< int > &tot_solves) const
Record tao TaoGetSolutionStatus data for output by a reporter.
std::vector< int > & _objectiveIterate
std::vector< double > & _xdiff
Optimize * _optimization_executioner
std::vector< double > & _functionValue
std::vector< int > & _functionSolves
std::vector< int > & _gradientIterate
std::vector< double > & _gnorm
void mooseError(Args &&... args) const
void addClassDescription(const std::string &doc_string)
const ReporterMode REPORTER_MODE_REPLICATED
OptimizationInfo(const InputParameters &parameters)
void ErrorVector unsigned int