SendGhWorldtubeData.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
7 #include "Evolution/Systems/Cce/Actions/ReceiveGhWorldtubeData.hpp"
8 #include "Evolution/Systems/Cce/Components/WorldtubeBoundary.hpp"
9 #include "Evolution/Systems/GeneralizedHarmonic/Tags.hpp"
10 #include "Parallel/GlobalCache.hpp"
11 #include "Parallel/Invoke.hpp"
12 #include "PointwiseFunctions/GeneralRelativity/Tags.hpp"
13 #include "Utilities/TMPL.hpp"
14 
15 namespace intrp {
16 namespace callbacks {
17 
18 /// \brief post_interpolation_callback that calls Cce::ReceiveGhWorldTubeData
19 ///
20 /// Uses:
21 /// - Metavariables
22 /// - `temporal_id`
23 /// - DataBox:
24 /// - `::gr::Tags::SpacetimeMetric<3,Frame::Inertial>`
25 /// - `::GeneralizedHarmonic::Tags::Pi<3,Frame::Inertial>`
26 /// - `::GeneralizedHarmonic::Tags::Phi<3,Frame::Inertial>`
27 ///
28 /// This is an InterpolationTargetTag::post_interpolation_callback;
29 /// see InterpolationTarget for a description of InterpolationTargetTag.
30 template <typename CceEvolutionComponent>
32  using observation_types = tmpl::list<>;
33  template <typename DbTags, typename Metavariables>
34  static void apply(
35  const db::DataBox<DbTags>& box,
37  const typename Metavariables::temporal_id::type& temporal_id) noexcept {
38  auto& cce_gh_boundary_component = Parallel::get_parallel_component<
42  cce_gh_boundary_component, temporal_id,
43  db::get<::gr::Tags::SpacetimeMetric<3, Frame::Inertial>>(box),
45  db::get<::GeneralizedHarmonic::Tags::Pi<3, Frame::Inertial>>(box),
47  box),
48  db::get<
50  box),
51  db::get<
53  box));
54  }
55 };
56 } // namespace callbacks
57 } // namespace intrp
intrp::callbacks::SendGhWorldtubeData
post_interpolation_callback that calls Cce::ReceiveGhWorldTubeData
Definition: SendGhWorldtubeData.hpp:31
Parallel::GlobalCache
Definition: ElementReceiveInterpPoints.hpp:16
GlobalCache.hpp
Parallel::get_parallel_component
auto get_parallel_component(GlobalCache< Metavariables > &cache) noexcept -> Parallel::proxy_from_parallel_component< GlobalCache_detail::get_component_if_mocked< typename Metavariables::component_list, ParallelComponentTag >> &
Access the Charm++ proxy associated with a ParallelComponent.
Definition: GlobalCache.hpp:223
db::get
const auto & get(const DataBox< TagList > &box) noexcept
Retrieve the item with tag Tag from the DataBox.
Definition: DataBox.hpp:1116
DataBox.hpp
GeneralizedHarmonic::Tags::Pi
Conjugate momentum to the spacetime metric.
Definition: Tags.hpp:29
gr::Tags::SpacetimeMetric
Definition: Tags.hpp:17
GeneralizedHarmonic::Tags::Phi
Auxiliary variable which is analytically the spatial derivative of the spacetime metric.
Definition: Tags.hpp:40
Tags::dt
Prefix indicating a time derivative.
Definition: Prefixes.hpp:29
Cce::Actions::ReceiveGhWorldtubeData
Stores the boundary data from the GH evolution in the Cce::InterfaceManagers::GhInterfaceManager,...
Definition: ReceiveGhWorldtubeData.hpp:49
Cce::GhWorldtubeBoundary
Component that supplies CCE worldtube boundary data sourced from a running GH system.
Definition: WorldtubeBoundary.hpp:106
Parallel::simple_action
void simple_action(Proxy &&proxy) noexcept
Invoke a simple action on proxy
Definition: Invoke.hpp:82
db::DataBox
Definition: InterpolationTargetWedgeSectionTorus.hpp:24
TMPL.hpp