11 #include "Evolution/Systems/Cce/OptionTags.hpp"
12 #include "Evolution/Systems/Cce/ScriPlusInterpolationManager.hpp"
14 #include "ParallelAlgorithms/Initialization/MutateAssign.hpp"
15 #include "Utilities/Rational.hpp"
18 #include "Utilities/TaggedTuple.hpp"
42 template <
typename ScriValuesToObserve>
44 using initialization_tags =
45 tmpl::list<InitializationTags::ScriInterpolationOrder>;
46 using const_global_cache_tags =
47 tmpl::list<Tags::LMax, Tags::NumberOfRadialPoints>;
50 tmpl::transform<ScriValuesToObserve,
52 tmpl::pin<ComplexDataVector>, tmpl::_1>>;
54 using compute_tags = tmpl::list<>;
56 template <
typename DbTags,
typename... InboxTags,
typename Metavariables,
57 typename ArrayIndex,
typename ActionList,
58 typename ParallelComponent>
59 static auto apply(db::DataBox<DbTags>& box,
64 const ParallelComponent*
const ) noexcept {
66 typename Metavariables::scri_values_to_observe{});
67 return std::make_tuple(std::move(box));
70 template <
typename TagList,
typename... TagPack>
71 static void initialize_impl(
const gsl::not_null<db::DataBox<TagList>*> box,
72 tmpl::list<TagPack...> ) noexcept {
73 const size_t target_number_of_points =
74 db::get<InitializationTags::ScriInterpolationOrder>(*box);
75 const size_t vector_size =
77 db::get<Spectral::Swsh::Tags::LMaxBase>(*box));
80 if constexpr (
sizeof...(TagPack) > 0) {
81 Initialization::mutate_assign<simple_tags>(
83 target_number_of_points, vector_size,
84 std::make_unique<intrp::BarycentricRationalSpanInterpolator>(
85 2 * target_number_of_points - 1,
86 2 * target_number_of_points + 2)}...);