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

Generated by: LCOV version 1.14