|
SpECTRE
v2025.08.19
|
Computational structs for evaluating the hypersurface integrals during CCE evolution. These are compatible with use in db::mutate_apply.
More...
#include <LinearSolve.hpp>
Public Types | |
| using | boundary_tags = tmpl::list< BoundaryPrefix< Tag > > |
| using | integrand_tags = tmpl::list< Tags::Integrand< Tag > > |
| using | return_tags = tmpl::list< Tag > |
| using | argument_tags = tmpl::append< integrand_tags, boundary_tags, tmpl::list< Tags::LMax, Tags::NumberOfRadialPoints > > |
Static Public Member Functions | |
| static void | apply (gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, Tag::type::type::spin > > * > integral_result, const Scalar< SpinWeighted< ComplexDataVector, Tag::type::type::spin > > &integrand, const Scalar< SpinWeighted< ComplexDataVector, Tag::type::type::spin > > &boundary, size_t l_max, size_t number_of_radial_points) |
Computational structs for evaluating the hypersurface integrals during CCE evolution. These are compatible with use in db::mutate_apply.
The integral evaluated and the corresponding inputs required depend on the CCE quantity being computed. In any of these, the only mutated tag is Tag, where the result of the integration is placed. The supported Tags act in the following ways:
Tag is Tags::BondiBeta or Tags::BondiU, the integral to be evaluated is simply \[ \partial_y f = A, \]
where \(A\) is retrieved withTags::Integrand<Tag>.Tag is Tags::BondiQ or Tags::BondiW, the integral to be evaluated is \[ (1 - y) \partial_y f + 2 f = A + (1 - y) B, \]
where \(A\) is retrieved withTags::PoleOfIntegrand<Tag> and \(B\) is retrieved with Tags::RegularIntegrand<Tag>.If Tag is Tags::BondiH, the integral to be evaluated is:
\[ (1 - y) \partial_y f + L f + L^\prime \bar{f} = A + (1 - y) B, \]
for \(f\), where \(A\) is retrieved with Tags::PoleOfIntegrand<Tag>, \(B\) is retrieved with Tags::RegularIntegrand<Tag>, \(L\) is retrieved with Tags::LinearFactor<Tag>, and \(L^\prime\) is retrieved with Tags::LinearFactorForConjugate<Tag>. The presence of \(L\) and \(L^\prime\) ensure that the only current method we have for evaluating the \(H\) hypersurface equation is a direct linear solve, rather than the spectral matrix multiplications which are available for the other integrals.
In each case, the boundary value at the world tube for the integration is retrieved from BoundaryPrefix<Tag>.
Additional type aliases boundary_tags and integrand_tags are provided for template processing of the required input tags necessary for these functions. These type aliases are tmpl::lists with the subsets of argument_tags from specific other parts of the CCE computation. Because they play different roles, and have different extents, it is better for tag management to give separated lists for the dependencies.