SpECTRE  v2024.04.12
intrp::protocols::InterpolationTargetTag Struct Reference

A protocol for InterpolationTargetTags that are used in the intrp::InterpolationTarget parallel component. More...

#include <InterpolationTargetTag.hpp>

Classes

struct  test
 

Detailed Description

A protocol for InterpolationTargetTags that are used in the intrp::InterpolationTarget parallel component.

Details

A struct conforming to the InterpolationTargetTag protocol must have

  • a type alias temporal_id to a tag that tells the interpolation target what values of time to use (for example, Tags::Time).
  • a type alias vars_to_interpolate_to_target which is a tmpl::list of tags describing variables to interpolate. Will be used to construct a Variables.
  • a type alias compute_items_on_target which is a tmpl::list of compute items that uses vars_to_interpolate_to_target as input.
  • a type alias compute_target_points that conforms to the intrp::protocols::ComputeTargetPoints protocol. This will compute the points on the surface that we are interpolating onto.
  • a type alias post_interpolation_callbacks which is a tmpl::list where every element of that list conforms to the intrp::protocols::PostInterpolationCallback protocol. Only one callback with the signature with gsl::not_null for both the DataBox and GlobalCache (see intrp::protocols::PostInterpolationCallback) is allowed in this list. Furthermore, if a callback with this signature is in the list, it must also be the only callback in the list. After the interpolation is complete, call this struct's apply function.

A struct conforming to this protocol can also optionally have

  • a type alias compute_vars_to_interpolate that conforms to the intrp::protocols::ComputeVarsToInterpolate protocol. This is a struct that computes quantities in the volume that are required to compute different quantities on the surface we are interpolating to.
  • a type alias interpolating_component to the parallel component that will be interpolating to the interpolation target. Only needed when not using the Interpolator ParallelComponent.

An example of a struct that conforms to this protocol is

struct ExampleInterpolationTargetTag
: tt::ConformsTo<intrp::protocols::InterpolationTargetTag> {
using temporal_id = ::Tags::Time;
using vars_to_interpolate_to_target = tmpl::list<
// This is not necessary to conform to the protocol, but is often used
using compute_vars_to_interpolate = ::ah::ComputeHorizonVolumeQuantities;
// This list will be a lot longer for apparent horizon finding
using compute_items_on_target =
tmpl::list<ylm::Tags::ThetaPhiCompute<::Frame::Grid>,
using compute_target_points = ExampleComputeTargetPoints;
using post_interpolation_callbacks =
tmpl::list<ExamplePostInterpolationCallback>;
};
Tag for the current time as a double.
Definition: Time.hpp:19
Given the generalized harmonic variables in the volume, computes the quantities that will be interpol...
Definition: ComputeHorizonVolumeQuantities.hpp:58
Definition: Tags.hpp:140
Inverse of the spatial metric.
Definition: Tags.hpp:33
Definition: Tags.hpp:26
Indicate a class conforms to the Protocol.
Definition: ProtocolHelpers.hpp:22
Definition: Tags.hpp:148
Definition: Tags.hpp:61

The documentation for this struct was generated from the following file: