SpECTRE  v2023.01.13
Cce::RadialIntegrateBondi< BoundaryPrefix, Tag > Struct Template Reference

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)

## Detailed Description

template<template< typename > class BoundaryPrefix, typename Tag>

Computational structs for evaluating the hypersurface integrals during CCE evolution. These are compatible with use in db::mutate_apply.

### Details

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:

• If the Tag is Tags::BondiBeta or Tags::BondiU, the integral to be evaluated is simply

$\partial_y f = A,$

where $$A$$ is retrieved with Tags::Integrand<Tag>.
• If the 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 with Tags::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.

The documentation for this struct was generated from the following file:
• src/Evolution/Systems/Cce/LinearSolve.hpp