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