https://mooseframework.inl.gov
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 
29 const ExecFlagType EXEC_NONE = registerDefaultExecFlag("NONE");
30 const ExecFlagType EXEC_INITIAL = registerDefaultExecFlag("INITIAL");
31 const ExecFlagType EXEC_LINEAR = registerDefaultExecFlag("LINEAR");
32 const ExecFlagType EXEC_LINEAR_CONVERGENCE = registerDefaultExecFlag("LINEAR_CONVERGENCE");
33 const ExecFlagType EXEC_NONLINEAR = registerDefaultExecFlag("NONLINEAR");
34 const ExecFlagType EXEC_NONLINEAR_CONVERGENCE = registerDefaultExecFlag("NONLINEAR_CONVERGENCE");
35 const ExecFlagType EXEC_POSTCHECK = registerDefaultExecFlag("POSTCHECK");
36 const ExecFlagType EXEC_TIMESTEP_END = registerDefaultExecFlag("TIMESTEP_END");
37 const 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_CONVERGENCE");
48 const ExecFlagType EXEC_FINAL = registerDefaultExecFlag("FINAL");
49 const ExecFlagType EXEC_FORCED = registerExecFlag("FORCED");
50 const ExecFlagType EXEC_FAILED = registerExecFlag("FAILED");
51 const ExecFlagType EXEC_CUSTOM = registerDefaultExecFlag("CUSTOM");
52 const ExecFlagType EXEC_SUBDOMAIN = registerExecFlag("SUBDOMAIN");
53 const ExecFlagType EXEC_ALWAYS = registerExecFlag("ALWAYS");
54 const ExecFlagType EXEC_PRE_DISPLACE = registerExecFlag("PRE_DISPLACE");
55 const ExecFlagType EXEC_SAME_AS_MULTIAPP = registerExecFlag("SAME_AS_MULTIAPP");
56 const ExecFlagType EXEC_PRE_MULTIAPP_SETUP = registerExecFlag("PRE_MULTIAPP_SETUP");
57 const ExecFlagType EXEC_TRANSFER = registerExecFlag("TRANSFER");
58 const ExecFlagType EXEC_PRE_KERNELS = registerExecFlag("PRE_KERNELS");
59 #ifdef LIBMESH_ENABLE_AMR
60 const ExecFlagType EXEC_POST_ADAPTIVITY = registerExecFlag("POST_ADAPTIVITY");
61 #endif
62 
63 namespace Moose
64 {
65 
66 void associateSyntaxInner(Syntax & syntax, ActionFactory & action_factory);
67 
68 void
70 {
71  registerObjects(f, {"MooseApp"});
72  associateSyntaxInner(s, af);
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.
99  Registry::addAppCitation("libMesh",
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 
131 void
132 registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
133 {
134  Registry::registerObjectsTo(factory, obj_labels);
135 }
136 
137 void
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_linear_fv_kernel", LinearFVKernel, false);
220  registerMooseObjectTask("add_fv_bc", FVBoundaryCondition, false);
221  registerMooseObjectTask("add_linear_fv_bc", LinearFVBoundaryCondition, false);
222  registerMooseObjectTask("add_fv_ik", FVInterfaceKernel, false);
223  registerMooseObjectTask("add_interface_kernel", InterfaceKernel, false);
224  appendMooseObjectTask ("add_interface_kernel", VectorInterfaceKernel);
225  registerMooseObjectTask("add_constraint", Constraint, false);
226  registerMooseObjectTask("add_hybridized_kernel", HDGKernel, false);
227  registerMooseObjectTask("add_hybridized_integrated_bc", HDGIntegratedBC, false);
228 
229  registerMooseObjectTask("add_ic", InitialCondition, false);
230  appendMooseObjectTask ("add_ic", ScalarInitialCondition);
231  registerMooseObjectTask("add_fv_ic", FVInitialCondition, false);
232  registerMooseObjectTask("add_ics_physics", InitialCondition, false);
233  appendMooseObjectTask ("add_ics_physics", FVInitialCondition);
234  appendMooseObjectTask ("add_ics_physics", ScalarInitialCondition);
235 
236  registerMooseObjectTask("add_damper", Damper, false);
237  registerMooseObjectTask("setup_predictor", Predictor, false);
238  registerMooseObjectTask("add_time_steppers", TimeStepper, false);
239  registerMooseObjectTask("add_time_stepper", TimeStepper, false);
240  registerTask ("compose_time_stepper", true);
241  registerMooseObjectTask("setup_time_integrators", TimeIntegrator, false);
242  registerMooseObjectTask("setup_time_integrator", TimeIntegrator, false);
243  registerMooseObjectTask("add_convergence", Convergence, false);
244 
245  registerMooseObjectTask("add_preconditioning", MoosePreconditioner, false);
246  registerMooseObjectTask("add_field_split", Split, false);
247 
248  registerMooseObjectTask("add_mesh_division", MeshDivision, false);
249  registerMooseObjectTask("add_user_object", UserObject, false);
250  appendMooseObjectTask ("add_user_object", Postprocessor);
251 
252  appendDeprecatedMooseObjectTask("add_user_object", Corrector);
253  registerMooseObjectTask("add_corrector", Corrector, false);
254  appendDeprecatedMooseObjectTask("add_user_object", MeshModifier);
255  registerMooseObjectTask("add_mesh_modifier", MeshModifier, false);
256 
257  registerMooseObjectTask("add_postprocessor", Postprocessor, false);
258  registerMooseObjectTask("add_vector_postprocessor", VectorPostprocessor, false);
259  registerMooseObjectTask("add_reporter", Reporter, false);
260 
261  registerMooseObjectTask("add_positions", Positions, false);
262  registerMooseObjectTask("add_times", Times, false);
263 
264  registerMooseObjectTask("add_indicator", Indicator, false);
265  registerMooseObjectTask("add_marker", Marker, false);
266 
267  registerMooseObjectTask("add_multi_app", MultiApp, false);
268  registerMooseObjectTask("add_transfer", Transfer, false);
269 
270  registerMooseObjectTask("add_output", Output, false);
271 
272  registerMooseObjectTask("add_control", Control, false);
273  registerMooseObjectTask("add_chain_control", ChainControl, false);
274  registerMooseObjectTask("add_partitioner", MoosePartitioner, false);
275 
276  // clang-format on
277 
278  registerTask("dynamic_object_registration", false);
279  registerTask("common_output", true);
280  registerTask("setup_recover_file_base", true);
281  registerTask("recover_meta_data", true);
282 
283  registerTask("add_bounds_vectors", false);
284  registerTask("add_periodic_bc", false);
285  registerTask("add_aux_variable", false);
286  registerTask("add_external_aux_variables", true);
287  registerTask("add_variable", false);
288  registerTask("add_mortar_variable", false);
289 
290  registerTask("execute_mesh_generators", true);
291  registerTask("uniform_refine_mesh", false);
292  registerTask("prepare_mesh", false);
293  registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
294  registerTask("setup_mesh_complete", true); // calls prepare
295  registerTask("post_mesh_prepared", false);
296  registerTask("add_geometric_rm", false);
297  registerTask("attach_geometric_rm", true);
298  registerTask("attach_geometric_rm_final", true);
299 
300  registerTask("init_displaced_problem", false);
301 
302  registerTask("add_algebraic_rm", false);
303  registerTask("attach_algebraic_rm", true);
304  registerTask("add_coupling_rm", false);
305  registerTask("attach_coupling_rm", true);
306  registerTask("init_problem", true);
307  registerTask("check_copy_nodal_vars", true);
308  registerTask("copy_nodal_vars", true);
309  registerTask("copy_nodal_aux_vars", true);
310  registerTask("copy_vars_physics", false);
311  registerTask("setup_postprocessor_data", false);
312  registerTask("setup_time_steppers", true);
313 
314  registerTask("setup_dampers", true);
315  registerTask("check_integrity", true);
316  registerTask("resolve_optional_materials", true);
317  registerTask("check_integrity_early", true);
318  registerTask("check_integrity_early_physics", false);
319  registerTask("setup_quadrature", true);
320  registerTask("create_tagged_matrices", true);
321 
322  registerTask("mesh_modifiers", false);
323 
325  registerTask("no_action", false); // Used for Empty Action placeholders
326  registerTask("set_global_params", false);
327  registerTask("setup_adaptivity", false);
328  registerTask("meta_action", false);
329  registerTask("setup_residual_debug", false);
330  registerTask("setup_oversampling", false);
331  registerTask("deprecated_block", false);
332  registerTask("set_adaptivity_options", false);
333  registerTask("add_mortar_interface", false);
334  registerTask("coupling_functor_check", true);
335  registerTask("add_master_action_material", false);
336  registerTask("setup_projected_properties", false);
337  registerTask("create_application_block", false);
338 
339  // Dummy Actions (useful for sync points in the dependencies)
340  registerTask("setup_function_complete", false);
341  registerTask("setup_variable_complete", false);
342  registerTask("setup_executioner_complete", false);
343  registerTask("ready_to_init", true);
344 
345  // Output related actions
346  registerTask("add_output_aux_variables", true);
347  registerTask("check_output", true);
348  registerTask("declare_late_reporters", true);
349 
350  registerTask("create_problem_default", true);
351  registerTask("create_problem_custom", false);
352  registerTask("create_problem_complete", false);
353 
354  registerTask("add_default_nonlinear_convergence", true);
355  registerTask("add_default_multiapp_fixed_point_convergence", true);
356  registerTask("add_default_steady_state_convergence", true);
357 
358  registerTask("chain_control_setup", true);
359  registerTask("start_webservercontrol", true);
360 
361  // Action for setting up the signal-based checkpoint
362  registerTask("auto_checkpoint_action", true);
363  /**************************/
364  /****** Dependencies ******/
365  /**************************/
376  // clang-format off
377  syntax.addDependencySets("(meta_action)"
378  "(meta_action_component)"
379  "(dynamic_object_registration)"
380  "(common_output)"
381  "(set_global_params)"
382  "(setup_recover_file_base)"
383  "(check_copy_nodal_vars)"
384  "(setup_mesh)"
385  "(add_geometric_rm)"
386  "(add_partitioner)"
387  "(add_mesh_generator)"
388  "(create_added_mesh_generators)"
389  "(append_mesh_generator)"
390  "(execute_mesh_generators)"
391  "(recover_meta_data)"
392  "(set_mesh_base)"
393  "(attach_geometric_rm)"
394  "(init_mesh)"
395  "(prepare_mesh)"
396  "(add_mortar_interface)"
397  "(uniform_refine_mesh)"
398  "(setup_mesh_complete)"
399  "(post_mesh_prepared)"
400  "(determine_system_type)"
401  "(create_problem)"
402  "(create_problem_custom)"
403  "(create_problem_default)"
404  "(create_problem_complete)"
405  "(init_displaced_problem)" // Problem must be init-ed before we start adding functors
406  "(add_function)" // Functions can depend on scalar variables & PPs, but this dependence can be
407  // added on initialSetup() rather than construction
408  "(init_component_physics)" // components must add their blocks to physics before init_physics
409  "(init_physics)"
410  "(setup_postprocessor_data)"
411  "(setup_time_integrator, setup_time_integrators)"
412  "(setup_executioner)"
413  "(setup_executioner_complete)"
414  "(setup_component)" // no particular reason for that placement
415  "(read_executor)"
416  "(add_executor)"
417  "(check_integrity_early)"
418  "(setup_predictor)"
419  "(add_aux_variable, add_variable, add_elemental_field_variable,"
420  " add_external_aux_variables)"
421  "(add_variables_physics)" // physics can skip adding variables if they already exist
422  "(add_mortar_variable)"
423  "(setup_variable_complete)"
424  "(check_integrity_early_physics)" // checks that systems and variables are consistent
425  "(setup_quadrature)"
426  "(add_convergence)"
427  "(add_default_nonlinear_convergence,"
428  " add_default_multiapp_fixed_point_convergence,"
429  " add_default_steady_state_convergence)"
430  "(add_positions)"
431  "(add_periodic_bc)"
432  "(add_user_object, add_corrector, add_mesh_modifier)"
433  "(add_field_split)" // split objects required before field split preconditioner itself
434  "(add_preconditioning)" // preconditioner may introduce objects such as static condensation which influence the underlying types of tagged matrices
435  "(create_tagged_matrices)"
436  "(add_distribution)"
437  "(add_sampler)"
438  "(setup_function_complete)"
439  "(setup_adaptivity)"
440  "(set_adaptivity_options)"
441  "(add_ic, add_fv_ic)"
442  "(add_ics_physics)" // physics can skip adding initial conditions if they already exist
443  "(add_constraint)"
444  "(add_times)"
445  "(add_time_stepper, add_time_steppers)"
446  "(compose_time_stepper)"
447  "(setup_time_steppers)"
448  "(ready_to_init)"
449  "(setup_dampers)"
450  "(setup_residual_debug)"
451  "(add_bounds_vectors)"
452  "(add_mesh_division)" // NearestPositionsDivision uses a Positions
453  "(add_multi_app)"
454  "(add_transfer)"
455  "(copy_nodal_vars, copy_nodal_aux_vars, copy_vars_physics)"
456  "(add_material)"
457  "(add_master_action_material)"
458  "(add_functor_material)"
459  "(add_materials_physics)"
460  "(setup_projected_properties)"
461  "(add_output_aux_variables)"
462  "(add_output)"
463  "(auto_checkpoint_action)"
464  "(add_postprocessor)"
465  "(add_vector_postprocessor)" // MaterialVectorPostprocessor requires this
466  // to be after material objects are created.
467  "(add_reporter)"
468  "(declare_late_reporters)"
469  "(add_aux_kernel, add_bc, add_damper, add_dirac_kernel, add_kernel,"
470  " add_nodal_kernel, add_dg_kernel, add_fv_kernel, add_interpolation_method,"
471  " add_linear_fv_kernel,"
472  " add_fv_bc, add_linear_fv_bc, add_fv_ik, add_interface_kernel,"
473  " add_scalar_kernel, add_aux_scalar_kernel, add_indicator, add_marker,"
474  " add_bound, add_hybridized_kernel, add_hybridized_integrated_bc)"
475  "(resolve_optional_materials)"
476  "(add_algebraic_rm)"
477  "(add_coupling_rm)"
478  "(attach_geometric_rm_final)"
479  "(attach_algebraic_rm)"
480  "(attach_coupling_rm)"
481  "(coupling_functor_check)"
482  "(delete_remote_elements_after_late_geometric_ghosting)"
483  "(init_problem)"
484  "(add_control, add_chain_control)"
485  "(chain_control_setup)"
486  "(start_webservercontrol)"
487  "(check_output)"
488  "(check_integrity)"
489  "(create_application_block)");
490  // clang-format on
491 
492 #ifdef MOOSE_MFEM_ENABLED
493  registerTask("add_mfem_problem_operator", true);
494  addTaskDependency("add_mfem_problem_operator", "init_mesh");
495  addTaskDependency("add_variable", "add_mfem_problem_operator");
496  addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
497  addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
498  addTaskDependency("add_bc", "add_mfem_problem_operator");
499  addTaskDependency("add_kernel", "add_mfem_problem_operator");
500 
501  // add SubMeshes
502  registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
503  addTaskDependency("add_mfem_submeshes", "create_problem_complete");
504 
505  // add SubMesh transfers
506  appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
507 
508  // add FESpaces
509  registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
510  appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
511  addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
512  addTaskDependency("add_variable", "add_mfem_fespaces");
513  addTaskDependency("add_aux_variable", "add_mfem_fespaces");
514  addTaskDependency("add_elemental_field_variable", "add_mfem_fespaces");
515  addTaskDependency("add_kernel", "add_mfem_fespaces");
516 
517  // add complex kernels
518  registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
519  registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
520  addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
521  addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
522  addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
523  addTaskDependency("add_mfem_complex_bc_components", "add_bc");
524 
525  // set mesh FE space
526  registerTask("set_mesh_fe_space", true);
527  addTaskDependency("set_mesh_fe_space", "add_variable");
528  addTaskDependency("set_mesh_fe_space", "init_mesh");
529 
530  // add preconditioning.
531  registerMooseObjectTask("add_mfem_preconditioner", Moose::MFEM::SolverBase, false);
532  addTaskDependency("add_mfem_preconditioner", "add_mfem_problem_operator");
533  addTaskDependency("add_mfem_preconditioner", "add_variable");
534 
535  // add solver objects.
536  registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
537  addTaskDependency("add_mfem_solver", "add_mfem_preconditioner");
538  addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
539 #endif
540 
541  // Linear FV kernels fetch FVInterpolationMethod instances in their constructors
542  addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
543 
544  registerTask("parse_neml2", /*required=*/false);
545  addTaskDependency("add_material", "parse_neml2");
546  addTaskDependency("add_user_object", "parse_neml2");
547 }
548 
577 void
578 registerActions(Syntax & syntax, ActionFactory & action_factory)
579 {
580  mooseDeprecated("use registerAll instead of registerActions");
581  registerActions(syntax, action_factory, {"MooseApp"});
582 }
583 
584 void
586  ActionFactory & action_factory,
587  const std::set<std::string> & obj_labels)
588 {
589  Registry::registerActionsTo(action_factory, obj_labels);
590 
591  // Add these actions here so they are always executed last, without setting any dependency
592  registerTask("dump_objects", false);
593  registerTask("finish_input_file_output", false);
594 }
595 
596 void
597 associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
598 {
604  registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
605  registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
606 
607  registerSyntax("AddActionComponentAction", "ActionComponents/*");
608  registerSyntax("CombineComponentsMeshes", "ActionComponents");
609 
610  registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
611  registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
612  registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
613  registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
614 
615  registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
616  registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
617  registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
618 
619  registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
620 
621  registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
622 
623  registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
624  registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
625 
626  registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
627 
628  registerSyntax("CreateProblemAction", "Problem");
629  registerSyntax("DynamicObjectRegistrationAction", "Problem");
630 
631  registerSyntax("SetupMeshAction", "Mesh");
632  registerSyntax("SetupMeshCompleteAction", "Mesh");
633  // Components should be able create a Mesh without a Mesh block
634  registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
635  registerSyntax("CreateDisplacedProblemAction", "Mesh");
636  registerSyntax("DisplayGhostingAction", "Mesh");
637  registerSyntax("AddMeshGeneratorAction", "Mesh/*");
638  registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
639  registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
640  registerSyntax("ElementIDOutputAction", "Mesh");
641  syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
642 
643  registerSyntax("AddFunctionAction", "Functions/*");
644  syntax.registerSyntaxType("Functions/*", "FunctionName");
645 
646  registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
647  syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
648  registerSyntax("AddConvergenceAction", "Convergence/*");
649  syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
650 
651  registerSyntax("GlobalParamsAction", "GlobalParams");
652 
653  registerSyntax("AddDistributionAction", "Distributions/*");
654  syntax.registerSyntaxType("Distributions/*", "DistributionName");
655 
656  registerSyntax("AddSamplerAction", "Samplers/*");
657  syntax.registerSyntaxType("Samplers/*", "SamplerName");
658 
659  registerSyntax("SetupDebugAction", "Debug");
660  registerSyntax("SetupResidualDebugAction", "Debug");
661 
663  registerSyntax("AddVariableAction", "Variables/*");
664  syntax.registerSyntaxType("Variables/*", "VariableName");
665  syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
666 
667  registerSyntax("AddICAction", "Variables/*/InitialCondition");
668  registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
669 
670  registerSyntax("AddAuxVariableAction", "AuxVariables/*");
671  syntax.registerSyntaxType("AuxVariables/*", "VariableName");
672  syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
673 
674  registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
675  registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
676 
677  registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
678  registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
679 
680  registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
681  registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
682 
683  registerSyntax("AddMaterialAction", "Materials/*");
684  syntax.registerSyntaxType("Materials/*", "MaterialName");
685 
686  registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
687  syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
688 
689  registerSyntax("AddPostprocessorAction", "Postprocessors/*");
690  syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
691  syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
692 
693  registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
694  syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
695 
696  registerSyntax("AddReporterAction", "Reporters/*");
697  syntax.registerSyntaxType("Reporters/*", "ReporterName");
698 
699  registerSyntax("AddPositionsAction", "Positions/*");
700  syntax.registerSyntaxType("Positions/*", "PositionsName");
701 
702  registerSyntax("AddTimesAction", "Times/*");
703  syntax.registerSyntaxType("Times/*", "TimesName");
704 
705  registerSyntax("AddDamperAction", "Dampers/*");
706 
707  registerSyntax("AddOutputAction", "Outputs/*");
708  registerSyntax("CommonOutputAction", "Outputs");
709  registerSyntax("MaterialOutputAction", "Outputs");
710  registerSyntax("AutoCheckpointAction", "Outputs");
711  syntax.registerSyntaxType("Outputs/*", "OutputName");
712 
713  // Note: Preconditioner Actions will be built by this setup action
714  registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
715  registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
716 
717  registerSyntax("CreateExecutionerAction", "Executioner");
718  registerSyntax("ReadExecutorParamsAction", "Executors/*");
719 
720  registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
721  registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
722  registerSyntaxTask(
723  "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
724  registerSyntaxTask(
725  "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
726  registerSyntaxTask(
727  "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
728  syntax.registerSyntaxType("Executors/*", "ExecutorName");
729 
730  registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
731  registerSyntax("SetupPredictorAction", "Executioner/Predictor");
732 #ifdef LIBMESH_ENABLE_AMR
733  registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
734 #endif
735 
736  registerSyntax("PartitionerAction", "Mesh/Partitioner");
737 
738  registerSyntax("AddDiracKernelAction", "DiracKernels/*");
739 
740  registerSyntax("AddDGKernelAction", "DGKernels/*");
741  registerSyntax("AddFVKernelAction", "FVKernels/*");
742  registerSyntax("AddFVBCAction", "FVBCs/*");
743  registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
744  registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
745  registerSyntax("CheckFVBCAction", "FVBCs");
746 
747  registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
748 
749  registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
750 
751  registerSyntax("AddConstraintAction", "Constraints/*");
752 
753  registerSyntax("AddControlAction", "Controls/*");
754  registerSyntax("AddChainControlAction", "ChainControls/*");
755  registerSyntax("AddBoundAction", "Bounds/*");
756  registerSyntax("AddBoundsVectorsAction", "Bounds");
757 
758  // UserObject and some derived classes
759  registerSyntax("AddUserObjectAction", "UserObjects/*");
760  syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
761 
762  registerSyntax("AddCorrectorAction", "Correctors/*");
763  syntax.registerSyntaxType("Correctors/*", "UserObjectName");
764 
765  registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
766  syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
767 
768  registerSyntax("AddNodalNormalsAction", "NodalNormals");
769 
770  // FVInterpolationMethods
771  registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
772  syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
773 
774  // Indicator
775  registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
776  registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
777  syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
778 
779  // Marker
780  registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
781  registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
782  syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
783 
784  // New Adaptivity System
785  registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
786 
787  // Deprecated Block
788  registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
789 
790  // Multi Apps
791  registerSyntax("AddMultiAppAction", "MultiApps/*");
792  syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
793 
794  // Transfers
795  registerSyntax("AddTransferAction", "Transfers/*");
796 
797  // Material derivative test
798  registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
799  registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
800 
801  registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
802 
803  // Application Block System
804  registerSyntax("CreateApplicationBlockAction", "Application");
805 
806 #ifdef MOOSE_MFEM_ENABLED
807  registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
808  registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
809  registerSyntaxTask(
810  "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
811  registerSyntaxTask(
812  "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
813  registerSyntaxTask("AddMFEMPreconditionerAction", "Preconditioner/*", "add_mfem_preconditioner");
814  registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
815  syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
816 #endif
817 
818  registerSyntax("NEML2ActionCommon", "NEML2");
819  registerSyntax("NEML2Action", "NEML2/*");
820 
821  addActionTypes(syntax);
822 }
823 
824 void
825 associateSyntax(Syntax & syntax, ActionFactory & action_factory)
826 {
827  associateSyntaxInner(syntax, action_factory);
828  registerActions(syntax, action_factory);
829 }
830 
831 void
833 {
834  // May be a touch expensive to create a new DM every time, but probably safer to do it this way
836 }
837 
838 MPI_Comm
839 swapLibMeshComm(MPI_Comm new_comm)
840 {
841  MPI_Comm old_comm = PETSC_COMM_WORLD;
842  PETSC_COMM_WORLD = new_comm;
843  return old_comm;
844 }
845 
846 static bool _color_console = isatty(fileno(stdout));
847 
848 bool
850 {
851  return _color_console;
852 }
853 
854 bool
855 setColorConsole(bool use_color, bool force)
856 {
857  _color_console = (isatty(fileno(stdout)) || force) && use_color;
858  return _color_console;
859 }
860 
861 ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
862  : _throw_on_error_before(Moose::_throw_on_error)
863 {
864  mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
865  Moose::_throw_on_error = throw_on_error;
866 }
867 
869 
871 
873  : _deprecated_is_error_before(Moose::_deprecated_is_error)
874 {
875  mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
876  Moose::_deprecated_is_error = deprecated_is_error;
877 }
878 
880 
882 {
884 }
885 
886 std::string
887 hitMessagePrefix(const hit::Node & node)
888 {
889  // Strip meaningless line and column number for CLI args
890  if (node.filename() == "CLI_ARGS")
891  return "CLI_ARGS:\n";
892  // If using the root node, don't add line info
893  if (node.isRoot())
894  return node.filename() + ":\n";
895  return node.fileLocation() + ":\n";
896 }
897 
898 bool _warnings_are_errors = false;
899 bool _deprecated_is_error = false;
900 bool _throw_on_error = false;
901 bool _throw_on_warning = false;
903 bool show_multiple = false;
904 
905 } // namespace Moose
const ExecFlagType EXEC_LINEAR_CONVERGENCE
Definition: Moose.C:32
Base class for function objects.
Definition: Function.h:29
A kernel for hybridized finite element formulations.
Definition: HDGKernel.h:17
Base class for boundary conditions for linear FV systems.
bool colorConsole()
Returns whether Console coloring is turned on (default: true).
Definition: Moose.C:849
Base class for split-based preconditioners.
Definition: Split.h:25
Base class for finite volume kernels that contribute to a linear systems.
MPI_Comm swapLibMeshComm(MPI_Comm new_comm)
Swap the libMesh MPI communicator out for ours.
Definition: Moose.C:839
const ExecFlagType EXEC_PRE_KERNELS
Definition: Moose.C:58
Generic factory class for build all sorts of objects.
Definition: Factory.h:28
void setSolverDefaults(FEProblemBase &problem)
Definition: Moose.C:832
This is the base class for Samplers as used within the Stochastic Tools module.
Definition: Sampler.h:45
Base class for predictors.
Definition: Predictor.h:28
void petscSetDefaults(FEProblemBase &problem)
Sets the default options for PETSc.
Definition: PetscSupport.C:598
Base class for creating new types of boundary conditions.
bool _warnings_are_errors
Variable to toggle any warning into an error (includes deprecated code warnings)
Definition: Moose.C:898
~ScopedDeprecatedIsError()
Destructor, which sets Moose::_deprecated_is_error to what it was upon construction.
Definition: Moose.C:881
InterfaceKernel and VectorInterfaceKernel is responsible for interfacing physics across subdomains...
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
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:578
This is a template class that implements the workhorse compute and computeNodal methods.
Base class for all Constraint types.
Definition: Constraint.h:19
const ExecFlagType EXEC_PRE_MULTIAPP_SETUP
Definition: Moose.C:56
Positions objects are under the hood Reporters.
Definition: Positions.h:20
Class that hold the whole problem being solved.
Definition: Problem.h:19
Definition: Marker.h:41
const bool _throw_on_error_before
The value of Moose::_throw_on_error at construction.
Definition: Moose.h:318
ScopedDeprecatedIsError()
Default constructor, which sets Moose::_deprecated_is_error = true.
Definition: Moose.C:879
Base class for time stepping.
Definition: TimeStepper.h:22
Times objects are under the hood Reporters, but limited to a vector of Real.
Definition: Times.h:18
void associateSyntax(Syntax &syntax, ActionFactory &action_factory)
Definition: Moose.C:825
const bool _deprecated_is_error_before
The value of Moose::_throw_on_error at construction.
Definition: Moose.h:348
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
const ExecFlagType EXEC_POST_ADAPTIVITY
Definition: Moose.C:60
Registered base class for linear FV interpolation objects.
All Distributions should inherit from this class.
Definition: Distribution.h:18
Class to transfer MFEM variable data to or from a restricted copy of the variable defined on an a sub...
const ExecFlagType EXEC_MULTISYSTEM_FIXED_POINT_CONVERGENCE
Definition: Moose.C:46
Base class for MeshDivision objects.
Definition: MeshDivision.h:35
Reporter objects allow for the declaration of arbitrary data types that are aggregate values for a si...
Definition: Reporter.h:47
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
Base class for MOOSE preconditioners.
Based class for output objects.
Definition: Output.h:43
ScopedThrowOnError()
Default constructor, which sets Moose::_throw_on_error = true.
Definition: Moose.C:868
FunctorMaterials compute functor material properties.
const ExecFlagType EXEC_ALWAYS
Definition: Moose.C:53
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
Base class for convergence criteria.
Definition: Convergence.h:21
The DGKernel class is responsible for calculating the residuals for various physics on internal sides...
Definition: DGKernel.h:18
bool _deprecated_is_error
Variable to toggle only deprecated warnings as errors.
Definition: Moose.C:899
static bool _color_console
Definition: Moose.C:846
Base class for making kernels that work on auxiliary scalar variables.
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_ITERATION_END
Definition: Moose.C:38
Base class for construction of a mfem::ParSubMesh object.
Definition: MFEMSubMesh.h:20
const ExecFlagType EXEC_TRANSFER
Definition: Moose.C:57
~ScopedThrowOnError()
Destructor, which sets Moose::_throw_on_error to what it was upon construction.
Definition: Moose.C:870
Base class for array variable (equation) kernels using automatic differentiation. ...
Definition: ADArrayKernel.h:19
Specialized factory for generic Action System objects.
Definition: ActionFactory.h:48
Base class for creating kernels that interface physics between subdomains.
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:93
const ExecFlagType EXEC_LINEAR
Definition: Moose.C:31
const ExecFlagType EXEC_FAILED
Definition: Moose.C:50
const ExecFlagType EXEC_NONLINEAR
Definition: Moose.C:33
Executioners are objects that do the actual work of solving your problem.
Definition: Executioner.h:30
void mooseDeprecated(Args &&... args)
Emit a deprecated code/feature message with the given stringified, concatenated args.
Definition: MooseError.h:363
Base class for all Postprocessors.
Definition: Postprocessor.h:23
The behavior of this kernel is controlled by one problem-wise global parameter eigen_on_current - boo...
Definition: EigenKernel.h:23
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_BEGIN
Definition: Moose.C:42
const ExecFlagType EXEC_TIMESTEP_END
Definition: Moose.C:36
InitialConditions are objects that set the initial value of variables.
A DiracKernel is used when you need to add contributions to the residual by means of multiplying some...
Definition: DiracKernel.h:19
Constructs and stores an mfem::ParFiniteElementSpace object.
Definition: MFEMFESpace.h:20
void addDependencySets(const std::string &action_sets)
Adds all dependencies in a single call.
Definition: Syntax.C:69
Base class for wrapping mfem::Solver-derived classes.
FVKernel is a base class for all finite volume method kernels.
Definition: FVKernel.h:32
Base class for creating new types of boundary conditions.
Base class for time integrators.
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:903
Class for containing MooseEnum item information.
Definition: MooseEnumItem.h:18
Base class for Control objects.
Definition: Control.h:34
bool _throw_on_warning
Variable to turn on exceptions during mooseWarning(), should only be used in MOOSE unit tests...
Definition: Moose.C:901
void registerSyntaxType(const std::string &syntax, const std::string &type)
Register a type with a block.
Definition: Syntax.C:362
void registerAll(Factory &f, ActionFactory &af, Syntax &s)
Register objects that are in MOOSE.
Definition: Moose.C:69
void registerObjects(Factory &factory, const std::set< std::string > &obj_labels)
Definition: Moose.C:132
Base class for MOOSE partitioner.
bool setColorConsole(bool use_color, bool force=false)
Turns color escape sequences on/off for info written to stdout.
Definition: Moose.C:855
Base class for deriving dampers.
Definition: Damper.h:24
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition: Moose.h:296
Holding syntax for parsing input files.
Definition: Syntax.h:21
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_END
Definition: Moose.C:40
const ExecFlagType EXEC_CUSTOM
Definition: Moose.C:51
Definition: Kernel.h:15
const ExecFlagType EXEC_SUBDOMAIN
Definition: Moose.C:52
int 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:902
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition: Moose.C:37
const ExecFlagType EXEC_POSTCHECK
Definition: Moose.C:35
const ExecFlagType EXEC_FORCED
Definition: Moose.C:49
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...
const ExecFlagType EXEC_SAME_AS_MULTIAPP
Definition: Moose.C:55
const ExecFlagType EXEC_FINAL
Definition: Moose.C:48
const ExecFlagType EXEC_INITIAL
Definition: Moose.C:30
const ExecFlagType EXEC_NONE
Definition: Moose.C:29
Base class for creating nodal kernels with hand-coded Jacobians.
Definition: NodalKernel.h:18
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition: MultiApp.h:112
std::string hitMessagePrefix(const hit::Node &node)
Get the prefix to be associated with a hit node for a message.
Definition: Moose.C:887
Base class for Postprocessors that produce a vector of values.
bool _throw_on_error
Variable to turn on exceptions during mooseError(), should only be used within MOOSE unit tests or wh...
Definition: Moose.C:900
MaterialBases compute MaterialProperties.
Definition: MaterialBase.h:62
Scoped helper for setting Moose::_deprecated_is_error during this scope.
Definition: Moose.h:326
MeshGenerators are objects that can modify or add to an existing mesh.
Definition: MeshGenerator.h:33
This is a template class that implements the workhorse compute and computeNodal methods.
Base class for user-specific data.
Definition: UserObject.h:19
void addActionTypes(Syntax &syntax)
Definition: Moose.C:138
Base variable class.
The Executor class directs the execution flow of simulations.
Definition: Executor.h:26
const ExecFlagType EXEC_NONLINEAR_CONVERGENCE
Definition: Moose.C:34
void associateSyntaxInner(Syntax &syntax, ActionFactory &action_factory)
Definition: Moose.C:597
Control that additionally provides the capability to produce/consume data values, to allow control op...
Definition: ChainControl.h:21
const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_CONVERGENCE
Definition: Moose.C:44
Base class for all Transfer objects.
Definition: Transfer.h:36
const ExecFlagType EXEC_PRE_DISPLACE
Definition: Moose.C:54