LCOV - code coverage report
Current view: top level - src/base - Moose.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 329044 Lines: 398 410 97.1 %
Date: 2026-08-03 21:12:22 Functions: 15 19 78.9 %
Legend: Lines: hit not hit

          Line data    Source code
       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");
      38             : const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_ITERATION_END =
      39             :     registerExecFlag("MULTIAPP_FIXED_POINT_ITERATION_END");
      40             : const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_END =
      41             :     registerDefaultExecFlag("MULTIAPP_FIXED_POINT_END");
      42             : const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_BEGIN =
      43             :     registerDefaultExecFlag("MULTIAPP_FIXED_POINT_BEGIN");
      44             : const ExecFlagType EXEC_MULTIAPP_FIXED_POINT_CONVERGENCE =
      45             :     registerDefaultExecFlag("MULTIAPP_FIXED_POINT_CONVERGENCE");
      46             : const ExecFlagType EXEC_MULTISYSTEM_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
      69       68461 : registerAll(Factory & f, ActionFactory & af, Syntax & s)
      70             : {
      71       68461 :   registerObjects(f, {"MooseApp"});
      72       68461 :   associateSyntaxInner(s, af);
      73       68461 :   registerActions(s, af, {"MooseApp"});
      74      273844 :   registerAppDataFilePath("moose");
      75      273844 :   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      410766 :   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      393768 :   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.
     116      257315 :   Registry::addAppCitation("MFEM",
     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       68461 : }
     130             : 
     131             : void
     132       68461 : registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
     133             : {
     134       68461 :   Registry::registerObjectsTo(factory, obj_labels);
     135       68461 : }
     136             : 
     137             : void
     138       68461 : addActionTypes(Syntax & syntax)
     139             : {
     140             :   /**
     141             :    * The (optional) last param here indicates whether the task should trigger an Action auto-build.
     142             :    * If a task is marked as "true". Then MOOSE will attempt to build the associated Action if one is
     143             :    * not supplied by some other means (usually through the input file or custom Action). Only
     144             :    * Actions that do not have required parameters and have defaults for all optional parameters can
     145             :    * be built automatically (See ActionWarehouse.C).
     146             :    *
     147             :    * Note: Many of the actions in the "Minimal Problem" section are marked as false.  However, we
     148             :    * can generally force creation of these "Action"s as needed by registering them to syntax that we
     149             :    * expect to see even if those "Action"s  don't normally pick up parameters from the input file.
     150             :    */
     151             : 
     152             :   // clang-format off
     153             :   /**************************/
     154             :   /**** Register Actions ****/
     155             :   /**************************/
     156      273844 :   registerMooseObjectTask("create_problem",               Problem,                   false);
     157      273844 :   registerMooseObjectTask("setup_executioner",            Executioner,               false);
     158      273844 :   registerMooseObjectTask("read_executor",                Executor,                  false);
     159      136922 :   registerTask("add_executor", true);
     160             : 
     161             :   // TODO Organize these somewhere
     162      136922 :   registerTask("init_physics", false);
     163      136922 :   registerTask("init_component_physics", false);
     164      136922 :   registerTask("meta_action_component", false);
     165      136922 :   registerTask("setup_component", false);
     166             :   // 'list_component' is used to retrieve ActionComponents for the syntax JSON
     167      136922 :   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      273844 :   registerMooseObjectTask("determine_system_type",            Executioner,               true);
     172             : 
     173      273844 :   registerMooseObjectTask("setup_mesh",                       MooseMesh,                 false);
     174      273844 :   registerMooseObjectTask("set_mesh_base",                    MooseMesh,                 false);
     175      273844 :   registerMooseObjectTask("init_mesh",                        MooseMesh,                 false);
     176      273844 :   registerMooseObjectTask("add_mesh_generator",               MeshGenerator,             false);
     177      136922 :   registerTask("create_added_mesh_generators", true);
     178      273844 :   registerMooseObjectTask("append_mesh_generator",            MeshGenerator,             false);
     179             : 
     180      273844 :   registerMooseObjectTask("add_kernel",                       Kernel,                    false);
     181      273844 :   appendMooseObjectTask  ("add_kernel",                       EigenKernel);
     182      273844 :   appendMooseObjectTask  ("add_kernel",                       VectorKernel);
     183      273844 :   appendMooseObjectTask  ("add_kernel",                       ArrayKernel);
     184      273844 :   appendMooseObjectTask  ("add_kernel",                       ADArrayKernel);
     185             : 
     186      273844 :   registerMooseObjectTask("add_variable",                     MooseVariableBase,         false);
     187      273844 :   registerMooseObjectTask("add_aux_variable",                 MooseVariableBase,         false);
     188      273844 :   registerMooseObjectTask("add_elemental_field_variable",     MooseVariableBase,         false);
     189      273844 :   registerMooseObjectTask("add_variables_physics",            MooseVariableBase,         false);
     190             : 
     191      273844 :   registerMooseObjectTask("add_nodal_kernel",                 NodalKernel,               false);
     192             : 
     193      273844 :   registerMooseObjectTask("add_functor_material",             FunctorMaterial,           false);
     194      273844 :   registerMooseObjectTask("add_material",                     MaterialBase,              false);
     195      273844 :   appendDeprecatedMooseObjectTask("add_material",             FunctorMaterial);
     196      273844 :   registerMooseObjectTask("add_materials_physics",            FunctorMaterial,           false);
     197      273844 :   appendMooseObjectTask  ("add_materials_physics",            MaterialBase);
     198             : 
     199      273844 :   registerMooseObjectTask("add_bc",                           BoundaryCondition,         false);
     200             : 
     201      273844 :   registerMooseObjectTask("add_function",                     Function,                  false);
     202             : 
     203      273844 :   registerMooseObjectTask("add_distribution",                 Distribution,              false);
     204      273844 :   registerMooseObjectTask("add_sampler",                      Sampler,                   false);
     205             : 
     206      273844 :   registerMooseObjectTask("add_aux_kernel",                   AuxKernel,                 false);
     207      273844 :   appendMooseObjectTask  ("add_aux_kernel",                   VectorAuxKernel);
     208      273844 :   appendMooseObjectTask  ("add_aux_kernel",                   ArrayAuxKernel);
     209             : 
     210      273844 :   registerMooseObjectTask("add_bound",                        Bounds,                    false);
     211             : 
     212      273844 :   registerMooseObjectTask("add_scalar_kernel",                ScalarKernel,              false);
     213      273844 :   registerMooseObjectTask("add_aux_scalar_kernel",            AuxScalarKernel,           false);
     214      273844 :   registerMooseObjectTask("add_dirac_kernel",                 DiracKernel,               false);
     215      273844 :   appendMooseObjectTask  ("add_dirac_kernel",                 VectorDiracKernel);
     216      273844 :   registerMooseObjectTask("add_dg_kernel",                    DGKernel,                  false);
     217      273844 :   registerMooseObjectTask("add_fv_kernel",                    FVKernel,                  false);
     218      273844 :   registerMooseObjectTask("add_interpolation_method",         FVInterpolationMethod,     false);
     219      273844 :   registerMooseObjectTask("add_interpolation_method_physics", FVInterpolationMethod,     false);
     220      273844 :   registerMooseObjectTask("add_linear_fv_kernel",             LinearFVKernel,            false);
     221      273844 :   registerMooseObjectTask("add_fv_bc",                        FVBoundaryCondition,       false);
     222      273844 :   registerMooseObjectTask("add_linear_fv_bc",                 LinearFVBoundaryCondition, false);
     223      273844 :   registerMooseObjectTask("add_fv_ik",                        FVInterfaceKernel,         false);
     224      273844 :   registerMooseObjectTask("add_interface_kernel",             InterfaceKernel,           false);
     225      273844 :   appendMooseObjectTask  ("add_interface_kernel",             VectorInterfaceKernel);
     226      273844 :   registerMooseObjectTask("add_constraint",                   Constraint,                false);
     227      273844 :   registerMooseObjectTask("add_hybridized_kernel",            HDGKernel,                 false);
     228      273844 :   registerMooseObjectTask("add_hybridized_integrated_bc",     HDGIntegratedBC,           false);
     229             : 
     230      273844 :   registerMooseObjectTask("add_ic",                           InitialCondition,          false);
     231      273844 :   appendMooseObjectTask  ("add_ic",                           ScalarInitialCondition);
     232      273844 :   registerMooseObjectTask("add_fv_ic",                        FVInitialCondition,        false);
     233      273844 :   registerMooseObjectTask("add_ics_physics",                  InitialCondition,          false);
     234      273844 :   appendMooseObjectTask  ("add_ics_physics",                  FVInitialCondition);
     235      273844 :   appendMooseObjectTask  ("add_ics_physics",                  ScalarInitialCondition);
     236             : 
     237      273844 :   registerMooseObjectTask("add_damper",                       Damper,                    false);
     238      273844 :   registerMooseObjectTask("setup_predictor",                  Predictor,                 false);
     239      273844 :   registerMooseObjectTask("add_time_steppers",                TimeStepper,               false);
     240      273844 :   registerMooseObjectTask("add_time_stepper",                 TimeStepper,               false);
     241      136922 :   registerTask           ("compose_time_stepper",                                    true);
     242      273844 :   registerMooseObjectTask("setup_time_integrators",           TimeIntegrator,            false);
     243      273844 :   registerMooseObjectTask("setup_time_integrator",            TimeIntegrator,            false);
     244      273844 :   registerMooseObjectTask("add_convergence",                  Convergence,               false);
     245             : 
     246      273844 :   registerMooseObjectTask("add_preconditioning",              MoosePreconditioner,       false);
     247      273844 :   registerMooseObjectTask("add_field_split",                  Split,                     false);
     248             : 
     249      273844 :   registerMooseObjectTask("add_mesh_division",                MeshDivision,              false);
     250      273844 :   registerMooseObjectTask("add_user_object",                  UserObject,                false);
     251      273844 :   appendMooseObjectTask  ("add_user_object",                  Postprocessor);
     252             : 
     253      273844 :   appendDeprecatedMooseObjectTask("add_user_object",          Corrector);
     254      273844 :   registerMooseObjectTask("add_corrector",                    Corrector,                 false);
     255      273844 :   appendDeprecatedMooseObjectTask("add_user_object",          MeshModifier);
     256      273844 :   registerMooseObjectTask("add_mesh_modifier",                MeshModifier,              false);
     257             : 
     258      273844 :   registerMooseObjectTask("add_postprocessor",                Postprocessor,             false);
     259      273844 :   registerMooseObjectTask("add_vector_postprocessor",         VectorPostprocessor,       false);
     260      273844 :   registerMooseObjectTask("add_reporter",                     Reporter,                  false);
     261             : 
     262      273844 :   registerMooseObjectTask("add_positions",                    Positions,                 false);
     263      273844 :   registerMooseObjectTask("add_times",                        Times,                     false);
     264             : 
     265      273844 :   registerMooseObjectTask("add_indicator",                    Indicator,                 false);
     266      273844 :   registerMooseObjectTask("add_marker",                       Marker,                    false);
     267             : 
     268      273844 :   registerMooseObjectTask("add_multi_app",                    MultiApp,                  false);
     269      273844 :   registerMooseObjectTask("add_transfer",                     Transfer,                  false);
     270             : 
     271      273844 :   registerMooseObjectTask("add_output",                       Output,                    false);
     272             : 
     273      273844 :   registerMooseObjectTask("add_control",                      Control,                   false);
     274      273844 :   registerMooseObjectTask("add_chain_control",                ChainControl,              false);
     275      273844 :   registerMooseObjectTask("add_partitioner",                  MoosePartitioner,          false);
     276             : 
     277             :   // clang-format on
     278             : 
     279      136922 :   registerTask("dynamic_object_registration", false);
     280      136922 :   registerTask("common_output", true);
     281      136922 :   registerTask("setup_recover_file_base", true);
     282      136922 :   registerTask("recover_meta_data", true);
     283             : 
     284      136922 :   registerTask("add_bounds_vectors", false);
     285      136922 :   registerTask("add_periodic_bc", false);
     286      136922 :   registerTask("add_aux_variable", false);
     287      136922 :   registerTask("add_external_aux_variables", true);
     288      136922 :   registerTask("add_variable", false);
     289      136922 :   registerTask("add_mortar_variable", false);
     290             : 
     291      136922 :   registerTask("execute_mesh_generators", true);
     292      136922 :   registerTask("uniform_refine_mesh", false);
     293      136922 :   registerTask("prepare_mesh", false);
     294      136922 :   registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
     295      136922 :   registerTask("setup_mesh_complete", true); // calls prepare
     296      136922 :   registerTask("post_mesh_prepared", false);
     297      136922 :   registerTask("add_geometric_rm", false);
     298      136922 :   registerTask("attach_geometric_rm", true);
     299      136922 :   registerTask("attach_geometric_rm_final", true);
     300             : 
     301      136922 :   registerTask("init_displaced_problem", false);
     302             : 
     303      136922 :   registerTask("add_algebraic_rm", false);
     304      136922 :   registerTask("attach_algebraic_rm", true);
     305      136922 :   registerTask("add_coupling_rm", false);
     306      136922 :   registerTask("attach_coupling_rm", true);
     307      136922 :   registerTask("init_problem", true);
     308      136922 :   registerTask("check_copy_nodal_vars", true);
     309      136922 :   registerTask("copy_nodal_vars", true);
     310      136922 :   registerTask("copy_nodal_aux_vars", true);
     311      136922 :   registerTask("copy_vars_physics", false);
     312      136922 :   registerTask("setup_postprocessor_data", false);
     313      136922 :   registerTask("setup_time_steppers", true);
     314             : 
     315      136922 :   registerTask("setup_dampers", true);
     316      136922 :   registerTask("check_integrity", true);
     317      136922 :   registerTask("resolve_optional_materials", true);
     318      136922 :   registerTask("check_integrity_early", true);
     319      136922 :   registerTask("check_integrity_early_physics", false);
     320      136922 :   registerTask("setup_quadrature", true);
     321      136922 :   registerTask("create_tagged_matrices", true);
     322             : 
     323      136922 :   registerTask("mesh_modifiers", false);
     324             : 
     325             :   /// Additional Actions
     326      136922 :   registerTask("no_action", false); // Used for Empty Action placeholders
     327      136922 :   registerTask("set_global_params", false);
     328      136922 :   registerTask("setup_adaptivity", false);
     329      136922 :   registerTask("meta_action", false);
     330      136922 :   registerTask("setup_residual_debug", false);
     331      136922 :   registerTask("setup_oversampling", false);
     332      136922 :   registerTask("deprecated_block", false);
     333      136922 :   registerTask("set_adaptivity_options", false);
     334      136922 :   registerTask("add_mortar_interface", false);
     335      136922 :   registerTask("coupling_functor_check", true);
     336      136922 :   registerTask("add_master_action_material", false);
     337      136922 :   registerTask("setup_projected_properties", false);
     338      136922 :   registerTask("create_application_block", false);
     339             : 
     340             :   // Dummy Actions (useful for sync points in the dependencies)
     341      136922 :   registerTask("setup_function_complete", false);
     342      136922 :   registerTask("setup_variable_complete", false);
     343      136922 :   registerTask("setup_executioner_complete", false);
     344      136922 :   registerTask("ready_to_init", true);
     345             : 
     346             :   // Output related actions
     347      136922 :   registerTask("add_output_aux_variables", true);
     348      136922 :   registerTask("check_output", true);
     349      136922 :   registerTask("declare_late_reporters", true);
     350             : 
     351      136922 :   registerTask("create_problem_default", true);
     352      136922 :   registerTask("create_problem_custom", false);
     353      136922 :   registerTask("create_problem_complete", false);
     354             : 
     355      136922 :   registerTask("add_default_nonlinear_convergence", true);
     356      136922 :   registerTask("add_default_multiapp_fixed_point_convergence", true);
     357      136922 :   registerTask("add_default_steady_state_convergence", true);
     358             : 
     359      136922 :   registerTask("chain_control_setup", true);
     360      136922 :   registerTask("start_webservercontrol", true);
     361             : 
     362             :   // Action for setting up the signal-based checkpoint
     363      136922 :   registerTask("auto_checkpoint_action", true);
     364             :   /**************************/
     365             :   /****** Dependencies ******/
     366             :   /**************************/
     367             :   /**
     368             :    * The following is the default set of action dependencies for a basic MOOSE problem.  The
     369             :    * formatting of this string is important.  Each line represents a set of dependencies that depend
     370             :    * on the previous line.  Items on the same line have equal weight and can be executed in any
     371             :    * order.
     372             :    *
     373             :    * Additional dependencies can be inserted later inside of user applications with calls to
     374             :    * ActionWarehouse::addDependency("task", "pre_req")
     375             :    */
     376             : 
     377             :   // clang-format off
     378      136922 :   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      102926 :   registerTask("add_mfem_problem_operator", true);
     495      205852 :   addTaskDependency("add_mfem_problem_operator", "init_mesh");
     496      205852 :   addTaskDependency("add_variable", "add_mfem_problem_operator");
     497      205852 :   addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
     498      205852 :   addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
     499      205852 :   addTaskDependency("add_bc", "add_mfem_problem_operator");
     500      205852 :   addTaskDependency("add_kernel", "add_mfem_problem_operator");
     501             : 
     502             :   // add SubMeshes
     503      205852 :   registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
     504      205852 :   addTaskDependency("add_mfem_submeshes", "create_problem_complete");
     505             : 
     506             :   // add SubMesh transfers
     507      205852 :   appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
     508             : 
     509             :   // add FESpaces
     510      205852 :   registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
     511      205852 :   appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
     512      205852 :   addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
     513             : 
     514             :   // add FESpace hierarchies (must come after fespaces so the base fespace is available)
     515      205852 :   registerMooseObjectTask("add_mfem_fespace_hierarchies", MFEMFESpaceHierarchy, false);
     516      205852 :   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      205852 :   addTaskDependency("add_variable", "add_mfem_fespace_hierarchies");
     521      205852 :   addTaskDependency("add_aux_variable", "add_mfem_fespace_hierarchies");
     522      205852 :   addTaskDependency("add_elemental_field_variable", "add_mfem_fespace_hierarchies");
     523             :   // kernels only need fespaces, not hierarchies
     524      205852 :   addTaskDependency("add_kernel", "add_mfem_fespaces");
     525             : 
     526             :   // add QuadratureFunctions
     527      205852 :   registerMooseObjectTask("add_mfem_quadrature_functions", MFEMQuadratureFunction, false);
     528             :   // after the last task declaring coefficients the quadrature functions may project
     529      205852 :   addTaskDependency("add_mfem_quadrature_functions", "add_functor_material");
     530             :   // before the tasks constructing objects that may consume the declared coefficients
     531      205852 :   addTaskDependency("add_kernel", "add_mfem_quadrature_functions");
     532      205852 :   addTaskDependency("add_bc", "add_mfem_quadrature_functions");
     533      205852 :   addTaskDependency("add_aux_kernel", "add_mfem_quadrature_functions");
     534             : 
     535             :   // add complex kernels
     536      205852 :   registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
     537      205852 :   registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
     538      205852 :   addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
     539      205852 :   addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
     540      205852 :   addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
     541      205852 :   addTaskDependency("add_mfem_complex_bc_components", "add_bc");
     542             : 
     543             :   // set mesh FE space
     544      102926 :   registerTask("set_mesh_fe_space", true);
     545      205852 :   addTaskDependency("set_mesh_fe_space", "add_variable");
     546      205852 :   addTaskDependency("set_mesh_fe_space", "init_mesh");
     547             : 
     548             :   // add solver objects.
     549      205852 :   registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
     550      205852 :   addTaskDependency("add_mfem_solver", "add_mfem_fespace_hierarchies");
     551      205852 :   addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
     552      205852 :   addTaskDependency("add_mfem_solver", "add_variable");
     553      102926 :   registerTask("resolve_mfem_solvers", true);
     554      205852 :   addTaskDependency("resolve_mfem_solvers", "add_mfem_solver");
     555      205852 :   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      273844 :   addTaskDependency("add_interpolation_method_physics", "add_interpolation_method");
     561      273844 :   addTaskDependency("add_fv_kernel", "add_interpolation_method_physics");
     562      273844 :   addTaskDependency("add_linear_fv_kernel", "add_interpolation_method_physics");
     563      273844 :   addTaskDependency("add_fv_kernel", "add_interpolation_method");
     564      273844 :   addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
     565             : 
     566      136922 :   registerTask("parse_neml2", /*required=*/false);
     567      273844 :   addTaskDependency("add_material", "parse_neml2");
     568      205383 :   addTaskDependency("add_user_object", "parse_neml2");
     569       68461 : }
     570             : 
     571             : /**
     572             :  * Multiple Action class can be associated with a single input file section, in which case all
     573             :  * associated Actions will be created and "acted" on when the associated input file section is
     574             :  * seen.*
     575             :  *
     576             :  * Example:
     577             :  *  "setup_mesh" <-----------> SetupMeshAction <---------
     578             :  *                                                        \
     579             :  *                                                         [Mesh]
     580             :  *                                                        /
     581             :  * "setup_mesh_complete" <---> SetupMeshCompleteAction <-
     582             :  *
     583             :  *
     584             :  * Action classes can also be registered to act on more than one input file section for a different
     585             :  * task if similar logic can work in multiple cases
     586             :  *
     587             :  * Example:
     588             :  * "add_variable" <-----                       -> [Variables/ *]
     589             :  *                       \                   /
     590             :  *                        CopyNodalVarsAction
     591             :  *                       /                   \
     592             :  * "add_aux_variable" <-                       -> [AuxVariables/ *]
     593             :  *
     594             :  *
     595             :  * Note: Placeholder "no_action" actions must be put in places where it is possible to match an
     596             :  *       object with a star or a more specific parent later on. (i.e. where one needs to negate the
     597             :  *       '*' matching prematurely).
     598             :  */
     599             : void
     600           0 : registerActions(Syntax & syntax, ActionFactory & action_factory)
     601             : {
     602           0 :   mooseDeprecated("use registerAll instead of registerActions");
     603           0 :   registerActions(syntax, action_factory, {"MooseApp"});
     604           0 : }
     605             : 
     606             : void
     607       68461 : registerActions(Syntax & syntax,
     608             :                 ActionFactory & action_factory,
     609             :                 const std::set<std::string> & obj_labels)
     610             : {
     611       68461 :   Registry::registerActionsTo(action_factory, obj_labels);
     612             : 
     613             :   // Add these actions here so they are always executed last, without setting any dependency
     614      136922 :   registerTask("dump_objects", false);
     615       68461 :   registerTask("finish_input_file_output", false);
     616       68461 : }
     617             : 
     618             : void
     619       68461 : associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
     620             : {
     621             :   /**
     622             :    * Note: the optional third parameter is used to differentiate which task is
     623             :    * satisfied based on the syntax encountered for classes which are registered
     624             :    * to satisfy more than one task
     625             :    */
     626      547688 :   registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
     627      547688 :   registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
     628             : 
     629      547688 :   registerSyntax("AddActionComponentAction", "ActionComponents/*");
     630      547688 :   registerSyntax("CombineComponentsMeshes", "ActionComponents");
     631             : 
     632      547688 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
     633      547688 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
     634      547688 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
     635      547688 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
     636             : 
     637      547688 :   registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
     638      547688 :   registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
     639      547688 :   registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
     640             : 
     641      547688 :   registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
     642             : 
     643      547688 :   registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
     644             : 
     645      547688 :   registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
     646      547688 :   registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
     647             : 
     648      547688 :   registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
     649             : 
     650      547688 :   registerSyntax("CreateProblemAction", "Problem");
     651      547688 :   registerSyntax("DynamicObjectRegistrationAction", "Problem");
     652             : 
     653      547688 :   registerSyntax("SetupMeshAction", "Mesh");
     654      547688 :   registerSyntax("SetupMeshCompleteAction", "Mesh");
     655             :   // Components should be able create a Mesh without a Mesh block
     656      547688 :   registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
     657      547688 :   registerSyntax("CreateDisplacedProblemAction", "Mesh");
     658      547688 :   registerSyntax("DisplayGhostingAction", "Mesh");
     659      547688 :   registerSyntax("AddMeshGeneratorAction", "Mesh/*");
     660      547688 :   registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
     661      547688 :   registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
     662      547688 :   registerSyntax("ElementIDOutputAction", "Mesh");
     663      273844 :   syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
     664             : 
     665      547688 :   registerSyntax("AddFunctionAction", "Functions/*");
     666      273844 :   syntax.registerSyntaxType("Functions/*", "FunctionName");
     667             : 
     668      547688 :   registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
     669      273844 :   syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
     670      547688 :   registerSyntax("AddConvergenceAction", "Convergence/*");
     671      273844 :   syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
     672             : 
     673      547688 :   registerSyntax("GlobalParamsAction", "GlobalParams");
     674             : 
     675      547688 :   registerSyntax("AddDistributionAction", "Distributions/*");
     676      273844 :   syntax.registerSyntaxType("Distributions/*", "DistributionName");
     677             : 
     678      547688 :   registerSyntax("AddSamplerAction", "Samplers/*");
     679      273844 :   syntax.registerSyntaxType("Samplers/*", "SamplerName");
     680             : 
     681      547688 :   registerSyntax("SetupDebugAction", "Debug");
     682      547688 :   registerSyntax("SetupResidualDebugAction", "Debug");
     683             : 
     684             :   /// Variable/AuxVariable Actions
     685      547688 :   registerSyntax("AddVariableAction", "Variables/*");
     686      273844 :   syntax.registerSyntaxType("Variables/*", "VariableName");
     687      273844 :   syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
     688             : 
     689      547688 :   registerSyntax("AddICAction", "Variables/*/InitialCondition");
     690      547688 :   registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
     691             : 
     692      547688 :   registerSyntax("AddAuxVariableAction", "AuxVariables/*");
     693      273844 :   syntax.registerSyntaxType("AuxVariables/*", "VariableName");
     694      273844 :   syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
     695             : 
     696      547688 :   registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
     697      547688 :   registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
     698             : 
     699      547688 :   registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
     700      547688 :   registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
     701             : 
     702      547688 :   registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
     703      547688 :   registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
     704             : 
     705      547688 :   registerSyntax("AddMaterialAction", "Materials/*");
     706      273844 :   syntax.registerSyntaxType("Materials/*", "MaterialName");
     707             : 
     708      547688 :   registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
     709      273844 :   syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
     710             : 
     711      547688 :   registerSyntax("AddPostprocessorAction", "Postprocessors/*");
     712      273844 :   syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
     713      273844 :   syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
     714             : 
     715      547688 :   registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
     716      273844 :   syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
     717             : 
     718      547688 :   registerSyntax("AddReporterAction", "Reporters/*");
     719      273844 :   syntax.registerSyntaxType("Reporters/*", "ReporterName");
     720             : 
     721      547688 :   registerSyntax("AddPositionsAction", "Positions/*");
     722      273844 :   syntax.registerSyntaxType("Positions/*", "PositionsName");
     723             : 
     724      547688 :   registerSyntax("AddTimesAction", "Times/*");
     725      273844 :   syntax.registerSyntaxType("Times/*", "TimesName");
     726             : 
     727      547688 :   registerSyntax("AddDamperAction", "Dampers/*");
     728             : 
     729      547688 :   registerSyntax("AddOutputAction", "Outputs/*");
     730      547688 :   registerSyntax("CommonOutputAction", "Outputs");
     731      547688 :   registerSyntax("MaterialOutputAction", "Outputs");
     732      547688 :   registerSyntax("AutoCheckpointAction", "Outputs");
     733      273844 :   syntax.registerSyntaxType("Outputs/*", "OutputName");
     734             : 
     735             :   // Note: Preconditioner Actions will be built by this setup action
     736      547688 :   registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
     737      547688 :   registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
     738             : 
     739      547688 :   registerSyntax("CreateExecutionerAction", "Executioner");
     740      547688 :   registerSyntax("ReadExecutorParamsAction", "Executors/*");
     741             : 
     742      547688 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
     743      547688 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
     744      547688 :   registerSyntaxTask(
     745             :       "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
     746      547688 :   registerSyntaxTask(
     747             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
     748      547688 :   registerSyntaxTask(
     749             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
     750      273844 :   syntax.registerSyntaxType("Executors/*", "ExecutorName");
     751             : 
     752      547688 :   registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
     753      547688 :   registerSyntax("SetupPredictorAction", "Executioner/Predictor");
     754             : #ifdef LIBMESH_ENABLE_AMR
     755      547688 :   registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
     756             : #endif
     757             : 
     758      547688 :   registerSyntax("PartitionerAction", "Mesh/Partitioner");
     759             : 
     760      547688 :   registerSyntax("AddDiracKernelAction", "DiracKernels/*");
     761             : 
     762      547688 :   registerSyntax("AddDGKernelAction", "DGKernels/*");
     763      547688 :   registerSyntax("AddFVKernelAction", "FVKernels/*");
     764      547688 :   registerSyntax("AddFVBCAction", "FVBCs/*");
     765      547688 :   registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
     766      547688 :   registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
     767      547688 :   registerSyntax("CheckFVBCAction", "FVBCs");
     768             : 
     769      547688 :   registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
     770             : 
     771      547688 :   registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
     772             : 
     773      547688 :   registerSyntax("AddConstraintAction", "Constraints/*");
     774             : 
     775      547688 :   registerSyntax("AddControlAction", "Controls/*");
     776      547688 :   registerSyntax("AddChainControlAction", "ChainControls/*");
     777      547688 :   registerSyntax("AddBoundAction", "Bounds/*");
     778      547688 :   registerSyntax("AddBoundsVectorsAction", "Bounds");
     779             : 
     780             :   // UserObject and some derived classes
     781      547688 :   registerSyntax("AddUserObjectAction", "UserObjects/*");
     782      273844 :   syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
     783             : 
     784      547688 :   registerSyntax("AddCorrectorAction", "Correctors/*");
     785      273844 :   syntax.registerSyntaxType("Correctors/*", "UserObjectName");
     786             : 
     787      547688 :   registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
     788      273844 :   syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
     789             : 
     790      547688 :   registerSyntax("AddNodalNormalsAction", "NodalNormals");
     791             : 
     792             :   // FVInterpolationMethods
     793      547688 :   registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
     794      273844 :   syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
     795             : 
     796             :   // Indicator
     797      547688 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
     798      547688 :   registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
     799      273844 :   syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
     800             : 
     801             :   // Marker
     802      547688 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
     803      547688 :   registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
     804      273844 :   syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
     805             : 
     806             :   // New Adaptivity System
     807      547688 :   registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
     808             : 
     809             :   // Deprecated Block
     810      547688 :   registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
     811             : 
     812             :   // Multi Apps
     813      547688 :   registerSyntax("AddMultiAppAction", "MultiApps/*");
     814      273844 :   syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
     815             : 
     816             :   // Transfers
     817      547688 :   registerSyntax("AddTransferAction", "Transfers/*");
     818             : 
     819             :   // Material derivative test
     820      547688 :   registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
     821      547688 :   registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
     822             : 
     823      547688 :   registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
     824             : 
     825             :   // Application Block System
     826      547688 :   registerSyntax("CreateApplicationBlockAction", "Application");
     827             : 
     828             : #ifdef MOOSE_MFEM_ENABLED
     829      411704 :   registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
     830      411704 :   registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
     831      411704 :   registerSyntaxTask(
     832             :       "AddMFEMQuadratureFunctionAction", "QuadratureFunctions/*", "add_mfem_quadrature_functions");
     833      411704 :   registerSyntaxTask(
     834             :       "AddMFEMFESpaceHierarchyAction", "FESpaceHierarchies/*", "add_mfem_fespace_hierarchies");
     835      411704 :   registerSyntaxTask(
     836             :       "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
     837      411704 :   registerSyntaxTask(
     838             :       "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
     839      411704 :   registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
     840      205852 :   syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
     841             : #endif
     842             : 
     843      547688 :   registerSyntax("NEML2ActionCommon", "NEML2");
     844      479227 :   registerSyntax("NEML2Action", "NEML2/*");
     845             : 
     846       68461 :   addActionTypes(syntax);
     847       68461 : }
     848             : 
     849             : void
     850           0 : associateSyntax(Syntax & syntax, ActionFactory & action_factory)
     851             : {
     852           0 :   associateSyntaxInner(syntax, action_factory);
     853           0 :   registerActions(syntax, action_factory);
     854           0 : }
     855             : 
     856             : void
     857           0 : setSolverDefaults(FEProblemBase & problem)
     858             : {
     859             :   // May be a touch expensive to create a new DM every time, but probably safer to do it this way
     860           0 :   Moose::PetscSupport::petscSetDefaults(problem);
     861           0 : }
     862             : 
     863             : MPI_Comm
     864     1207264 : swapLibMeshComm(MPI_Comm new_comm)
     865             : {
     866     1207264 :   MPI_Comm old_comm = PETSC_COMM_WORLD;
     867     1207264 :   PETSC_COMM_WORLD = new_comm;
     868     1207264 :   return old_comm;
     869             : }
     870             : 
     871             : static bool _color_console = isatty(fileno(stdout));
     872             : 
     873             : bool
     874     9925989 : colorConsole()
     875             : {
     876     9925989 :   return _color_console;
     877             : }
     878             : 
     879             : bool
     880       55825 : setColorConsole(bool use_color, bool force)
     881             : {
     882       55825 :   _color_console = (isatty(fileno(stdout)) || force) && use_color;
     883       55825 :   return _color_console;
     884             : }
     885             : 
     886     2784768 : ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
     887     2784768 :   : _throw_on_error_before(Moose::_throw_on_error)
     888             : {
     889             :   mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
     890     2784768 :   Moose::_throw_on_error = throw_on_error;
     891     2784768 : }
     892             : 
     893     2784768 : ScopedThrowOnError::ScopedThrowOnError() : ScopedThrowOnError(true) {}
     894             : 
     895     2784768 : ScopedThrowOnError::~ScopedThrowOnError() { Moose::_throw_on_error = _throw_on_error_before; }
     896             : 
     897           6 : ScopedDeprecatedIsError::ScopedDeprecatedIsError(const bool deprecated_is_error)
     898           6 :   : _deprecated_is_error_before(Moose::_deprecated_is_error)
     899             : {
     900             :   mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
     901           6 :   Moose::_deprecated_is_error = deprecated_is_error;
     902           6 : }
     903             : 
     904           0 : ScopedDeprecatedIsError::ScopedDeprecatedIsError() : ScopedDeprecatedIsError(true) {}
     905             : 
     906           6 : ScopedDeprecatedIsError::~ScopedDeprecatedIsError()
     907             : {
     908           6 :   Moose::_deprecated_is_error = _deprecated_is_error_before;
     909           6 : }
     910             : 
     911             : std::string
     912       16604 : hitMessagePrefix(const hit::Node & node)
     913             : {
     914             :   // Strip meaningless line and column number for CLI args
     915       16604 :   if (node.filename() == "CLI_ARGS")
     916        1274 :     return "CLI_ARGS:\n";
     917             :   // If using the root node, don't add line info
     918       15967 :   if (node.isRoot())
     919           3 :     return node.filename() + ":\n";
     920       15964 :   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

Generated by: LCOV version 1.14