https://mooseframework.inl.gov
MooseApp.h
Go to the documentation of this file.
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 #pragma once
11 
12 #ifdef MOOSE_LIBTORCH_ENABLED
13 // Libtorch includes
14 #include <torch/types.h>
15 #include <torch/mps.h>
16 #include <torch/cuda.h>
17 #include <c10/core/DeviceType.h>
18 #endif
19 
20 // MOOSE includes
21 #include "Moose.h"
22 #include "Builder.h"
23 #include "ActionWarehouse.h"
24 #include "Factory.h"
25 #include "ActionFactory.h"
26 #include "OutputWarehouse.h"
27 #include "RestartableData.h"
28 #include "RestartableDataMap.h"
29 #include "ConsoleStreamInterface.h"
30 #include "PerfGraph.h"
31 #include "PerfGraphInterface.h"
32 #include "TheWarehouse.h"
33 #include "RankMap.h"
34 #include "MeshGeneratorSystem.h"
35 #include "ChainControlDataSystem.h"
36 #include "RestartableDataReader.h"
37 #include "Backup.h"
38 #include "MooseBase.h"
39 #include "Capability.h"
40 #include "MoosePassKey.h"
41 #include "SystemInfo.h"
42 #include "Syntax.h"
43 
44 #include "libmesh/parallel_object.h"
45 #include "libmesh/mesh_base.h"
46 #include "libmesh/point.h"
47 
48 // C++ includes
49 #include <list>
50 #include <map>
51 #include <set>
52 #include <unordered_set>
53 #include <typeindex>
54 #include <filesystem>
55 #include <variant>
56 
57 // Forward declarations
58 class AppFactory;
59 class Executioner;
60 class Executor;
61 class NullExecutor;
62 class FEProblemBase;
64 class CommandLine;
66 class ReporterData;
67 class SolutionInvalidity;
68 class MultiApp;
69 #ifdef MOOSE_MFEM_ENABLED
70 class MFEMProblemSolve;
71 #endif
72 
73 namespace libMesh
74 {
75 class ExodusII_IO;
76 }
77 namespace hit
78 {
79 class Node;
80 }
81 
82 #ifdef MOOSE_KOKKOS_ENABLED
83 namespace Moose::Kokkos
84 {
85 class MemoryPool;
86 }
87 #endif
88 
89 #ifdef MOOSE_UNIT_TEST
90 // forward declare unit tests
91 #include "gtest/gtest.h"
92 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppAddBoolCapability);
93 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppAddIntCapability);
94 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppAddStringCapability);
95 class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppAddCapability);
96 #endif
97 
109 {
110 public:
112  std::optional<MooseEnum> getComputeDevice() const;
113 
114 #ifdef MOOSE_LIBTORCH_ENABLED
115  torch::DeviceType getLibtorchDevice() const { return _libtorch_device; }
117 #endif
118 
125  {
130  std::vector<std::string> sub_transformed_vars;
132  std::vector<PostprocessorName> sub_transformed_pps;
133  };
134 
136  static const std::string MESH_META_DATA_SUFFIX;
137 
138  static InputParameters validParams();
139 
140  virtual ~MooseApp();
141 
143 
147  virtual std::string getPrintableName() const { return "Application"; }
148 
149  virtual std::string appBinaryName() const
150  {
152  name = name.substr(0, name.find_last_of("-"));
153  if (name.find_first_of("/") != std::string::npos)
154  name = name.substr(name.find_first_of("/") + 1, std::string::npos);
155  return name;
156  }
157 
162  int exitCode() const { return _exit_code; }
163 
167  void setExitCode(const int exit_code) { _exit_code = exit_code; }
168 
173  const RankMap & rankMap() { return _rank_map; }
174 
179 
187 
191  virtual void run();
192 
196  std::string getFrameworkVersion() const;
197 
201  virtual std::string getVersion() const;
202 
206  std::string getPrintableVersion() const;
207 
211  virtual void setupOptions();
212 
221 
226 
230  Syntax & syntax() { return _syntax; }
231 
235  const std::vector<std::string> & getInputFileNames() const;
236 
240  const std::string & getLastInputFileName() const;
241 
246  void setOutputFileBase(const std::string & output_file_base);
247 
258  std::string getOutputFileBase(bool for_non_moose_build_output = false) const;
259 
263  void setOutputPosition(const Point & p);
264 
269  std::list<std::string> getCheckpointDirectories() const;
270 
275  std::list<std::string> getCheckpointFiles() const;
276 
281  bool hasOutputPosition() const { return _output_position_set; }
282 
287  Point getOutputPosition() const { return _output_position; }
288 
295  void setStartTime(Real time);
296 
300  bool hasStartTime() const { return _start_time_set; }
301 
305  Real getStartTime() const { return _start_time; }
306 
311  void setGlobalTimeOffset(Real offset) { _global_time_offset = offset; }
312 
318 
324  std::string getFileName(bool stripLeadingPath = true) const;
325 
329  void setErrorOverridden();
330 
334  void disableCheckUnusedFlag();
335 
339  Executioner * getExecutioner() const;
340  Executor * getExecutor() const { return _executor.get(); }
341  NullExecutor * getNullExecutor() const { return _null_executor.get(); }
342  bool useExecutor() const { return _use_executor; }
343  FEProblemBase & feProblem() const;
344 
348  void setExecutioner(std::shared_ptr<Executioner> && executioner) { _executioner = executioner; }
349  void setExecutor(std::shared_ptr<Executor> && executor) { _executor = executor; }
350  void
351  addExecutor(const std::string & type, const std::string & name, const InputParameters & params);
352 
357  void addExecutorParams(const std::string & type,
358  const std::string & name,
359  const InputParameters & params);
360 
364  const Parser & parser() const;
366  Parser & parser();
368 
373  void createExecutors();
374 
382  Executor & getExecutor(const std::string & name, bool fail_if_not_found = true);
383 
392 
396  bool & useNonlinear() { return _use_nonlinear; }
397 
401  bool & useEigenvalue() { return _use_eigen_value; }
402 
406  Factory & getFactory() { return _factory; }
407 
412 
416  processor_id_type processor_id() const { return _comm->rank(); }
417 
423  std::shared_ptr<CommandLine> commandLine() const { return _command_line; }
424 
429  void setExodusFileRestart(bool flag) { _initial_from_file = flag; }
430 
435  bool getExodusFileRestart() const { return _initial_from_file; }
436 
440  void setExReaderForRestart(std::shared_ptr<libMesh::ExodusII_IO> && exreader)
441  {
442  _ex_reader = exreader;
443  }
444 
449 
453  virtual void runInputFile();
454 
458  virtual void executeExecutioner();
459 
466 
472  bool isRecovering() const;
473 
480  bool isRestarting() const;
481 
485  bool isSplitMesh() const;
486 
488 
491  bool hasRestartRecoverFileBase() const;
492  bool hasRecoverFileBase() const;
494 
496 
499  std::string getRestartRecoverFileBase() const { return _restart_recover_base; }
500  std::string getRecoverFileBase() const
501  {
502  mooseDeprecated("MooseApp::getRecoverFileBase is deprecated, use "
503  "MooseApp::getRestartRecoverFileBase() instead.");
504  return _restart_recover_base;
505  }
507 
511  void setRestartRecoverFileBase(const std::string & file_base)
512  {
513  if (file_base.empty())
515  else
516  _restart_recover_base = file_base;
517  }
518 
524 
529  bool testReStep() const { return _test_restep; }
530 
539  void setOutputFileNumbers(const std::map<std::string, unsigned int> & numbers)
540  {
541  _output_file_numbers = numbers;
542  }
543 
551  const std::map<std::string, unsigned int> & getOutputFileNumbers() const
552  {
553  return _output_file_numbers;
554  }
555 
560  const OutputWarehouse & getOutputWarehouse() const;
561 
566  const SystemInfo & getSystemInfo() const { return _sys_info; }
567 
569 
574  void dynamicAllRegistration(const std::string & app_name,
575  Factory * factory,
576  ActionFactory * action_factory,
577  Syntax * syntax,
578  std::string library_path,
579  const std::string & library_name);
580  void dynamicAppRegistration(const std::string & app_name,
581  std::string library_path,
582  const std::string & library_name,
583  bool lib_load_deps);
585 
592  std::string appNameToLibName(const std::string & app_name) const;
593 
597  std::string libNameToAppName(const std::string & library_name) const;
598 
602  std::set<std::string> getLoadedLibraryPaths() const;
603 
607  std::set<std::string> getLibrarySearchPaths(const std::string & library_path_from_param) const;
608 
613 
614  /*
615  * Register a piece of restartable data. This is data that will get
616  * written / read to / from a restart file.
617  *
618  * @param data The actual data object.
619  * @param tid The thread id of the object. Use 0 if the object is not threaded.
620  * @param read_only Restrict the data for read-only
621  * @param metaname (optional) register the data to the meta data storage (tid must be 0)
622  */
623  RestartableDataValue & registerRestartableData(std::unique_ptr<RestartableDataValue> data,
624  THREAD_ID tid,
625  bool read_only,
626  const RestartableDataMapName & metaname = "");
627 
628  /*
629  * Deprecated method to register a piece of restartable data.
630  *
631  * Use the call without a data name instead.
632  */
633  RestartableDataValue & registerRestartableData(const std::string & name,
634  std::unique_ptr<RestartableDataValue> data,
635  THREAD_ID tid,
636  bool read_only,
637  const RestartableDataMapName & metaname = "");
638 
639  /*
640  * Check if a restartable meta data exists or not.
641  *
642  * @param name The full (unique) name.
643  * @param metaname The name to the meta data storage
644  */
645  bool hasRestartableMetaData(const std::string & name,
646  const RestartableDataMapName & metaname) const;
647 
648  /*
649  * Retrieve restartable meta data from restartable data map
650  *
651  * @param name The full (unique) name.
652  * @param metaname The name to the meta data storage
653  * @return A reference to the restartable meta data value
654  */
655  RestartableDataValue & getRestartableMetaData(const std::string & name,
656  const RestartableDataMapName & metaname,
657  THREAD_ID tid);
658 
664  const std::filesystem::path & folder_base);
669  void loadRestartableMetaData(const std::filesystem::path & folder_base);
670 
676  std::vector<std::filesystem::path>
678  const std::filesystem::path & folder_base);
684  std::vector<std::filesystem::path>
685  writeRestartableMetaData(const std::filesystem::path & folder_base);
686 
691  const std::vector<RestartableDataMap> & getRestartableData() const { return _restartable_data; }
693  std::vector<RestartableDataMap> & getRestartableData() { return _restartable_data; }
695 
700 
705 
715  void registerRestartableDataMapName(const RestartableDataMapName & name, std::string suffix = "");
716 
720  const std::string & getRestartableDataMapName(const RestartableDataMapName & name) const;
721 
727 
733  std::vector<std::filesystem::path> backup(const std::filesystem::path & folder_base);
739  std::unique_ptr<Backup> backup();
740 
744  virtual void preBackup() {}
745 
757  void restore(const std::filesystem::path & folder_base, const bool for_restart);
758 
770  void restore(std::unique_ptr<Backup> backup, const bool for_restart);
771 
778  virtual void postRestore(const bool /* for_restart */) {}
779 
792  void restoreFromInitialBackup(const bool for_restart);
793 
803  std::unique_ptr<Backup> finalizeRestore();
804 
814  const THREAD_ID tid,
816  {
817  return _rd_reader.restoreDataIfAvailable(value, tid, {});
818  }
819 
823  virtual std::string header() const;
824 
829  unsigned int multiAppLevel() const { return _multiapp_level; }
830 
835  unsigned int multiAppNumber() const { return _multiapp_number; }
836 
840  bool isUltimateMaster() const { return !_multiapp_level; }
841 
845  bool useMasterMesh() const { return _use_master_mesh; }
846 
850  const MooseMesh * masterMesh() const { return _master_mesh; }
851 
856 
861 
866 
876  void addMeshGenerator(const std::string & type,
877  const std::string & name,
878  const InputParameters & params)
879  {
881  }
882 
886  bool hasMeshGenerator(const MeshGeneratorName & name) const
887  {
889  }
890 
894  const MeshGenerator & getMeshGenerator(const std::string & name) const
895  {
897  }
898 
902  std::unique_ptr<MeshBase> getMeshGeneratorMesh()
903  {
905  }
906 
912  std::vector<std::string> getMeshGeneratorNames() const
913  {
915  }
916 
926  const MeshGenerator &
927  appendMeshGenerator(const std::string & type, const std::string & name, InputParameters params)
928  {
930  }
931 
938  virtual bool constructingMeshGenerators() const;
939 
941 
945  void setRestart(bool value);
946  void setRecover(bool value);
948 
950  bool checkInput() const { return _check_input; }
951 
953  bool getFPTrapFlag() const { return _trap_fpe; }
954 
958  bool hasRelationshipManager(const std::string & name) const;
959 
966  bool addRelationshipManager(std::shared_ptr<RelationshipManager> relationship_manager);
967 
969  static const std::string & checkpointSuffix();
971  static std::filesystem::path metaDataFolderBase(const std::filesystem::path & folder_base,
972  const std::string & map_suffix);
974  std::filesystem::path restartFolderBase(const std::filesystem::path & folder_base) const;
975 
983  const hit::Node * getCurrentActionHitNode() const;
984 
991  bool attach_geometric_rm_final = false);
992 
999  void attachRelationshipManagers(MeshBase & mesh, MooseMesh & moose_mesh);
1000 
1004  const std::vector<std::shared_ptr<RelationshipManager>> & getReleationshipManagers();
1005 
1009  std::vector<std::pair<std::string, std::string>> getRelationshipManagerInfo() const;
1010 
1014  const ExecFlagEnum & getExecuteOnEnum() const { return _execute_flags; }
1015 
1021  bool hasInitialBackup() const
1022  {
1023  return _initial_backup != nullptr && *_initial_backup != nullptr;
1024  }
1025 
1030 
1031  // Return the communicator for this application
1032  const std::shared_ptr<libMesh::Parallel::Communicator> getCommunicator() const { return _comm; }
1033 
1037  const std::set<std::shared_ptr<RelationshipManager>> & relationshipManagers() const
1038  {
1039  return _relationship_managers;
1040  }
1041 
1045  void checkMetaDataIntegrity() const;
1046 
1048 
1054 
1057 
1063  virtual bool errorOnJacobianNonzeroReallocation() const { return false; }
1064 
1070  template <class T>
1071  void registerInterfaceObject(T & interface);
1072 
1078  template <class T>
1079  const std::vector<T *> & getInterfaceObjects() const;
1080 
1081  static void addAppParam(InputParameters & params);
1082  static void addInputParam(InputParameters & params);
1083 
1088  bool forceRestart() const { return _force_restart; }
1089 
1092 
1095 
1096 #ifdef MOOSE_MFEM_ENABLED
1097 
1101  void setMFEMDevice(const std::string & device_string,
1102  bool gpu_aware_mpi,
1104 
1108  std::shared_ptr<mfem::Device> getMFEMDevice(Moose::PassKey<MultiApp>) { return _mfem_device; }
1109 
1113  const std::set<std::string> & getMFEMDevices(Moose::PassKey<MultiApp>) const;
1114 #endif
1115 
1123  bool isKokkosAvailable() const
1124  {
1125 #ifdef MOOSE_KOKKOS_ENABLED
1126 #ifdef MOOSE_ENABLE_KOKKOS_GPU
1127  return _has_kokkos_gpus;
1128 #else
1129  return true;
1130 #endif
1131 #else
1132  return false;
1133 #endif
1134  }
1135 
1136 #ifdef MOOSE_KOKKOS_ENABLED
1137 
1142  void allocateKokkosMemoryPool(std::size_t size, unsigned int ways) const;
1143 
1149 #endif
1150 
1154  static bool isRelocated();
1155 
1159  static bool isInTree();
1160 
1161 protected:
1162 #ifdef MOOSE_UNIT_TEST
1163  FRIEND_TEST(::CapabilitiesTest, mooseAppAddBoolCapability);
1164  FRIEND_TEST(::CapabilitiesTest, mooseAppAddIntCapability);
1165  FRIEND_TEST(::CapabilitiesTest, mooseAppAddStringCapability);
1166  FRIEND_TEST(::CapabilitiesTest, mooseAppAddCapability);
1167 #endif
1168 
1172  void dynamicRegistration(const libMesh::Parameters & params);
1173 
1178  void loadLibraryAndDependencies(const std::string & library_filename,
1179  const libMesh::Parameters & params,
1180  bool load_dependencies = true);
1181 
1184 
1194  void registerRestartableNameWithFilter(const std::string & name,
1195  Moose::RESTARTABLE_FILTER filter);
1196 
1201  void errorCheck();
1202 
1207  void outputMachineReadableData(const std::string & param,
1208  const std::string & start_marker,
1209  const std::string & end_marker,
1210  const std::string & data) const;
1211 
1220  static Moose::Capability & addBoolCapability(const std::string_view capability,
1221  const bool value,
1222  const std::string_view doc);
1223 
1232  static Moose::Capability &
1233  addIntCapability(const std::string_view capability, const int value, const std::string_view doc);
1234 
1243  static Moose::Capability & addStringCapability(const std::string_view capability,
1244  const std::string_view value,
1245  const std::string_view doc);
1246 
1260  static Moose::Capability & addCapability(const std::string_view capability,
1261  const Moose::Capability::Value & value,
1262  const std::string_view doc);
1263 
1265  const std::string _type;
1266 
1268  const std::shared_ptr<libMesh::Parallel::Communicator> _comm;
1269 
1271  std::string _output_file_base;
1272 
1275 
1278 
1281 
1284 
1287 
1290 
1293 
1296  std::unique_ptr<InputParameterWarehouse> _input_parameter_warehouse;
1297 
1300 
1303 
1306 
1308  const std::shared_ptr<Parser> _parser;
1309 
1311  const std::shared_ptr<CommandLine> _command_line;
1312 
1315 
1318 
1320  std::vector<RestartableDataMap> _restartable_data;
1321 
1327 
1330 
1333 
1336 
1338  std::shared_ptr<Executioner> _executioner;
1339 
1341  std::shared_ptr<Executor> _executor;
1342 
1344  std::map<std::string, std::shared_ptr<Executor>> _executors;
1345 
1348  std::unordered_map<std::string, std::pair<std::string, std::unique_ptr<InputParameters>>>
1350 
1354 
1357  const bool _use_executor;
1358 
1360  std::shared_ptr<NullExecutor> _null_executor;
1361 
1364 
1367 
1370  {
1375 
1377 
1381  std::string _early_exit_param;
1385 
1388 
1390  std::shared_ptr<libMesh::ExodusII_IO> _ex_reader;
1391 
1394 
1396  bool _recover;
1397 
1399  bool _restart;
1400 
1403 
1405  const bool _use_split;
1406 
1408  const bool _force_restart;
1409 
1412 
1415 
1419  const bool _test_restep;
1420 
1422  std::map<std::string, unsigned int> _output_file_numbers;
1423 
1426 
1428  std::set<std::shared_ptr<RelationshipManager>> _relationship_managers;
1429 
1431  std::map<Moose::RelationshipManagerType, std::set<const RelationshipManager *>>
1433 
1438  std::unordered_map<RelationshipManager *, std::shared_ptr<libMesh::GhostingFunctor>>
1440 
1442  {
1444  std::string full_path;
1445  std::unordered_set<std::string> entry_symbols;
1446  };
1447 
1449  std::unordered_map<std::string, DynamicLibraryInfo> _lib_handles;
1450 
1451 private:
1460  void recursivelyCreateExecutors(const std::string & current_executor_name,
1461  std::list<std::string> & possible_roots,
1462  std::list<std::string> & current_branch);
1463 
1474  void removeRelationshipManager(std::shared_ptr<RelationshipManager> relationship_manager);
1475 
1476 #ifdef MOOSE_LIBTORCH_ENABLED
1477 
1483  torch::DeviceType determineLibtorchDeviceType(const MooseEnum & device) const;
1484 #endif
1485 
1489  {
1491  };
1492 
1493  template <class T>
1495  {
1496  std::vector<T *> _objects;
1497  };
1499 
1524  void createMinimalApp();
1525 
1530  void setCheckUnusedFlag(bool warn_is_error = false);
1531 
1539  bool hasRMClone(const RelationshipManager & template_rm, const MeshBase & mesh) const;
1540 
1545  RelationshipManager & getRMClone(const RelationshipManager & template_rm,
1546  const MeshBase & mesh) const;
1547 
1559  MooseMesh & moose_mesh,
1560  MeshBase & mesh,
1561  const libMesh::DofMap * dof_map = nullptr);
1562 
1570 
1578 
1583  bool showInputs() const;
1584 
1588  virtual std::string getInstallableInputs() const;
1589 
1596  bool copyInputs();
1597 
1603  bool runInputs();
1604 
1611  void requestCitations();
1612 
1623  static Moose::Capability & addCapabilityInternal(const std::string_view capability,
1624  const Moose::Capability::Value & value,
1625  const std::string_view doc);
1626 
1628  std::unordered_map<RestartableDataMapName, std::pair<RestartableDataMap, std::string>>
1630 
1633  {
1636  };
1637 
1639  std::unique_ptr<TheWarehouse> _the_warehouse;
1640 
1642  unsigned int _multiapp_level;
1643 
1645  unsigned int _multiapp_number;
1646 
1648  const bool _use_master_mesh;
1649 
1651  const MooseMesh * const _master_mesh;
1652 
1655 
1658 
1661 
1663 
1672 
1674  std::streambuf * _output_buffer_cache;
1675 
1678 
1680  bool _cpu_profiling = false;
1681 
1683  bool _heap_profiling = false;
1684 
1687  std::map<const RelationshipManager *,
1688  std::map<const MeshBase *, std::unique_ptr<RelationshipManager>>>
1690 
1692  std::map<std::type_index, std::unique_ptr<InterfaceRegistryObjectsBase>> _interface_registry;
1693 
1698  std::unique_ptr<Backup> * const _initial_backup;
1699 
1700 #ifdef MOOSE_LIBTORCH_ENABLED
1701  const torch::DeviceType _libtorch_device;
1703 #endif
1704 
1705 #ifdef MOOSE_MFEM_ENABLED
1706  std::shared_ptr<mfem::Device> _mfem_device;
1708 
1710  std::set<std::string> _mfem_devices;
1711 #endif
1712 
1713  // Allow FEProblemBase to set the recover/restart state, so make it a friend
1714  friend class FEProblemBase;
1715  friend class Restartable;
1716  friend class SubProblem;
1717 
1718 #ifdef MOOSE_KOKKOS_ENABLED
1719 
1722  void queryKokkosGPUs();
1723 
1728 
1732  bool _has_kokkos_gpus = false;
1733 #endif
1734 };
1735 
1736 template <class T>
1737 void
1739 {
1740  static_assert(!std::is_base_of<MooseObject, T>::value, "T is not an interface");
1741 
1743  auto it = _interface_registry.find(typeid(T));
1744  if (it == _interface_registry.end())
1745  {
1746  auto new_registry = std::make_unique<InterfaceRegistryObjects<T>>();
1747  registry = new_registry.get();
1748  _interface_registry.emplace(typeid(T), std::move(new_registry));
1749  }
1750  else
1751  registry = static_cast<InterfaceRegistryObjects<T> *>(it->second.get());
1752 
1753  mooseAssert(std::count(registry->_objects.begin(), registry->_objects.end(), &interface) == 0,
1754  "Interface already registered");
1755  registry->_objects.push_back(&interface);
1756 }
1757 
1758 template <class T>
1759 const std::vector<T *> &
1761 {
1762  static_assert(!std::is_base_of<MooseObject, T>::value, "T is not an interface");
1763 
1764  const auto it = _interface_registry.find(typeid(T));
1765  if (it != _interface_registry.end())
1766  return static_cast<InterfaceRegistryObjects<T> *>(it->second.get())->_objects;
1767  const static std::vector<T *> empty;
1768  return empty;
1769 }
1770 
1771 #ifdef MOOSE_MFEM_ENABLED
1772 inline const std::set<std::string> &
1774 {
1775  return _mfem_devices;
1776 }
1777 #endif
std::list< std::string > getCheckpointFiles() const
Extract all possible checkpoint file names.
Definition: MooseApp.C:2152
virtual bool constructingMeshGenerators() const
Whether this app is constructing mesh generators.
Definition: MooseApp.C:3257
std::list< std::string > getCheckpointDirectories() const
Get all checkpoint directories.
Definition: MooseApp.C:2120
bool _use_eigen_value
Boolean to indicate whether to use an eigenvalue executioner.
Definition: MooseApp.h:1366
static const std::string & checkpointSuffix()
The file suffix for the checkpoint mesh.
Definition: MooseApp.C:2802
std::string getFileName(bool stripLeadingPath=true) const
Return the primary (first) filename that was parsed Note: When stripLeadingPath is false...
Definition: MooseApp.C:2166
void addExecutorParams(const std::string &type, const std::string &name, const InputParameters &params)
Adds the parameters for an Executor to the list of parameters.
Definition: MooseApp.C:1679
bool defaultAutomaticScaling() const
Whether to enable automatic scaling by default.
Definition: MooseApp.h:1029
bool & useNonlinear()
Returns a writable Boolean indicating whether this app will use a Nonlinear or Eigen System...
Definition: MooseApp.h:396
virtual std::string getPrintableName() const
Get printable name of the application.
Definition: MooseApp.h:147
unsigned int _multiapp_level
Level of multiapp, the master is level 0. This used by the Console to indent output.
Definition: MooseApp.h:1642
virtual std::string getInstallableInputs() const
Method to retrieve the installable inputs from a given applications <app>Revision.h file.
Definition: MooseApp.C:1966
static bool isRelocated()
Definition: MooseApp.C:3375
PerfGraph & _perf_graph
The PerfGraph object for this application (recoverable)
Definition: MooseApp.h:1329
const std::set< std::string > & getMFEMDevices(Moose::PassKey< MultiApp >) const
Get the configured MFEM devices.
Definition: MooseApp.h:1773
void setOutputPosition(const Point &p)
Tell the app to output in a specific position.
Definition: MooseApp.C:2109
bool hasMeshGenerator(const MeshGeneratorName &name) const
Definition: MooseApp.h:886
std::vector< std::string > sub_transformed_vars
The names of variables to transform for fixed point solve algorithms (e.g. secant, etc.).
Definition: MooseApp.h:130
const std::string _type
The string representation of the type of this object as registered (see registerApp(AppName)) ...
Definition: MooseApp.h:1265
A MultiMooseEnum object to hold "execute_on" flags.
Definition: ExecFlagEnum.h:21
void setExecutioner(std::shared_ptr< Executioner > &&executioner)
Set the Executioner for this App.
Definition: MooseApp.h:348
std::unordered_map< std::string, std::pair< std::string, std::unique_ptr< InputParameters > > > _executor_params
Used in building the Executors Maps the name of the Executor block to the <type, params> ...
Definition: MooseApp.h:1349
A class for creating restricted objects.
Definition: Restartable.h:28
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
Definition: MooseApp.h:840
bool _initial_from_file
This variable indicates when a request has been made to restart from an Exodus file.
Definition: MooseApp.h:1387
Stores configuration options relating to the fixed-point solving capability.
Definition: MooseApp.h:124
Storage container for all InputParamter objects.
const MeshGenerator & getMeshGenerator(const std::string &name) const
Definition: MooseApp.h:894
std::map< Moose::RelationshipManagerType, std::set< const RelationshipManager * > > _attached_relationship_managers
The relationship managers that have been attached (type -> RMs)
Definition: MooseApp.h:1432
auto getRestartableDataMapBegin()
Iterator based access to the extra RestartableDataMap objects; see Checkpoint.C for use case...
Definition: MooseApp.h:1053
Reader for restartable data written by the RestartableDataWriter.
std::string _restart_recover_base
The base name to restart/recover from. If blank then we will find the newest checkpoint file...
Definition: MooseApp.h:1414
void dynamicRegistration(const libMesh::Parameters &params)
Helper method for dynamic loading of objects.
Definition: MooseApp.C:2430
bool hasRestartableMetaData(const std::string &name, const RestartableDataMapName &metaname) const
Definition: MooseApp.C:2264
std::vector< PostprocessorName > sub_transformed_pps
The names of postprocessors to transform for fixed point solve algorithms (e.g. secant, etc.).
Definition: MooseApp.h:132
virtual void setupOptions()
Setup options based on InputParameters.
Definition: MooseApp.C:855
PerfGraph & createRecoverablePerfGraph()
Creates a recoverable PerfGraph.
Definition: MooseApp.C:3226
std::string libNameToAppName(const std::string &library_name) const
Converts a library name to an application name:
Definition: MooseApp.C:2200
RelationshipManagerType
Main types of Relationship Managers.
Definition: MooseTypes.h:1012
const std::shared_ptr< Parser > _parser
Parser for parsing the input file (owns the root hit node)
Definition: MooseApp.h:1308
std::string getFrameworkVersion() const
Returns the framework version.
Definition: MooseApp.C:837
Base class for everything in MOOSE with a name and a type.
Definition: MooseBase.h:49
void setRecover(bool value)
Definition: MooseApp.C:2648
std::vector< std::pair< std::string, std::string > > getRelationshipManagerInfo() const
Returns the Relationship managers info suitable for printing.
Definition: MooseApp.C:3082
void setExecutor(std::shared_ptr< Executor > &&executor)
Definition: MooseApp.h:349
Real _global_time_offset
Offset of the local App time to the "global" problem time.
Definition: MooseApp.h:1289
bool hasOutputPosition() const
Whether or not an output position has been set.
Definition: MooseApp.h:281
FRIEND_TEST(::CapabilitiesTest, mooseAppAddBoolCapability)
bool hasRMClone(const RelationshipManager &template_rm, const MeshBase &mesh) const
Definition: MooseApp.C:2833
torch::DeviceType determineLibtorchDeviceType(const MooseEnum &device) const
Function to determine the device which should be used by libtorch on this application.
Definition: MooseApp.C:3265
bool _file_base_set_by_user
Whether or not file base is set through input or setOutputFileBase by MultiApp.
Definition: MooseApp.h:1274
const std::vector< RestartableDataMap > & getRestartableData() const
Return reference to the restartable data object.
Definition: MooseApp.h:692
bool _output_position_set
Whether or not an output position has been set for this app.
Definition: MooseApp.h:1277
Generic factory class for build all sorts of objects.
Definition: Factory.h:28
const std::map< std::string, unsigned int > & getOutputFileNumbers() const
Store a map of outputter names and file numbers The MultiApp system requires this to get the file num...
Definition: MooseApp.h:551
std::unique_ptr< TheWarehouse > _the_warehouse
The combined warehouse for storing any MooseObject based object.
Definition: MooseApp.h:1639
void setCheckUnusedFlag(bool warn_is_error=false)
Set a flag so that the parser will either warn or error when unused variables are seen after parsing ...
Definition: MooseApp.C:1648
std::shared_ptr< CommandLine > commandLine() const
Get the command line.
Definition: MooseApp.h:423
std::vector< std::string > getMeshGeneratorNames() const
Definition: MooseApp.h:912
bool hasInitialBackup() const
Definition: MooseApp.h:1021
static Moose::ParameterRegistry & registry
static std::filesystem::path metaDataFolderBase(const std::filesystem::path &folder_base, const std::string &map_suffix)
The file suffix for meta data (header and data)
Definition: MooseApp.C:2809
InputParameterWarehouse & getInputParameterWarehouse()
Get the InputParameterWarehouse for MooseObjects.
Definition: MooseApp.C:2630
const ExecFlagEnum & getExecuteOnEnum() const
Return the app level ExecFlagEnum, this contains all the available flags for the app.
Definition: MooseApp.h:1014
bool _use_nonlinear
Boolean to indicate whether to use a Nonlinear or EigenSystem (inspected by actions) ...
Definition: MooseApp.h:1363
static const RestartableDataMapName MESH_META_DATA
Definition: MooseApp.h:135
std::unordered_map< RestartableDataMapName, std::pair< RestartableDataMap, std::string > > _restartable_meta_data
General storage for custom RestartableData that can be added to from outside applications.
Definition: MooseApp.h:1629
FixedPointConfig & fixedPointConfig()
This info is stored here because we need a "globalish" place to put it in order to allow communicatio...
Definition: MooseApp.h:391
virtual std::string appBinaryName() const
Definition: MooseApp.h:149
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
std::string getOutputFileBase(bool for_non_moose_build_output=false) const
Get the output file base name.
Definition: MooseApp.C:1364
const bool _use_master_mesh
Whether to use the parent app mesh for this app.
Definition: MooseApp.h:1648
static void addInputParam(InputParameters &params)
Definition: MooseApp.C:102
RelationshipManager & getRMClone(const RelationshipManager &template_rm, const MeshBase &mesh) const
Return the relationship manager clone originally created from the provided template relationship mana...
Definition: MooseApp.C:2841
void deallocateKokkosMemoryPool()
Deallocate Kokkos memory pool.
bool runInputs()
Handles the run input parameter logic: Checks to see whether a directory exists in user space and lau...
Definition: MooseApp.C:2037
void registerRestartableNameWithFilter(const std::string &name, Moose::RESTARTABLE_FILTER filter)
NOTE: This is an internal function meant for MOOSE use only!
Definition: MooseApp.C:1533
virtual void run()
Run the application.
Definition: MooseApp.C:1835
void removeRelationshipManager(std::shared_ptr< RelationshipManager > relationship_manager)
Purge this relationship manager from meshes and DofMaps and finally from us.
Definition: MooseApp.C:2856
std::unique_ptr< libMesh::MeshBase > getSavedMesh(const std::string &name)
Get the saved mesh by name.
Real _start_time
The time at which to start the simulation.
Definition: MooseApp.h:1286
void createExecutors()
After adding all of the Executor Params - this function will actually cause all of them to be built...
Definition: MooseApp.C:1752
void recursivelyCreateExecutors(const std::string &current_executor_name, std::list< std::string > &possible_roots, std::list< std::string > &current_branch)
Internal function used to recursively create the executor objects.
Definition: MooseApp.C:1700
Builds lists and maps that help in knowing which physical hardware nodes each rank is on...
Definition: RankMap.h:23
std::vector< std::string > getMeshGeneratorNames() const
Get names of all mesh generators Note: This function should be called after all mesh generators are a...
bool forceRestart() const
Whether or not we are forcefully restarting (allowing the load of potentially incompatibie checkpoint...
Definition: MooseApp.h:1088
std::filesystem::path restartFolderBase(const std::filesystem::path &folder_base) const
The file suffix for restartable data.
Definition: MooseApp.C:2817
const bool _use_split
Whether or not we are using a (pre-)split mesh (automatically DistributedMesh)
Definition: MooseApp.h:1405
unsigned int multiAppLevel() const
The MultiApp Level.
Definition: MooseApp.h:829
bool hasRelationshipManager(const std::string &name) const
Returns a Boolean indicating whether a RelationshipManater exists with the same name.
Definition: MooseApp.C:2728
Base class for MOOSE-based applications.
Definition: MooseApp.h:108
virtual ~MooseApp()
Storage for action instances.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
bool _check_input
true if we want to just check the input file
Definition: MooseApp.h:1425
const std::vector< std::shared_ptr< RelationshipManager > > & getReleationshipManagers()
Retrieve the relationship managers.
static bool isInTree()
Definition: MooseApp.C:3381
static Moose::Capability & addCapability(const std::string_view capability, const Moose::Capability::Value &value, const std::string_view doc)
Deprecated method for adding a capability.
Definition: MooseApp.C:3358
bool hasRestartableDataMap(const RestartableDataMapName &name) const
Definition: MooseApp.C:3201
std::set< std::string > _mfem_devices
MFEM supported devices based on user-provided config.
Definition: MooseApp.h:1710
Syntax _syntax
Syntax of the input file.
Definition: MooseApp.h:1292
Syntax & syntax()
Returns a writable reference to the syntax object.
Definition: MooseApp.h:230
std::map< std::string, std::shared_ptr< Executor > > _executors
Pointers to all of the Executors for this run.
Definition: MooseApp.h:1344
std::vector< std::filesystem::path > writeRestartableMetaData(const RestartableDataMapName &name, const std::filesystem::path &folder_base)
Writes the restartable meta data for name with a folder base of folder_base.
Definition: MooseApp.C:2315
const bool _test_restep
Whether or not this simulation should fail its middle timestep and repeat (for testing) ...
Definition: MooseApp.h:1419
bool _trap_fpe
Whether or not FPE trapping should be turned on.
Definition: MooseApp.h:1411
int exitCode() const
Get the shell exit code for the application.
Definition: MooseApp.h:162
processor_id_type processor_id() const
Returns the MPI processor ID of the current processor.
Definition: MooseApp.h:416
Real getStartTime() const
Definition: MooseApp.h:305
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
std::map< std::string, unsigned int > _output_file_numbers
Map of outputer name and file number (used by MultiApps to propagate file numbers down through the mu...
Definition: MooseApp.h:1422
const hit::Node * getCurrentActionHitNode() const
Definition: MooseApp.C:2825
ActionWarehouse _action_warehouse
Where built actions are stored.
Definition: MooseApp.h:1302
RestartableDataReader _rd_reader
Definition: MooseApp.h:1662
void checkMetaDataIntegrity() const
Function to check the integrity of the restartable meta data structure.
Definition: MooseApp.C:3158
static InputParameters validParams()
Definition: MooseApp.C:109
bool isRestarting() const
Whether or not this is a "restart" calculation.
Definition: MooseApp.C:1507
unsigned int multiAppNumber() const
The MultiApp number.
Definition: MooseApp.h:835
bool isSplitMesh() const
Whether or not this is a split mesh operation.
Definition: MooseApp.C:1513
RestartableDataMap & getRestartableDataMap(const RestartableDataMapName &name)
Return a reference to restartable data for the specific type flag.
Definition: MooseApp.C:3190
ActionFactory & getActionFactory()
Retrieve a writable reference to the ActionFactory associated with this App.
Definition: MooseApp.h:411
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
class GTEST_TEST_CLASS_NAME_(CapabilitiesTest, mooseAppAddBoolCapability)
SolutionInvalidity & _solution_invalidity
The SolutionInvalidity object for this application.
Definition: MooseApp.h:1332
std::unordered_map< RelationshipManager *, std::shared_ptr< libMesh::GhostingFunctor > > _undisp_to_disp_rms
A map from undisplaced relationship managers to their displaced clone (stored as the base GhostingFun...
Definition: MooseApp.h:1439
std::shared_ptr< libMesh::ExodusII_IO > _ex_reader
The Exodus reader when _initial_from_file is set to true.
Definition: MooseApp.h:1390
FEProblemBase & feProblem() const
Definition: MooseApp.C:1660
Factory & getFactory()
Retrieve a writable reference to the Factory associated with this App.
Definition: MooseApp.h:406
MooseApp(const InputParameters &parameters)
Constructor is protected so that this object is constructed through the AppFactory object...
Definition: MooseApp.C:455
std::optional< MooseEnum > getComputeDevice() const
Get the device accelerated computations are supposed to be running on.
std::vector< RestartableDataMap > _restartable_data
Where the restartable data is held (indexed on tid)
Definition: MooseApp.h:1320
RelationshipManager & createRMFromTemplateAndInit(const RelationshipManager &template_rm, MooseMesh &moose_mesh, MeshBase &mesh, const libMesh::DofMap *dof_map=nullptr)
Take an input relationship manager, clone it, and then initialize it with provided mesh and optional ...
Definition: MooseApp.C:2898
void setOutputFileBase(const std::string &output_file_base)
Override the selection of the output file base name.
Definition: MooseApp.C:1373
std::string getRecoverFileBase() const
Definition: MooseApp.h:500
const RankMap _rank_map
The RankMap is a useful object for determining how the processes are laid out on the physical hardwar...
Definition: MooseApp.h:1335
This class wraps provides and tracks access to command line parameters.
Definition: CommandLine.h:29
const bool _test_checkpoint_half_transient
Whether or not this simulation should only run half its transient (useful for testing recovery) ...
Definition: MooseApp.h:1417
void addMeshGenerator(const std::string &type, const std::string &name, const InputParameters &params)
Add a mesh generator that will act on the meshes in the system.
int _exit_code
The exit code.
Definition: MooseApp.h:1384
SystemInfo _sys_info
System Information.
Definition: MooseApp.h:1314
Storage for restartable data that is ordered based on insertion order.
bool checkInput() const
Returns whether the Application is running in check input mode.
Definition: MooseApp.h:950
const MeshGenerator & appendMeshGenerator(const std::string &type, const std::string &name, InputParameters params)
Append a mesh generator that will act on the current final mesh generator in the system.
bool getExodusFileRestart() const
Whether or not we need to use a separate Exodus reader to read the mesh BEFORE we create the mesh...
Definition: MooseApp.h:435
const RankMap & rankMap()
The RankMap is a useful object for determining how the processes are laid out on the physical nodes o...
Definition: MooseApp.h:173
std::variant< bool, int, std::string > Value
A capability can have a bool, int, or string value.
Definition: Capability.h:33
MeshGeneratorSystem _mesh_generator_system
The system that manages the MeshGenerators.
Definition: MooseApp.h:1657
void attachRelationshipManagers(Moose::RelationshipManagerType rm_type, bool attach_geometric_rm_final=false)
Attach the relationship managers of the given type Note: Geometric relationship managers that are sup...
Definition: MooseApp.C:2967
uint8_t processor_id_type
bool getDistributedMeshOnCommandLine() const
Returns true if the user specified –distributed-mesh (or –parallel-mesh, for backwards compatibilit...
Definition: MooseApp.h:465
bool _start_time_set
Whether or not an start time has been set.
Definition: MooseApp.h:1283
void setRestartRecoverFileBase(const std::string &file_base)
mutator for recover_base (set by RecoverBaseAction)
Definition: MooseApp.h:511
void possiblyLoadRestartableMetaData(const RestartableDataMapName &name, const std::filesystem::path &folder_base)
Loads the restartable meta data for name if it is available with the folder base folder_base.
Definition: MooseApp.C:2293
const std::string & name() const
Get the name of the class.
Definition: MooseBase.h:103
The Kokkos class that manages memory pool for dynamically-sized temporary arrays in Kokkos parallel f...
bool showInputs() const
Prints a message showing the installable inputs for a given application (if getInstallableInputs has ...
Definition: MooseApp.C:1934
bool addRelationshipManager(std::shared_ptr< RelationshipManager > relationship_manager)
Transfers ownership of a RelationshipManager to the application for lifetime management.
Definition: MooseApp.C:2754
RestartableDataValue & getRestartableMetaData(const std::string &name, const RestartableDataMapName &metaname, THREAD_ID tid)
Definition: MooseApp.C:2274
std::vector< RestartableDataMap > & getRestartableData()
Definition: MooseApp.h:693
std::shared_ptr< NullExecutor > _null_executor
Used to return an executor that does nothing.
Definition: MooseApp.h:1360
bool & useEigenvalue()
Returns a writable Boolean indicating whether this app will use an eigenvalue executioner.
Definition: MooseApp.h:401
const std::string & getLastInputFileName() const
Definition: MooseApp.C:1357
virtual void preBackup()
Insertion point for other apps that is called before backup()
Definition: MooseApp.h:744
void setErrorOverridden()
Set a flag so that the parser will throw an error if overridden parameters are detected.
Definition: MooseApp.C:1829
const std::set< std::shared_ptr< RelationshipManager > > & relationshipManagers() const
Return the container of relationship managers.
Definition: MooseApp.h:1037
virtual void postRestore(const bool)
Insertion point for other apps that is called after restore()
Definition: MooseApp.h:778
void loadLibraryAndDependencies(const std::string &library_filename, const libMesh::Parameters &params, bool load_dependencies=true)
Recursively loads libraries and dependencies in the proper order to fully register a MOOSE applicatio...
Definition: MooseApp.C:2443
bool _restart
Whether or not this is a restart run.
Definition: MooseApp.h:1399
Real value(unsigned n, unsigned alpha, unsigned beta, Real x)
std::unique_ptr< Backup > backup()
Backs up the application memory in a Backup.
Definition: MooseApp.C:1559
Generic AppFactory class for building Application objects.
Definition: AppFactory.h:54
RESTARTABLE_FILTER
The filter type applied to a particular piece of "restartable" data.
Definition: MooseTypes.h:840
Moose::Builder & builder()
Returns a writable reference to the builder.
Definition: MooseApp.h:225
bool unusedFlagIsError() const
Returns whether the flag for unused parameters is set to throw an error.
Definition: MooseApp.h:1094
void mooseDeprecated(Args &&... args) const
Emits a deprecation warning prefixed with the object name and type, and a stack trace.
Definition: MooseBase.h:327
std::string getLatestCheckpointFilePrefix(const std::list< std::string > &checkpoint_files)
Definition: MooseUtils.C:819
void setExodusFileRestart(bool flag)
Set the flag to indicate whether or not we need to use a separate Exodus reader to read the mesh BEFO...
Definition: MooseApp.h:429
bool _has_kokkos_gpus
Flag whether every process has an associated Kokkos GPU.
Definition: MooseApp.h:1732
std::map< std::type_index, std::unique_ptr< InterfaceRegistryObjectsBase > > _interface_registry
Registration for interface objects.
Definition: MooseApp.h:1692
SolutionInvalidity & solutionInvalidity()
Get the SolutionInvalidity for this app.
Definition: MooseApp.h:184
RestartableDataValue & registerRestartableData(std::unique_ptr< RestartableDataValue > data, THREAD_ID tid, bool read_only, const RestartableDataMapName &metaname="")
Definition: MooseApp.C:2212
std::unique_ptr< MeshBase > getMeshGeneratorMesh()
Definition: MooseApp.h:902
void queryKokkosGPUs()
Query the Kokkos GPUs in the system and check whether every process has an associated GPU...
Specialized factory for generic Action System objects.
Definition: ActionFactory.h:48
void setMFEMDevice(const std::string &device_string, bool gpu_aware_mpi, Moose::PassKey< MFEMProblemSolve >)
Create/configure the MFEM device with the provided device_string.
Definition: MooseApp.C:3388
void setRestart(bool value)
Sets the restart/recover flags.
Definition: MooseApp.C:2642
TheWarehouse is a container for MooseObjects that allows querying/filtering over various customizeabl...
Definition: TheWarehouse.h:186
std::shared_ptr< Executioner > _executioner
Pointer to the executioner of this run (typically build by actions)
Definition: MooseApp.h:1338
torch::DeviceType getLibtorchDevice() const
Get the device torch is supposed to be running on.
Definition: MooseApp.h:116
void setOutputFileNumbers(const std::map< std::string, unsigned int > &numbers)
Store a map of outputter names and file numbers The MultiApp system requires this to get the file num...
Definition: MooseApp.h:539
static Moose::Capability & addIntCapability(const std::string_view capability, const int value, const std::string_view doc)
Register an integer capability.
Definition: MooseApp.C:3342
MooseMesh wraps a libMesh::Mesh object and enhances its capabilities by caching additional data and s...
Definition: MooseMesh.h:93
ActionFactory _action_factory
The Factory responsible for building Actions.
Definition: MooseApp.h:1299
An entry for a single capability.
Definition: Capability.h:29
const std::string & type() const
Get the type of this class.
Definition: MooseBase.h:93
void restoreFromInitialBackup(const bool for_restart)
Restores from a "initial" backup, that is, one set in _initial_backup.
Definition: MooseApp.C:1609
const ActionWarehouse & actionWarehouse() const
Return a const reference to the ActionWarehouse associated with this app.
Definition: MooseApp.h:220
const Parser & parser() const
Definition: MooseApp.C:1687
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:54
bool isKokkosAvailable() const
Get whether Kokkos is available.
Definition: MooseApp.h:1123
ActionWarehouse & actionWarehouse()
Return a writable reference to the ActionWarehouse associated with this app.
Definition: MooseApp.h:216
RegistrationType
Enumeration for holding the valid types of dynamic registrations allowed.
Definition: MooseApp.h:1632
Executioners are objects that do the actual work of solving your problem.
Definition: Executioner.h:30
enum MooseApp::UNUSED_CHECK _enable_unused_check
bool _recover
Whether or not this is a recovery run.
Definition: MooseApp.h:1396
Point _output_position
The output position.
Definition: MooseApp.h:1280
const MooseMesh * masterMesh() const
Returns a pointer to the master mesh.
Definition: MooseApp.h:850
bool testReStep() const
Whether or not this simulation should fail a timestep and repeat (for testing).
Definition: MooseApp.h:529
bool testCheckpointHalfTransient() const
Whether or not this simulation should only run half its transient (useful for testing recovery) ...
Definition: MooseApp.h:523
const std::shared_ptr< CommandLine > _command_line
The CommandLine object.
Definition: MooseApp.h:1311
libMesh::ExodusII_IO * getExReaderForRestart() const
Get the Exodus reader to restart variables from an Exodus mesh file.
Definition: MooseApp.h:448
bool _error_overridden
Indicates whether warnings or errors are displayed when overridden parameters are detected...
Definition: MooseApp.h:1379
virtual std::string getVersion() const
Returns the current version of the framework or application (default: framework version).
Definition: MooseApp.C:843
SolutionInvalidity & createRecoverableSolutionInvalidity()
Creates a recoverable SolutionInvalidity.
Definition: MooseApp.C:3244
bool _heap_profiling
Memory profiling.
Definition: MooseApp.h:1683
const MooseMesh *const _master_displaced_mesh
The displaced mesh from master app.
Definition: MooseApp.h:1654
Class for storing and utilizing output objects.
Interface for objects interacting with the PerfGraph.
const bool _force_restart
Whether or not we are forcefully attempting to load checkpoints (–force-restart) ...
Definition: MooseApp.h:1408
Executioner * getExecutioner() const
Retrieve the Executioner for this App.
Definition: MooseApp.C:1823
std::set< std::string > getLibrarySearchPaths(const std::string &library_path_from_param) const
Return the paths searched by MOOSE when loading libraries.
Definition: MooseApp.C:2604
void setGlobalTimeOffset(Real offset)
Each App has it&#39;s own local time.
Definition: MooseApp.h:311
The SolutionInvalidity will contain all the information about the occurrence(s) of solution invalidit...
std::unordered_map< std::string, DynamicLibraryInfo > _lib_handles
The library archive (name only), registration method and the handle to the method.
Definition: MooseApp.h:1449
void outputMachineReadableData(const std::string &param, const std::string &start_marker, const std::string &end_marker, const std::string &data) const
Outputs machine readable data (JSON, YAML, etc.) either to the screen (if no filename was provided as...
Definition: MooseApp.C:3307
Point getOutputPosition() const
Get the output position.
Definition: MooseApp.h:287
Definition: Moose.h:46
const MeshGenerator & appendMeshGenerator(const std::string &type, const std::string &name, InputParameters params)
Append a mesh generator that will act on the final mesh generator in the system.
Definition: MooseApp.h:927
static std::string mainMeshGeneratorName()
The name reserved for the "main" mesh generator which is the one used for the numerical solver downst...
const std::string & getRestartableDataMapName(const RestartableDataMapName &name) const
Definition: MooseApp.C:3217
FixedPointConfig _fixed_point_config
Multiapp-related fixed point algorithm configuration details primarily intended to be passed to and u...
Definition: MooseApp.h:1353
bool restoreDataIfAvailable(RestartableDataValue &value, const THREAD_ID tid, Moose::PassKey< MooseApp >)
Restores value in place from the open reader if it is present in the checkpoint and has not yet been ...
const ExecFlagEnum _execute_flags
Execution flags for this App.
Definition: MooseApp.h:1671
UNUSED_CHECK
Indicates whether warnings, errors, or no output is displayed when unused parameters are detected...
Definition: MooseApp.h:1369
bool hasRecoverFileBase() const
Definition: MooseApp.C:1525
std::map< const RelationshipManager *, std::map< const MeshBase *, std::unique_ptr< RelationshipManager > > > _template_to_clones
Map from a template relationship manager to a map in which the key-value pairs represent the MeshBase...
Definition: MooseApp.h:1689
const MooseMesh * masterDisplacedMesh() const
Returns a pointer to the master displaced mesh.
Definition: MooseApp.h:855
bool hasRestartRecoverFileBase() const
Return true if the recovery file base is set.
Definition: MooseApp.C:1519
void registerRestartableDataMapName(const RestartableDataMapName &name, std::string suffix="")
Reserve a location for storing custom RestartableDataMap objects.
Definition: MooseApp.C:3207
void restore(const std::filesystem::path &folder_base, const bool for_restart)
Restore an application from file.
Definition: MooseApp.C:1574
void loadRestartableMetaData(const std::filesystem::path &folder_base)
Loads all available restartable meta data if it is available with the folder base folder_base...
Definition: MooseApp.C:2308
ChainControlDataSystem _chain_control_system
The system that manages the ChainControls.
Definition: MooseApp.h:1660
bool restoreDataIfAvailable(RestartableDataValue &value, const THREAD_ID tid, Moose::PassKey< ReporterData >)
Restores value in place from the checkpoint reader if it is present in the checkpoint and has not yet...
Definition: MooseApp.h:813
const SystemInfo & getSystemInfo() const
Get SystemInfo object.
Definition: MooseApp.h:566
virtual void executeExecutioner()
Execute the Executioner that was built.
Definition: MooseApp.C:1469
Real sub_relaxation_factor
relaxation factor to be used for a MultiApp&#39;s subapps.
Definition: MooseApp.h:128
bool _distributed_mesh_on_command_line
This variable indicates that DistributedMesh should be used for the libMesh mesh underlying MooseMesh...
Definition: MooseApp.h:1393
void addExecutor(const std::string &type, const std::string &name, const InputParameters &params)
Definition: MooseApp.C:1667
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
RelationshipManagers are used for describing what kinds of non-local resources are needed for an obje...
NullExecutor * getNullExecutor() const
Definition: MooseApp.h:341
Generic class for solving transient nonlinear problems.
Definition: SubProblem.h:78
bool getFPTrapFlag() const
Returns whether FPE trapping is turned on (either because of debug or user requested) ...
Definition: MooseApp.h:953
Moose::Builder _builder
Builder for building app related parser tree.
Definition: MooseApp.h:1317
const torch::DeviceType _libtorch_device
The libtorch device this app is using (converted from compute_device)
Definition: MooseApp.h:1702
static Moose::Capability & addStringCapability(const std::string_view capability, const std::string_view value, const std::string_view doc)
Register a string capability.
Definition: MooseApp.C:3350
void addMeshGenerator(const std::string &type, const std::string &name, const InputParameters &params)
Add a mesh generator that will act on the meshes in the system.
Definition: MooseApp.h:876
std::string RestartableDataMapName
Definition: MooseTypes.h:242
std::set< std::shared_ptr< RelationshipManager > > _relationship_managers
The relationship managers that have been added.
Definition: MooseApp.h:1428
OutputWarehouse _output_warehouse
OutputWarehouse object for this App.
Definition: MooseApp.h:1305
std::string _output_file_base
The output file basename.
Definition: MooseApp.h:1271
std::streambuf * _output_buffer_cache
Cache output buffer so the language server can turn it off then back on.
Definition: MooseApp.h:1674
static void addAppParam(InputParameters &params)
Definition: MooseApp.C:95
bool _cpu_profiling
CPU profiling.
Definition: MooseApp.h:1680
bool unusedFlagIsWarning() const
Returns whether the flag for unused parameters is set to throw a warning only.
Definition: MooseApp.h:1091
auto getRestartableDataMapEnd()
Definition: MooseApp.h:1055
virtual void runInputFile()
Actually build everything in the input file.
Definition: MooseApp.C:1389
bool hasStartTime() const
Definition: MooseApp.h:300
System that manages ChainControls.
virtual std::string header() const
Returns a string to be printed at the beginning of a simulation.
Definition: MooseApp.C:2636
const SolutionInvalidity & solutionInvalidity() const
Definition: MooseApp.h:185
Holding syntax for parsing input files.
Definition: Syntax.h:21
bool useMasterMesh() const
Returns whether to use the parent app mesh as the mesh for this app.
Definition: MooseApp.h:845
std::unordered_set< std::string > DataNames
static Moose::Capability & addBoolCapability(const std::string_view capability, const bool value, const std::string_view doc)
Register a boolean capability.
Definition: MooseApp.C:3334
static const std::string MESH_META_DATA_SUFFIX
Definition: MooseApp.h:136
const bool _automatic_automatic_scaling
Whether to turn on automatic scaling by default.
Definition: MooseApp.h:1677
Factory _factory
Definition: MooseApp.h:1376
ChainControlDataSystem & getChainControlDataSystem()
Gets the system that manages the ChainControls.
Definition: MooseApp.h:865
std::unique_ptr< InputParameterWarehouse > _input_parameter_warehouse
Input parameter storage structure; unique_ptr so we can control its destruction order.
Definition: MooseApp.h:1296
bool hasMeshGenerator(const MeshGeneratorName &name) const
const std::vector< std::string > & getInputFileNames() const
Definition: MooseApp.C:1350
const std::vector< T * > & getInterfaceObjects() const
Gets the registered interface objects for a given interface.
Definition: MooseApp.h:1760
TheWarehouse & theWarehouse()
Definition: MooseApp.h:142
const MeshGenerator & getMeshGenerator(const std::string &name) const
std::unique_ptr< Backup > finalizeRestore()
Finalizes (closes) the restoration process done in restore().
Definition: MooseApp.C:1616
System that manages MeshGenerators.
const Moose::Kokkos::MemoryPool & getKokkosMemoryPool() const
Get Kokkos memory pool.
unsigned int _multiapp_number
Numbering in all the sub-apps on the same level.
Definition: MooseApp.h:1645
void dynamicAllRegistration(const std::string &app_name, Factory *factory, ActionFactory *action_factory, Syntax *syntax, std::string library_path, const std::string &library_name)
Thes methods are called to register applications or objects on demand.
Definition: MooseApp.C:2401
void allocateKokkosMemoryPool(std::size_t size, unsigned int ways) const
Allocate Kokkos memory pool.
MeshGeneratorSystem & getMeshGeneratorSystem()
Gets the system that manages the MeshGenerators.
Definition: MooseApp.h:860
static Moose::Capability & addCapabilityInternal(const std::string_view capability, const Moose::Capability::Value &value, const std::string_view doc)
Internal method for adding a capability.
Definition: MooseApp.C:2094
const DataNames & getRecoverableData() const
Return a reference to the recoverable data object.
Definition: MooseApp.h:726
std::unordered_set< std::string > entry_symbols
Definition: MooseApp.h:1445
Parses MOOSE input using HIT/WASP.
Definition: Builder.h:56
const std::shared_ptr< libMesh::Parallel::Communicator > _comm
The MPI communicator this App is going to use.
Definition: MooseApp.h:1268
std::string getPrintableVersion() const
Non-virtual method for printing out the version string in a consistent format.
Definition: MooseApp.C:849
std::shared_ptr< mfem::Device > _mfem_device
The MFEM Device object.
Definition: MooseApp.h:1707
A MultiApp represents one or more MOOSE applications that are running simultaneously.
Definition: MultiApp.h:112
void createMinimalApp()
Method for creating the minimum required actions for an application (no input file) ...
Definition: MooseApp.C:2654
void setExitCode(const int exit_code)
Sets the exit code that the application will exit with.
Definition: MooseApp.h:167
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition: MooseApp.C:1501
DataNames _recoverable_data_names
Data names that will only be read from the restart file during RECOVERY.
Definition: MooseApp.h:1326
Executor * getExecutor() const
Definition: MooseApp.h:340
bool _ready_to_exit
Definition: MooseApp.h:1382
The PerfGraph will hold the master list of all registered performance segments and the head PerfNode...
Definition: PerfGraph.h:43
bool copyInputs()
Handles the copy_inputs input parameter logic: Checks to see whether the passed argument is valid (a ...
Definition: MooseApp.C:1972
virtual bool errorOnJacobianNonzeroReallocation() const
Whether this application should by default error on Jacobian nonzero reallocations.
Definition: MooseApp.h:1063
Real getGlobalTimeOffset() const
Each App has it&#39;s own local time.
Definition: MooseApp.h:317
std::shared_ptr< mfem::Device > getMFEMDevice(Moose::PassKey< MultiApp >)
Get the MFEM device object.
Definition: MooseApp.h:1108
std::string getRestartRecoverFileBase() const
The file_base for the recovery file.
Definition: MooseApp.h:499
const MooseMesh *const _master_mesh
The mesh from master app.
Definition: MooseApp.h:1651
const std::shared_ptr< libMesh::Parallel::Communicator > getCommunicator() const
Definition: MooseApp.h:1032
MeshGenerators are objects that can modify or add to an existing mesh.
Definition: MeshGenerator.h:33
void disableCheckUnusedFlag()
Removes warnings and error checks for unrecognized variables in the input file.
Definition: MooseApp.C:1654
bool useExecutor() const
Definition: MooseApp.h:342
bool _split_mesh
Whether or not we are performing a split mesh operation (–split-mesh)
Definition: MooseApp.h:1402
const bool _use_executor
Indicates whether we are operating in the new/experimental executor mode instead of using the legacy ...
Definition: MooseApp.h:1357
Abstract definition of a RestartableData value.
PerfGraph & perfGraph()
Get the PerfGraph for this app.
Definition: MooseApp.h:178
Class for parsing input files.
Definition: Parser.h:87
void requestCitations()
Handles the –citations command-line option: registers with PETSc the BibTeX entries that should be c...
Definition: MooseApp.C:1909
OutputWarehouse & getOutputWarehouse()
Get the OutputWarehouse objects.
Definition: MooseApp.C:2172
std::string getExecutableName()
Gets the name of the running executable on Mac OS X and linux.
std::string appNameToLibName(const std::string &app_name) const
Converts an application name to a library name: Examples: AnimalApp -> libanimal-oprof.la (assuming METHOD=oprof) ThreeWordAnimalApp -> libthree_word_animal-dbg.la (assuming METHOD=dbg)
Definition: MooseApp.C:2184
void registerInterfaceObject(T &interface)
Registers an interface object for accessing with getInterfaceObjects.
Definition: MooseApp.h:1738
static ParameterRegistry & get()
Get the singleton registry.
void setExReaderForRestart(std::shared_ptr< libMesh::ExodusII_IO > &&exreader)
Set the Exodus reader to restart variables from an Exodus mesh file.
Definition: MooseApp.h:440
unsigned int THREAD_ID
Definition: MooseTypes.h:237
void setStartTime(Real time)
Set the starting time for the simulation.
Definition: MooseApp.C:2159
std::shared_ptr< Executor > _executor
Pointer to the Executor of this run.
Definition: MooseApp.h:1341
The Executor class directs the execution flow of simulations.
Definition: Executor.h:26
void errorCheck()
Runs post-initialization error checking that cannot be run correctly unless the simulation has been f...
Definition: MooseApp.C:1433
std::set< std::string > getLoadedLibraryPaths() const
Return the paths of loaded libraries.
Definition: MooseApp.C:2593
std::string _early_exit_param
Indicates if simulation is ready to exit, and keeps track of which param caused it to exit...
Definition: MooseApp.h:1381
void dynamicAppRegistration(const std::string &app_name, std::string library_path, const std::string &library_name, bool lib_load_deps)
Definition: MooseApp.C:2344
std::unique_ptr< Backup > *const _initial_backup
The backup for use in initial setup; this will get set from the _initial_backup input parameter that ...
Definition: MooseApp.h:1698
This is a helper class for managing the storage of declared Reporter object values.
Definition: ReporterData.h:48