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_interpolation_method_physics", FVInterpolationMethod, false);
220  registerMooseObjectTask("add_linear_fv_kernel", LinearFVKernel, false);
221  registerMooseObjectTask("add_fv_bc", FVBoundaryCondition, false);
222  registerMooseObjectTask("add_linear_fv_bc", LinearFVBoundaryCondition, false);
223  registerMooseObjectTask("add_fv_ik", FVInterfaceKernel, false);
224  registerMooseObjectTask("add_interface_kernel", InterfaceKernel, false);
225  appendMooseObjectTask ("add_interface_kernel", VectorInterfaceKernel);
226  registerMooseObjectTask("add_constraint", Constraint, false);
227  registerMooseObjectTask("add_hybridized_kernel", HDGKernel, false);
228  registerMooseObjectTask("add_hybridized_integrated_bc", HDGIntegratedBC, false);
229 
230  registerMooseObjectTask("add_ic", InitialCondition, false);
231  appendMooseObjectTask ("add_ic", ScalarInitialCondition);
232  registerMooseObjectTask("add_fv_ic", FVInitialCondition, false);
233  registerMooseObjectTask("add_ics_physics", InitialCondition, false);
234  appendMooseObjectTask ("add_ics_physics", FVInitialCondition);
235  appendMooseObjectTask ("add_ics_physics", ScalarInitialCondition);
236 
237  registerMooseObjectTask("add_damper", Damper, false);
238  registerMooseObjectTask("setup_predictor", Predictor, false);
239  registerMooseObjectTask("add_time_steppers", TimeStepper, false);
240  registerMooseObjectTask("add_time_stepper", TimeStepper, false);
241  registerTask ("compose_time_stepper", true);
242  registerMooseObjectTask("setup_time_integrators", TimeIntegrator, false);
243  registerMooseObjectTask("setup_time_integrator", TimeIntegrator, false);
244  registerMooseObjectTask("add_convergence", Convergence, false);
245 
246  registerMooseObjectTask("add_preconditioning", MoosePreconditioner, false);
247  registerMooseObjectTask("add_field_split", Split, false);
248 
249  registerMooseObjectTask("add_mesh_division", MeshDivision, false);
250  registerMooseObjectTask("add_user_object", UserObject, false);
251  appendMooseObjectTask ("add_user_object", Postprocessor);
252 
253  appendDeprecatedMooseObjectTask("add_user_object", Corrector);
254  registerMooseObjectTask("add_corrector", Corrector, false);
255  appendDeprecatedMooseObjectTask("add_user_object", MeshModifier);
256  registerMooseObjectTask("add_mesh_modifier", MeshModifier, false);
257 
258  registerMooseObjectTask("add_postprocessor", Postprocessor, false);
259  registerMooseObjectTask("add_vector_postprocessor", VectorPostprocessor, false);
260  registerMooseObjectTask("add_reporter", Reporter, false);
261 
262  registerMooseObjectTask("add_positions", Positions, false);
263  registerMooseObjectTask("add_times", Times, false);
264 
265  registerMooseObjectTask("add_indicator", Indicator, false);
266  registerMooseObjectTask("add_marker", Marker, false);
267 
268  registerMooseObjectTask("add_multi_app", MultiApp, false);
269  registerMooseObjectTask("add_transfer", Transfer, false);
270 
271  registerMooseObjectTask("add_output", Output, false);
272 
273  registerMooseObjectTask("add_control", Control, false);
274  registerMooseObjectTask("add_chain_control", ChainControl, false);
275  registerMooseObjectTask("add_partitioner", MoosePartitioner, false);
276 
277  // clang-format on
278 
279  registerTask("dynamic_object_registration", false);
280  registerTask("common_output", true);
281  registerTask("setup_recover_file_base", true);
282  registerTask("recover_meta_data", true);
283 
284  registerTask("add_bounds_vectors", false);
285  registerTask("add_periodic_bc", false);
286  registerTask("add_aux_variable", false);
287  registerTask("add_external_aux_variables", true);
288  registerTask("add_variable", false);
289  registerTask("add_mortar_variable", false);
290 
291  registerTask("execute_mesh_generators", true);
292  registerTask("uniform_refine_mesh", false);
293  registerTask("prepare_mesh", false);
294  registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
295  registerTask("setup_mesh_complete", true); // calls prepare
296  registerTask("post_mesh_prepared", false);
297  registerTask("add_geometric_rm", false);
298  registerTask("attach_geometric_rm", true);
299  registerTask("attach_geometric_rm_final", true);
300 
301  registerTask("init_displaced_problem", false);
302 
303  registerTask("add_algebraic_rm", false);
304  registerTask("attach_algebraic_rm", true);
305  registerTask("add_coupling_rm", false);
306  registerTask("attach_coupling_rm", true);
307  registerTask("init_problem", true);
308  registerTask("check_copy_nodal_vars", true);
309  registerTask("copy_nodal_vars", true);
310  registerTask("copy_nodal_aux_vars", true);
311  registerTask("copy_vars_physics", false);
312  registerTask("setup_postprocessor_data", false);
313  registerTask("setup_time_steppers", true);
314 
315  registerTask("setup_dampers", true);
316  registerTask("check_integrity", true);
317  registerTask("resolve_optional_materials", true);
318  registerTask("check_integrity_early", true);
319  registerTask("check_integrity_early_physics", false);
320  registerTask("setup_quadrature", true);
321  registerTask("create_tagged_matrices", true);
322 
323  registerTask("mesh_modifiers", false);
324 
326  registerTask("no_action", false); // Used for Empty Action placeholders
327  registerTask("set_global_params", false);
328  registerTask("setup_adaptivity", false);
329  registerTask("meta_action", false);
330  registerTask("setup_residual_debug", false);
331  registerTask("setup_oversampling", false);
332  registerTask("deprecated_block", false);
333  registerTask("set_adaptivity_options", false);
334  registerTask("add_mortar_interface", false);
335  registerTask("coupling_functor_check", true);
336  registerTask("add_master_action_material", false);
337  registerTask("setup_projected_properties", false);
338  registerTask("create_application_block", false);
339 
340  // Dummy Actions (useful for sync points in the dependencies)
341  registerTask("setup_function_complete", false);
342  registerTask("setup_variable_complete", false);
343  registerTask("setup_executioner_complete", false);
344  registerTask("ready_to_init", true);
345 
346  // Output related actions
347  registerTask("add_output_aux_variables", true);
348  registerTask("check_output", true);
349  registerTask("declare_late_reporters", true);
350 
351  registerTask("create_problem_default", true);
352  registerTask("create_problem_custom", false);
353  registerTask("create_problem_complete", false);
354 
355  registerTask("add_default_nonlinear_convergence", true);
356  registerTask("add_default_multiapp_fixed_point_convergence", true);
357  registerTask("add_default_steady_state_convergence", true);
358 
359  registerTask("chain_control_setup", true);
360  registerTask("start_webservercontrol", true);
361 
362  // Action for setting up the signal-based checkpoint
363  registerTask("auto_checkpoint_action", true);
364  /**************************/
365  /****** Dependencies ******/
366  /**************************/
377  // clang-format off
378  syntax.addDependencySets("(meta_action)"
379  "(meta_action_component)"
380  "(dynamic_object_registration)"
381  "(common_output)"
382  "(set_global_params)"
383  "(setup_recover_file_base)"
384  "(check_copy_nodal_vars)"
385  "(setup_mesh)"
386  "(add_geometric_rm)"
387  "(add_partitioner)"
388  "(add_mesh_generator)"
389  "(create_added_mesh_generators)"
390  "(append_mesh_generator)"
391  "(execute_mesh_generators)"
392  "(recover_meta_data)"
393  "(set_mesh_base)"
394  "(attach_geometric_rm)"
395  "(init_mesh)"
396  "(prepare_mesh)"
397  "(add_mortar_interface)"
398  "(uniform_refine_mesh)"
399  "(setup_mesh_complete)"
400  "(post_mesh_prepared)"
401  "(determine_system_type)"
402  "(create_problem)"
403  "(create_problem_custom)"
404  "(create_problem_default)"
405  "(create_problem_complete)"
406  "(init_displaced_problem)" // Problem must be init-ed before we start adding functors
407  "(add_function)" // Functions can depend on scalar variables & PPs, but this dependence can be
408  // added on initialSetup() rather than construction
409  "(init_component_physics)" // components must add their blocks to physics before init_physics
410  "(init_physics)"
411  "(setup_postprocessor_data)"
412  "(setup_time_integrator, setup_time_integrators)"
413  "(setup_executioner)"
414  "(setup_executioner_complete)"
415  "(setup_component)" // no particular reason for that placement
416  "(read_executor)"
417  "(add_executor)"
418  "(check_integrity_early)"
419  "(setup_predictor)"
420  "(add_aux_variable, add_variable, add_elemental_field_variable,"
421  " add_external_aux_variables)"
422  "(add_variables_physics)" // physics can skip adding variables if they already exist
423  "(add_mortar_variable)"
424  "(setup_variable_complete)"
425  "(check_integrity_early_physics)" // checks that systems and variables are consistent
426  "(setup_quadrature)"
427  "(add_convergence)"
428  "(add_default_nonlinear_convergence,"
429  " add_default_multiapp_fixed_point_convergence,"
430  " add_default_steady_state_convergence)"
431  "(add_positions)"
432  "(add_periodic_bc)"
433  "(add_user_object, add_corrector, add_mesh_modifier)"
434  "(add_field_split)" // split objects required before field split preconditioner itself
435  "(add_preconditioning)" // preconditioner may introduce objects such as static condensation which influence the underlying types of tagged matrices
436  "(create_tagged_matrices)"
437  "(add_distribution)"
438  "(add_sampler)"
439  "(setup_function_complete)"
440  "(setup_adaptivity)"
441  "(set_adaptivity_options)"
442  "(add_ic, add_fv_ic)"
443  "(add_ics_physics)" // physics can skip adding initial conditions if they already exist
444  "(add_constraint)"
445  "(add_times)"
446  "(add_time_stepper, add_time_steppers)"
447  "(compose_time_stepper)"
448  "(setup_time_steppers)"
449  "(ready_to_init)"
450  "(setup_dampers)"
451  "(setup_residual_debug)"
452  "(add_bounds_vectors)"
453  "(add_mesh_division)" // NearestPositionsDivision uses a Positions
454  "(add_multi_app)"
455  "(add_transfer)"
456  "(copy_nodal_vars, copy_nodal_aux_vars, copy_vars_physics)"
457  "(add_material)"
458  "(add_master_action_material)"
459  "(add_functor_material)"
460  "(add_materials_physics)"
461  "(setup_projected_properties)"
462  "(add_output_aux_variables)"
463  "(add_output)"
464  "(auto_checkpoint_action)"
465  "(add_postprocessor)"
466  "(add_vector_postprocessor)" // MaterialVectorPostprocessor requires this
467  // to be after material objects are created.
468  "(add_reporter)"
469  "(declare_late_reporters)"
470  "(add_aux_kernel, add_bc, add_damper, add_dirac_kernel, add_kernel,"
471  " add_nodal_kernel, add_dg_kernel, add_fv_kernel, add_interpolation_method,"
472  " add_interpolation_method_physics, add_linear_fv_kernel,"
473  " add_fv_bc, add_linear_fv_bc, add_fv_ik, add_interface_kernel,"
474  " add_scalar_kernel, add_aux_scalar_kernel, add_indicator, add_marker,"
475  " add_bound, add_hybridized_kernel, add_hybridized_integrated_bc)"
476  "(resolve_optional_materials)"
477  "(add_algebraic_rm)"
478  "(add_coupling_rm)"
479  "(attach_geometric_rm_final)"
480  "(attach_algebraic_rm)"
481  "(attach_coupling_rm)"
482  "(coupling_functor_check)"
483  "(delete_remote_elements_after_late_geometric_ghosting)"
484  "(init_problem)"
485  "(add_control, add_chain_control)"
486  "(chain_control_setup)"
487  "(start_webservercontrol)"
488  "(check_output)"
489  "(check_integrity)"
490  "(create_application_block)");
491  // clang-format on
492 
493 #ifdef MOOSE_MFEM_ENABLED
494  registerTask("add_mfem_problem_operator", true);
495  addTaskDependency("add_mfem_problem_operator", "init_mesh");
496  addTaskDependency("add_variable", "add_mfem_problem_operator");
497  addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
498  addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
499  addTaskDependency("add_bc", "add_mfem_problem_operator");
500  addTaskDependency("add_kernel", "add_mfem_problem_operator");
501 
502  // add SubMeshes
503  registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
504  addTaskDependency("add_mfem_submeshes", "create_problem_complete");
505 
506  // add SubMesh transfers
507  appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
508 
509  // add FESpaces
510  registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
511  appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
512  addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
513 
514  // add FESpace hierarchies (must come after fespaces so the base fespace is available)
515  registerMooseObjectTask("add_mfem_fespace_hierarchies", MFEMFESpaceHierarchy, false);
516  addTaskDependency("add_mfem_fespace_hierarchies", "add_mfem_fespaces");
517 
518  // variables must wait for hierarchies since a variable may reference a hierarchy's
519  // finest level via fespace_hierarchy = ...
520  addTaskDependency("add_variable", "add_mfem_fespace_hierarchies");
521  addTaskDependency("add_aux_variable", "add_mfem_fespace_hierarchies");
522  addTaskDependency("add_elemental_field_variable", "add_mfem_fespace_hierarchies");
523  // kernels only need fespaces, not hierarchies
524  addTaskDependency("add_kernel", "add_mfem_fespaces");
525 
526  // add QuadratureFunctions
527  registerMooseObjectTask("add_mfem_quadrature_functions", MFEMQuadratureFunction, false);
528  // after the last task declaring coefficients the quadrature functions may project
529  addTaskDependency("add_mfem_quadrature_functions", "add_functor_material");
530  // before the tasks constructing objects that may consume the declared coefficients
531  addTaskDependency("add_kernel", "add_mfem_quadrature_functions");
532  addTaskDependency("add_bc", "add_mfem_quadrature_functions");
533  addTaskDependency("add_aux_kernel", "add_mfem_quadrature_functions");
534 
535  // add complex kernels
536  registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
537  registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
538  addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
539  addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
540  addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
541  addTaskDependency("add_mfem_complex_bc_components", "add_bc");
542 
543  // set mesh FE space
544  registerTask("set_mesh_fe_space", true);
545  addTaskDependency("set_mesh_fe_space", "add_variable");
546  addTaskDependency("set_mesh_fe_space", "init_mesh");
547 
548  // add solver objects.
549  registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
550  addTaskDependency("add_mfem_solver", "add_mfem_fespace_hierarchies");
551  addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
552  addTaskDependency("add_mfem_solver", "add_variable");
553  registerTask("resolve_mfem_solvers", true);
554  addTaskDependency("resolve_mfem_solvers", "add_mfem_solver");
555  addTaskDependency("init_problem", "resolve_mfem_solvers");
556 #endif
557 
558  // Linear FV kernels fetch FVInterpolationMethod instances in their constructors. Some Physics
559  // add linear FV kernels on the generic FV kernel task.
560  addTaskDependency("add_interpolation_method_physics", "add_interpolation_method");
561  addTaskDependency("add_fv_kernel", "add_interpolation_method_physics");
562  addTaskDependency("add_linear_fv_kernel", "add_interpolation_method_physics");
563  addTaskDependency("add_fv_kernel", "add_interpolation_method");
564  addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
565 
566  registerTask("parse_neml2", /*required=*/false);
567  addTaskDependency("add_material", "parse_neml2");
568  addTaskDependency("add_user_object", "parse_neml2");
569 }
570 
599 void
600 registerActions(Syntax & syntax, ActionFactory & action_factory)
601 {
602  mooseDeprecated("use registerAll instead of registerActions");
603  registerActions(syntax, action_factory, {"MooseApp"});
604 }
605 
606 void
608  ActionFactory & action_factory,
609  const std::set<std::string> & obj_labels)
610 {
611  Registry::registerActionsTo(action_factory, obj_labels);
612 
613  // Add these actions here so they are always executed last, without setting any dependency
614  registerTask("dump_objects", false);
615  registerTask("finish_input_file_output", false);
616 }
617 
618 void
619 associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
620 {
626  registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
627  registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
628 
629  registerSyntax("AddActionComponentAction", "ActionComponents/*");
630  registerSyntax("CombineComponentsMeshes", "ActionComponents");
631 
632  registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
633  registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
634  registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
635  registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
636 
637  registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
638  registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
639  registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
640 
641  registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
642 
643  registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
644 
645  registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
646  registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
647 
648  registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
649 
650  registerSyntax("CreateProblemAction", "Problem");
651  registerSyntax("DynamicObjectRegistrationAction", "Problem");
652 
653  registerSyntax("SetupMeshAction", "Mesh");
654  registerSyntax("SetupMeshCompleteAction", "Mesh");
655  // Components should be able create a Mesh without a Mesh block
656  registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
657  registerSyntax("CreateDisplacedProblemAction", "Mesh");
658  registerSyntax("DisplayGhostingAction", "Mesh");
659  registerSyntax("AddMeshGeneratorAction", "Mesh/*");
660  registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
661  registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
662  registerSyntax("ElementIDOutputAction", "Mesh");
663  syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
664 
665  registerSyntax("AddFunctionAction", "Functions/*");
666  syntax.registerSyntaxType("Functions/*", "FunctionName");
667 
668  registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
669  syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
670  registerSyntax("AddConvergenceAction", "Convergence/*");
671  syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
672 
673  registerSyntax("GlobalParamsAction", "GlobalParams");
674 
675  registerSyntax("AddDistributionAction", "Distributions/*");
676  syntax.registerSyntaxType("Distributions/*", "DistributionName");
677 
678  registerSyntax("AddSamplerAction", "Samplers/*");
679  syntax.registerSyntaxType("Samplers/*", "SamplerName");
680 
681  registerSyntax("SetupDebugAction", "Debug");
682  registerSyntax("SetupResidualDebugAction", "Debug");
683 
685  registerSyntax("AddVariableAction", "Variables/*");
686  syntax.registerSyntaxType("Variables/*", "VariableName");
687  syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
688 
689  registerSyntax("AddICAction", "Variables/*/InitialCondition");
690  registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
691 
692  registerSyntax("AddAuxVariableAction", "AuxVariables/*");
693  syntax.registerSyntaxType("AuxVariables/*", "VariableName");
694  syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
695 
696  registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
697  registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
698 
699  registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
700  registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
701 
702  registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
703  registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
704 
705  registerSyntax("AddMaterialAction", "Materials/*");
706  syntax.registerSyntaxType("Materials/*", "MaterialName");
707 
708  registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
709  syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
710 
711  registerSyntax("AddPostprocessorAction", "Postprocessors/*");
712  syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
713  syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
714 
715  registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
716  syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
717 
718  registerSyntax("AddReporterAction", "Reporters/*");
719  syntax.registerSyntaxType("Reporters/*", "ReporterName");
720 
721  registerSyntax("AddPositionsAction", "Positions/*");
722  syntax.registerSyntaxType("Positions/*", "PositionsName");
723 
724  registerSyntax("AddTimesAction", "Times/*");
725  syntax.registerSyntaxType("Times/*", "TimesName");
726 
727  registerSyntax("AddDamperAction", "Dampers/*");
728 
729  registerSyntax("AddOutputAction", "Outputs/*");
730  registerSyntax("CommonOutputAction", "Outputs");
731  registerSyntax("MaterialOutputAction", "Outputs");
732  registerSyntax("AutoCheckpointAction", "Outputs");
733  syntax.registerSyntaxType("Outputs/*", "OutputName");
734 
735  // Note: Preconditioner Actions will be built by this setup action
736  registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
737  registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
738 
739  registerSyntax("CreateExecutionerAction", "Executioner");
740  registerSyntax("ReadExecutorParamsAction", "Executors/*");
741 
742  registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
743  registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
744  registerSyntaxTask(
745  "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
746  registerSyntaxTask(
747  "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
748  registerSyntaxTask(
749  "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
750  syntax.registerSyntaxType("Executors/*", "ExecutorName");
751 
752  registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
753  registerSyntax("SetupPredictorAction", "Executioner/Predictor");
754 #ifdef LIBMESH_ENABLE_AMR
755  registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
756 #endif
757 
758  registerSyntax("PartitionerAction", "Mesh/Partitioner");
759 
760  registerSyntax("AddDiracKernelAction", "DiracKernels/*");
761 
762  registerSyntax("AddDGKernelAction", "DGKernels/*");
763  registerSyntax("AddFVKernelAction", "FVKernels/*");
764  registerSyntax("AddFVBCAction", "FVBCs/*");
765  registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
766  registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
767  registerSyntax("CheckFVBCAction", "FVBCs");
768 
769  registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
770 
771  registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
772 
773  registerSyntax("AddConstraintAction", "Constraints/*");
774 
775  registerSyntax("AddControlAction", "Controls/*");
776  registerSyntax("AddChainControlAction", "ChainControls/*");
777  registerSyntax("AddBoundAction", "Bounds/*");
778  registerSyntax("AddBoundsVectorsAction", "Bounds");
779 
780  // UserObject and some derived classes
781  registerSyntax("AddUserObjectAction", "UserObjects/*");
782  syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
783 
784  registerSyntax("AddCorrectorAction", "Correctors/*");
785  syntax.registerSyntaxType("Correctors/*", "UserObjectName");
786 
787  registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
788  syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
789 
790  registerSyntax("AddNodalNormalsAction", "NodalNormals");
791 
792  // FVInterpolationMethods
793  registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
794  syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
795 
796  // Indicator
797  registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
798  registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
799  syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
800 
801  // Marker
802  registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
803  registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
804  syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
805 
806  // New Adaptivity System
807  registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
808 
809  // Deprecated Block
810  registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
811 
812  // Multi Apps
813  registerSyntax("AddMultiAppAction", "MultiApps/*");
814  syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
815 
816  // Transfers
817  registerSyntax("AddTransferAction", "Transfers/*");
818 
819  // Material derivative test
820  registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
821  registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
822 
823  registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
824 
825  // Application Block System
826  registerSyntax("CreateApplicationBlockAction", "Application");
827 
828 #ifdef MOOSE_MFEM_ENABLED
829  registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
830  registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
831  registerSyntaxTask(
832  "AddMFEMQuadratureFunctionAction", "QuadratureFunctions/*", "add_mfem_quadrature_functions");
833  registerSyntaxTask(
834  "AddMFEMFESpaceHierarchyAction", "FESpaceHierarchies/*", "add_mfem_fespace_hierarchies");
835  registerSyntaxTask(
836  "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
837  registerSyntaxTask(
838  "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
839  registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
840  syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
841 #endif
842 
843  registerSyntax("NEML2ActionCommon", "NEML2");
844  registerSyntax("NEML2Action", "NEML2/*");
845 
846  addActionTypes(syntax);
847 }
848 
849 void
850 associateSyntax(Syntax & syntax, ActionFactory & action_factory)
851 {
852  associateSyntaxInner(syntax, action_factory);
853  registerActions(syntax, action_factory);
854 }
855 
856 void
858 {
859  // May be a touch expensive to create a new DM every time, but probably safer to do it this way
861 }
862 
863 MPI_Comm
864 swapLibMeshComm(MPI_Comm new_comm)
865 {
866  MPI_Comm old_comm = PETSC_COMM_WORLD;
867  PETSC_COMM_WORLD = new_comm;
868  return old_comm;
869 }
870 
871 static bool _color_console = isatty(fileno(stdout));
872 
873 bool
875 {
876  return _color_console;
877 }
878 
879 bool
880 setColorConsole(bool use_color, bool force)
881 {
882  _color_console = (isatty(fileno(stdout)) || force) && use_color;
883  return _color_console;
884 }
885 
886 ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
887  : _throw_on_error_before(Moose::_throw_on_error)
888 {
889  mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
890  Moose::_throw_on_error = throw_on_error;
891 }
892 
894 
896 
898  : _deprecated_is_error_before(Moose::_deprecated_is_error)
899 {
900  mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
901  Moose::_deprecated_is_error = deprecated_is_error;
902 }
903 
905 
907 {
909 }
910 
911 std::string
912 hitMessagePrefix(const hit::Node & node)
913 {
914  // Strip meaningless line and column number for CLI args
915  if (node.filename() == "CLI_ARGS")
916  return "CLI_ARGS:\n";
917  // If using the root node, don't add line info
918  if (node.isRoot())
919  return node.filename() + ":\n";
920  return node.fileLocation() + ":\n";
921 }
922 
923 bool _warnings_are_errors = false;
924 bool _deprecated_is_error = false;
925 bool _throw_on_error = false;
926 bool _throw_on_warning = false;
927 volatile std::sig_atomic_t interrupt_signal_number = 0;
928 bool show_multiple = false;
929 
930 } // namespace Moose
const ExecFlagType EXEC_LINEAR_CONVERGENCE
Definition: Moose.C:32
Base class for function objects.
Definition: Function.h:29
Base 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:874
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:864
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:857
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:923
~ScopedDeprecatedIsError()
Destructor, which sets Moose::_deprecated_is_error to what it was upon construction.
Definition: Moose.C:906
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:600
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:319
ScopedDeprecatedIsError()
Default constructor, which sets Moose::_deprecated_is_error = true.
Definition: Moose.C:904
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:850
const bool _deprecated_is_error_before
The value of Moose::_throw_on_error at construction.
Definition: Moose.h:349
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:893
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:924
static bool _color_console
Definition: Moose.C:871
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:895
Base class for array variable (equation) kernels using automatic differentiation. ...
Definition: ADArrayKernel.h:19
Builds and owns a mfem::ParFiniteElementSpaceHierarchy from a base FESpace by applying a sequence of ...
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:94
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:928
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:926
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:880
Base class for deriving dampers.
Definition: Damper.h:24
Scoped helper for setting Moose::_throw_on_error during this scope.
Definition: Moose.h:297
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
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:912
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:925
MaterialBases compute MaterialProperties.
Definition: MaterialBase.h:62
Scoped helper for setting Moose::_deprecated_is_error during this scope.
Definition: Moose.h:327
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:619
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
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:927