50 template <
typename System>
52 static constexpr
size_t dim = System::volume_dim;
53 using variables_tag =
typename System::variables_tag;
60 template <
typename LocalSystem,
bool IsInFluxConservativeForm =
61 LocalSystem::is_in_flux_conservative_form>
68 typename System::gradients_tags>>;
71 template <
typename LocalSystem>
81 using compute_tags =
typename ComputeTags<System>::type;
87 const Time& initial_time,
const double initial_dt_value,
89 return (initial_dt_value > 0.0 ? 1 : -1) * initial_time.slab().duration();
96 const Time& initial_time,
const double initial_dt_value,
98 const auto& step_controller =
99 Parallel::get<OptionTags::StepController>(cache);
100 return step_controller.choose_step(initial_time, initial_dt_value);
102 template <
typename TagsList,
typename Metavariables>
105 const double initial_time_value,
106 const double initial_dt_value,
107 const double initial_slab_size) noexcept {
108 using DtVars =
typename dt_variables_tag::type;
110 const bool time_runs_forward = initial_dt_value > 0.0;
111 const Slab initial_slab =
116 const Time initial_time =
117 time_runs_forward ? initial_slab.start() : initial_slab.end();
119 get_initial_time_step(initial_time, initial_dt_value, cache);
121 const size_t num_grid_points =
122 db::get<Tags::Mesh<dim>>(box).number_of_grid_points();
125 DtVars dt_vars{num_grid_points};
127 dt_variables_tag>::type history;
132 const auto& time_stepper = Parallel::get<OptionTags::TimeStepper>(cache);
136 -static_cast<int64_t>(time_stepper.number_of_past_steps()),
139 return db::create_from<db::RemoveTags<>, simple_tags, compute_tags>(
140 std::move(box),
TimeId{}, time_id, initial_dt, std::move(dt_vars),
Items for initializing the DataBoxes of parallel components.
Definition: ConservativeSystem.hpp:21
static Slab with_duration_to_end(double end, double duration) noexcept
Construct a slab with a given end time and duration. The actual duration may differ by roundoff from ...
Definition: Slab.hpp:49
The time in a simulation. Times can be safely compared for exact equality as long as they do not belo...
Definition: Time.hpp:31
Initialize items related to time-evolution of the system.
Definition: Evolution.hpp:51
Defines base class StepController.
A unique identifier for the temporal state of an integrated system.
Definition: TimeId.hpp:25
static Slab with_duration_from_start(double start, double duration) noexcept
Construct a slab with a given start time and duration. The actual duration may differ by roundoff fro...
Definition: Slab.hpp:43
Define prefixes for DataBox tags.
A chunk of time. Every element must reach slab boundaries exactly, no matter how it actually takes ti...
Definition: Slab.hpp:29
Defines the type alias Requires.
Defines Time and TimeDelta.
Prefix for TimeStepper history.
Definition: Tags.hpp:75
Defines classes and functions used for manipulating DataBox's.
tmpl::flatten< tmpl::list< Tags... > > AddSimpleTags
List of Tags to add to the DataBox.
Definition: DataBox.hpp:1227
Represents an interval of time within a single slab.
Definition: Time.hpp:108
Defines functions computing partial derivatives.
Indicates the Frame that a TensorIndexType is in.
Definition: IndexType.hpp:36
Definition: InterpolationTargetWedgeSectionTorus.hpp:24
A Charm++ chare that caches constant data once per Charm++ node.
Definition: ConstGlobalCache.hpp:76
Defines the class template Mesh.
Wraps the template metaprogramming library used (brigand)
Defines tags related to domain quantities.
typename Requires_detail::requires_impl< B >::template_error_type_failed_to_meet_requirements_on_template_parameters Requires
Express requirements on the template parameters of a function or class, replaces std::enable_if_t ...
Definition: Requires.hpp:67
Definition: IndexType.hpp:44
Defines classes SimpleTag, PrefixTag, ComputeTag and several functions for retrieving tag info...
Defines class template ConstGlobalCache.
Defines functions and tags for taking a divergence.
tmpl::flatten< tmpl::list< Tags... > > AddComputeTags
List of Compute Item Tags to add to the DataBox.
Definition: DataBox.hpp:1234