Line data Source code
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 "StochasticToolsApp.h"
11 : #include "Moose.h"
12 : #include "AppFactory.h"
13 : #include "MooseSyntax.h"
14 :
15 : InputParameters
16 20643 : StochasticToolsApp::validParams()
17 : {
18 20643 : InputParameters params = MooseApp::validParams();
19 :
20 20643 : params.set<bool>("use_legacy_material_output") = false;
21 20643 : params.set<bool>("use_legacy_initial_residual_evaluation_behavior") = false;
22 :
23 20643 : return params;
24 0 : }
25 :
26 : registerKnownLabel("StochasticToolsApp");
27 :
28 0 : StochasticToolsApp::StochasticToolsApp(const InputParameters & parameters) : MooseApp(parameters)
29 : {
30 0 : StochasticToolsApp::registerAll(_factory, _action_factory, _syntax);
31 0 : }
32 :
33 0 : StochasticToolsApp::~StochasticToolsApp() {}
34 :
35 : void
36 20641 : StochasticToolsApp::registerAll(Factory & f, ActionFactory & af, Syntax & syntax)
37 : {
38 20641 : Registry::registerObjectsTo(f, {"StochasticToolsApp"});
39 20641 : Registry::registerActionsTo(af, {"StochasticToolsApp"});
40 :
41 : // Adds [Trainers] block
42 41282 : registerSyntaxTask("AddSurrogateAction", "Trainers/*", "add_trainer");
43 41282 : registerMooseObjectTask("add_trainer", SurrogateTrainer, false);
44 41282 : addTaskDependency("add_trainer", "add_sampler");
45 :
46 : // Adds [Surrogates] block
47 41282 : registerSyntaxTask("AddSurrogateAction", "Surrogates/*", "add_surrogate");
48 41282 : registerMooseObjectTask("add_surrogate", SurrogateModel, false);
49 41282 : addTaskDependency("add_surrogate", "add_trainer");
50 :
51 : // Adds action for loading Surrogate data
52 20641 : registerTask("load_surrogate_data", true);
53 41282 : addTaskDependency("load_surrogate_data", "add_surrogate");
54 :
55 : // Adds action for loading mapping data
56 20641 : registerTask("load_mapping_data", true);
57 41282 : addTaskDependency("load_mapping_data", "add_variable_mapping");
58 :
59 : // General StochasticTools action
60 20641 : registerTask("auto_create_mesh", false);
61 20641 : registerTask("auto_create_problem", false);
62 20641 : registerTask("auto_create_executioner", false);
63 41282 : registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_mesh");
64 41282 : registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_problem");
65 41282 : registerSyntaxTask("StochasticToolsAction", "StochasticTools", "auto_create_executioner");
66 :
67 : // StochasticResults
68 20641 : registerTask("declare_stochastic_results_vectors", true);
69 41282 : addTaskDependency("declare_stochastic_results_vectors", "add_vector_postprocessor");
70 41282 : addTaskDependency("add_reporter", "declare_stochastic_results_vectors");
71 :
72 : #ifdef MOOSE_LIBTORCH_ENABLED
73 : // Covariance functions (Gaussian Process)
74 6026 : registerSyntaxTask("AddCovarianceAction", "Covariance/*", "add_covariance");
75 6026 : registerMooseObjectTask("add_covariance", CovarianceFunctionBase, false);
76 6026 : addTaskDependency("add_covariance", "add_user_object");
77 6026 : addTaskDependency("add_distribution", "add_covariance");
78 : #endif
79 :
80 : // Mapping objects
81 41282 : registerSyntaxTask("AddVariableMappingAction", "VariableMappings/*", "add_variable_mapping");
82 41282 : registerMooseObjectTask("add_variable_mapping", VariableMappingBase, false);
83 41282 : addTaskDependency("add_variable_mapping", "add_reporter");
84 :
85 : #ifdef MOOSE_LIBTORCH_ENABLED
86 : // Adds action for loading Covariance data in model
87 3013 : registerTask("load_covariance_data", true);
88 6026 : addTaskDependency("load_covariance_data", "load_surrogate_data");
89 6026 : addTaskDependency("setup_function_complete", "load_covariance_data");
90 : #else
91 35256 : addTaskDependency("setup_function_complete", "load_surrogate_data");
92 : #endif
93 :
94 41282 : addTaskDependency("setup_mesh", "auto_create_mesh");
95 41282 : addTaskDependency("create_problem", "auto_create_problem");
96 41282 : addTaskDependency("setup_executioner", "auto_create_executioner");
97 : // Likelihood functions (Bayesian inference)
98 41282 : registerSyntaxTask("AddLikelihoodAction", "Likelihood/*", "add_likelihood");
99 41282 : registerMooseObjectTask("add_likelihood", LikelihoodFunctionBase, false);
100 41282 : addTaskDependency("add_likelihood", "add_user_object");
101 41282 : addTaskDependency("add_distribution", "add_likelihood");
102 : // Parallel acquisition (active learning)
103 41282 : registerSyntaxTask(
104 : "AddParallelAcquisitionAction", "ParallelAcquisition/*", "add_parallelacquisition");
105 41282 : registerMooseObjectTask("add_parallelacquisition", ParallelAcquisitionFunctionBase, false);
106 41282 : addTaskDependency("add_parallelacquisition", "add_user_object");
107 41282 : addTaskDependency("add_distribution", "add_parallelacquisition");
108 :
109 41282 : registerSyntaxTask("AdaptiveSamplerAction", "Samplers", "add_user_object");
110 41282 : registerSyntaxTask("AdaptiveSamplerAction", "Samplers", "add_postprocessor");
111 :
112 : // Adds [ParameterStudy] block
113 41282 : registerSyntax("ParameterStudyAction", "ParameterStudy");
114 20641 : }
115 :
116 : void
117 3363 : StochasticToolsApp::registerApps()
118 : {
119 3363 : registerApp(StochasticToolsApp);
120 3363 : }
121 :
122 : void
123 40 : StochasticToolsApp::requiresTorch(const MooseObject &
124 : #ifndef MOOSE_LIBTORCH_ENABLED
125 : obj
126 : #endif
127 : )
128 : {
129 : #ifndef MOOSE_LIBTORCH_ENABLED
130 0 : obj.mooseError("PyTorch C++ API (libtorch) must be installed to use this object, see "
131 : "https://mooseframework.inl.gov/modules/stochastic_tools/install_pytorch.html for "
132 : "instruction.");
133 : #endif
134 40 : }
135 :
136 : extern "C" void
137 0 : StochasticToolsApp__registerAll(Factory & f, ActionFactory & af, Syntax & s)
138 : {
139 0 : StochasticToolsApp::registerAll(f, af, s);
140 0 : }
141 : extern "C" void
142 0 : StochasticToolsApp__registerApps()
143 : {
144 0 : StochasticToolsApp::registerApps();
145 0 : }
|