SpECTRE  v2024.04.12
ScalarWave::BoundaryConditions::SphericalRadiation< Dim > Class Template Referencefinal

Impose spherical radiation boundary conditions. More...

#include <SphericalRadiation.hpp>

Classes

struct  TypeOptionTag
 

Public Types

using options = tmpl::list< TypeOptionTag >
 
using dg_interior_evolved_variables_tags = tmpl::list< Tags::Psi, Tags::Phi< Dim > >
 
using dg_interior_temporary_tags = tmpl::list< domain::Tags::Coordinates< Dim, Frame::Inertial >, Tags::ConstraintGamma2 >
 
using dg_gridless_tags = tmpl::list<>
 

Public Member Functions

 SphericalRadiation (detail::SphericalRadiationType type)
 
 SphericalRadiation (SphericalRadiation &&)=default
 
SphericalRadiationoperator= (SphericalRadiation &&)=default
 
 SphericalRadiation (const SphericalRadiation &)=default
 
SphericalRadiationoperator= (const SphericalRadiation &)=default
 
 SphericalRadiation (CkMigrateMessage *msg)
 
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, SphericalRadiation)
 
auto get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override
 
void pup (PUP::er &p) override
 
std::optional< std::stringdg_ghost (gsl::not_null< Scalar< DataVector > * > psi_ext, gsl::not_null< Scalar< DataVector > * > pi_ext, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > phi_ext, gsl::not_null< Scalar< DataVector > * > gamma2_ext, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const Scalar< DataVector > &psi, const tnsr::i< DataVector, Dim, Frame::Inertial > &phi, const tnsr::I< DataVector, Dim, Frame::Inertial > &coords, const Scalar< DataVector > &gamma2) const
 
- Public Member Functions inherited from ScalarWave::BoundaryConditions::BoundaryCondition< Dim >
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
 BoundaryCondition (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
 BoundaryCondition (CkMigrateMessage *msg)
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
 BoundaryCondition (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
 BoundaryCondition (CkMigrateMessage *const msg)
 
 WRAPPED_PUPable_abstract (BoundaryCondition)
 
virtual auto get_clone () const -> std::unique_ptr< BoundaryCondition >=0
 

Static Public Attributes

static constexpr Options::String help
 
static constexpr evolution::BoundaryConditions::Type bc_type
 

Detailed Description

template<size_t Dim>
class ScalarWave::BoundaryConditions::SphericalRadiation< Dim >

Impose spherical radiation boundary conditions.

These can be imposed in one of two forms:

\begin{align*} \Pi=\partial_r\Psi, \end{align*}

referred to as a Sommerfeld condition, or

\begin{align*} \Pi=\partial_r\Psi + \frac{1}{r}\Psi \end{align*}

referred to as a Bayliss-Turkel condition.

The Bayliss-Turkel condition produces fewer reflections than the Sommerfeld condition.

Warning
These are implemented assuming the outer boundary is spherical and centered at the origin of the radiation because the code sets \(\Pi=n^i\Phi_i\), where \(n^i\) is the outward pointing unit normal vector. It might be possible to generalize the condition to non-spherical boundaries by using \(x^i/r\) instead of \(n^i\), but this hasn't been tested.

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ bc_type

template<size_t Dim>
constexpr evolution::BoundaryConditions::Type ScalarWave::BoundaryConditions::SphericalRadiation< Dim >::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::Ghost

◆ help

template<size_t Dim>
constexpr Options::String ScalarWave::BoundaryConditions::SphericalRadiation< Dim >::help
staticconstexpr
Initial value:
{
"Spherical radiation boundary conditions setting the value of Psi, Phi, "
"and Pi either using the Sommerfeld or first-order Bayliss-Turkel "
"method."}

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