www.mooseframework.org
StochasticToolsApp.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 "StochasticToolsApp.h"
11 #include "Moose.h"
12 #include "AppFactory.h"
13 #include "MooseSyntax.h"
14 
17 {
19 
20  params.set<bool>("use_legacy_material_output") = false;
21  params.set<bool>("use_legacy_initial_residual_evaluation_bahavior") = false;
22 
23  return params;
24 }
25 
26 registerKnownLabel("StochasticToolsApp");
27 
29 {
31 }
32 
34 
35 void
37 {
38  Registry::registerObjectsTo(f, {"StochasticToolsApp"});
39  Registry::registerActionsTo(af, {"StochasticToolsApp"});
40 
41  // Adds [Trainers] block
42  registerSyntaxTask("AddSurrogateAction", "Trainers/*", "add_trainer");
43  registerMooseObjectTask("add_trainer", SurrogateTrainer, false);
44  addTaskDependency("add_trainer", "add_sampler");
45 
46  // Adds [Surrogates] block
47  registerSyntaxTask("AddSurrogateAction", "Surrogates/*", "add_surrogate");
48  registerMooseObjectTask("add_surrogate", SurrogateModel, false);
49  addTaskDependency("add_surrogate", "add_trainer");
50 
51  // Adds action for loading Surrogate data
52  registerTask("load_surrogate_data", true);
53  addTaskDependency("load_surrogate_data", "add_surrogate");
54 
55  // Adds action for loading mapping data
56  registerTask("load_mapping_data", true);
57  addTaskDependency("load_mapping_data", "add_variable_mapping");
58 
59  // General StochasticTools action
60  registerTask("auto_create_mesh", false);
61  registerTask("auto_create_problem", false);
62  registerTask("auto_create_executioner", false);
63  registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_mesh");
64  registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_problem");
65  registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_executioner");
66 
67  // StochasticResults
68  registerTask("declare_stochastic_results_vectors", true);
69  addTaskDependency("declare_stochastic_results_vectors", "add_vector_postprocessor");
70  addTaskDependency("add_reporter", "declare_stochastic_results_vectors");
71 
72  // Covariance functions (Gaussian Process)
73  registerSyntaxTask("AddCovarianceAction", "Covariance/*", "add_covariance");
74  registerMooseObjectTask("add_covariance", CovarianceFunctionBase, false);
75  addTaskDependency("add_covariance", "add_user_object");
76  addTaskDependency("add_distribution", "add_covariance");
77  // Mapping objects
78  registerSyntaxTask("AddVariableMappingAction", "VariableMappings/*", "add_variable_mapping");
79  registerMooseObjectTask("add_variable_mapping", VariableMappingBase, false);
80  addTaskDependency("add_variable_mapping", "add_reporter");
81  // Adds action for loading Covariance data in model
82  registerTask("load_covariance_data", true);
83  addTaskDependency("load_covariance_data", "load_surrogate_data");
84  addTaskDependency("setup_function_complete", "load_covariance_data");
85  addTaskDependency("setup_mesh", "auto_create_mesh");
86  addTaskDependency("create_problem", "auto_create_problem");
87  addTaskDependency("setup_executioner", "auto_create_executioner");
88  // Likelihood functions (Bayesian inference)
89  registerSyntaxTask("AddLikelihoodAction", "Likelihood/*", "add_likelihood");
90  registerMooseObjectTask("add_likelihood", LikelihoodFunctionBase, false);
91  addTaskDependency("add_likelihood", "add_user_object");
92  addTaskDependency("add_distribution", "add_likelihood");
93 
94  registerSyntaxTask("AdaptiveSamplerAction", "Samplers", "add_user_object");
95  registerSyntaxTask("AdaptiveSamplerAction", "Samplers", "add_postprocessor");
96 
97  // Adds [ParameterStudy] block
98  registerSyntax("ParameterStudyAction", "ParameterStudy");
99 }
100 
101 void
103 {
104  registerApp(StochasticToolsApp);
105 }
106 
107 void
109 {
110  mooseDeprecated("use registerAll instead of registerObjects");
111  Registry::registerObjectsTo(factory, {"StochasticToolsApp"});
112 }
113 
114 void
116 {
117  mooseDeprecated("use registerAll instead of associateSyntax");
118  Registry::registerActionsTo(action_factory, {"StochasticToolsApp"});
119 }
120 
121 void
123 #ifndef LIBTORCH_ENABLED
124  obj
125 #endif
126 )
127 {
128 #ifndef LIBTORCH_ENABLED
129  obj.mooseError("PyTorch C++ API (libtorch) must be installed to use this object, see "
130  "https://mooseframework.inl.gov/modules/stochastic_tools/install_pytorch.html for "
131  "instruction.");
132 #endif
133 }
134 
135 void
137 {
138  mooseDeprecated("Do not use registerExecFlags, apps no longer require flag registration");
139 }
140 
141 extern "C" void
143 {
145 }
146 extern "C" void
148 {
150 }
All Likelihoods should inherit from this class.
void StochasticToolsApp__registerAll(Factory &f, ActionFactory &af, Syntax &s)
T & set(const std::string &name, bool quiet_mode=false)
static void registerAll(Factory &f, ActionFactory &af, Syntax &s)
static void associateSyntax(Syntax &syntax, ActionFactory &action_factory)
static void requiresTorch(const MooseObject &obj)
static void registerObjectsTo(Factory &f, const std::set< std::string > &labels)
Syntax _syntax
static InputParameters validParams()
static void registerActionsTo(ActionFactory &f, const std::set< std::string > &labels)
Real f(Real x)
Test function for Brents method.
registerKnownLabel("StochasticToolsApp")
ActionFactory _action_factory
static void registerApps()
void mooseDeprecated(Args &&... args)
static void registerExecFlags(Factory &factory)
StochasticToolsApp(InputParameters parameters)
This is the main trainer base class.
void StochasticToolsApp__registerApps()
static InputParameters validParams()
static void registerObjects(Factory &factory)
Factory _factory
This is an abstract base class for objects that provide mapping between a full-order and a latent spa...