MinimalExecutable.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 /// \cond
4 #pragma once
5 
6 #include <vector>
7 
8 #include "Options/Options.hpp"
9 #include "Utilities/Gsl.hpp"
10 #include "Utilities/TMPL.hpp"
11 #include "Utilities/TaggedTuple.hpp"
12 
13 namespace Parallel {
14 template <typename Metavariables>
15 class CProxy_GlobalCache;
16 } // namespace Parallel
17 
18 /// [metavariables_definition]
19 struct Metavariables {
20  using component_list = tmpl::list<>;
21 
22  enum class Phase { Initialization, Exit };
23 
24  template <typename... Tags>
25  static Phase determine_next_phase(
26  const gsl::not_null<
27  tuples::TaggedTuple<Tags...>*> /*phase_change_decision_data*/,
28  const Phase& /*current_phase*/,
29  const Parallel::CProxy_GlobalCache<
30  Metavariables>& /*cache_proxy*/) noexcept {
31  return Phase::Exit;
32  }
33 
34  static constexpr Options::String help{"A minimal executable"};
35 };
36 /// [metavariables_definition]
37 
38 /// [executable_example_charm_init]
39 static const std::vector<void (*)()> charm_init_node_funcs{};
40 static const std::vector<void (*)()> charm_init_proc_funcs{};
41 /// [executable_example_charm_init]
42 /// \endcond
Options.hpp
vector
tuples::TaggedTuple< Tags... >
Gsl.hpp
Options::String
const char *const String
The string used in option structs.
Definition: Options.hpp:32
Parallel
Functionality for parallelization.
Definition: ElementReceiveInterpPoints.hpp:13
TMPL.hpp
gsl::not_null
Require a pointer to not be a nullptr
Definition: ReadSpecThirdOrderPiecewisePolynomial.hpp:13