LCOV - code coverage report
Current view: top level - src/base - Moose.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 39a256 Lines: 384 396 97.0 %
Date: 2026-07-14 14:36:17 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       67669 : registerAll(Factory & f, ActionFactory & af, Syntax & s)
      70             : {
      71       67669 :   registerObjects(f, {"MooseApp"});
      72       67669 :   associateSyntaxInner(s, af);
      73       67669 :   registerActions(s, af, {"MooseApp"});
      74      270676 :   registerAppDataFilePath("moose");
      75      270676 :   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      406014 :   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      389092 :   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      253735 :   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       67669 : }
     130             : 
     131             : void
     132       67669 : registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
     133             : {
     134       67669 :   Registry::registerObjectsTo(factory, obj_labels);
     135       67669 : }
     136             : 
     137             : void
     138       67669 : 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      270676 :   registerMooseObjectTask("create_problem",               Problem,                   false);
     157      270676 :   registerMooseObjectTask("setup_executioner",            Executioner,               false);
     158      270676 :   registerMooseObjectTask("read_executor",                Executor,                  false);
     159      135338 :   registerTask("add_executor", true);
     160             : 
     161             :   // TODO Organize these somewhere
     162      135338 :   registerTask("init_physics", false);
     163      135338 :   registerTask("init_component_physics", false);
     164      135338 :   registerTask("meta_action_component", false);
     165      135338 :   registerTask("setup_component", false);
     166             :   // 'list_component' is used to retrieve ActionComponents for the syntax JSON
     167      135338 :   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      270676 :   registerMooseObjectTask("determine_system_type",        Executioner,               true);
     172             : 
     173      270676 :   registerMooseObjectTask("setup_mesh",                   MooseMesh,                 false);
     174      270676 :   registerMooseObjectTask("set_mesh_base",                MooseMesh,                 false);
     175      270676 :   registerMooseObjectTask("init_mesh",                    MooseMesh,                 false);
     176      270676 :   registerMooseObjectTask("add_mesh_generator",           MeshGenerator,             false);
     177      135338 :   registerTask("create_added_mesh_generators", true);
     178      270676 :   registerMooseObjectTask("append_mesh_generator",        MeshGenerator,             false);
     179             : 
     180      270676 :   registerMooseObjectTask("add_kernel",                   Kernel,                    false);
     181      270676 :   appendMooseObjectTask  ("add_kernel",                   EigenKernel);
     182      270676 :   appendMooseObjectTask  ("add_kernel",                   VectorKernel);
     183      270676 :   appendMooseObjectTask  ("add_kernel",                   ArrayKernel);
     184      270676 :   appendMooseObjectTask  ("add_kernel",                   ADArrayKernel);
     185             : 
     186      270676 :   registerMooseObjectTask("add_variable",                 MooseVariableBase,         false);
     187      270676 :   registerMooseObjectTask("add_aux_variable",             MooseVariableBase,         false);
     188      270676 :   registerMooseObjectTask("add_elemental_field_variable", MooseVariableBase,         false);
     189      270676 :   registerMooseObjectTask("add_variables_physics",        MooseVariableBase,         false);
     190             : 
     191      270676 :   registerMooseObjectTask("add_nodal_kernel",             NodalKernel,               false);
     192             : 
     193      270676 :   registerMooseObjectTask("add_functor_material",         FunctorMaterial,           false);
     194      270676 :   registerMooseObjectTask("add_material",                 MaterialBase,              false);
     195      270676 :   appendDeprecatedMooseObjectTask("add_material",         FunctorMaterial);
     196      270676 :   registerMooseObjectTask("add_materials_physics",        FunctorMaterial,           false);
     197      270676 :   appendMooseObjectTask  ("add_materials_physics",        MaterialBase);
     198             : 
     199      270676 :   registerMooseObjectTask("add_bc",                       BoundaryCondition,         false);
     200             : 
     201      270676 :   registerMooseObjectTask("add_function",                 Function,                  false);
     202             : 
     203      270676 :   registerMooseObjectTask("add_distribution",             Distribution,              false);
     204      270676 :   registerMooseObjectTask("add_sampler",                  Sampler,                   false);
     205             : 
     206      270676 :   registerMooseObjectTask("add_aux_kernel",               AuxKernel,                 false);
     207      270676 :   appendMooseObjectTask  ("add_aux_kernel",               VectorAuxKernel);
     208      270676 :   appendMooseObjectTask  ("add_aux_kernel",               ArrayAuxKernel);
     209             : 
     210      270676 :   registerMooseObjectTask("add_bound",                    Bounds,                    false);
     211             : 
     212      270676 :   registerMooseObjectTask("add_scalar_kernel",            ScalarKernel,              false);
     213      270676 :   registerMooseObjectTask("add_aux_scalar_kernel",        AuxScalarKernel,           false);
     214      270676 :   registerMooseObjectTask("add_dirac_kernel",             DiracKernel,               false);
     215      270676 :   appendMooseObjectTask  ("add_dirac_kernel",             VectorDiracKernel);
     216      270676 :   registerMooseObjectTask("add_dg_kernel",                DGKernel,                  false);
     217      270676 :   registerMooseObjectTask("add_fv_kernel",                FVKernel,                  false);
     218      270676 :   registerMooseObjectTask("add_interpolation_method",     FVInterpolationMethod,     false);
     219      270676 :   registerMooseObjectTask("add_linear_fv_kernel",         LinearFVKernel,            false);
     220      270676 :   registerMooseObjectTask("add_fv_bc",                    FVBoundaryCondition,       false);
     221      270676 :   registerMooseObjectTask("add_linear_fv_bc",             LinearFVBoundaryCondition, false);
     222      270676 :   registerMooseObjectTask("add_fv_ik",                    FVInterfaceKernel,         false);
     223      270676 :   registerMooseObjectTask("add_interface_kernel",         InterfaceKernel,           false);
     224      270676 :   appendMooseObjectTask  ("add_interface_kernel",         VectorInterfaceKernel);
     225      270676 :   registerMooseObjectTask("add_constraint",               Constraint,                false);
     226      270676 :   registerMooseObjectTask("add_hybridized_kernel",        HDGKernel,                 false);
     227      270676 :   registerMooseObjectTask("add_hybridized_integrated_bc", HDGIntegratedBC,           false);
     228             : 
     229      270676 :   registerMooseObjectTask("add_ic",                       InitialCondition,          false);
     230      270676 :   appendMooseObjectTask  ("add_ic",                       ScalarInitialCondition);
     231      270676 :   registerMooseObjectTask("add_fv_ic",                    FVInitialCondition,        false);
     232      270676 :   registerMooseObjectTask("add_ics_physics",              InitialCondition,          false);
     233      270676 :   appendMooseObjectTask  ("add_ics_physics",              FVInitialCondition);
     234      270676 :   appendMooseObjectTask  ("add_ics_physics",              ScalarInitialCondition);
     235             : 
     236      270676 :   registerMooseObjectTask("add_damper",                   Damper,                    false);
     237      270676 :   registerMooseObjectTask("setup_predictor",              Predictor,                 false);
     238      270676 :   registerMooseObjectTask("add_time_steppers",            TimeStepper,               false);
     239      270676 :   registerMooseObjectTask("add_time_stepper",             TimeStepper,               false);
     240      135338 :   registerTask           ("compose_time_stepper",                                    true);
     241      270676 :   registerMooseObjectTask("setup_time_integrators",       TimeIntegrator,            false);
     242      270676 :   registerMooseObjectTask("setup_time_integrator",        TimeIntegrator,            false);
     243      270676 :   registerMooseObjectTask("add_convergence",              Convergence,            false);
     244             : 
     245      270676 :   registerMooseObjectTask("add_preconditioning",          MoosePreconditioner,       false);
     246      270676 :   registerMooseObjectTask("add_field_split",              Split,                     false);
     247             : 
     248      270676 :   registerMooseObjectTask("add_mesh_division",            MeshDivision,              false);
     249      270676 :   registerMooseObjectTask("add_user_object",              UserObject,                false);
     250      270676 :   appendMooseObjectTask  ("add_user_object",              Postprocessor);
     251             : 
     252      270676 :   appendDeprecatedMooseObjectTask("add_user_object",      Corrector);
     253      270676 :   registerMooseObjectTask("add_corrector",                Corrector,                 false);
     254      270676 :   appendDeprecatedMooseObjectTask("add_user_object",      MeshModifier);
     255      270676 :   registerMooseObjectTask("add_mesh_modifier",            MeshModifier,              false);
     256             : 
     257      270676 :   registerMooseObjectTask("add_postprocessor",            Postprocessor,             false);
     258      270676 :   registerMooseObjectTask("add_vector_postprocessor",     VectorPostprocessor,       false);
     259      270676 :   registerMooseObjectTask("add_reporter",                 Reporter,                  false);
     260             : 
     261      270676 :   registerMooseObjectTask("add_positions",                Positions,                 false);
     262      270676 :   registerMooseObjectTask("add_times",                    Times,                     false);
     263             : 
     264      270676 :   registerMooseObjectTask("add_indicator",                Indicator,                 false);
     265      270676 :   registerMooseObjectTask("add_marker",                   Marker,                    false);
     266             : 
     267      270676 :   registerMooseObjectTask("add_multi_app",                MultiApp,                  false);
     268      270676 :   registerMooseObjectTask("add_transfer",                 Transfer,                  false);
     269             : 
     270      270676 :   registerMooseObjectTask("add_output",                   Output,                    false);
     271             : 
     272      270676 :   registerMooseObjectTask("add_control",                  Control,                   false);
     273      270676 :   registerMooseObjectTask("add_chain_control",            ChainControl,              false);
     274      270676 :   registerMooseObjectTask("add_partitioner",              MoosePartitioner,          false);
     275             : 
     276             :   // clang-format on
     277             : 
     278      135338 :   registerTask("dynamic_object_registration", false);
     279      135338 :   registerTask("common_output", true);
     280      135338 :   registerTask("setup_recover_file_base", true);
     281      135338 :   registerTask("recover_meta_data", true);
     282             : 
     283      135338 :   registerTask("add_bounds_vectors", false);
     284      135338 :   registerTask("add_periodic_bc", false);
     285      135338 :   registerTask("add_aux_variable", false);
     286      135338 :   registerTask("add_external_aux_variables", true);
     287      135338 :   registerTask("add_variable", false);
     288      135338 :   registerTask("add_mortar_variable", false);
     289             : 
     290      135338 :   registerTask("execute_mesh_generators", true);
     291      135338 :   registerTask("uniform_refine_mesh", false);
     292      135338 :   registerTask("prepare_mesh", false);
     293      135338 :   registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
     294      135338 :   registerTask("setup_mesh_complete", true); // calls prepare
     295      135338 :   registerTask("post_mesh_prepared", false);
     296      135338 :   registerTask("add_geometric_rm", false);
     297      135338 :   registerTask("attach_geometric_rm", true);
     298      135338 :   registerTask("attach_geometric_rm_final", true);
     299             : 
     300      135338 :   registerTask("init_displaced_problem", false);
     301             : 
     302      135338 :   registerTask("add_algebraic_rm", false);
     303      135338 :   registerTask("attach_algebraic_rm", true);
     304      135338 :   registerTask("add_coupling_rm", false);
     305      135338 :   registerTask("attach_coupling_rm", true);
     306      135338 :   registerTask("init_problem", true);
     307      135338 :   registerTask("check_copy_nodal_vars", true);
     308      135338 :   registerTask("copy_nodal_vars", true);
     309      135338 :   registerTask("copy_nodal_aux_vars", true);
     310      135338 :   registerTask("copy_vars_physics", false);
     311      135338 :   registerTask("setup_postprocessor_data", false);
     312      135338 :   registerTask("setup_time_steppers", true);
     313             : 
     314      135338 :   registerTask("setup_dampers", true);
     315      135338 :   registerTask("check_integrity", true);
     316      135338 :   registerTask("resolve_optional_materials", true);
     317      135338 :   registerTask("check_integrity_early", true);
     318      135338 :   registerTask("check_integrity_early_physics", false);
     319      135338 :   registerTask("setup_quadrature", true);
     320      135338 :   registerTask("create_tagged_matrices", true);
     321             : 
     322      135338 :   registerTask("mesh_modifiers", false);
     323             : 
     324             :   /// Additional Actions
     325      135338 :   registerTask("no_action", false); // Used for Empty Action placeholders
     326      135338 :   registerTask("set_global_params", false);
     327      135338 :   registerTask("setup_adaptivity", false);
     328      135338 :   registerTask("meta_action", false);
     329      135338 :   registerTask("setup_residual_debug", false);
     330      135338 :   registerTask("setup_oversampling", false);
     331      135338 :   registerTask("deprecated_block", false);
     332      135338 :   registerTask("set_adaptivity_options", false);
     333      135338 :   registerTask("add_mortar_interface", false);
     334      135338 :   registerTask("coupling_functor_check", true);
     335      135338 :   registerTask("add_master_action_material", false);
     336      135338 :   registerTask("setup_projected_properties", false);
     337      135338 :   registerTask("create_application_block", false);
     338             : 
     339             :   // Dummy Actions (useful for sync points in the dependencies)
     340      135338 :   registerTask("setup_function_complete", false);
     341      135338 :   registerTask("setup_variable_complete", false);
     342      135338 :   registerTask("setup_executioner_complete", false);
     343      135338 :   registerTask("ready_to_init", true);
     344             : 
     345             :   // Output related actions
     346      135338 :   registerTask("add_output_aux_variables", true);
     347      135338 :   registerTask("check_output", true);
     348      135338 :   registerTask("declare_late_reporters", true);
     349             : 
     350      135338 :   registerTask("create_problem_default", true);
     351      135338 :   registerTask("create_problem_custom", false);
     352      135338 :   registerTask("create_problem_complete", false);
     353             : 
     354      135338 :   registerTask("add_default_nonlinear_convergence", true);
     355      135338 :   registerTask("add_default_multiapp_fixed_point_convergence", true);
     356      135338 :   registerTask("add_default_steady_state_convergence", true);
     357             : 
     358      135338 :   registerTask("chain_control_setup", true);
     359      135338 :   registerTask("start_webservercontrol", true);
     360             : 
     361             :   // Action for setting up the signal-based checkpoint
     362      135338 :   registerTask("auto_checkpoint_action", true);
     363             :   /**************************/
     364             :   /****** Dependencies ******/
     365             :   /**************************/
     366             :   /**
     367             :    * The following is the default set of action dependencies for a basic MOOSE problem.  The
     368             :    * formatting of this string is important.  Each line represents a set of dependencies that depend
     369             :    * on the previous line.  Items on the same line have equal weight and can be executed in any
     370             :    * order.
     371             :    *
     372             :    * Additional dependencies can be inserted later inside of user applications with calls to
     373             :    * ActionWarehouse::addDependency("task", "pre_req")
     374             :    */
     375             : 
     376             :   // clang-format off
     377      135338 :   syntax.addDependencySets("(meta_action)"
     378             :                            "(meta_action_component)"
     379             :                            "(dynamic_object_registration)"
     380             :                            "(common_output)"
     381             :                            "(set_global_params)"
     382             :                            "(setup_recover_file_base)"
     383             :                            "(check_copy_nodal_vars)"
     384             :                            "(setup_mesh)"
     385             :                            "(add_geometric_rm)"
     386             :                            "(add_partitioner)"
     387             :                            "(add_mesh_generator)"
     388             :                            "(create_added_mesh_generators)"
     389             :                            "(append_mesh_generator)"
     390             :                            "(execute_mesh_generators)"
     391             :                            "(recover_meta_data)"
     392             :                            "(set_mesh_base)"
     393             :                            "(attach_geometric_rm)"
     394             :                            "(init_mesh)"
     395             :                            "(prepare_mesh)"
     396             :                            "(add_mortar_interface)"
     397             :                            "(uniform_refine_mesh)"
     398             :                            "(setup_mesh_complete)"
     399             :                            "(post_mesh_prepared)"
     400             :                            "(determine_system_type)"
     401             :                            "(create_problem)"
     402             :                            "(create_problem_custom)"
     403             :                            "(create_problem_default)"
     404             :                            "(create_problem_complete)"
     405             :                            "(init_displaced_problem)" // Problem must be init-ed before we start adding functors
     406             :                            "(add_function)"  // Functions can depend on scalar variables & PPs, but this dependence can be
     407             :                                              // added on initialSetup() rather than construction
     408             :                            "(init_component_physics)" // components must add their blocks to physics before init_physics
     409             :                            "(init_physics)"
     410             :                            "(setup_postprocessor_data)"
     411             :                            "(setup_time_integrator, setup_time_integrators)"
     412             :                            "(setup_executioner)"
     413             :                            "(setup_executioner_complete)"
     414             :                            "(setup_component)"  // no particular reason for that placement
     415             :                            "(read_executor)"
     416             :                            "(add_executor)"
     417             :                            "(check_integrity_early)"
     418             :                            "(setup_predictor)"
     419             :                            "(add_aux_variable, add_variable, add_elemental_field_variable,"
     420             :                            " add_external_aux_variables)"
     421             :                            "(add_variables_physics)" // physics can skip adding variables if they already exist
     422             :                            "(add_mortar_variable)"
     423             :                            "(setup_variable_complete)"
     424             :                            "(check_integrity_early_physics)"  // checks that systems and variables are consistent
     425             :                            "(setup_quadrature)"
     426             :                            "(add_convergence)"
     427             :                            "(add_default_nonlinear_convergence,"
     428             :                            " add_default_multiapp_fixed_point_convergence,"
     429             :                            " add_default_steady_state_convergence)"
     430             :                            "(add_positions)"
     431             :                            "(add_periodic_bc)"
     432             :                            "(add_user_object, add_corrector, add_mesh_modifier)"
     433             :                            "(add_field_split)" // split objects required before field split preconditioner itself
     434             :                            "(add_preconditioning)" // preconditioner may introduce objects such as static condensation which influence the underlying types of tagged matrices
     435             :                            "(create_tagged_matrices)"
     436             :                            "(add_distribution)"
     437             :                            "(add_sampler)"
     438             :                            "(setup_function_complete)"
     439             :                            "(setup_adaptivity)"
     440             :                            "(set_adaptivity_options)"
     441             :                            "(add_ic, add_fv_ic)"
     442             :                            "(add_ics_physics)" // physics can skip adding initial conditions if they already exist
     443             :                            "(add_constraint)"
     444             :                            "(add_times)"
     445             :                            "(add_time_stepper, add_time_steppers)"
     446             :                            "(compose_time_stepper)"
     447             :                            "(setup_time_steppers)"
     448             :                            "(ready_to_init)"
     449             :                            "(setup_dampers)"
     450             :                            "(setup_residual_debug)"
     451             :                            "(add_bounds_vectors)"
     452             :                            "(add_mesh_division)"  // NearestPositionsDivision uses a Positions
     453             :                            "(add_multi_app)"
     454             :                            "(add_transfer)"
     455             :                            "(copy_nodal_vars, copy_nodal_aux_vars, copy_vars_physics)"
     456             :                            "(add_material)"
     457             :                            "(add_master_action_material)"
     458             :                            "(add_functor_material)"
     459             :                            "(add_materials_physics)"
     460             :                            "(setup_projected_properties)"
     461             :                            "(add_output_aux_variables)"
     462             :                            "(add_output)"
     463             :                            "(auto_checkpoint_action)"
     464             :                            "(add_postprocessor)"
     465             :                            "(add_vector_postprocessor)" // MaterialVectorPostprocessor requires this
     466             :                                                         // to be after material objects are created.
     467             :                            "(add_reporter)"
     468             :                            "(declare_late_reporters)"
     469             :                            "(add_aux_kernel, add_bc, add_damper, add_dirac_kernel, add_kernel,"
     470             :                            " add_nodal_kernel, add_dg_kernel, add_fv_kernel, add_interpolation_method,"
     471             :                            " add_linear_fv_kernel,"
     472             :                            " add_fv_bc, add_linear_fv_bc, add_fv_ik, add_interface_kernel,"
     473             :                            " add_scalar_kernel, add_aux_scalar_kernel, add_indicator, add_marker,"
     474             :                            " add_bound, add_hybridized_kernel, add_hybridized_integrated_bc)"
     475             :                            "(resolve_optional_materials)"
     476             :                            "(add_algebraic_rm)"
     477             :                            "(add_coupling_rm)"
     478             :                            "(attach_geometric_rm_final)"
     479             :                            "(attach_algebraic_rm)"
     480             :                            "(attach_coupling_rm)"
     481             :                            "(coupling_functor_check)"
     482             :                            "(delete_remote_elements_after_late_geometric_ghosting)"
     483             :                            "(init_problem)"
     484             :                            "(add_control, add_chain_control)"
     485             :                            "(chain_control_setup)"
     486             :                            "(start_webservercontrol)"
     487             :                            "(check_output)"
     488             :                            "(check_integrity)"
     489             :                            "(create_application_block)");
     490             :   // clang-format on
     491             : 
     492             : #ifdef MOOSE_MFEM_ENABLED
     493      101494 :   registerTask("add_mfem_problem_operator", true);
     494      202988 :   addTaskDependency("add_mfem_problem_operator", "init_mesh");
     495      202988 :   addTaskDependency("add_variable", "add_mfem_problem_operator");
     496      202988 :   addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
     497      202988 :   addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
     498      202988 :   addTaskDependency("add_bc", "add_mfem_problem_operator");
     499      202988 :   addTaskDependency("add_kernel", "add_mfem_problem_operator");
     500             : 
     501             :   // add SubMeshes
     502      202988 :   registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
     503      202988 :   addTaskDependency("add_mfem_submeshes", "create_problem_complete");
     504             : 
     505             :   // add SubMesh transfers
     506      202988 :   appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
     507             : 
     508             :   // add FESpaces
     509      202988 :   registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
     510      202988 :   appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
     511      202988 :   addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
     512      202988 :   addTaskDependency("add_variable", "add_mfem_fespaces");
     513      202988 :   addTaskDependency("add_aux_variable", "add_mfem_fespaces");
     514      202988 :   addTaskDependency("add_elemental_field_variable", "add_mfem_fespaces");
     515      202988 :   addTaskDependency("add_kernel", "add_mfem_fespaces");
     516             : 
     517             :   // add complex kernels
     518      202988 :   registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
     519      202988 :   registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
     520      202988 :   addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
     521      202988 :   addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
     522      202988 :   addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
     523      202988 :   addTaskDependency("add_mfem_complex_bc_components", "add_bc");
     524             : 
     525             :   // set mesh FE space
     526      101494 :   registerTask("set_mesh_fe_space", true);
     527      202988 :   addTaskDependency("set_mesh_fe_space", "add_variable");
     528      202988 :   addTaskDependency("set_mesh_fe_space", "init_mesh");
     529             : 
     530             :   // add preconditioning.
     531      202988 :   registerMooseObjectTask("add_mfem_preconditioner", Moose::MFEM::SolverBase, false);
     532      202988 :   addTaskDependency("add_mfem_preconditioner", "add_mfem_problem_operator");
     533      202988 :   addTaskDependency("add_mfem_preconditioner", "add_variable");
     534             : 
     535             :   // add solver objects.
     536      202988 :   registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
     537      202988 :   addTaskDependency("add_mfem_solver", "add_mfem_preconditioner");
     538      202988 :   addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
     539             : #endif
     540             : 
     541             :   // Linear FV kernels fetch FVInterpolationMethod instances in their constructors
     542      270676 :   addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
     543             : 
     544      135338 :   registerTask("parse_neml2", /*required=*/false);
     545      270676 :   addTaskDependency("add_material", "parse_neml2");
     546      203007 :   addTaskDependency("add_user_object", "parse_neml2");
     547       67669 : }
     548             : 
     549             : /**
     550             :  * Multiple Action class can be associated with a single input file section, in which case all
     551             :  * associated Actions will be created and "acted" on when the associated input file section is
     552             :  * seen.*
     553             :  *
     554             :  * Example:
     555             :  *  "setup_mesh" <-----------> SetupMeshAction <---------
     556             :  *                                                        \
     557             :  *                                                         [Mesh]
     558             :  *                                                        /
     559             :  * "setup_mesh_complete" <---> SetupMeshCompleteAction <-
     560             :  *
     561             :  *
     562             :  * Action classes can also be registered to act on more than one input file section for a different
     563             :  * task if similar logic can work in multiple cases
     564             :  *
     565             :  * Example:
     566             :  * "add_variable" <-----                       -> [Variables/ *]
     567             :  *                       \                   /
     568             :  *                        CopyNodalVarsAction
     569             :  *                       /                   \
     570             :  * "add_aux_variable" <-                       -> [AuxVariables/ *]
     571             :  *
     572             :  *
     573             :  * Note: Placeholder "no_action" actions must be put in places where it is possible to match an
     574             :  *       object with a star or a more specific parent later on. (i.e. where one needs to negate the
     575             :  *       '*' matching prematurely).
     576             :  */
     577             : void
     578           0 : registerActions(Syntax & syntax, ActionFactory & action_factory)
     579             : {
     580           0 :   mooseDeprecated("use registerAll instead of registerActions");
     581           0 :   registerActions(syntax, action_factory, {"MooseApp"});
     582           0 : }
     583             : 
     584             : void
     585       67669 : registerActions(Syntax & syntax,
     586             :                 ActionFactory & action_factory,
     587             :                 const std::set<std::string> & obj_labels)
     588             : {
     589       67669 :   Registry::registerActionsTo(action_factory, obj_labels);
     590             : 
     591             :   // Add these actions here so they are always executed last, without setting any dependency
     592      135338 :   registerTask("dump_objects", false);
     593       67669 :   registerTask("finish_input_file_output", false);
     594       67669 : }
     595             : 
     596             : void
     597       67669 : associateSyntaxInner(Syntax & syntax, ActionFactory & /*action_factory*/)
     598             : {
     599             :   /**
     600             :    * Note: the optional third parameter is used to differentiate which task is
     601             :    * satisfied based on the syntax encountered for classes which are registered
     602             :    * to satisfy more than one task
     603             :    */
     604      541352 :   registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
     605      541352 :   registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
     606             : 
     607      541352 :   registerSyntax("AddActionComponentAction", "ActionComponents/*");
     608      541352 :   registerSyntax("CombineComponentsMeshes", "ActionComponents");
     609             : 
     610      541352 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
     611      541352 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
     612      541352 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
     613      541352 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
     614             : 
     615      541352 :   registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
     616      541352 :   registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
     617      541352 :   registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
     618             : 
     619      541352 :   registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
     620             : 
     621      541352 :   registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
     622             : 
     623      541352 :   registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
     624      541352 :   registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
     625             : 
     626      541352 :   registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
     627             : 
     628      541352 :   registerSyntax("CreateProblemAction", "Problem");
     629      541352 :   registerSyntax("DynamicObjectRegistrationAction", "Problem");
     630             : 
     631      541352 :   registerSyntax("SetupMeshAction", "Mesh");
     632      541352 :   registerSyntax("SetupMeshCompleteAction", "Mesh");
     633             :   // Components should be able create a Mesh without a Mesh block
     634      541352 :   registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
     635      541352 :   registerSyntax("CreateDisplacedProblemAction", "Mesh");
     636      541352 :   registerSyntax("DisplayGhostingAction", "Mesh");
     637      541352 :   registerSyntax("AddMeshGeneratorAction", "Mesh/*");
     638      541352 :   registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
     639      541352 :   registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
     640      541352 :   registerSyntax("ElementIDOutputAction", "Mesh");
     641      270676 :   syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
     642             : 
     643      541352 :   registerSyntax("AddFunctionAction", "Functions/*");
     644      270676 :   syntax.registerSyntaxType("Functions/*", "FunctionName");
     645             : 
     646      541352 :   registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
     647      270676 :   syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
     648      541352 :   registerSyntax("AddConvergenceAction", "Convergence/*");
     649      270676 :   syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
     650             : 
     651      541352 :   registerSyntax("GlobalParamsAction", "GlobalParams");
     652             : 
     653      541352 :   registerSyntax("AddDistributionAction", "Distributions/*");
     654      270676 :   syntax.registerSyntaxType("Distributions/*", "DistributionName");
     655             : 
     656      541352 :   registerSyntax("AddSamplerAction", "Samplers/*");
     657      270676 :   syntax.registerSyntaxType("Samplers/*", "SamplerName");
     658             : 
     659      541352 :   registerSyntax("SetupDebugAction", "Debug");
     660      541352 :   registerSyntax("SetupResidualDebugAction", "Debug");
     661             : 
     662             :   /// Variable/AuxVariable Actions
     663      541352 :   registerSyntax("AddVariableAction", "Variables/*");
     664      270676 :   syntax.registerSyntaxType("Variables/*", "VariableName");
     665      270676 :   syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
     666             : 
     667      541352 :   registerSyntax("AddICAction", "Variables/*/InitialCondition");
     668      541352 :   registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
     669             : 
     670      541352 :   registerSyntax("AddAuxVariableAction", "AuxVariables/*");
     671      270676 :   syntax.registerSyntaxType("AuxVariables/*", "VariableName");
     672      270676 :   syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
     673             : 
     674      541352 :   registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
     675      541352 :   registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
     676             : 
     677      541352 :   registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
     678      541352 :   registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
     679             : 
     680      541352 :   registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
     681      541352 :   registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
     682             : 
     683      541352 :   registerSyntax("AddMaterialAction", "Materials/*");
     684      270676 :   syntax.registerSyntaxType("Materials/*", "MaterialName");
     685             : 
     686      541352 :   registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
     687      270676 :   syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
     688             : 
     689      541352 :   registerSyntax("AddPostprocessorAction", "Postprocessors/*");
     690      270676 :   syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
     691      270676 :   syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
     692             : 
     693      541352 :   registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
     694      270676 :   syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
     695             : 
     696      541352 :   registerSyntax("AddReporterAction", "Reporters/*");
     697      270676 :   syntax.registerSyntaxType("Reporters/*", "ReporterName");
     698             : 
     699      541352 :   registerSyntax("AddPositionsAction", "Positions/*");
     700      270676 :   syntax.registerSyntaxType("Positions/*", "PositionsName");
     701             : 
     702      541352 :   registerSyntax("AddTimesAction", "Times/*");
     703      270676 :   syntax.registerSyntaxType("Times/*", "TimesName");
     704             : 
     705      541352 :   registerSyntax("AddDamperAction", "Dampers/*");
     706             : 
     707      541352 :   registerSyntax("AddOutputAction", "Outputs/*");
     708      541352 :   registerSyntax("CommonOutputAction", "Outputs");
     709      541352 :   registerSyntax("MaterialOutputAction", "Outputs");
     710      541352 :   registerSyntax("AutoCheckpointAction", "Outputs");
     711      270676 :   syntax.registerSyntaxType("Outputs/*", "OutputName");
     712             : 
     713             :   // Note: Preconditioner Actions will be built by this setup action
     714      541352 :   registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
     715      541352 :   registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
     716             : 
     717      541352 :   registerSyntax("CreateExecutionerAction", "Executioner");
     718      541352 :   registerSyntax("ReadExecutorParamsAction", "Executors/*");
     719             : 
     720      541352 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
     721      541352 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
     722      541352 :   registerSyntaxTask(
     723             :       "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
     724      541352 :   registerSyntaxTask(
     725             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
     726      541352 :   registerSyntaxTask(
     727             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
     728      270676 :   syntax.registerSyntaxType("Executors/*", "ExecutorName");
     729             : 
     730      541352 :   registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
     731      541352 :   registerSyntax("SetupPredictorAction", "Executioner/Predictor");
     732             : #ifdef LIBMESH_ENABLE_AMR
     733      541352 :   registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
     734             : #endif
     735             : 
     736      541352 :   registerSyntax("PartitionerAction", "Mesh/Partitioner");
     737             : 
     738      541352 :   registerSyntax("AddDiracKernelAction", "DiracKernels/*");
     739             : 
     740      541352 :   registerSyntax("AddDGKernelAction", "DGKernels/*");
     741      541352 :   registerSyntax("AddFVKernelAction", "FVKernels/*");
     742      541352 :   registerSyntax("AddFVBCAction", "FVBCs/*");
     743      541352 :   registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
     744      541352 :   registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
     745      541352 :   registerSyntax("CheckFVBCAction", "FVBCs");
     746             : 
     747      541352 :   registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
     748             : 
     749      541352 :   registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
     750             : 
     751      541352 :   registerSyntax("AddConstraintAction", "Constraints/*");
     752             : 
     753      541352 :   registerSyntax("AddControlAction", "Controls/*");
     754      541352 :   registerSyntax("AddChainControlAction", "ChainControls/*");
     755      541352 :   registerSyntax("AddBoundAction", "Bounds/*");
     756      541352 :   registerSyntax("AddBoundsVectorsAction", "Bounds");
     757             : 
     758             :   // UserObject and some derived classes
     759      541352 :   registerSyntax("AddUserObjectAction", "UserObjects/*");
     760      270676 :   syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
     761             : 
     762      541352 :   registerSyntax("AddCorrectorAction", "Correctors/*");
     763      270676 :   syntax.registerSyntaxType("Correctors/*", "UserObjectName");
     764             : 
     765      541352 :   registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
     766      270676 :   syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
     767             : 
     768      541352 :   registerSyntax("AddNodalNormalsAction", "NodalNormals");
     769             : 
     770             :   // FVInterpolationMethods
     771      541352 :   registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
     772      270676 :   syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
     773             : 
     774             :   // Indicator
     775      541352 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
     776      541352 :   registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
     777      270676 :   syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
     778             : 
     779             :   // Marker
     780      541352 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
     781      541352 :   registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
     782      270676 :   syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
     783             : 
     784             :   // New Adaptivity System
     785      541352 :   registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
     786             : 
     787             :   // Deprecated Block
     788      541352 :   registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
     789             : 
     790             :   // Multi Apps
     791      541352 :   registerSyntax("AddMultiAppAction", "MultiApps/*");
     792      270676 :   syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
     793             : 
     794             :   // Transfers
     795      541352 :   registerSyntax("AddTransferAction", "Transfers/*");
     796             : 
     797             :   // Material derivative test
     798      541352 :   registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
     799      541352 :   registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
     800             : 
     801      541352 :   registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
     802             : 
     803             :   // Application Block System
     804      541352 :   registerSyntax("CreateApplicationBlockAction", "Application");
     805             : 
     806             : #ifdef MOOSE_MFEM_ENABLED
     807      405976 :   registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
     808      405976 :   registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
     809      405976 :   registerSyntaxTask(
     810             :       "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
     811      405976 :   registerSyntaxTask(
     812             :       "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
     813      405976 :   registerSyntaxTask("AddMFEMPreconditionerAction", "Preconditioner/*", "add_mfem_preconditioner");
     814      405976 :   registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
     815      202988 :   syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
     816             : #endif
     817             : 
     818      541352 :   registerSyntax("NEML2ActionCommon", "NEML2");
     819      473683 :   registerSyntax("NEML2Action", "NEML2/*");
     820             : 
     821       67669 :   addActionTypes(syntax);
     822       67669 : }
     823             : 
     824             : void
     825           0 : associateSyntax(Syntax & syntax, ActionFactory & action_factory)
     826             : {
     827           0 :   associateSyntaxInner(syntax, action_factory);
     828           0 :   registerActions(syntax, action_factory);
     829           0 : }
     830             : 
     831             : void
     832           0 : setSolverDefaults(FEProblemBase & problem)
     833             : {
     834             :   // May be a touch expensive to create a new DM every time, but probably safer to do it this way
     835           0 :   Moose::PetscSupport::petscSetDefaults(problem);
     836           0 : }
     837             : 
     838             : MPI_Comm
     839     1207334 : swapLibMeshComm(MPI_Comm new_comm)
     840             : {
     841     1207334 :   MPI_Comm old_comm = PETSC_COMM_WORLD;
     842     1207334 :   PETSC_COMM_WORLD = new_comm;
     843     1207334 :   return old_comm;
     844             : }
     845             : 
     846             : static bool _color_console = isatty(fileno(stdout));
     847             : 
     848             : bool
     849     9905253 : colorConsole()
     850             : {
     851     9905253 :   return _color_console;
     852             : }
     853             : 
     854             : bool
     855       55070 : setColorConsole(bool use_color, bool force)
     856             : {
     857       55070 :   _color_console = (isatty(fileno(stdout)) || force) && use_color;
     858       55070 :   return _color_console;
     859             : }
     860             : 
     861     2745167 : ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
     862     2745167 :   : _throw_on_error_before(Moose::_throw_on_error)
     863             : {
     864             :   mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
     865     2745167 :   Moose::_throw_on_error = throw_on_error;
     866     2745167 : }
     867             : 
     868     2745167 : ScopedThrowOnError::ScopedThrowOnError() : ScopedThrowOnError(true) {}
     869             : 
     870     2745167 : ScopedThrowOnError::~ScopedThrowOnError() { Moose::_throw_on_error = _throw_on_error_before; }
     871             : 
     872           6 : ScopedDeprecatedIsError::ScopedDeprecatedIsError(const bool deprecated_is_error)
     873           6 :   : _deprecated_is_error_before(Moose::_deprecated_is_error)
     874             : {
     875             :   mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
     876           6 :   Moose::_deprecated_is_error = deprecated_is_error;
     877           6 : }
     878             : 
     879           0 : ScopedDeprecatedIsError::ScopedDeprecatedIsError() : ScopedDeprecatedIsError(true) {}
     880             : 
     881           6 : ScopedDeprecatedIsError::~ScopedDeprecatedIsError()
     882             : {
     883           6 :   Moose::_deprecated_is_error = _deprecated_is_error_before;
     884           6 : }
     885             : 
     886             : std::string
     887       16265 : hitMessagePrefix(const hit::Node & node)
     888             : {
     889             :   // Strip meaningless line and column number for CLI args
     890       16265 :   if (node.filename() == "CLI_ARGS")
     891        1268 :     return "CLI_ARGS:\n";
     892             :   // If using the root node, don't add line info
     893       15631 :   if (node.isRoot())
     894           3 :     return node.filename() + ":\n";
     895       15628 :   return node.fileLocation() + ":\n";
     896             : }
     897             : 
     898             : bool _warnings_are_errors = false;
     899             : bool _deprecated_is_error = false;
     900             : bool _throw_on_error = false;
     901             : bool _throw_on_warning = false;
     902             : int interrupt_signal_number = 0;
     903             : bool show_multiple = false;
     904             : 
     905             : } // namespace Moose

Generated by: LCOV version 1.14