LCOV - code coverage report
Current view: top level - src/base - Moose.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #33416 (b10b36) with base 9fbd27 Lines: 398 410 97.1 %
Date: 2026-07-23 16:15:30 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       68101 : registerAll(Factory & f, ActionFactory & af, Syntax & s)
      70             : {
      71       68101 :   registerObjects(f, {"MooseApp"});
      72       68101 :   associateSyntaxInner(s, af);
      73       68101 :   registerActions(s, af, {"MooseApp"});
      74      272404 :   registerAppDataFilePath("moose");
      75      272404 :   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      408606 :   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      391650 :   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      255725 :   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       68101 : }
     130             : 
     131             : void
     132       68101 : registerObjects(Factory & factory, const std::set<std::string> & obj_labels)
     133             : {
     134       68101 :   Registry::registerObjectsTo(factory, obj_labels);
     135       68101 : }
     136             : 
     137             : void
     138       68101 : 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      272404 :   registerMooseObjectTask("create_problem",               Problem,                   false);
     157      272404 :   registerMooseObjectTask("setup_executioner",            Executioner,               false);
     158      272404 :   registerMooseObjectTask("read_executor",                Executor,                  false);
     159      136202 :   registerTask("add_executor", true);
     160             : 
     161             :   // TODO Organize these somewhere
     162      136202 :   registerTask("init_physics", false);
     163      136202 :   registerTask("init_component_physics", false);
     164      136202 :   registerTask("meta_action_component", false);
     165      136202 :   registerTask("setup_component", false);
     166             :   // 'list_component' is used to retrieve ActionComponents for the syntax JSON
     167      136202 :   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      272404 :   registerMooseObjectTask("determine_system_type",            Executioner,               true);
     172             : 
     173      272404 :   registerMooseObjectTask("setup_mesh",                       MooseMesh,                 false);
     174      272404 :   registerMooseObjectTask("set_mesh_base",                    MooseMesh,                 false);
     175      272404 :   registerMooseObjectTask("init_mesh",                        MooseMesh,                 false);
     176      272404 :   registerMooseObjectTask("add_mesh_generator",               MeshGenerator,             false);
     177      136202 :   registerTask("create_added_mesh_generators", true);
     178      272404 :   registerMooseObjectTask("append_mesh_generator",            MeshGenerator,             false);
     179             : 
     180      272404 :   registerMooseObjectTask("add_kernel",                       Kernel,                    false);
     181      272404 :   appendMooseObjectTask  ("add_kernel",                       EigenKernel);
     182      272404 :   appendMooseObjectTask  ("add_kernel",                       VectorKernel);
     183      272404 :   appendMooseObjectTask  ("add_kernel",                       ArrayKernel);
     184      272404 :   appendMooseObjectTask  ("add_kernel",                       ADArrayKernel);
     185             : 
     186      272404 :   registerMooseObjectTask("add_variable",                     MooseVariableBase,         false);
     187      272404 :   registerMooseObjectTask("add_aux_variable",                 MooseVariableBase,         false);
     188      272404 :   registerMooseObjectTask("add_elemental_field_variable",     MooseVariableBase,         false);
     189      272404 :   registerMooseObjectTask("add_variables_physics",            MooseVariableBase,         false);
     190             : 
     191      272404 :   registerMooseObjectTask("add_nodal_kernel",                 NodalKernel,               false);
     192             : 
     193      272404 :   registerMooseObjectTask("add_functor_material",             FunctorMaterial,           false);
     194      272404 :   registerMooseObjectTask("add_material",                     MaterialBase,              false);
     195      272404 :   appendDeprecatedMooseObjectTask("add_material",             FunctorMaterial);
     196      272404 :   registerMooseObjectTask("add_materials_physics",            FunctorMaterial,           false);
     197      272404 :   appendMooseObjectTask  ("add_materials_physics",            MaterialBase);
     198             : 
     199      272404 :   registerMooseObjectTask("add_bc",                           BoundaryCondition,         false);
     200             : 
     201      272404 :   registerMooseObjectTask("add_function",                     Function,                  false);
     202             : 
     203      272404 :   registerMooseObjectTask("add_distribution",                 Distribution,              false);
     204      272404 :   registerMooseObjectTask("add_sampler",                      Sampler,                   false);
     205             : 
     206      272404 :   registerMooseObjectTask("add_aux_kernel",                   AuxKernel,                 false);
     207      272404 :   appendMooseObjectTask  ("add_aux_kernel",                   VectorAuxKernel);
     208      272404 :   appendMooseObjectTask  ("add_aux_kernel",                   ArrayAuxKernel);
     209             : 
     210      272404 :   registerMooseObjectTask("add_bound",                        Bounds,                    false);
     211             : 
     212      272404 :   registerMooseObjectTask("add_scalar_kernel",                ScalarKernel,              false);
     213      272404 :   registerMooseObjectTask("add_aux_scalar_kernel",            AuxScalarKernel,           false);
     214      272404 :   registerMooseObjectTask("add_dirac_kernel",                 DiracKernel,               false);
     215      272404 :   appendMooseObjectTask  ("add_dirac_kernel",                 VectorDiracKernel);
     216      272404 :   registerMooseObjectTask("add_dg_kernel",                    DGKernel,                  false);
     217      272404 :   registerMooseObjectTask("add_fv_kernel",                    FVKernel,                  false);
     218      272404 :   registerMooseObjectTask("add_interpolation_method",         FVInterpolationMethod,     false);
     219      272404 :   registerMooseObjectTask("add_interpolation_method_physics", FVInterpolationMethod,     false);
     220      272404 :   registerMooseObjectTask("add_linear_fv_kernel",             LinearFVKernel,            false);
     221      272404 :   registerMooseObjectTask("add_fv_bc",                        FVBoundaryCondition,       false);
     222      272404 :   registerMooseObjectTask("add_linear_fv_bc",                 LinearFVBoundaryCondition, false);
     223      272404 :   registerMooseObjectTask("add_fv_ik",                        FVInterfaceKernel,         false);
     224      272404 :   registerMooseObjectTask("add_interface_kernel",             InterfaceKernel,           false);
     225      272404 :   appendMooseObjectTask  ("add_interface_kernel",             VectorInterfaceKernel);
     226      272404 :   registerMooseObjectTask("add_constraint",                   Constraint,                false);
     227      272404 :   registerMooseObjectTask("add_hybridized_kernel",            HDGKernel,                 false);
     228      272404 :   registerMooseObjectTask("add_hybridized_integrated_bc",     HDGIntegratedBC,           false);
     229             : 
     230      272404 :   registerMooseObjectTask("add_ic",                           InitialCondition,          false);
     231      272404 :   appendMooseObjectTask  ("add_ic",                           ScalarInitialCondition);
     232      272404 :   registerMooseObjectTask("add_fv_ic",                        FVInitialCondition,        false);
     233      272404 :   registerMooseObjectTask("add_ics_physics",                  InitialCondition,          false);
     234      272404 :   appendMooseObjectTask  ("add_ics_physics",                  FVInitialCondition);
     235      272404 :   appendMooseObjectTask  ("add_ics_physics",                  ScalarInitialCondition);
     236             : 
     237      272404 :   registerMooseObjectTask("add_damper",                       Damper,                    false);
     238      272404 :   registerMooseObjectTask("setup_predictor",                  Predictor,                 false);
     239      272404 :   registerMooseObjectTask("add_time_steppers",                TimeStepper,               false);
     240      272404 :   registerMooseObjectTask("add_time_stepper",                 TimeStepper,               false);
     241      136202 :   registerTask           ("compose_time_stepper",                                    true);
     242      272404 :   registerMooseObjectTask("setup_time_integrators",           TimeIntegrator,            false);
     243      272404 :   registerMooseObjectTask("setup_time_integrator",            TimeIntegrator,            false);
     244      272404 :   registerMooseObjectTask("add_convergence",                  Convergence,               false);
     245             : 
     246      272404 :   registerMooseObjectTask("add_preconditioning",              MoosePreconditioner,       false);
     247      272404 :   registerMooseObjectTask("add_field_split",                  Split,                     false);
     248             : 
     249      272404 :   registerMooseObjectTask("add_mesh_division",                MeshDivision,              false);
     250      272404 :   registerMooseObjectTask("add_user_object",                  UserObject,                false);
     251      272404 :   appendMooseObjectTask  ("add_user_object",                  Postprocessor);
     252             : 
     253      272404 :   appendDeprecatedMooseObjectTask("add_user_object",          Corrector);
     254      272404 :   registerMooseObjectTask("add_corrector",                    Corrector,                 false);
     255      272404 :   appendDeprecatedMooseObjectTask("add_user_object",          MeshModifier);
     256      272404 :   registerMooseObjectTask("add_mesh_modifier",                MeshModifier,              false);
     257             : 
     258      272404 :   registerMooseObjectTask("add_postprocessor",                Postprocessor,             false);
     259      272404 :   registerMooseObjectTask("add_vector_postprocessor",         VectorPostprocessor,       false);
     260      272404 :   registerMooseObjectTask("add_reporter",                     Reporter,                  false);
     261             : 
     262      272404 :   registerMooseObjectTask("add_positions",                    Positions,                 false);
     263      272404 :   registerMooseObjectTask("add_times",                        Times,                     false);
     264             : 
     265      272404 :   registerMooseObjectTask("add_indicator",                    Indicator,                 false);
     266      272404 :   registerMooseObjectTask("add_marker",                       Marker,                    false);
     267             : 
     268      272404 :   registerMooseObjectTask("add_multi_app",                    MultiApp,                  false);
     269      272404 :   registerMooseObjectTask("add_transfer",                     Transfer,                  false);
     270             : 
     271      272404 :   registerMooseObjectTask("add_output",                       Output,                    false);
     272             : 
     273      272404 :   registerMooseObjectTask("add_control",                      Control,                   false);
     274      272404 :   registerMooseObjectTask("add_chain_control",                ChainControl,              false);
     275      272404 :   registerMooseObjectTask("add_partitioner",                  MoosePartitioner,          false);
     276             : 
     277             :   // clang-format on
     278             : 
     279      136202 :   registerTask("dynamic_object_registration", false);
     280      136202 :   registerTask("common_output", true);
     281      136202 :   registerTask("setup_recover_file_base", true);
     282      136202 :   registerTask("recover_meta_data", true);
     283             : 
     284      136202 :   registerTask("add_bounds_vectors", false);
     285      136202 :   registerTask("add_periodic_bc", false);
     286      136202 :   registerTask("add_aux_variable", false);
     287      136202 :   registerTask("add_external_aux_variables", true);
     288      136202 :   registerTask("add_variable", false);
     289      136202 :   registerTask("add_mortar_variable", false);
     290             : 
     291      136202 :   registerTask("execute_mesh_generators", true);
     292      136202 :   registerTask("uniform_refine_mesh", false);
     293      136202 :   registerTask("prepare_mesh", false);
     294      136202 :   registerTask("delete_remote_elements_after_late_geometric_ghosting", false);
     295      136202 :   registerTask("setup_mesh_complete", true); // calls prepare
     296      136202 :   registerTask("post_mesh_prepared", false);
     297      136202 :   registerTask("add_geometric_rm", false);
     298      136202 :   registerTask("attach_geometric_rm", true);
     299      136202 :   registerTask("attach_geometric_rm_final", true);
     300             : 
     301      136202 :   registerTask("init_displaced_problem", false);
     302             : 
     303      136202 :   registerTask("add_algebraic_rm", false);
     304      136202 :   registerTask("attach_algebraic_rm", true);
     305      136202 :   registerTask("add_coupling_rm", false);
     306      136202 :   registerTask("attach_coupling_rm", true);
     307      136202 :   registerTask("init_problem", true);
     308      136202 :   registerTask("check_copy_nodal_vars", true);
     309      136202 :   registerTask("copy_nodal_vars", true);
     310      136202 :   registerTask("copy_nodal_aux_vars", true);
     311      136202 :   registerTask("copy_vars_physics", false);
     312      136202 :   registerTask("setup_postprocessor_data", false);
     313      136202 :   registerTask("setup_time_steppers", true);
     314             : 
     315      136202 :   registerTask("setup_dampers", true);
     316      136202 :   registerTask("check_integrity", true);
     317      136202 :   registerTask("resolve_optional_materials", true);
     318      136202 :   registerTask("check_integrity_early", true);
     319      136202 :   registerTask("check_integrity_early_physics", false);
     320      136202 :   registerTask("setup_quadrature", true);
     321      136202 :   registerTask("create_tagged_matrices", true);
     322             : 
     323      136202 :   registerTask("mesh_modifiers", false);
     324             : 
     325             :   /// Additional Actions
     326      136202 :   registerTask("no_action", false); // Used for Empty Action placeholders
     327      136202 :   registerTask("set_global_params", false);
     328      136202 :   registerTask("setup_adaptivity", false);
     329      136202 :   registerTask("meta_action", false);
     330      136202 :   registerTask("setup_residual_debug", false);
     331      136202 :   registerTask("setup_oversampling", false);
     332      136202 :   registerTask("deprecated_block", false);
     333      136202 :   registerTask("set_adaptivity_options", false);
     334      136202 :   registerTask("add_mortar_interface", false);
     335      136202 :   registerTask("coupling_functor_check", true);
     336      136202 :   registerTask("add_master_action_material", false);
     337      136202 :   registerTask("setup_projected_properties", false);
     338      136202 :   registerTask("create_application_block", false);
     339             : 
     340             :   // Dummy Actions (useful for sync points in the dependencies)
     341      136202 :   registerTask("setup_function_complete", false);
     342      136202 :   registerTask("setup_variable_complete", false);
     343      136202 :   registerTask("setup_executioner_complete", false);
     344      136202 :   registerTask("ready_to_init", true);
     345             : 
     346             :   // Output related actions
     347      136202 :   registerTask("add_output_aux_variables", true);
     348      136202 :   registerTask("check_output", true);
     349      136202 :   registerTask("declare_late_reporters", true);
     350             : 
     351      136202 :   registerTask("create_problem_default", true);
     352      136202 :   registerTask("create_problem_custom", false);
     353      136202 :   registerTask("create_problem_complete", false);
     354             : 
     355      136202 :   registerTask("add_default_nonlinear_convergence", true);
     356      136202 :   registerTask("add_default_multiapp_fixed_point_convergence", true);
     357      136202 :   registerTask("add_default_steady_state_convergence", true);
     358             : 
     359      136202 :   registerTask("chain_control_setup", true);
     360      136202 :   registerTask("start_webservercontrol", true);
     361             : 
     362             :   // Action for setting up the signal-based checkpoint
     363      136202 :   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      136202 :   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      102290 :   registerTask("add_mfem_problem_operator", true);
     495      204580 :   addTaskDependency("add_mfem_problem_operator", "init_mesh");
     496      204580 :   addTaskDependency("add_variable", "add_mfem_problem_operator");
     497      204580 :   addTaskDependency("add_aux_variable", "add_mfem_problem_operator");
     498      204580 :   addTaskDependency("add_elemental_field_variable", "add_mfem_problem_operator");
     499      204580 :   addTaskDependency("add_bc", "add_mfem_problem_operator");
     500      204580 :   addTaskDependency("add_kernel", "add_mfem_problem_operator");
     501             : 
     502             :   // add SubMeshes
     503      204580 :   registerMooseObjectTask("add_mfem_submeshes", MFEMSubMesh, false);
     504      204580 :   addTaskDependency("add_mfem_submeshes", "create_problem_complete");
     505             : 
     506             :   // add SubMesh transfers
     507      204580 :   appendMooseObjectTask("add_transfer", MFEMSubMeshTransfer);
     508             : 
     509             :   // add FESpaces
     510      204580 :   registerMooseObjectTask("add_mfem_fespaces", MFEMFESpace, false);
     511      204580 :   appendMooseObjectTask("add_mfem_fespaces", MFEMFECollection);
     512      204580 :   addTaskDependency("add_mfem_fespaces", "add_mfem_submeshes");
     513             : 
     514             :   // add FESpace hierarchies (must come after fespaces so the base fespace is available)
     515      204580 :   registerMooseObjectTask("add_mfem_fespace_hierarchies", MFEMFESpaceHierarchy, false);
     516      204580 :   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      204580 :   addTaskDependency("add_variable", "add_mfem_fespace_hierarchies");
     521      204580 :   addTaskDependency("add_aux_variable", "add_mfem_fespace_hierarchies");
     522      204580 :   addTaskDependency("add_elemental_field_variable", "add_mfem_fespace_hierarchies");
     523             :   // kernels only need fespaces, not hierarchies
     524      204580 :   addTaskDependency("add_kernel", "add_mfem_fespaces");
     525             : 
     526             :   // add QuadratureFunctions
     527      204580 :   registerMooseObjectTask("add_mfem_quadrature_functions", MFEMQuadratureFunction, false);
     528             :   // after the last task declaring coefficients the quadrature functions may project
     529      204580 :   addTaskDependency("add_mfem_quadrature_functions", "add_functor_material");
     530             :   // before the tasks constructing objects that may consume the declared coefficients
     531      204580 :   addTaskDependency("add_kernel", "add_mfem_quadrature_functions");
     532      204580 :   addTaskDependency("add_bc", "add_mfem_quadrature_functions");
     533      204580 :   addTaskDependency("add_aux_kernel", "add_mfem_quadrature_functions");
     534             : 
     535             :   // add complex kernels
     536      204580 :   registerMooseObjectTask("add_mfem_complex_kernel_components", Kernel, false);
     537      204580 :   registerMooseObjectTask("add_mfem_complex_bc_components", BoundaryCondition, false);
     538      204580 :   addTaskDependency("add_mfem_complex_kernel_components", "add_mfem_fespaces");
     539      204580 :   addTaskDependency("add_mfem_complex_bc_components", "add_mfem_fespaces");
     540      204580 :   addTaskDependency("add_mfem_complex_kernel_components", "add_kernel");
     541      204580 :   addTaskDependency("add_mfem_complex_bc_components", "add_bc");
     542             : 
     543             :   // set mesh FE space
     544      102290 :   registerTask("set_mesh_fe_space", true);
     545      204580 :   addTaskDependency("set_mesh_fe_space", "add_variable");
     546      204580 :   addTaskDependency("set_mesh_fe_space", "init_mesh");
     547             : 
     548             :   // add solver objects.
     549      204580 :   registerMooseObjectTask("add_mfem_solver", Moose::MFEM::SolverBase, true);
     550      204580 :   addTaskDependency("add_mfem_solver", "add_mfem_fespace_hierarchies");
     551      204580 :   addTaskDependency("add_mfem_solver", "add_mfem_problem_operator");
     552      204580 :   addTaskDependency("add_mfem_solver", "add_variable");
     553      102290 :   registerTask("resolve_mfem_solvers", true);
     554      204580 :   addTaskDependency("resolve_mfem_solvers", "add_mfem_solver");
     555      204580 :   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      272404 :   addTaskDependency("add_interpolation_method_physics", "add_interpolation_method");
     561      272404 :   addTaskDependency("add_fv_kernel", "add_interpolation_method_physics");
     562      272404 :   addTaskDependency("add_linear_fv_kernel", "add_interpolation_method_physics");
     563      272404 :   addTaskDependency("add_fv_kernel", "add_interpolation_method");
     564      272404 :   addTaskDependency("add_linear_fv_kernel", "add_interpolation_method");
     565             : 
     566      136202 :   registerTask("parse_neml2", /*required=*/false);
     567      272404 :   addTaskDependency("add_material", "parse_neml2");
     568      204303 :   addTaskDependency("add_user_object", "parse_neml2");
     569       68101 : }
     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       68101 : registerActions(Syntax & syntax,
     608             :                 ActionFactory & action_factory,
     609             :                 const std::set<std::string> & obj_labels)
     610             : {
     611       68101 :   Registry::registerActionsTo(action_factory, obj_labels);
     612             : 
     613             :   // Add these actions here so they are always executed last, without setting any dependency
     614      136202 :   registerTask("dump_objects", false);
     615       68101 :   registerTask("finish_input_file_output", false);
     616       68101 : }
     617             : 
     618             : void
     619       68101 : 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      544808 :   registerSyntax("DiffusionCG", "Physics/Diffusion/ContinuousGalerkin/*");
     627      544808 :   registerSyntax("DiffusionFV", "Physics/Diffusion/FiniteVolume/*");
     628             : 
     629      544808 :   registerSyntax("AddActionComponentAction", "ActionComponents/*");
     630      544808 :   registerSyntax("CombineComponentsMeshes", "ActionComponents");
     631             : 
     632      544808 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "check_copy_nodal_vars");
     633      544808 :   registerSyntaxTask("CopyNodalVarsAction", "Variables/*", "copy_nodal_vars");
     634      544808 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "check_copy_nodal_vars");
     635      544808 :   registerSyntaxTask("CopyNodalVarsAction", "AuxVariables/*", "copy_nodal_aux_vars");
     636             : 
     637      544808 :   registerSyntaxTask("AddKernelAction", "Kernels/*", "add_kernel");
     638      544808 :   registerSyntaxTask("AddNodalKernelAction", "NodalKernels/*", "add_nodal_kernel");
     639      544808 :   registerSyntaxTask("AddKernelAction", "AuxKernels/*", "add_aux_kernel");
     640             : 
     641      544808 :   registerSyntaxTask("AddHDGKernelAction", "HDGKernels/*", "add_hybridized_kernel");
     642             : 
     643      544808 :   registerSyntax("AddAuxKernelAction", "AuxVariables/*/AuxKernel");
     644             : 
     645      544808 :   registerSyntaxTask("AddScalarKernelAction", "ScalarKernels/*", "add_scalar_kernel");
     646      544808 :   registerSyntaxTask("AddScalarKernelAction", "AuxScalarKernels/*", "add_aux_scalar_kernel");
     647             : 
     648      544808 :   registerSyntaxTask("AddBCAction", "BCs/*", "add_bc");
     649             : 
     650      544808 :   registerSyntax("CreateProblemAction", "Problem");
     651      544808 :   registerSyntax("DynamicObjectRegistrationAction", "Problem");
     652             : 
     653      544808 :   registerSyntax("SetupMeshAction", "Mesh");
     654      544808 :   registerSyntax("SetupMeshCompleteAction", "Mesh");
     655             :   // Components should be able create a Mesh without a Mesh block
     656      544808 :   registerSyntax("CreateMeshSetupActionsForComponents", "ActionComponents");
     657      544808 :   registerSyntax("CreateDisplacedProblemAction", "Mesh");
     658      544808 :   registerSyntax("DisplayGhostingAction", "Mesh");
     659      544808 :   registerSyntax("AddMeshGeneratorAction", "Mesh/*");
     660      544808 :   registerSyntaxTask("EmptyAction", "Mesh/BatchMeshGeneratorAction", "no_action");
     661      544808 :   registerSyntax("BatchMeshGeneratorAction", "Mesh/BatchMeshGeneratorAction/*");
     662      544808 :   registerSyntax("ElementIDOutputAction", "Mesh");
     663      272404 :   syntax.registerSyntaxType("Mesh/*", "MeshGeneratorName");
     664             : 
     665      544808 :   registerSyntax("AddFunctionAction", "Functions/*");
     666      272404 :   syntax.registerSyntaxType("Functions/*", "FunctionName");
     667             : 
     668      544808 :   registerSyntax("AddMeshDivisionAction", "MeshDivisions/*");
     669      272404 :   syntax.registerSyntaxType("MeshDivisions/*", "MeshDivisionName");
     670      544808 :   registerSyntax("AddConvergenceAction", "Convergence/*");
     671      272404 :   syntax.registerSyntaxType("Convergence/*", "ConvergenceName");
     672             : 
     673      544808 :   registerSyntax("GlobalParamsAction", "GlobalParams");
     674             : 
     675      544808 :   registerSyntax("AddDistributionAction", "Distributions/*");
     676      272404 :   syntax.registerSyntaxType("Distributions/*", "DistributionName");
     677             : 
     678      544808 :   registerSyntax("AddSamplerAction", "Samplers/*");
     679      272404 :   syntax.registerSyntaxType("Samplers/*", "SamplerName");
     680             : 
     681      544808 :   registerSyntax("SetupDebugAction", "Debug");
     682      544808 :   registerSyntax("SetupResidualDebugAction", "Debug");
     683             : 
     684             :   /// Variable/AuxVariable Actions
     685      544808 :   registerSyntax("AddVariableAction", "Variables/*");
     686      272404 :   syntax.registerSyntaxType("Variables/*", "VariableName");
     687      272404 :   syntax.registerSyntaxType("Variables/*", "NonlinearVariableName");
     688             : 
     689      544808 :   registerSyntax("AddICAction", "Variables/*/InitialCondition");
     690      544808 :   registerSyntax("AddFVICAction", "Variables/*/FVInitialCondition");
     691             : 
     692      544808 :   registerSyntax("AddAuxVariableAction", "AuxVariables/*");
     693      272404 :   syntax.registerSyntaxType("AuxVariables/*", "VariableName");
     694      272404 :   syntax.registerSyntaxType("AuxVariables/*", "AuxVariableName");
     695             : 
     696      544808 :   registerSyntax("AddICAction", "AuxVariables/*/InitialCondition");
     697      544808 :   registerSyntax("AddFVICAction", "AuxVariables/*/FVInitialCondition");
     698             : 
     699      544808 :   registerSyntaxTask("EmptyAction", "BCs/Periodic", "no_action"); // placeholder
     700      544808 :   registerSyntax("AddPeriodicBCAction", "BCs/Periodic/*");
     701             : 
     702      544808 :   registerSyntaxTask("AddInitialConditionAction", "ICs/*", "add_ic");
     703      544808 :   registerSyntaxTask("AddFVInitialConditionAction", "FVICs/*", "add_fv_ic");
     704             : 
     705      544808 :   registerSyntax("AddMaterialAction", "Materials/*");
     706      272404 :   syntax.registerSyntaxType("Materials/*", "MaterialName");
     707             : 
     708      544808 :   registerSyntax("AddFunctorMaterialAction", "FunctorMaterials/*");
     709      272404 :   syntax.registerSyntaxType("FunctorMaterials/*", "MaterialName");
     710             : 
     711      544808 :   registerSyntax("AddPostprocessorAction", "Postprocessors/*");
     712      272404 :   syntax.registerSyntaxType("Postprocessors/*", "PostprocessorName");
     713      272404 :   syntax.registerSyntaxType("Postprocessors/*", "UserObjectName");
     714             : 
     715      544808 :   registerSyntax("AddVectorPostprocessorAction", "VectorPostprocessors/*");
     716      272404 :   syntax.registerSyntaxType("VectorPostprocessors/*", "VectorPostprocessorName");
     717             : 
     718      544808 :   registerSyntax("AddReporterAction", "Reporters/*");
     719      272404 :   syntax.registerSyntaxType("Reporters/*", "ReporterName");
     720             : 
     721      544808 :   registerSyntax("AddPositionsAction", "Positions/*");
     722      272404 :   syntax.registerSyntaxType("Positions/*", "PositionsName");
     723             : 
     724      544808 :   registerSyntax("AddTimesAction", "Times/*");
     725      272404 :   syntax.registerSyntaxType("Times/*", "TimesName");
     726             : 
     727      544808 :   registerSyntax("AddDamperAction", "Dampers/*");
     728             : 
     729      544808 :   registerSyntax("AddOutputAction", "Outputs/*");
     730      544808 :   registerSyntax("CommonOutputAction", "Outputs");
     731      544808 :   registerSyntax("MaterialOutputAction", "Outputs");
     732      544808 :   registerSyntax("AutoCheckpointAction", "Outputs");
     733      272404 :   syntax.registerSyntaxType("Outputs/*", "OutputName");
     734             : 
     735             :   // Note: Preconditioner Actions will be built by this setup action
     736      544808 :   registerSyntax("SetupPreconditionerAction", "Preconditioning/*");
     737      544808 :   registerSyntax("AddFieldSplitAction", "Preconditioning/*/*");
     738             : 
     739      544808 :   registerSyntax("CreateExecutionerAction", "Executioner");
     740      544808 :   registerSyntax("ReadExecutorParamsAction", "Executors/*");
     741             : 
     742      544808 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeSteppers/*", "add_time_steppers");
     743      544808 :   registerSyntaxTask("AddTimeStepperAction", "Executioner/TimeStepper", "add_time_stepper");
     744      544808 :   registerSyntaxTask(
     745             :       "ComposeTimeStepperAction", "Executioner/TimeSteppers", "compose_time_stepper");
     746      544808 :   registerSyntaxTask(
     747             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrators/*", "setup_time_integrators");
     748      544808 :   registerSyntaxTask(
     749             :       "SetupTimeIntegratorAction", "Executioner/TimeIntegrator", "setup_time_integrator");
     750      272404 :   syntax.registerSyntaxType("Executors/*", "ExecutorName");
     751             : 
     752      544808 :   registerSyntax("SetupQuadratureAction", "Executioner/Quadrature");
     753      544808 :   registerSyntax("SetupPredictorAction", "Executioner/Predictor");
     754             : #ifdef LIBMESH_ENABLE_AMR
     755      544808 :   registerSyntax("AdaptivityAction", "Executioner/Adaptivity");
     756             : #endif
     757             : 
     758      544808 :   registerSyntax("PartitionerAction", "Mesh/Partitioner");
     759             : 
     760      544808 :   registerSyntax("AddDiracKernelAction", "DiracKernels/*");
     761             : 
     762      544808 :   registerSyntax("AddDGKernelAction", "DGKernels/*");
     763      544808 :   registerSyntax("AddFVKernelAction", "FVKernels/*");
     764      544808 :   registerSyntax("AddFVBCAction", "FVBCs/*");
     765      544808 :   registerSyntax("AddLinearFVBCAction", "LinearFVBCs/*");
     766      544808 :   registerSyntax("AddFVInterfaceKernelAction", "FVInterfaceKernels/*");
     767      544808 :   registerSyntax("CheckFVBCAction", "FVBCs");
     768             : 
     769      544808 :   registerSyntax("AddLinearFVKernelAction", "LinearFVKernels/*");
     770             : 
     771      544808 :   registerSyntax("AddInterfaceKernelAction", "InterfaceKernels/*");
     772             : 
     773      544808 :   registerSyntax("AddConstraintAction", "Constraints/*");
     774             : 
     775      544808 :   registerSyntax("AddControlAction", "Controls/*");
     776      544808 :   registerSyntax("AddChainControlAction", "ChainControls/*");
     777      544808 :   registerSyntax("AddBoundAction", "Bounds/*");
     778      544808 :   registerSyntax("AddBoundsVectorsAction", "Bounds");
     779             : 
     780             :   // UserObject and some derived classes
     781      544808 :   registerSyntax("AddUserObjectAction", "UserObjects/*");
     782      272404 :   syntax.registerSyntaxType("UserObjects/*", "UserObjectName");
     783             : 
     784      544808 :   registerSyntax("AddCorrectorAction", "Correctors/*");
     785      272404 :   syntax.registerSyntaxType("Correctors/*", "UserObjectName");
     786             : 
     787      544808 :   registerSyntax("AddMeshModifiersAction", "MeshModifiers/*");
     788      272404 :   syntax.registerSyntaxType("MeshModifiers/*", "UserObjectName");
     789             : 
     790      544808 :   registerSyntax("AddNodalNormalsAction", "NodalNormals");
     791             : 
     792             :   // FVInterpolationMethods
     793      544808 :   registerSyntax("AddFVInterpolationMethodAction", "FVInterpolationMethods/*");
     794      272404 :   syntax.registerSyntaxType("FVInterpolationMethods/*", "InterpolationMethodName");
     795             : 
     796             :   // Indicator
     797      544808 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Indicators/*");
     798      544808 :   registerSyntax("AddIndicatorAction", "Adaptivity/Indicators/*");
     799      272404 :   syntax.registerSyntaxType("Adaptivity/Indicators/*", "IndicatorName");
     800             : 
     801             :   // Marker
     802      544808 :   registerSyntax("AddElementalFieldAction", "Adaptivity/Markers/*");
     803      544808 :   registerSyntax("AddMarkerAction", "Adaptivity/Markers/*");
     804      272404 :   syntax.registerSyntaxType("Adaptivity/Markers/*", "MarkerName");
     805             : 
     806             :   // New Adaptivity System
     807      544808 :   registerSyntax("SetAdaptivityOptionsAction", "Adaptivity");
     808             : 
     809             :   // Deprecated Block
     810      544808 :   registerSyntax("DeprecatedBlockAction", "DeprecatedBlock");
     811             : 
     812             :   // Multi Apps
     813      544808 :   registerSyntax("AddMultiAppAction", "MultiApps/*");
     814      272404 :   syntax.registerSyntaxType("MultiApps/*", "MultiAppName");
     815             : 
     816             :   // Transfers
     817      544808 :   registerSyntax("AddTransferAction", "Transfers/*");
     818             : 
     819             :   // Material derivative test
     820      544808 :   registerSyntaxTask("EmptyAction", "Debug/MaterialDerivativeTest", "no_action"); // placeholder
     821      544808 :   registerSyntax("MaterialDerivativeTestAction", "Debug/MaterialDerivativeTest/*");
     822             : 
     823      544808 :   registerSyntax("ProjectedStatefulMaterialStorageAction", "ProjectedStatefulMaterialStorage/*");
     824             : 
     825             :   // Application Block System
     826      544808 :   registerSyntax("CreateApplicationBlockAction", "Application");
     827             : 
     828             : #ifdef MOOSE_MFEM_ENABLED
     829      409160 :   registerSyntaxTask("AddMFEMSubMeshAction", "SubMeshes/*", "add_mfem_submeshes");
     830      409160 :   registerSyntaxTask("AddMFEMFESpaceAction", "FESpaces/*", "add_mfem_fespaces");
     831      409160 :   registerSyntaxTask(
     832             :       "AddMFEMQuadratureFunctionAction", "QuadratureFunctions/*", "add_mfem_quadrature_functions");
     833      409160 :   registerSyntaxTask(
     834             :       "AddMFEMFESpaceHierarchyAction", "FESpaceHierarchies/*", "add_mfem_fespace_hierarchies");
     835      409160 :   registerSyntaxTask(
     836             :       "AddMFEMComplexKernelComponentAction", "Kernels/*/*", "add_mfem_complex_kernel_components");
     837      409160 :   registerSyntaxTask(
     838             :       "AddMFEMComplexBCComponentAction", "BCs/*/*", "add_mfem_complex_bc_components");
     839      409160 :   registerSyntaxTask("AddMFEMSolverAction", "Solvers/*", "add_mfem_solver");
     840      204580 :   syntax.registerSyntaxType("Solvers/*", "MFEMSolverName");
     841             : #endif
     842             : 
     843      544808 :   registerSyntax("NEML2ActionCommon", "NEML2");
     844      476707 :   registerSyntax("NEML2Action", "NEML2/*");
     845             : 
     846       68101 :   addActionTypes(syntax);
     847       68101 : }
     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     1207244 : swapLibMeshComm(MPI_Comm new_comm)
     865             : {
     866     1207244 :   MPI_Comm old_comm = PETSC_COMM_WORLD;
     867     1207244 :   PETSC_COMM_WORLD = new_comm;
     868     1207244 :   return old_comm;
     869             : }
     870             : 
     871             : static bool _color_console = isatty(fileno(stdout));
     872             : 
     873             : bool
     874     9909602 : colorConsole()
     875             : {
     876     9909602 :   return _color_console;
     877             : }
     878             : 
     879             : bool
     880       55469 : setColorConsole(bool use_color, bool force)
     881             : {
     882       55469 :   _color_console = (isatty(fileno(stdout)) || force) && use_color;
     883       55469 :   return _color_console;
     884             : }
     885             : 
     886     2765873 : ScopedThrowOnError::ScopedThrowOnError(const bool throw_on_error)
     887     2765873 :   : _throw_on_error_before(Moose::_throw_on_error)
     888             : {
     889             :   mooseAssert(!libMesh::Threads::in_threads, "Cannot be used in threads");
     890     2765873 :   Moose::_throw_on_error = throw_on_error;
     891     2765873 : }
     892             : 
     893     2765873 : ScopedThrowOnError::ScopedThrowOnError() : ScopedThrowOnError(true) {}
     894             : 
     895     2765873 : 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       16530 : hitMessagePrefix(const hit::Node & node)
     913             : {
     914             :   // Strip meaningless line and column number for CLI args
     915       16530 :   if (node.filename() == "CLI_ARGS")
     916        1268 :     return "CLI_ARGS:\n";
     917             :   // If using the root node, don't add line info
     918       15896 :   if (node.isRoot())
     919           3 :     return node.filename() + ":\n";
     920       15893 :   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