https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Moose.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 "libmesh/petsc_macro.h"
11#include "libmesh/libmesh_config.h"
12
13#include "Moose.h"
14#include "MooseApp.h"
15
16#include "ActionWarehouse.h"
17#include "ActionFactory.h"
18#include "AuxiliarySystem.h"
19#include "Factory.h"
20#include "PetscSupport.h"
21#include "Syntax.h"
22#include "MooseSyntax.h"
23#include "ExecFlagRegistry.h"
24
25#include "hit/parse.h"
26
27#include <unistd.h>
28
29const ExecFlagType EXEC_NONE = registerDefaultExecFlag("NONE");
30const ExecFlagType EXEC_INITIAL = registerDefaultExecFlag("INITIAL");
31const ExecFlagType EXEC_LINEAR = registerDefaultExecFlag("LINEAR");
32const ExecFlagType EXEC_LINEAR_CONVERGENCE = registerDefaultExecFlag("LINEAR_CONVERGENCE");
33const ExecFlagType EXEC_NONLINEAR = registerDefaultExecFlag("NONLINEAR");
34const ExecFlagType EXEC_NONLINEAR_CONVERGENCE = registerDefaultExecFlag("NONLINEAR_CONVERGENCE");
35const ExecFlagType EXEC_POSTCHECK = registerDefaultExecFlag("POSTCHECK");
36const ExecFlagType EXEC_TIMESTEP_END = registerDefaultExecFlag("TIMESTEP_END");
37const ExecFlagType EXEC_TIMESTEP_BEGIN = registerDefaultExecFlag("TIMESTEP_BEGIN");
39 registerExecFlag("MULTIAPP_FIXED_POINT_ITERATION_END");
41 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_END");
43 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_BEGIN");
45 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_CONVERGENCE");
47 registerDefaultExecFlag("MULTISYSTEM_FIXED_POINT_ITERATION_END");
48const ExecFlagType EXEC_FINAL = registerDefaultExecFlag("FINAL");
49const ExecFlagType EXEC_FORCED = registerExecFlag("FORCED");
50const ExecFlagType EXEC_FAILED = registerExecFlag("FAILED");
51const ExecFlagType EXEC_CUSTOM = registerDefaultExecFlag("CUSTOM");
52const ExecFlagType EXEC_SUBDOMAIN = registerExecFlag("SUBDOMAIN");
53const ExecFlagType EXEC_ALWAYS = registerExecFlag("ALWAYS");
54const ExecFlagType EXEC_PRE_DISPLACE = registerExecFlag("PRE_DISPLACE");
55const ExecFlagType EXEC_SAME_AS_MULTIAPP = registerExecFlag("SAME_AS_MULTIAPP");
56const ExecFlagType EXEC_PRE_MULTIAPP_SETUP = registerExecFlag("PRE_MULTIAPP_SETUP");
57const ExecFlagType EXEC_TRANSFER = registerExecFlag("TRANSFER");
58const ExecFlagType EXEC_PRE_KERNELS = registerExecFlag("PRE_KERNELS");
59#ifdef LIBMESH_ENABLE_AMR
60const ExecFlagType EXEC_POST_ADAPTIVITY = registerExecFlag("POST_ADAPTIVITY");
61#endif
62
63namespace Moose
64{
65
66void associateSyntaxInner(Syntax & syntax, ActionFactory & action_factory);
67
68void
70{
71 registerObjects(f, {"MooseApp"});
73 registerActions(s, af, {"MooseApp"});
74 registerAppDataFilePath("moose");
75 registerRepository("moose", "github.com/idaholab/moose");
76
77 // Citation emitted by the --citations command-line option: the current framework paper is tied to
78 // "MooseApp" (so it is cited whenever a MooseApp object is used, and apps composed of MooseApp
79 // inherit it), and modules register their own app citations (via Registry::addAppCitation) which
80 // are cited only when one of their objects is actually used. PETSc and its sub-packages register
81 // their own citations, which --citations emits through PETSc.
82 Registry::addAppCitation("MooseApp",
83 "harbour2025moose",
84 R"(@article{harbour2025moose,
85 title = {4.0 {MOOSE}: Enabling massively parallel Multiphysics simulation},
86 journal = {{SoftwareX}},
87 volume = {31},
88 pages = {102264},
89 year = {2025},
90 issn = {2352-7110},
91 doi = {https://doi.org/10.1016/j.softx.2025.102264},
92 url = {https://www.sciencedirect.com/science/article/pii/S2352711025002316},
93 author = {Logan Harbour and Guillaume Giudicelli and Alexander D. Lindsay and Peter German and Joshua Hansel and Casey Icenhour and Mengnan Li and Jason M. Miller and Roy H. Stogner and Patrick Behne and Daniel Yankura and Zachary M. Prince and Corey DeChant and Daniel Schwen and Benjamin W. Spencer and Mauricio Tano and Namjae Choi and Yaqi Wang and Max Nezdyur and Yinbin Miao and Tianchen Hu and Shikhar Kumar and Christopher Matthews and Brandon Langley and Nuno Nobre and Alexander Blair and Chris MacMackin and Henrique Bergallo Rocha and Edward Palmer and Jesse Carter and J{\"o}rg Meier and Andrew E. Slaughter and David Andr{\v{s}} and Robert W. Carlsen and Fande Kong and Derek R. Gaston and Cody J. Permann},
94})");
95
96 // The libMesh citation is registered under "libMesh" but not tied to any object label, so the
97 // per-object loop in MooseApp::requestCitations() does not emit it; emission is gated on the
98 // finite element backend actually used in the run.
100 "libMeshPaper",
101 R"(@article{libMeshPaper,
102 author = {B.~S.~Kirk and J.~W.~Peterson and R.~H.~Stogner and G.~F.~Carey},
103 title = {{\texttt{libMesh}: A C++ Library for Parallel Adaptive Mesh
104 Refinement/Coarsening Simulations}},
105 journal = {Engineering with Computers},
106 volume = {22},
107 number = {3--4},
108 pages = {237--254},
109 year = {2006},
110 url={http://dx.doi.org/10.1007/s00366-006-0049-3}
111})");
112
113#ifdef MOOSE_MFEM_ENABLED
114 // Like libMesh, the MFEM citation is emitted by MooseApp::requestCitations() only when the run
115 // actually uses the MFEM backend.
117 "mfem-2024",
118 R"(@article{mfem-2024,
119 title = {High-Performance Finite Elements with {MFEM}},
120 author = {J. Andrej and N. Atallah and J.-P. B{\"a}cker and J.-S. Camier and D. Copeland and V. Dobrev and Y. Dudouit and T. Duswald and B. Keith and D. Kim and T. Kolev and B. Lazarov and K. Mittal and W. Pazner and S. Petrides and S. Shiraiwa and M. Stowell and V. Tomov},
121 journal = {The International Journal of High Performance Computing Applications},
122 volume = {38},
123 number = {5},
124 pages = {447--467},
125 year = {2024},
126 publisher = {SAGE Publications Sage UK: London, England},
127})");
128#endif
129}
130
131void
132registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
133{
134 Registry::registerObjectsTo(factory, obj_labels);
135}
136
137void
138addActionTypes(Syntax & syntax)
139{
152 // clang-format off
153 /**************************/
154 /**** Register Actions ****/
155 /**************************/
156 registerMooseObjectTask("create_problem", Problem, false);
157 registerMooseObjectTask("setup_executioner", Executioner, false);
158 registerMooseObjectTask("read_executor", Executor, false);
159 registerTask("add_executor", true);
160
161 // TODO Organize these somewhere
162 registerTask("init_physics", false);
163 registerTask("init_component_physics", false);
164 registerTask("meta_action_component", false);
165 registerTask("setup_component", false);
166 // 'list_component' is used to retrieve ActionComponents for the syntax JSON
167 registerTask("list_component", false);
168
169 // This task does not construct an object, but it needs all of the parameters that
170 // would normally be used to construct an object.
171 registerMooseObjectTask("determine_system_type", Executioner, true);
172
173 registerMooseObjectTask("setup_mesh", MooseMesh, false);
174 registerMooseObjectTask("set_mesh_base", MooseMesh, false);
175 registerMooseObjectTask("init_mesh", MooseMesh, false);
176 registerMooseObjectTask("add_mesh_generator", MeshGenerator, false);
177 registerTask("create_added_mesh_generators", true);
178 registerMooseObjectTask("append_mesh_generator", MeshGenerator, false);
179
180 registerMooseObjectTask("add_kernel", Kernel, false);
181 appendMooseObjectTask ("add_kernel", EigenKernel);
182 appendMooseObjectTask ("add_kernel", VectorKernel);
183 appendMooseObjectTask ("add_kernel", ArrayKernel);
184 appendMooseObjectTask ("add_kernel", ADArrayKernel);
185
186 registerMooseObjectTask("add_variable", MooseVariableBase, false);
187 registerMooseObjectTask("add_aux_variable", MooseVariableBase, false);
188 registerMooseObjectTask("add_elemental_field_variable", MooseVariableBase, false);
189 registerMooseObjectTask("add_variables_physics", MooseVariableBase, false);
190
191 registerMooseObjectTask("add_nodal_kernel", NodalKernel, false);
192
193 registerMooseObjectTask("add_functor_material", FunctorMaterial, false);
194 registerMooseObjectTask("add_material", MaterialBase, false);
195 appendDeprecatedMooseObjectTask("add_material", FunctorMaterial);
196 registerMooseObjectTask("add_materials_physics", FunctorMaterial, false);
197 appendMooseObjectTask ("add_materials_physics", MaterialBase);
198
199 registerMooseObjectTask("add_bc", BoundaryCondition, false);
200
201 registerMooseObjectTask("add_function", Function, false);
202
203 registerMooseObjectTask("add_distribution", Distribution, false);
204 registerMooseObjectTask("add_sampler", Sampler, false);
205
206 registerMooseObjectTask("add_aux_kernel", AuxKernel, false);
207 appendMooseObjectTask ("add_aux_kernel", VectorAuxKernel);
208 appendMooseObjectTask ("add_aux_kernel", ArrayAuxKernel);
209
210 registerMooseObjectTask("add_bound", Bounds, false);
211
212 registerMooseObjectTask("add_scalar_kernel", ScalarKernel, false);
213 registerMooseObjectTask("add_aux_scalar_kernel", AuxScalarKernel, false);
214 registerMooseObjectTask("add_dirac_kernel", DiracKernel, false);
215 appendMooseObjectTask ("add_dirac_kernel", VectorDiracKernel);
216 registerMooseObjectTask("add_dg_kernel", DGKernel, false);
217 registerMooseObjectTask("add_fv_kernel", FVKernel, false);
218 registerMooseObjectTask("add_interpolation_method", FVInterpolationMethod, false);
219 registerMooseObjectTask("add_interpolation_method_physics", FVInterpolationMethod, false);
220 registerMooseObjectTask("add_linear_fv_kernel", LinearFVKernel, false);
221 registerMooseObjectTask("add_fv_bc", FVBoundaryCondition, false);
222 registerMooseObjectTask("add_linear_fv_bc", LinearFVBoundaryCondition, false);
223 registerMooseObjectTask("add_fv_ik", FVInterfaceKernel, false);
224 registerMooseObjectTask("add_interface_kernel", InterfaceKernel, false);
225 appendMooseObjectTask ("add_interface_kernel", VectorInterfaceKernel);
226 registerMooseObjectTask("add_constraint", Constraint, false);
227 registerMooseObjectTask("add_hybridized_kernel", HDGKernel, false);
228 registerMooseObjectTask("add_hybridized_integrated_bc", HDGIntegratedBC, false);
229
230 registerMooseObjectTask("add_ic", InitialCondition, false);
231 appendMooseObjectTask ("add_ic", ScalarInitialCondition);
232 registerMooseObjectTask("add_fv_ic", FVInitialCondition, false);
233 registerMooseObjectTask("add_ics_physics", InitialCondition, false);
234 appendMooseObjectTask ("add_ics_physics", FVInitialCondition);
235 appendMooseObjectTask ("add_ics_physics", ScalarInitialCondition);
236
237 registerMooseObjectTask("add_damper", Damper, false);
238 registerMooseObjectTask("setup_predictor", Predictor, false);
239 registerMooseObjectTask("add_time_steppers", TimeStepper, false);
240 registerMooseObjectTask("add_time_stepper", TimeStepper, false);
241 registerTask ("compose_time_stepper", true);
242 registerMooseObjectTask("setup_time_integrators", TimeIntegrator, false);
243 registerMooseObjectTask("setup_time_integrator", TimeIntegrator, false);
244 registerMooseObjectTask("add_convergence", Convergence, false);
245
246 registerMooseObjectTask("add_preconditioning", MoosePreconditioner, false);
247 registerMooseObjectTask("add_field_split", Split, false);
248
249 registerMooseObjectTask("add_mesh_division", MeshDivision, false);
250 registerMooseObjectTask("add_user_object", UserObject, false);
251 appendMooseObjectTask ("add_user_object", Postprocessor);
252
253 appendDeprecatedMooseObjectTask("add_user_object", Corrector);
254 registerMooseObjectTask("add_corrector", Corrector, false);
255 appendDeprecatedMooseObjectTask("add_user_object", MeshModifier);
256 registerMooseObjectTask("add_mesh_modifier", MeshModifier, false);
257
258 registerMooseObjectTask("add_postprocessor", Postprocessor, false);
259 registerMooseObjectTask("add_vector_postprocessor", VectorPostprocessor, false);
260 registerMooseObjectTask("add_reporter", Reporter, false);
261
262 registerMooseObjectTask("add_positions", Positions, false);
263 registerMooseObjectTask("add_times", Times, false);
264
265 registerMooseObjectTask("add_indicator", Indicator, false);
266 registerMooseObjectTask("add_marker", Marker, false);
267
268 registerMooseObjectTask("add_multi_app", MultiApp, false);
269 registerMooseObjectTask("add_transfer", Transfer, false);
270
271 registerMooseObjectTask("add_output", Output, false);
272
273 registerMooseObjectTask("add_control", Control, false);
274 registerMooseObjectTask("add_chain_control", ChainControl, false);
275 registerMooseObjectTask("add_partitioner", MoosePartitioner, false);
276
277 // clang-format on
278
279 registerTask("dynamic_object_registration", false);
280 registerTask("common_output", true);
281 registerTask("setup_recover_file_base", true);
282 registerTask("recover_meta_data", true);
283
284 registerTask("add_bounds_vectors", false);
285 registerTask("add_periodic_bc", false);
286 registerTask("add_aux_variable", false);
287 registerTask("add_external_aux_variables", true);
288 registerTask("add_variable", false);
289 registerTask("add_mortar_variable", false);
290
291 registerTask("execute_mesh_generators", true);
292 registerTask("uniform_refine_mesh", false);
293 registerTask("prepare_mesh", false);
294 registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
295 registerTask("setup_mesh_complete", true); // calls prepare
296 registerTask("post_mesh_prepared", false);
297 registerTask("add_geometric_rm", false);
298 registerTask("attach_geometric_rm", true);
299 registerTask("attach_geometric_rm_final", true);
300
301 registerTask("init_displaced_problem", false);
302
303 registerTask("add_algebraic_rm", false);
304 registerTask("attach_algebraic_rm", true);
305 registerTask("add_coupling_rm", false);
306 registerTask("attach_coupling_rm", true);
307 registerTask("init_problem", true);
308 registerTask("check_copy_nodal_vars", true);
309 registerTask("copy_nodal_vars", true);
310 registerTask("copy_nodal_aux_vars", true);
311 registerTask("copy_vars_physics", false);
312 registerTask("setup_postprocessor_data", false);
313 registerTask("setup_time_steppers", true);
314
315 registerTask("setup_dampers", true);
316 registerTask("check_integrity", true);
317 registerTask("resolve_optional_materials", true);
318 registerTask("check_integrity_early", true);
319 registerTask("check_integrity_early_physics", false);
320 registerTask("setup_quadrature", true);
321 registerTask("create_tagged_matrices", true);
322
323 registerTask("mesh_modifiers", false);
324
326 registerTask("no_action", false); // Used for Empty Action placeholders
327 registerTask("set_global_params", false);
328 registerTask("setup_adaptivity", false);
329 registerTask("meta_action", false);
330 registerTask("setup_residual_debug", false);
331 registerTask("setup_oversampling", false);
332 registerTask("deprecated_block", false);
333 registerTask("set_adaptivity_options", false);
334 registerTask("add_mortar_interface", false);
335 registerTask("coupling_functor_check", true);
336 registerTask("add_master_action_material", false);
337 registerTask("setup_projected_properties", false);
338 registerTask("create_application_block", false);
339
340 // Dummy Actions (useful for sync points in the dependencies)
341 registerTask("setup_function_complete", false);
342 registerTask("setup_variable_complete", false);
343 registerTask("setup_executioner_complete", false);
344 registerTask("ready_to_init", true);
345
346 // Output related actions
347 registerTask("add_output_aux_variables", true);
348 registerTask("check_output", true);
349 registerTask("declare_late_reporters", true);
350
351 registerTask("create_problem_default", true);
352 registerTask("create_problem_custom", false);
353 registerTask("create_problem_complete", false);
354
355 registerTask("add_default_nonlinear_convergence", true);
356 registerTask("add_default_multiapp_fixed_point_convergence", true);
357 registerTask("add_default_steady_state_convergence", true);
358
359 registerTask("chain_control_setup", true);
360 registerTask("start_webservercontrol", true);
361
362 // Action for setting up the signal-based checkpoint
363 registerTask("auto_checkpoint_action", true);
364 /**************************/
365 /****** Dependencies ******/
366 /**************************/
377 // clang-format off
378 syntax.addDependencySets("(meta_action)"
379 "(meta_action_component)"
380 "(dynamic_object_registration)"
381 "(common_output)"
382 "(set_global_params)"
383 "(setup_recover_file_base)"
384 "(check_copy_nodal_vars)"
385 "(setup_mesh)"
386 "(add_geometric_rm)"
387 "(add_partitioner)"
388 "(add_mesh_generator)"
389 "(create_added_mesh_generators)"
390 "(append_mesh_generator)"
391 "(execute_mesh_generators)"
392 "(recover_meta_data)"
393 "(set_mesh_base)"
394 "(attach_geometric_rm)"
395 "(init_mesh)"
396 "(prepare_mesh)"
397 "(add_mortar_interface)"
398 "(uniform_refine_mesh)"
399 "(setup_mesh_complete)"
400 "(post_mesh_prepared)"
401 "(determine_system_type)"
402 "(create_problem)"
403 "(create_problem_custom)"
404 "(create_problem_default)"
405 "(create_problem_complete)"
406 "(init_displaced_problem)" // Problem must be init-ed before we start adding functors
407 "(add_function)" // Functions can depend on scalar variables & PPs, but this dependence can be
408 // added on initialSetup() rather than construction
409 "(init_component_physics)" // components must add their blocks to physics before init_physics
410 "(init_physics)"
411 "(setup_postprocessor_data)"
412 "(setup_time_integrator, setup_time_integrators)"
413 "(setup_executioner)"
414 "(setup_executioner_complete)"
415 "(setup_component)" // no particular reason for that placement
416 "(read_executor)"
417 "(add_executor)"
418 "(check_integrity_early)"
419 "(setup_predictor)"
420 "(add_aux_variable, add_variable, add_elemental_field_variable,"
421 " add_external_aux_variables)"
422 "(add_variables_physics)" // physics can skip adding variables if they already exist
423 "(add_mortar_variable)"
424 "(setup_variable_complete)"
425 "(check_integrity_early_physics)" // checks that systems and variables are consistent
426 "(setup_quadrature)"
427 "(add_convergence)"
428 "(add_default_nonlinear_convergence,"
429 " add_default_multiapp_fixed_point_convergence,"
430 " add_default_steady_state_convergence)"
431 "(add_positions)"
432 "(add_periodic_bc)"
433 "(add_user_object, add_corrector, add_mesh_modifier)"
434 "(add_field_split)" // split objects required before field split preconditioner itself
435 "(add_preconditioning)" // preconditioner may introduce objects such as static condensation which influence the underlying types of tagged matrices
436 "(create_tagged_matrices)"
437 "(add_distribution)"
438 "(add_sampler)"
439 "(setup_function_complete)"
440 "(setup_adaptivity)"
441 "(set_adaptivity_options)"
442 "(add_ic, add_fv_ic)"
443 "(add_ics_physics)" // physics can skip adding initial conditions if they already exist
444 "(add_constraint)"
445 "(add_times)"
446 "(add_time_stepper, add_time_steppers)"
447 "(compose_time_stepper)"
448 "(setup_time_steppers)"
449 "(ready_to_init)"
450 "(setup_dampers)"
451 "(setup_residual_debug)"
452 "(add_bounds_vectors)"
453 "(add_mesh_division)" // NearestPositionsDivision uses a Positions
454 "(add_multi_app)"
455 "(add_transfer)"
456 "(copy_nodal_vars, copy_nodal_aux_vars, copy_vars_physics)"
457 "(add_material)"
458 "(add_master_action_material)"
459 "(add_functor_material)"
460 "(add_materials_physics)"
461 "(setup_projected_properties)"
462 "(add_output_aux_variables)"
463 "(add_output)"
464 "(auto_checkpoint_action)"
465 "(add_postprocessor)"
466 "(add_vector_postprocessor)" // MaterialVectorPostprocessor requires this
467 // to be after material objects are created.
468 "(add_reporter)"
469 "(declare_late_reporters)"
470 "(add_aux_kernel, add_bc, add_damper, add_dirac_kernel, add_kernel,"
471 " add_nodal_kernel, add_dg_kernel, add_fv_kernel, add_interpolation_method,"
472 " add_interpolation_method_physics, add_linear_fv_kernel,"
473 " add_fv_bc, add_linear_fv_bc, add_fv_ik, add_interface_kernel,"
474 " add_scalar_kernel, add_aux_scalar_kernel, add_indicator, add_marker,"
475 " add_bound, add_hybridized_kernel, add_hybridized_integrated_bc)"
476 "(resolve_optional_materials)"
477 "(add_algebraic_rm)"
478 "(add_coupling_rm)"
479 "(attach_geometric_rm_final)"
480 "(attach_algebraic_rm)"
481 "(attach_coupling_rm)"
482 "(coupling_functor_check)"
483 "(delete_remote_elements_after_late_geometric_ghosting)"
484 "(init_problem)"
485 "(add_control, add_chain_control)"
486 "(chain_control_setup)"
487 "(start_webservercontrol)"
488 "(check_output)"
489 "(check_integrity)"
490 "(create_application_block)");
491 // clang-format on
492
493#ifdef MOOSE_MFEM_ENABLED
494 registerTask("add_mfem_problem_operator", true);
495 addTaskDependency("add_mfem_problem_operator", "init_mesh");
496 addTaskDependency("add_variable", "add_mfem_problem_operator");
497 addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
498 addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
499 addTaskDependency("add_bc", "add_mfem_problem_operator");
500 addTaskDependency("add_kernel", "add_mfem_problem_operator");
501
502 // add SubMeshes
503 registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
504 addTaskDependency("add_mfem_submeshes", "create_problem_complete");
505
506 // add SubMesh transfers
507 appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
508
509 // add FESpaces
510 registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
511 appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
512 addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
513
514 // add FESpace hierarchies (must come after fespaces so the base fespace is available)
515 registerMooseObjectTask("add_mfem_fespace_hierarchies", MFEMFESpaceHierarchy, false);
516 addTaskDependency("add_mfem_fespace_hierarchies", "add_mfem_fespaces");
517
518 // variables must wait for hierarchies since a variable may reference a hierarchy's
519 // finest level via fespace_hierarchy = ...
520 addTaskDependency("add_variable", "add_mfem_fespace_hierarchies");
521 addTaskDependency("add_aux_variable", "add_mfem_fespace_hierarchies");
522 addTaskDependency("add_elemental_field_variable", "add_mfem_fespace_hierarchies");
523 // kernels only need fespaces, not hierarchies
524 addTaskDependency("add_kernel", "add_mfem_fespaces");
525
526 // add QuadratureFunctions
527 registerMooseObjectTask("add_mfem_quadrature_functions", MFEMQuadratureFunction, false);
528 // after the last task declaring coefficients the quadrature functions may project
529 addTaskDependency("add_mfem_quadrature_functions", "add_functor_material");
530 // before the tasks constructing objects that may consume the declared coefficients
531 addTaskDependency("add_kernel", "add_mfem_quadrature_functions");
532 addTaskDependency("add_bc", "add_mfem_quadrature_functions");
533 addTaskDependency("add_aux_kernel", "add_mfem_quadrature_functions");
534
535 // add complex kernels
536 registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
537 registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
538 addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
539 addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
540 addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
541 addTaskDependency("add_mfem_complex_bc_components", "add_bc");
542
543 // set mesh FE space
544 registerTask("set_mesh_fe_space", true);
545 addTaskDependency("set_mesh_fe_space", "add_variable");
546 addTaskDependency("set_mesh_fe_space", "init_mesh");
547
548 // add solver objects.
549 registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
550 addTaskDependency("add_mfem_solver", "add_mfem_fespace_hierarchies");
551 addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
552 addTaskDependency("add_mfem_solver", "add_variable");
553 registerTask("resolve_mfem_solvers", true);
554 addTaskDependency("resolve_mfem_solvers", "add_mfem_solver");
555 addTaskDependency("init_problem", "resolve_mfem_solvers");
556#endif
557
558 // Linear FV kernels fetch FVInterpolationMethod instances in their constructors. Some Physics
559 // add linear FV kernels on the generic FV kernel task.
560 addTaskDependency("add_interpolation_method_physics", "add_interpolation_method");
561 addTaskDependency("add_fv_kernel", "add_interpolation_method_physics");
562 addTaskDependency("add_linear_fv_kernel", "add_interpolation_method_physics");
563 addTaskDependency("add_fv_kernel", "add_interpolation_method");
564 addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
565
566 registerTask("parse_neml2", /*required=*/false);
567 addTaskDependency("add_material", "parse_neml2");
568 addTaskDependency("add_user_object", "parse_neml2");
569}
570
599void
600registerActions(Syntax & syntax, ActionFactory & action_factory)
601{
602 mooseDeprecated("use registerAll instead of registerActions");
603 registerActions(syntax, action_factory, {"MooseApp"});
604}
605
606void
607registerActions(Syntax & syntax,
608 ActionFactory & action_factory,
609 const std::set<std::string> & obj_labels)
610{
611 Registry::registerActionsTo(action_factory, obj_labels);
612
613 // Add these actions here so they are always executed last, without setting any dependency
614 registerTask("dump_objects", false);
615 registerTask("finish_input_file_output", false);
616}
617
618void
619associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
620{
626 registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
627 registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
628
629 registerSyntax("AddActionComponentAction", "ActionComponents/*");
630 registerSyntax("CombineComponentsMeshes", "ActionComponents");
631
632 registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
633 registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
634 registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
635 registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
636
637 registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
638 registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
639 registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
640
641 registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
642
643 registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
644
645 registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
646 registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
647
648 registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
649
650 registerSyntax("CreateProblemAction", "Problem");
651 registerSyntax("DynamicObjectRegistrationAction", "Problem");
652
653 registerSyntax("SetupMeshAction", "Mesh");
654 registerSyntax("SetupMeshCompleteAction", "Mesh");
655 // Components should be able create a Mesh without a Mesh block
656 registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
657 registerSyntax("CreateDisplacedProblemAction", "Mesh");
658 registerSyntax("DisplayGhostingAction", "Mesh");
659 registerSyntax("AddMeshGeneratorAction", "Mesh/*");
660 registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
661 registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
662 registerSyntax("ElementIDOutputAction", "Mesh");
663 syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
664
665 registerSyntax("AddFunctionAction", "Functions/*");
666 syntax.registerSyntaxType("Functions/*", "FunctionName");
667
668 registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
669 syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
670 registerSyntax("AddConvergenceAction", "Convergence/*");
671 syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
672
673 registerSyntax("GlobalParamsAction", "GlobalParams");
674
675 registerSyntax("AddDistributionAction", "Distributions/*");
676 syntax.registerSyntaxType("Distributions/*", "DistributionName");
677
678 registerSyntax("AddSamplerAction", "Samplers/*");
679 syntax.registerSyntaxType("Samplers/*", "SamplerName");
680
681 registerSyntax("SetupDebugAction", "Debug");
682 registerSyntax("SetupResidualDebugAction", "Debug");
683
685 registerSyntax("AddVariableAction", "Variables/*");
686 syntax.registerSyntaxType("Variables/*", "VariableName");
687 syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
688
689 registerSyntax("AddICAction", "Variables/*/InitialCondition");
690 registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
691
692 registerSyntax("AddAuxVariableAction", "AuxVariables/*");
693 syntax.registerSyntaxType("AuxVariables/*", "VariableName");
694 syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
695
696 registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
697 registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
698
699 registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
700 registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
701
702 registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
703 registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
704
705 registerSyntax("AddMaterialAction", "Materials/*");
706 syntax.registerSyntaxType("Materials/*", "MaterialName");
707
708 registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
709 syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
710
711 registerSyntax("AddPostprocessorAction", "Postprocessors/*");
712 syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
713 syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
714
715 registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
716 syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
717
718 registerSyntax("AddReporterAction", "Reporters/*");
719 syntax.registerSyntaxType("Reporters/*", "ReporterName");
720
721 registerSyntax("AddPositionsAction", "Positions/*");
722 syntax.registerSyntaxType("Positions/*", "PositionsName");
723
724 registerSyntax("AddTimesAction", "Times/*");
725 syntax.registerSyntaxType("Times/*", "TimesName");
726
727 registerSyntax("AddDamperAction", "Dampers/*");
728
729 registerSyntax("AddOutputAction", "Outputs/*");
730 registerSyntax("CommonOutputAction", "Outputs");
731 registerSyntax("MaterialOutputAction", "Outputs");
732 registerSyntax("AutoCheckpointAction", "Outputs");
733 syntax.registerSyntaxType("Outputs/*", "OutputName");
734
735 // Note: Preconditioner Actions will be built by this setup action
736 registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
737 registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
738
739 registerSyntax("CreateExecutionerAction", "Executioner");
740 registerSyntax("ReadExecutorParamsAction", "Executors/*");
741
742 registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
743 registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
744 registerSyntaxTask(
745 "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
746 registerSyntaxTask(
747 "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
748 registerSyntaxTask(
749 "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
750 syntax.registerSyntaxType("Executors/*", "ExecutorName");
751
752 registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
753 registerSyntax("SetupPredictorAction", "Executioner/Predictor");
754#ifdef LIBMESH_ENABLE_AMR
755 registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
756#endif
757
758 registerSyntax("PartitionerAction", "Mesh/Partitioner");
759
760 registerSyntax("AddDiracKernelAction", "DiracKernels/*");
761
762 registerSyntax("AddDGKernelAction", "DGKernels/*");
763 registerSyntax("AddFVKernelAction", "FVKernels/*");
764 registerSyntax("AddFVBCAction", "FVBCs/*");
765 registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
766 registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
767 registerSyntax("CheckFVBCAction", "FVBCs");
768
769 registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
770
771 registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
772
773 registerSyntax("AddConstraintAction", "Constraints/*");
774
775 registerSyntax("AddControlAction", "Controls/*");
776 registerSyntax("AddChainControlAction", "ChainControls/*");
777 registerSyntax("AddBoundAction", "Bounds/*");
778 registerSyntax("AddBoundsVectorsAction", "Bounds");
779
780 // UserObject and some derived classes
781 registerSyntax("AddUserObjectAction", "UserObjects/*");
782 syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
783
784 registerSyntax("AddCorrectorAction", "Correctors/*");
785 syntax.registerSyntaxType("Correctors/*", "UserObjectName");
786
787 registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
788 syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
789
790 registerSyntax("AddNodalNormalsAction", "NodalNormals");
791
792 // FVInterpolationMethods
793 registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
794 syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
795
796 // Indicator
797 registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
798 registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
799 syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
800
801 // Marker
802 registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
803 registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
804 syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
805
806 // New Adaptivity System
807 registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
808
809 // Deprecated Block
810 registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
811
812 // Multi Apps
813 registerSyntax("AddMultiAppAction", "MultiApps/*");
814 syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
815
816 // Transfers
817 registerSyntax("AddTransferAction", "Transfers/*");
818
819 // Material derivative test
820 registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
821 registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
822
823 registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
824
825 // Application Block System
826 registerSyntax("CreateApplicationBlockAction", "Application");
827
828#ifdef MOOSE_MFEM_ENABLED
829 registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
830 registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
831 registerSyntaxTask(
832 "AddMFEMQuadratureFunctionAction", "QuadratureFunctions/*", "add_mfem_quadrature_functions");
833 registerSyntaxTask(
834 "AddMFEMFESpaceHierarchyAction", "FESpaceHierarchies/*", "add_mfem_fespace_hierarchies");
835 registerSyntaxTask(
836 "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
837 registerSyntaxTask(
838 "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
839 registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
840 syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
841#endif
843 registerSyntax("NEML2ActionCommon", "NEML2");
844 registerSyntax("NEML2Action", "NEML2/*");
846 addActionTypes(syntax);
847}
848
849void
850associateSyntax(Syntax & syntax, ActionFactory & action_factory)
852 associateSyntaxInner(syntax, action_factory);
853 registerActions(syntax, action_factory);
854}
855
856void
858{
859 // May be a touch expensive to create a new DM every time, but probably safer to do it this way
861}
862
863MPI_Comm
864swapLibMeshComm(MPI_Comm new_comm)
865{
866 MPI_Comm old_comm = PETSC_COMM_WORLD;
867 PETSC_COMM_WORLD = new_comm;
868 return old_comm;
869}
870
871static bool _color_console = isatty(fileno(stdout));
872
873bool
876 return _color_console;
878
879bool
880setColorConsole(bool use_color, bool force)
881{
882 _color_console = (isatty(fileno(stdout)) || force) && use_color;
884}
885
886ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
887 : _throw_on_error_before(Moose::_throw_on_error)
888{
889 mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
890 Moose::_throw_on_error = throw_on_error;
891}
892
893ScopedThrowOnError::ScopedThrowOnError() : ScopedThrowOnError(true) {}
895ScopedThrowOnError::~ScopedThrowOnError() { Moose::_throw_on_error = _throw_on_error_before; }
897ScopedDeprecatedIsError::ScopedDeprecatedIsError(const bool deprecated_is_error)
898 : _deprecated_is_error_before(Moose::_deprecated_is_error)
900 mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
901 Moose::_deprecated_is_error = deprecated_is_error;
902}
903
904ScopedDeprecatedIsError::ScopedDeprecatedIsError() : ScopedDeprecatedIsError(true) {}
905
906ScopedDeprecatedIsError::~ScopedDeprecatedIsError()
907{
908 Moose::_deprecated_is_error = _deprecated_is_error_before;
909}
910
911std::string
912hitMessagePrefix(const hit::Node & node)
913{
914 // Strip meaningless line and column number for CLI args
915 if (node.filename() == "CLI_ARGS")
916 return "CLI_ARGS:\n";
917 // If using the root node, don't add line info
918 if (node.isRoot())
919 return node.filename() + ":\n";
920 return node.fileLocation() + ":\n";
921}
922
923bool _warnings_are_errors = false;
924bool _deprecated_is_error = false;
925bool _throw_on_error = false;
926bool _throw_on_warning = false;
927volatile std::sig_atomic_t interrupt_signal_number = 0;
928bool show_multiple = false;
929
930} // namespace Moose
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition MooseError.h:363
const ExecFlagType EXEC_FORCED
Definition Moose.C:49
const ExecFlagType EXEC_TRANSFER
Definition Moose.C:57
const ExecFlagType EXEC_PRE_MULTIAPP_SETUP
Definition Moose.C:56
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_END
Definition Moose.C:40
const ExecFlagType EXEC_MULTISYSTEM_FIXED_POINT_ITERATION_END
Definition Moose.C:46
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_CONVERGENCE
Definition Moose.C:44
const ExecFlagType EXEC_SUBDOMAIN
Definition Moose.C:52
const ExecFlagType EXEC_TIMESTEP_END
Definition Moose.C:36
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition Moose.C:37
const ExecFlagType EXEC_SAME_AS_MULTIAPP
Definition Moose.C:55
const ExecFlagType EXEC_POSTCHECK
Definition Moose.C:35
const ExecFlagType EXEC_ALWAYS
Definition Moose.C:53
const ExecFlagType EXEC_CUSTOM
Definition Moose.C:51
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_ITERATION_END
Definition Moose.C:38
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition Moose.C:60
const ExecFlagType EXEC_LINEAR_CONVERGENCE
Definition Moose.C:32
const ExecFlagType EXEC_INITIAL
Definition Moose.C:30
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_BEGIN
Definition Moose.C:42
const ExecFlagType EXEC_LINEAR
Definition Moose.C:31
const ExecFlagType EXEC_PRE_KERNELS
Definition Moose.C:58
const ExecFlagType EXEC_NONLINEAR
Definition Moose.C:33
const ExecFlagType EXEC_FAILED
Definition Moose.C:50
const ExecFlagType EXEC_NONE
Definition Moose.C:29
const ExecFlagType EXEC_FINAL
Definition Moose.C:48
const ExecFlagType EXEC_NONLINEAR_CONVERGENCE
Definition Moose.C:34
const ExecFlagType EXEC_PRE_DISPLACE
Definition Moose.C:54
Base class for array variable (equation) kernels using automatic differentiation.
Specialized factory for generic Action System objects.
Base class for making kernels that work on auxiliary scalar variables.
Base class for creating new types of boundary conditions.
Control that additionally provides the capability to produce/consume data values, to allow control op...
Base class for all Constraint types.
Definition Constraint.h:20
Base class for Control objects.
Definition Control.h:44
Base class for convergence criteria.
Definition Convergence.h:26
The DGKernel class is responsible for calculating the residuals for various physics on internal sides...
Definition DGKernel.h:19
Base class for deriving dampers.
Definition Damper.h:28
A DiracKernel is used when you need to add contributions to the residual by means of multiplying some...
Definition DiracKernel.h:33
All Distributions should inherit from this class.
The behavior of this kernel is controlled by one problem-wise global parameter eigen_on_current - boo...
Definition EigenKernel.h:24
Executioners are objects that do the actual work of solving your problem.
Definition Executioner.h:37
The Executor class directs the execution flow of simulations.
Definition Executor.h:27
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Base class for creating new types of boundary conditions.
This is a template class that implements the workhorse compute and computeNodal methods.
Base class for creating kernels that interface physics between subdomains.
Registered base class for linear FV interpolation objects.
FVKernel is a base class for all finite volume method kernels.
Definition FVKernel.h:36
Generic factory class for build all sorts of objects.
Definition Factory.h:29
Base class for function objects.
Definition Function.h:30
FunctorMaterials compute functor material properties.
Base kernel for hybridized finite element formulations.
Definition HDGKernel.h:18
This is a template class that implements the workhorse compute and computeNodal methods.
InterfaceKernel and VectorInterfaceKernel is responsible for interfacing physics across subdomains.
Base class for boundary conditions for linear FV systems.
Base class for finite volume kernels that contribute to a linear systems.
Builds and owns a mfem::ParFiniteElementSpaceHierarchy from a base FESpace by applying a sequence of ...
Constructs and stores an mfem::ParFiniteElementSpace object.
Definition MFEMFESpace.h:21
Class to transfer MFEM variable data to or from a restricted copy of the variable defined on an a sub...
Base class for construction of a mfem::ParSubMesh object.
Definition MFEMSubMesh.h:21
MaterialBases compute MaterialProperties.
Base class for MeshDivision objects.
MeshGenerators are objects that can modify or add to an existing mesh.
Class for containing MooseEnum item information.
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition MooseMesh.h:95
Base class for MOOSE partitioner.
Base class for MOOSE preconditioners.
Base variable class.
Base class for wrapping mfem::Solver-derived classes.
ScopedThrowOnError()
Default constructor, which sets Moose::_throw_on_error = true.
Definition Moose.C:864
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition MultiApp.h:116
Base class for creating nodal kernels with hand-coded Jacobians.
Definition NodalKernel.h:19
Based class for output objects.
Definition Output.h:52
Positions objects are under the hood Reporters.
Definition Positions.h:21
Base class for all Postprocessors.
Base class for predictors.
Definition Predictor.h:29
Class that hold the whole problem being solved.
Definition Problem.h:20
static void addAppCitation(const std::string &app_name, const std::string &key, const std::string &bibtex)
Register a citation (the full BibTeX bibtex text, identified by key) tied to the app app_name; emitte...
Definition Registry.C:198
static void registerActionsTo(ActionFactory &f, const std::set< std::string > &labels)
This registers all Actions known to the registry that have the given label(s) with the factory f.
Definition Registry.C:69
static void registerObjectsTo(Factory &f, const std::set< std::string > &labels)
This registers all MooseObjects known to the registry that have the given label(s) with the factory f...
Definition Registry.C:35
Reporter objects allow for the declaration of arbitrary data types that are aggregate values for a si...
Definition Reporter.h:48
This is the base class for Samplers as used within the Stochastic Tools module.
Definition Sampler.h:52
InitialConditions are objects that set the initial value of variables.
Base class for split-based preconditioners.
Definition Split.h:26
Holding syntax for parsing input files.
Definition Syntax.h:22
void addDependencySets(const std::string &action_sets)
Adds all dependencies in a single call.
Definition Syntax.C:69
void registerSyntaxType(const std::string &syntax, const std::string &type)
Register a type with a block.
Definition Syntax.C:363
Base class for time integrators.
Base class for time stepping.
Definition TimeStepper.h:23
Times objects are under the hood Reporters, but limited to a vector of Real.
Definition Times.h:19
Base class for all Transfer objects.
Definition Transfer.h:40
Base class for user-specific data.
Definition UserObject.h:20
Base class for Postprocessors that produce a vector of values.
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
void setSolverDefaults(FEProblemBase &problem)
Definition Moose.C:828
bool _deprecated_is_error
Variable to toggle only deprecated warnings as errors.
Definition Moose.C:895
void registerObjects(Factory &factory, const std::set< std::string > &obj_labels)
Definition Moose.C:103
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
Definition Moose.C:896
bool show_multiple
Set to false (the default) to display an error message only once for each error call code location (a...
Definition Moose.C:899
void associateSyntax(Syntax &syntax, ActionFactory &action_factory)
Definition Moose.C:821
bool setColorConsole(bool use_color, bool force=false)
Turns color escape sequences on/off for info written to stdout.
Definition Moose.C:851
void registerActions(Syntax &syntax, ActionFactory &action_factory)
Multiple Action class can be associated with a single input file section, in which case all associate...
Definition Moose.C:571
void registerAll(Factory &f, ActionFactory &af, Syntax &s)
Register objects that are in MOOSE.
Definition Moose.C:69
volatile std::sig_atomic_t interrupt_signal_number
Used by the signal handler to determine if we should write a checkpoint file out at any point during ...
Definition Moose.C:898
bool _throw_on_warning
Variable to turn on exceptions during mooseWarning(), should only be used in MOOSE unit tests.
Definition Moose.C:897
bool _warnings_are_errors
Variable to toggle any warning into an error (includes deprecated code warnings)
Definition Moose.C:894
bool colorConsole()
Returns whether Console coloring is turned on (default: true).
Definition Moose.C:845
void addActionTypes(Syntax &syntax)
Definition Moose.C:109
static bool _color_console
Definition Moose.C:842
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition Moose.C:883
void associateSyntaxInner(Syntax &syntax, ActionFactory &action_factory)
Definition Moose.C:590
MPI_Comm swapLibMeshComm(MPI_Comm new_comm)
Swap the libMesh MPI communicator out for ours.
Definition Moose.C:835