11 #include "Evolution/Systems/Cce/IntegrandInputSteps.hpp"
12 #include "Evolution/Systems/Cce/OptionTags.hpp"
13 #include "Evolution/Systems/Cce/PreSwshDerivatives.hpp"
14 #include "Evolution/Systems/Cce/SwshDerivatives.hpp"
15 #include "NumericalAlgorithms/Spectral/SwshDerivatives.hpp"
39 using const_global_cache_tags =
40 tmpl::list<Tags::LMax, Tags::NumberOfRadialPoints>;
42 template <
typename DbTags,
typename... InboxTags,
typename Metavariables,
43 typename ArrayIndex,
typename ActionList,
44 typename ParallelComponent>
46 db::DataBox<DbTags>& box,
49 const ArrayIndex& ,
const ActionList ,
50 const ParallelComponent*
const ) noexcept {
54 auto pre_swsh_derivative_tag_v) noexcept {
55 using pre_swsh_derivative_tag =
56 typename decltype(pre_swsh_derivative_tag_v)::type;
57 db::mutate_apply<PreSwshDerivatives<pre_swsh_derivative_tag>>(
64 boundary_derivative_impl(box, db::get<Tags::LMax>(box),
67 tmpl::for_each<all_swsh_derivative_tags_for_scri>([&box](
68 auto derivative_tag_v) noexcept {
69 using derivative_tag =
typename decltype(derivative_tag_v)::type;
70 ::Cce::detail::apply_swsh_jacobian_helper<derivative_tag>(
72 derivative_tag>::on_demand_argument_tags{});
74 return {std::move(box)};
77 template <
typename DbTags,
typename... TagPack>
78 static void boundary_derivative_impl(
79 db::DataBox<DbTags>& box,
const size_t l_max,
80 tmpl::list<TagPack...> ) noexcept {
84 const typename TagPack::derivative_of::
85 type&... arguments) noexcept {
87 tmpl::list<
typename TagPack::derivative_kind...>>(
91 db::get<typename TagPack::derivative_of>(box)...);
detail::AngularDerivativesImpl< DerivativeTagList, typename detail::unique_derived_from_list< DerivativeTagList >::type, Representation > AngularDerivatives
A DataBox mutate-compatible computational struct for computing a set of spin-weighted spherical harmo...
Definition: SwshDerivatives.hpp:327
constexpr void mutate_apply(F &&f, const gsl::not_null< DataBox< BoxTags > * > box, Args &&... args) noexcept
Apply the invokable f mutating items MutateTags and taking as additional arguments ArgumentTags and a...
Definition: DataBox.hpp:1417
constexpr Tag::type & get(Variables< TagList > &v) noexcept
Return Tag::type pointing into the contiguous array.
Definition: Variables.hpp:638
Definition: ElementReceiveInterpPoints.hpp:15
Performs a mutation to a spin-weighted spherical harmonic derivative value from the numerical coordin...
Definition: SwshDerivatives.hpp:248
void mutate(const gsl::not_null< DataBox< TagList > * > box, Invokable &&invokable, Args &&... args) noexcept
Allows changing the state of one or more non-computed elements in the DataBox.
Definition: DataBox.hpp:859
tmpl::list< Spectral::Swsh::Tags::Derivative< Tags::ComplexInertialRetardedTime, Spectral::Swsh::Tags::EthEth > > all_boundary_swsh_derivative_tags_for_scri
Typelist of steps for SwshDerivatives mutations called on boundary (angular grid only) quantities nee...
Definition: IntegrandInputSteps.hpp:284
An associative container that is indexed by structs.
Definition: TaggedTuple.hpp:271
tmpl::list< Tags::Du< Tags::BondiJ >, Tags::Dy< Tags::Du< Tags::BondiJ > >, Tags::Dy< Tags::Dy< Tags::Du< Tags::BondiJ > >>, Tags::Dy< Tags::Dy< Tags::BondiW > >, Tags::Dy< Tags::Dy< Tags::BondiQ > >, Tags::Dy< Tags::Dy< Tags::BondiU > >, Tags::Dy< Tags::Dy< Tags::Dy< Tags::BondiJ > >>, Tags::Dy< Tags::Dy< Tags::Dy< Tags::BondiU > >>, Tags::Dy< Tags::Dy< Tags::Dy< Tags::BondiBeta > >>, Tags::Dy< Spectral::Swsh::Tags::Derivative< Tags::BondiBeta, Spectral::Swsh::Tags::EthEthbar > >> all_pre_swsh_derivative_tags_for_scri
Typelist of steps for PreSwshDerivatives mutations needed for scri+ computations.
Definition: IntegrandInputSteps.hpp:351
tmpl::list< Tags::ComplexInertialRetardedTime > all_boundary_pre_swsh_derivative_tags_for_scri
Typelist of steps for PreSwshDerivatives mutations called on boundary (angular grid only) quantities ...
Definition: IntegrandInputSteps.hpp:278
The set of utilities for performing Cauchy characteristic evolution and Cauchy characteristic matchin...
Definition: BoundaryComputeAndSendToEvolution.hpp:28
void angular_derivatives(const size_t l_max, const size_t number_of_radial_points, const ArgumentTypes &... arguments) noexcept
Evaluate all of the spin-weighted derivatives in DerivKindList on input SpinWeighted<ComplexDataVecto...
Definition: SwshDerivatives.hpp:457
gsl::not_null< T * > make_not_null(T *ptr) noexcept
Construct a not_null from a pointer. Often this will be done as an implicit conversion,...
Definition: Gsl.hpp:880
Require a pointer to not be a nullptr
Definition: ReadSpecThirdOrderPiecewisePolynomial.hpp:13