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

Generated by: LCOV version 1.14