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#include "FVGradientMethod.h"
25
26#include "hit/parse.h"
27
28#include <unistd.h>
29
30const ExecFlagType EXEC_NONE = registerDefaultExecFlag("NONE");
31const ExecFlagType EXEC_INITIAL = registerDefaultExecFlag("INITIAL");
32const ExecFlagType EXEC_LINEAR = registerDefaultExecFlag("LINEAR");
33const ExecFlagType EXEC_LINEAR_CONVERGENCE = registerDefaultExecFlag("LINEAR_CONVERGENCE");
34const ExecFlagType EXEC_NONLINEAR = registerDefaultExecFlag("NONLINEAR");
35const ExecFlagType EXEC_NONLINEAR_CONVERGENCE = registerDefaultExecFlag("NONLINEAR_CONVERGENCE");
36const ExecFlagType EXEC_POSTCHECK = registerDefaultExecFlag("POSTCHECK");
37const ExecFlagType EXEC_TIMESTEP_END = registerDefaultExecFlag("TIMESTEP_END");
38const ExecFlagType EXEC_TIMESTEP_BEGIN = registerDefaultExecFlag("TIMESTEP_BEGIN");
40 registerExecFlag("MULTIAPP_FIXED_POINT_ITERATION_END");
42 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_END");
44 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_BEGIN");
46 registerDefaultExecFlag("MULTIAPP_FIXED_POINT_CONVERGENCE");
48 registerDefaultExecFlag("MULTISYSTEM_FIXED_POINT_ITERATION_END");
49const ExecFlagType EXEC_FINAL = registerDefaultExecFlag("FINAL");
50const ExecFlagType EXEC_FORCED = registerExecFlag("FORCED");
51const ExecFlagType EXEC_FAILED = registerExecFlag("FAILED");
52const ExecFlagType EXEC_CUSTOM = registerDefaultExecFlag("CUSTOM");
53const ExecFlagType EXEC_SUBDOMAIN = registerExecFlag("SUBDOMAIN");
54const ExecFlagType EXEC_ALWAYS = registerExecFlag("ALWAYS");
55const ExecFlagType EXEC_PRE_DISPLACE = registerExecFlag("PRE_DISPLACE");
56const ExecFlagType EXEC_SAME_AS_MULTIAPP = registerExecFlag("SAME_AS_MULTIAPP");
57const ExecFlagType EXEC_PRE_MULTIAPP_SETUP = registerExecFlag("PRE_MULTIAPP_SETUP");
58const ExecFlagType EXEC_TRANSFER = registerExecFlag("TRANSFER");
59const ExecFlagType EXEC_PRE_KERNELS = registerExecFlag("PRE_KERNELS");
60#ifdef LIBMESH_ENABLE_AMR
61const ExecFlagType EXEC_POST_ADAPTIVITY = registerExecFlag("POST_ADAPTIVITY");
62#endif
63
64namespace Moose
65{
66
67bool
69{
70 return exec_flag == EXEC_LINEAR || exec_flag == EXEC_NONLINEAR || exec_flag == EXEC_POSTCHECK;
71}
72
73void associateSyntaxInner(Syntax & syntax, ActionFactory & action_factory);
74
75void
77{
78 registerObjects(f, {"MooseApp"});
80 registerActions(s, af, {"MooseApp"});
81 registerAppDataFilePath("moose");
82 registerRepository("moose", "github.com/idaholab/moose");
83
84 // Citation emitted by the --citations command-line option: the current framework paper is tied to
85 // "MooseApp" (so it is cited whenever a MooseApp object is used, and apps composed of MooseApp
86 // inherit it), and modules register their own app citations (via Registry::addAppCitation) which
87 // are cited only when one of their objects is actually used. PETSc and its sub-packages register
88 // their own citations, which --citations emits through PETSc.
89 Registry::addAppCitation("MooseApp",
90 "harbour2025moose",
91 R"(@article{harbour2025moose,
92 title = {4.0 {MOOSE}: Enabling massively parallel Multiphysics simulation},
93 journal = {{SoftwareX}},
94 volume = {31},
95 pages = {102264},
96 year = {2025},
97 issn = {2352-7110},
98 doi = {https://doi.org/10.1016/j.softx.2025.102264},
99 url = {https://www.sciencedirect.com/science/article/pii/S2352711025002316},
100 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},
101})");
102
103 // The libMesh citation is registered under "libMesh" but not tied to any object label, so the
104 // per-object loop in MooseApp::requestCitations() does not emit it; emission is gated on the
105 // finite element backend actually used in the run.
106 Registry::addAppCitation("libMesh",
107 "libMeshPaper",
108 R"(@article{libMeshPaper,
109 author = {B.~S.~Kirk and J.~W.~Peterson and R.~H.~Stogner and G.~F.~Carey},
110 title = {{\texttt{libMesh}: A C++ Library for Parallel Adaptive Mesh
111 Refinement/Coarsening Simulations}},
112 journal = {Engineering with Computers},
113 volume = {22},
114 number = {3--4},
115 pages = {237--254},
116 year = {2006},
117 url={http://dx.doi.org/10.1007/s00366-006-0049-3}
118})");
119
120#ifdef MOOSE_MFEM_ENABLED
121 // Like libMesh, the MFEM citation is emitted by MooseApp::requestCitations() only when the run
122 // actually uses the MFEM backend.
124 "mfem-2024",
125 R"(@article{mfem-2024,
126 title = {High-Performance Finite Elements with {MFEM}},
127 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},
128 journal = {The International Journal of High Performance Computing Applications},
129 volume = {38},
130 number = {5},
131 pages = {447--467},
132 year = {2024},
133 publisher = {SAGE Publications Sage UK: London, England},
134})");
135#endif
136}
137
138void
139registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
140{
141 Registry::registerObjectsTo(factory, obj_labels);
142}
143
144void
145addActionTypes(Syntax & syntax)
146{
159 // clang-format off
160 /**************************/
161 /**** Register Actions ****/
162 /**************************/
163 registerMooseObjectTask("create_problem", Problem, false);
164 registerMooseObjectTask("setup_executioner", Executioner, false);
165 registerMooseObjectTask("read_executor", Executor, false);
166 registerTask("add_executor", true);
167
168 // TODO Organize these somewhere
169 registerTask("init_physics", false);
170 registerTask("init_component_physics", false);
171 registerTask("meta_action_component", false);
172 registerTask("setup_component", false);
173 // 'list_component' is used to retrieve ActionComponents for the syntax JSON
174 registerTask("list_component", false);
175
176 // This task does not construct an object, but it needs all of the parameters that
177 // would normally be used to construct an object.
178 registerMooseObjectTask("determine_system_type", Executioner, true);
179
180 registerMooseObjectTask("setup_mesh", MooseMesh, false);
181 registerMooseObjectTask("set_mesh_base", MooseMesh, false);
182 registerMooseObjectTask("init_mesh", MooseMesh, false);
183 registerMooseObjectTask("add_mesh_generator", MeshGenerator, false);
184 registerTask("create_added_mesh_generators", true);
185 registerMooseObjectTask("append_mesh_generator", MeshGenerator, false);
186
187 registerMooseObjectTask("add_kernel", Kernel, false);
188 appendMooseObjectTask ("add_kernel", EigenKernel);
189 appendMooseObjectTask ("add_kernel", VectorKernel);
190 appendMooseObjectTask ("add_kernel", ArrayKernel);
191 appendMooseObjectTask ("add_kernel", ADArrayKernel);
192
193 registerMooseObjectTask("add_variable", MooseVariableBase, false);
194 registerMooseObjectTask("add_aux_variable", MooseVariableBase, false);
195 registerMooseObjectTask("add_elemental_field_variable", MooseVariableBase, false);
196 registerMooseObjectTask("add_variables_physics", MooseVariableBase, false);
197
198 registerMooseObjectTask("add_nodal_kernel", NodalKernel, false);
199
200 registerMooseObjectTask("add_functor_material", FunctorMaterial, false);
201 registerMooseObjectTask("add_material", MaterialBase, false);
202 appendDeprecatedMooseObjectTask("add_material", FunctorMaterial);
203 registerMooseObjectTask("add_materials_physics", FunctorMaterial, false);
204 appendMooseObjectTask ("add_materials_physics", MaterialBase);
205
206 registerMooseObjectTask("add_bc", BoundaryCondition, false);
207
208 registerMooseObjectTask("add_function", Function, false);
209
210 registerMooseObjectTask("add_distribution", Distribution, false);
211 registerMooseObjectTask("add_sampler", Sampler, false);
212
213 registerMooseObjectTask("add_aux_kernel", AuxKernel, false);
214 appendMooseObjectTask ("add_aux_kernel", VectorAuxKernel);
215 appendMooseObjectTask ("add_aux_kernel", ArrayAuxKernel);
216
217 registerMooseObjectTask("add_bound", Bounds, false);
218
219 registerMooseObjectTask("add_scalar_kernel", ScalarKernel, false);
220 registerMooseObjectTask("add_aux_scalar_kernel", AuxScalarKernel, false);
221 registerMooseObjectTask("add_dirac_kernel", DiracKernel, false);
222 appendMooseObjectTask ("add_dirac_kernel", VectorDiracKernel);
223 registerMooseObjectTask("add_dg_kernel", DGKernel, false);
224 registerMooseObjectTask("add_fv_kernel", FVKernel, false);
225 registerMooseObjectTask("add_gradient_method", FVGradientMethod, false);
226 registerMooseObjectTask("add_interpolation_method", FVInterpolationMethod, false);
227 registerMooseObjectTask("add_interpolation_method_physics", FVInterpolationMethod, false);
228 registerMooseObjectTask("add_linear_fv_kernel", LinearFVKernel, false);
229 registerMooseObjectTask("add_fv_bc", FVBoundaryCondition, false);
230 registerMooseObjectTask("add_linear_fv_bc", LinearFVBoundaryCondition, false);
231 registerMooseObjectTask("add_fv_ik", FVInterfaceKernel, false);
232 registerMooseObjectTask("add_interface_kernel", InterfaceKernel, false);
233 appendMooseObjectTask ("add_interface_kernel", VectorInterfaceKernel);
234 registerMooseObjectTask("add_constraint", Constraint, false);
235 registerMooseObjectTask("add_hybridized_kernel", HDGKernel, false);
236 registerMooseObjectTask("add_hybridized_integrated_bc", HDGIntegratedBC, false);
237
238 registerMooseObjectTask("add_ic", InitialCondition, false);
239 appendMooseObjectTask ("add_ic", ScalarInitialCondition);
240 registerMooseObjectTask("add_fv_ic", FVInitialCondition, false);
241 registerMooseObjectTask("add_ics_physics", InitialCondition, false);
242 appendMooseObjectTask ("add_ics_physics", FVInitialCondition);
243 appendMooseObjectTask ("add_ics_physics", ScalarInitialCondition);
244
245 registerMooseObjectTask("add_damper", Damper, false);
246 registerMooseObjectTask("setup_predictor", Predictor, false);
247 registerMooseObjectTask("add_time_steppers", TimeStepper, false);
248 registerMooseObjectTask("add_time_stepper", TimeStepper, false);
249 registerTask ("compose_time_stepper", true);
250 registerMooseObjectTask("setup_time_integrators", TimeIntegrator, false);
251 registerMooseObjectTask("setup_time_integrator", TimeIntegrator, false);
252 registerMooseObjectTask("add_convergence", Convergence, false);
253
254 registerMooseObjectTask("add_preconditioning", MoosePreconditioner, false);
255 registerMooseObjectTask("add_field_split", Split, false);
256
257 registerMooseObjectTask("add_mesh_division", MeshDivision, false);
258 registerMooseObjectTask("add_user_object", UserObject, false);
259 appendMooseObjectTask ("add_user_object", Postprocessor);
260
261 appendDeprecatedMooseObjectTask("add_user_object", Corrector);
262 registerMooseObjectTask("add_corrector", Corrector, false);
263 appendDeprecatedMooseObjectTask("add_user_object", MeshModifier);
264 registerMooseObjectTask("add_mesh_modifier", MeshModifier, false);
265
266 registerMooseObjectTask("add_postprocessor", Postprocessor, false);
267 registerMooseObjectTask("add_vector_postprocessor", VectorPostprocessor, false);
268 registerMooseObjectTask("add_reporter", Reporter, false);
269
270 registerMooseObjectTask("add_positions", Positions, false);
271 registerMooseObjectTask("add_times", Times, false);
272
273 registerMooseObjectTask("add_indicator", Indicator, false);
274 registerMooseObjectTask("add_marker", Marker, false);
275
276 registerMooseObjectTask("add_multi_app", MultiApp, false);
277 registerMooseObjectTask("add_transfer", Transfer, false);
278
279 registerMooseObjectTask("add_output", Output, false);
280
281 registerMooseObjectTask("add_control", Control, false);
282 registerMooseObjectTask("add_chain_control", ChainControl, false);
283 registerMooseObjectTask("add_partitioner", MoosePartitioner, false);
284
285 // clang-format on
286
287 registerTask("dynamic_object_registration", false);
288 registerTask("common_output", true);
289 registerTask("setup_recover_file_base", true);
290 registerTask("recover_meta_data", true);
291
292 registerTask("add_bounds_vectors", false);
293 registerTask("add_periodic_bc", false);
294 registerTask("add_aux_variable", false);
295 registerTask("add_external_aux_variables", true);
296 registerTask("add_variable", false);
297 registerTask("add_mortar_variable", false);
298
299 registerTask("execute_mesh_generators", true);
300 registerTask("uniform_refine_mesh", false);
301 registerTask("prepare_mesh", false);
302 registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
303 registerTask("setup_mesh_complete", true); // calls prepare
304 registerTask("post_mesh_prepared", false);
305 registerTask("add_geometric_rm", false);
306 registerTask("attach_geometric_rm", true);
307 registerTask("attach_geometric_rm_final", true);
308
309 registerTask("init_displaced_problem", false);
310
311 registerTask("add_algebraic_rm", false);
312 registerTask("attach_algebraic_rm", true);
313 registerTask("add_coupling_rm", false);
314 registerTask("attach_coupling_rm", true);
315 registerTask("init_problem", true);
316 registerTask("check_copy_nodal_vars", true);
317 registerTask("copy_nodal_vars", true);
318 registerTask("copy_nodal_aux_vars", true);
319 registerTask("copy_vars_physics", false);
320 registerTask("setup_postprocessor_data", false);
321 registerTask("setup_time_steppers", true);
322
323 registerTask("setup_dampers", true);
324 registerTask("check_integrity", true);
325 registerTask("resolve_optional_materials", true);
326 registerTask("check_integrity_early", true);
327 registerTask("check_integrity_early_physics", false);
328 registerTask("setup_quadrature", true);
329 registerTask("create_tagged_matrices", true);
330
331 registerTask("mesh_modifiers", false);
332
334 registerTask("no_action", false); // Used for Empty Action placeholders
335 registerTask("set_global_params", false);
336 registerTask("setup_adaptivity", false);
337 registerTask("meta_action", false);
338 registerTask("setup_residual_debug", false);
339 registerTask("setup_oversampling", false);
340 registerTask("deprecated_block", false);
341 registerTask("set_adaptivity_options", false);
342 registerTask("add_mortar_interface", false);
343 registerTask("coupling_functor_check", true);
344 registerTask("add_master_action_material", false);
345 registerTask("setup_projected_properties", false);
346 registerTask("create_application_block", false);
347
348 // Dummy Actions (useful for sync points in the dependencies)
349 registerTask("setup_function_complete", false);
350 registerTask("setup_variable_complete", false);
351 registerTask("setup_executioner_complete", false);
352 registerTask("ready_to_init", true);
353
354 // Output related actions
355 registerTask("add_output_aux_variables", true);
356 registerTask("check_output", true);
357 registerTask("declare_late_reporters", true);
358
359 registerTask("create_problem_default", true);
360 registerTask("create_problem_custom", false);
361 registerTask("create_problem_complete", false);
362
363 registerTask("add_default_nonlinear_convergence", true);
364 registerTask("add_default_multiapp_fixed_point_convergence", true);
365 registerTask("add_default_steady_state_convergence", true);
366
367 registerTask("chain_control_setup", true);
368 registerTask("start_webservercontrol", true);
369
370 // Action for setting up the signal-based checkpoint
371 registerTask("auto_checkpoint_action", true);
372 /**************************/
373 /****** Dependencies ******/
374 /**************************/
385 // clang-format off
386 syntax.addDependencySets("(meta_action)"
387 "(meta_action_component)"
388 "(dynamic_object_registration)"
389 "(common_output)"
390 "(set_global_params)"
391 "(setup_recover_file_base)"
392 "(check_copy_nodal_vars)"
393 "(setup_mesh)"
394 "(add_geometric_rm)"
395 "(add_partitioner)"
396 "(add_mesh_generator)"
397 "(create_added_mesh_generators)"
398 "(append_mesh_generator)"
399 "(execute_mesh_generators)"
400 "(recover_meta_data)"
401 "(set_mesh_base)"
402 "(attach_geometric_rm)"
403 "(init_mesh)"
404 "(prepare_mesh)"
405 "(add_mortar_interface)"
406 "(uniform_refine_mesh)"
407 "(setup_mesh_complete)"
408 "(post_mesh_prepared)"
409 "(determine_system_type)"
410 "(create_problem)"
411 "(create_problem_custom)"
412 "(create_problem_default)"
413 "(create_problem_complete)"
414 "(init_displaced_problem)" // Problem must be init-ed before we start adding functors
415 "(add_function)" // Functions can depend on scalar variables & PPs, but this dependence can be
416 // added on initialSetup() rather than construction
417 "(init_component_physics)" // components must add their blocks to physics before init_physics
418 "(init_physics)"
419 "(setup_postprocessor_data)"
420 "(setup_time_integrator, setup_time_integrators)"
421 "(setup_executioner)"
422 "(setup_executioner_complete)"
423 "(setup_component)" // no particular reason for that placement
424 "(read_executor)"
425 "(add_executor)"
426 "(check_integrity_early)"
427 "(setup_predictor)"
428 "(add_aux_variable, add_variable, add_elemental_field_variable,"
429 " add_external_aux_variables)"
430 "(add_variables_physics)" // physics can skip adding variables if they already exist
431 "(add_mortar_variable)"
432 "(setup_variable_complete)"
433 "(check_integrity_early_physics)" // checks that systems and variables are consistent
434 "(setup_quadrature)"
435 "(add_convergence)"
436 "(add_default_nonlinear_convergence,"
437 " add_default_multiapp_fixed_point_convergence,"
438 " add_default_steady_state_convergence)"
439 "(add_positions)"
440 "(add_periodic_bc)"
441 "(add_gradient_method)"
442 "(add_user_object, add_corrector, add_mesh_modifier)"
443 "(add_field_split)" // split objects required before field split preconditioner itself
444 "(add_preconditioning)" // preconditioner may introduce objects such as static condensation which influence the underlying types of tagged matrices
445 "(create_tagged_matrices)"
446 "(add_distribution)"
447 "(add_sampler)"
448 "(setup_function_complete)"
449 "(setup_adaptivity)"
450 "(set_adaptivity_options)"
451 "(add_ic, add_fv_ic)"
452 "(add_ics_physics)" // physics can skip adding initial conditions if they already exist
453 "(add_constraint)"
454 "(add_times)"
455 "(add_time_stepper, add_time_steppers)"
456 "(compose_time_stepper)"
457 "(setup_time_steppers)"
458 "(ready_to_init)"
459 "(setup_dampers)"
460 "(setup_residual_debug)"
461 "(add_bounds_vectors)"
462 "(add_mesh_division)" // NearestPositionsDivision uses a Positions
463 "(add_multi_app)"
464 "(add_transfer)"
465 "(copy_nodal_vars, copy_nodal_aux_vars, copy_vars_physics)"
466 "(add_material)"
467 "(add_master_action_material)"
468 "(add_functor_material)"
469 "(add_materials_physics)"
470 "(setup_projected_properties)"
471 "(add_output_aux_variables)"
472 "(add_output)"
473 "(auto_checkpoint_action)"
474 "(add_postprocessor)"
475 "(add_vector_postprocessor)" // MaterialVectorPostprocessor requires this
476 // to be after material objects are created.
477 "(add_reporter)"
478 "(declare_late_reporters)"
479 "(add_aux_kernel, add_bc, add_damper, add_dirac_kernel, add_kernel,"
480 " add_nodal_kernel, add_dg_kernel, add_fv_kernel, add_interpolation_method,"
481 " add_interpolation_method_physics, add_linear_fv_kernel,"
482 " add_fv_bc, add_linear_fv_bc, add_fv_ik, add_interface_kernel,"
483 " add_scalar_kernel, add_aux_scalar_kernel, add_indicator, add_marker,"
484 " add_bound, add_hybridized_kernel, add_hybridized_integrated_bc)"
485 "(resolve_optional_materials)"
486 "(add_algebraic_rm)"
487 "(add_coupling_rm)"
488 "(attach_geometric_rm_final)"
489 "(attach_algebraic_rm)"
490 "(attach_coupling_rm)"
491 "(coupling_functor_check)"
492 "(delete_remote_elements_after_late_geometric_ghosting)"
493 "(init_problem)"
494 "(add_control, add_chain_control)"
495 "(chain_control_setup)"
496 "(start_webservercontrol)"
497 "(check_output)"
498 "(check_integrity)"
499 "(create_application_block)");
500 // clang-format on
501
502#ifdef MOOSE_MFEM_ENABLED
503 registerTask("add_mfem_problem_operator", true);
504 addTaskDependency("add_variable", "add_mfem_problem_operator");
505 addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
506 addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
507 addTaskDependency("add_bc", "add_mfem_problem_operator");
508 addTaskDependency("add_kernel", "add_mfem_problem_operator");
509
510 // add problem composers (and operators)
511 registerMooseObjectTask("add_mfem_problem_composer", MFEMProblemComposer, false);
512 addTaskDependency("add_mfem_problem_operator", "add_mfem_problem_composer");
513 addTaskDependency("setup_executioner", "add_mfem_problem_composer");
514
515 // add SubMeshes
516 registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
517 addTaskDependency("add_mfem_submeshes", "create_problem_complete");
518
519 // add SubMesh transfers
520 appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
521
522 // add FESpaces
523 registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
524 appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
525 addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
526
527 // add FESpace hierarchies (must come after fespaces so the base fespace is available)
528 registerMooseObjectTask("add_mfem_fespace_hierarchies", MFEMFESpaceHierarchy, false);
529 addTaskDependency("add_mfem_fespace_hierarchies", "add_mfem_fespaces");
530
531 // variables must wait for hierarchies since a variable may reference a hierarchy's
532 // finest level via fespace_hierarchy = ...
533 addTaskDependency("add_variable", "add_mfem_fespace_hierarchies");
534 addTaskDependency("add_aux_variable", "add_mfem_fespace_hierarchies");
535 addTaskDependency("add_elemental_field_variable", "add_mfem_fespace_hierarchies");
536 // kernels only need fespaces, not hierarchies
537 addTaskDependency("add_kernel", "add_mfem_fespaces");
538
539 // add complex kernels
540 registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
541 registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
542 addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
543 addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
544 addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
545 addTaskDependency("add_mfem_complex_bc_components", "add_bc");
546
547 // set mesh FE space
548 registerTask("set_mesh_fe_space", true);
549 addTaskDependency("set_mesh_fe_space", "add_variable");
550 addTaskDependency("set_mesh_fe_space", "init_mesh");
551
552 // add solver objects.
553 registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
554 addTaskDependency("add_mfem_solver", "add_mfem_fespace_hierarchies");
555 addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
556 addTaskDependency("add_mfem_solver", "add_variable");
557 registerTask("resolve_mfem_solvers", true);
558 addTaskDependency("resolve_mfem_solvers", "add_mfem_solver");
559 addTaskDependency("init_problem", "resolve_mfem_solvers");
560
561 // indicators/estimators before markers
562 addTaskDependency("add_marker", "add_indicator");
563#endif
564
565 // Linear FV kernels fetch FVInterpolationMethod instances in their constructors. Some Physics
566 // add linear FV kernels on the generic FV kernel task.
567 addTaskDependency("add_interpolation_method_physics", "add_interpolation_method");
568 addTaskDependency("add_fv_kernel", "add_interpolation_method_physics");
569 addTaskDependency("add_linear_fv_kernel", "add_interpolation_method_physics");
570 addTaskDependency("add_fv_kernel", "add_interpolation_method");
571 addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
572 // Linear FV kernels and BCs may register named FVGradientMethod instances in their constructors
573 addTaskDependency("add_user_object", "add_gradient_method");
574 addTaskDependency("add_linear_fv_kernel", "add_gradient_method");
575 addTaskDependency("add_linear_fv_bc", "add_gradient_method");
576
577 registerTask("parse_neml2", /*required=*/false);
578 addTaskDependency("add_material", "parse_neml2");
579 addTaskDependency("add_user_object", "parse_neml2");
580}
581
610void
611registerActions(Syntax & syntax, ActionFactory & action_factory)
612{
613 mooseDeprecated("use registerAll instead of registerActions");
614 registerActions(syntax, action_factory, {"MooseApp"});
615}
616
617void
618registerActions(Syntax & syntax,
619 ActionFactory & action_factory,
620 const std::set<std::string> & obj_labels)
621{
622 Registry::registerActionsTo(action_factory, obj_labels);
623
624 // Add these actions here so they are always executed last, without setting any dependency
625 registerTask("dump_objects", false);
626 registerTask("finish_input_file_output", false);
627}
628
629void
630associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
631{
637 registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
638 registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
639
640 registerSyntax("AddActionComponentAction", "ActionComponents/*");
641 registerSyntax("CombineComponentsMeshes", "ActionComponents");
642
643 registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
644 registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
645 registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
646 registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
647
648 registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
649 registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
650 registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
651
652 registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
653
654 registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
655
656 registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
657 registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
658
659 registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
660
661 registerSyntax("CreateProblemAction", "Problem");
662 registerSyntax("DynamicObjectRegistrationAction", "Problem");
663
664 registerSyntax("SetupMeshAction", "Mesh");
665 registerSyntax("SetupMeshCompleteAction", "Mesh");
666 // Components should be able create a Mesh without a Mesh block
667 registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
668 registerSyntax("CreateDisplacedProblemAction", "Mesh");
669 registerSyntax("DisplayGhostingAction", "Mesh");
670 registerSyntax("AddMeshGeneratorAction", "Mesh/*");
671 registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
672 registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
673 registerSyntax("ElementIDOutputAction", "Mesh");
674 syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
675
676 registerSyntax("AddFunctionAction", "Functions/*");
677 syntax.registerSyntaxType("Functions/*", "FunctionName");
678
679 registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
680 syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
681 registerSyntax("AddConvergenceAction", "Convergence/*");
682 syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
683
684 registerSyntax("GlobalParamsAction", "GlobalParams");
685
686 registerSyntax("AddDistributionAction", "Distributions/*");
687 syntax.registerSyntaxType("Distributions/*", "DistributionName");
688
689 registerSyntax("AddSamplerAction", "Samplers/*");
690 syntax.registerSyntaxType("Samplers/*", "SamplerName");
691
692 registerSyntax("SetupDebugAction", "Debug");
693 registerSyntax("SetupResidualDebugAction", "Debug");
694
696 registerSyntax("AddVariableAction", "Variables/*");
697 syntax.registerSyntaxType("Variables/*", "VariableName");
698 syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
699
700 registerSyntax("AddICAction", "Variables/*/InitialCondition");
701 registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
702
703 registerSyntax("AddAuxVariableAction", "AuxVariables/*");
704 syntax.registerSyntaxType("AuxVariables/*", "VariableName");
705 syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
706
707 registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
708 registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
709
710 registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
711 registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
712
713 registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
714 registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
715
716 registerSyntax("AddMaterialAction", "Materials/*");
717 syntax.registerSyntaxType("Materials/*", "MaterialName");
718
719 registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
720 syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
721
722 registerSyntax("AddPostprocessorAction", "Postprocessors/*");
723 syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
724 syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
725
726 registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
727 syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
728
729 registerSyntax("AddReporterAction", "Reporters/*");
730 syntax.registerSyntaxType("Reporters/*", "ReporterName");
731
732 registerSyntax("AddPositionsAction", "Positions/*");
733 syntax.registerSyntaxType("Positions/*", "PositionsName");
734
735 registerSyntax("AddTimesAction", "Times/*");
736 syntax.registerSyntaxType("Times/*", "TimesName");
737
738 registerSyntax("AddDamperAction", "Dampers/*");
739
740 registerSyntax("AddOutputAction", "Outputs/*");
741 registerSyntax("CommonOutputAction", "Outputs");
742 registerSyntax("MaterialOutputAction", "Outputs");
743 registerSyntax("AutoCheckpointAction", "Outputs");
744 syntax.registerSyntaxType("Outputs/*", "OutputName");
745
746 // Note: Preconditioner Actions will be built by this setup action
747 registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
748 registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
749
750 registerSyntax("CreateExecutionerAction", "Executioner");
751 registerSyntax("ReadExecutorParamsAction", "Executors/*");
752
753 registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
754 registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
755 registerSyntaxTask(
756 "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
757 registerSyntaxTask(
758 "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
759 registerSyntaxTask(
760 "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
761 syntax.registerSyntaxType("Executors/*", "ExecutorName");
762
763 registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
764 registerSyntax("SetupPredictorAction", "Executioner/Predictor");
765#ifdef LIBMESH_ENABLE_AMR
766 registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
767#endif
768
769 registerSyntax("PartitionerAction", "Mesh/Partitioner");
770
771 registerSyntax("AddDiracKernelAction", "DiracKernels/*");
772
773 registerSyntax("AddDGKernelAction", "DGKernels/*");
774 registerSyntax("AddFVKernelAction", "FVKernels/*");
775 registerSyntax("AddFVBCAction", "FVBCs/*");
776 registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
777 registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
778 registerSyntax("CheckFVBCAction", "FVBCs");
779
780 registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
781
782 registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
783
784 registerSyntax("AddConstraintAction", "Constraints/*");
785
786 registerSyntax("AddControlAction", "Controls/*");
787 registerSyntax("AddChainControlAction", "ChainControls/*");
788 registerSyntax("AddBoundAction", "Bounds/*");
789 registerSyntax("AddBoundsVectorsAction", "Bounds");
790
791 // UserObject and some derived classes
792 registerSyntax("AddUserObjectAction", "UserObjects/*");
793 syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
794
795 registerSyntax("AddCorrectorAction", "Correctors/*");
796 syntax.registerSyntaxType("Correctors/*", "UserObjectName");
797
798 registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
799 syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
800
801 registerSyntax("AddNodalNormalsAction", "NodalNormals");
802
803 // FVInterpolationMethods
804 registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
805 syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
806
807 // FVGradientMethods
808 registerSyntax("AddFVGradientMethodAction", "FVGradientMethods/*");
809 syntax.registerSyntaxType("FVGradientMethods/*", "GradientMethodName");
810
811 // Indicator
812 registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
813 registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
814 syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
815
816 // Marker
817 registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
818 registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
819 syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
820
821 // New Adaptivity System
822 registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
823
824 // Deprecated Block
825 registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
826
827 // Multi Apps
828 registerSyntax("AddMultiAppAction", "MultiApps/*");
829 syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
830
831 // Transfers
832 registerSyntax("AddTransferAction", "Transfers/*");
833
834 // Material derivative test
835 registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
836 registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
837
838 registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
839
840 // Application Block System
841 registerSyntax("CreateApplicationBlockAction", "Application");
842
843#ifdef MOOSE_MFEM_ENABLED
844 registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
845 registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
846 registerSyntaxTask(
847 "AddMFEMFESpaceHierarchyAction", "FESpaceHierarchies/*", "add_mfem_fespace_hierarchies");
848 registerSyntaxTask(
849 "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
850 registerSyntaxTask(
851 "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
852 registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
853 syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
854 registerSyntaxTask(
855 "AddMFEMProblemComposerAction", "ProblemComposers/*", "add_mfem_problem_composer");
856#endif
858 registerSyntax("NEML2ActionCommon", "NEML2");
859 registerSyntax("NEML2Action", "NEML2/*");
861 addActionTypes(syntax);
862}
863
864void
865associateSyntax(Syntax & syntax, ActionFactory & action_factory)
867 associateSyntaxInner(syntax, action_factory);
868 registerActions(syntax, action_factory);
869}
870
871void
873{
874 // May be a touch expensive to create a new DM every time, but probably safer to do it this way
876}
877
878MPI_Comm
879swapLibMeshComm(MPI_Comm new_comm)
880{
881 MPI_Comm old_comm = PETSC_COMM_WORLD;
882 PETSC_COMM_WORLD = new_comm;
883 return old_comm;
884}
885
886static bool _color_console = isatty(fileno(stdout));
887
888bool
891 return _color_console;
893
894bool
895setColorConsole(bool use_color, bool force)
896{
897 _color_console = (isatty(fileno(stdout)) || force) && use_color;
899}
900
901ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
902 : _throw_on_error_before(Moose::_throw_on_error)
903{
904 mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
905 Moose::_throw_on_error = throw_on_error;
906}
907
908ScopedThrowOnError::ScopedThrowOnError() : ScopedThrowOnError(true) {}
910ScopedThrowOnError::~ScopedThrowOnError() { Moose::_throw_on_error = _throw_on_error_before; }
912ScopedDeprecatedIsError::ScopedDeprecatedIsError(const bool deprecated_is_error)
913 : _deprecated_is_error_before(Moose::_deprecated_is_error)
915 mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
916 Moose::_deprecated_is_error = deprecated_is_error;
917}
918
919ScopedDeprecatedIsError::ScopedDeprecatedIsError() : ScopedDeprecatedIsError(true) {}
920
921ScopedDeprecatedIsError::~ScopedDeprecatedIsError()
922{
923 Moose::_deprecated_is_error = _deprecated_is_error_before;
924}
925
926std::string
927hitMessagePrefix(const hit::Node & node)
928{
929 // Strip meaningless line and column number for CLI args
930 if (node.filename() == "CLI_ARGS")
931 return "CLI_ARGS:\n";
932 // If using the root node, don't add line info
933 if (node.isRoot())
934 return node.filename() + ":\n";
935 return node.fileLocation() + ":\n";
936}
937
938bool _warnings_are_errors = false;
939bool _deprecated_is_error = false;
940bool _throw_on_error = false;
941bool _throw_on_warning = false;
942volatile std::sig_atomic_t interrupt_signal_number = 0;
943bool show_multiple = false;
944
945} // 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:50
const ExecFlagType EXEC_TRANSFER
Definition Moose.C:58
const ExecFlagType EXEC_PRE_MULTIAPP_SETUP
Definition Moose.C:57
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_END
Definition Moose.C:41
const ExecFlagType EXEC_MULTISYSTEM_FIXED_POINT_ITERATION_END
Definition Moose.C:47
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_CONVERGENCE
Definition Moose.C:45
const ExecFlagType EXEC_SUBDOMAIN
Definition Moose.C:53
const ExecFlagType EXEC_TIMESTEP_END
Definition Moose.C:37
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition Moose.C:38
const ExecFlagType EXEC_SAME_AS_MULTIAPP
Definition Moose.C:56
const ExecFlagType EXEC_POSTCHECK
Definition Moose.C:36
const ExecFlagType EXEC_ALWAYS
Definition Moose.C:54
const ExecFlagType EXEC_CUSTOM
Definition Moose.C:52
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_ITERATION_END
Definition Moose.C:39
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition Moose.C:61
const ExecFlagType EXEC_LINEAR_CONVERGENCE
Definition Moose.C:33
const ExecFlagType EXEC_INITIAL
Definition Moose.C:31
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_BEGIN
Definition Moose.C:43
const ExecFlagType EXEC_LINEAR
Definition Moose.C:32
const ExecFlagType EXEC_PRE_KERNELS
Definition Moose.C:59
const ExecFlagType EXEC_NONLINEAR
Definition Moose.C:34
const ExecFlagType EXEC_FAILED
Definition Moose.C:51
const ExecFlagType EXEC_NONE
Definition Moose.C:30
const ExecFlagType EXEC_FINAL
Definition Moose.C:49
const ExecFlagType EXEC_NONLINEAR_CONVERGENCE
Definition Moose.C:35
const ExecFlagType EXEC_PRE_DISPLACE
Definition Moose.C:55
const ExecFlagType EXEC_POSTCHECK
Definition Moose.C:36
const ExecFlagType EXEC_LINEAR
Definition Moose.C:32
const ExecFlagType EXEC_NONLINEAR
Definition Moose.C:34
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.
Base class for linear finite-volume cell-gradient methods.
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
Interface required for all MFEMProblemComposers.
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:879
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:843
bool _deprecated_is_error
Variable to toggle only deprecated warnings as errors.
Definition Moose.C:910
void registerObjects(Factory &factory, const std::set< std::string > &obj_labels)
Definition Moose.C:110
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
Definition Moose.C:911
bool isSolverExecFlag(const ExecFlagType &exec_flag)
Definition Moose.C:68
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:914
void associateSyntax(Syntax &syntax, ActionFactory &action_factory)
Definition Moose.C:836
bool setColorConsole(bool use_color, bool force=false)
Turns color escape sequences on/off for info written to stdout.
Definition Moose.C:866
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:582
void registerAll(Factory &f, ActionFactory &af, Syntax &s)
Register objects that are in MOOSE.
Definition Moose.C:76
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:913
bool _throw_on_warning
Variable to turn on exceptions during mooseWarning(), should only be used in MOOSE unit tests.
Definition Moose.C:912
bool _warnings_are_errors
Variable to toggle any warning into an error (includes deprecated code warnings)
Definition Moose.C:909
bool colorConsole()
Returns whether Console coloring is turned on (default: true).
Definition Moose.C:860
void addActionTypes(Syntax &syntax)
Definition Moose.C:116
static bool _color_console
Definition Moose.C:857
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition Moose.C:898
void associateSyntaxInner(Syntax &syntax, ActionFactory &action_factory)
Definition Moose.C:601
MPI_Comm swapLibMeshComm(MPI_Comm new_comm)
Swap the libMesh MPI communicator out for ours.
Definition Moose.C:850