https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
14
17{
19 params.addClassDescription("Reports Optimization Output");
20
21 MultiMooseEnum items("current_iterate function_value gnorm cnorm xdiff");
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
61void
const ExecFlagType EXEC_TIMESTEP_END
registerMooseObject("OptimizationApp", OptimizationInfo)
const ReporterMode REPORTER_MODE_REPLICATED
void isValid(MooseObject *obj)
void ErrorVector unsigned int
static InputParameters validParams()
void suppressParameter(const std::string &name)
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)
T & set(const std::string &name, bool quiet_mode=false)
void mooseError(Args &&... args) const
std::vector< double > & _xdiff
Optimize * _optimization_executioner
std::vector< int > & _gradientIterate
virtual void execute() override
std::vector< int > & _currentIterate
OptimizationInfo(const InputParameters &parameters)
std::vector< int > & _functionSolves
std::vector< double > & _functionValue
std::vector< int > & _objectiveIterate
std::vector< double > & _gnorm
static InputParameters validParams()
std::vector< double > & _cnorm
std::vector< int > & _hessianIterate
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.
OptimizeSolve & getOptimizeSolve()
Definition Optimize.h:34