SpECTRE  v2025.08.19
ScalarSelfForce::BoundaryConditions::Sommerfeld Class Reference

Radial Sommerfeld boundary conditions for the m-mode field. More...

#include <Sommerfeld.hpp>

Classes

struct  BlackHoleMass
 
struct  BlackHoleSpin
 
struct  HyperboloidalSlicing
 
struct  MModeNumber
 
struct  OrbitalRadius
 

Public Types

using options = tmpl::list< BlackHoleMass, BlackHoleSpin, OrbitalRadius, MModeNumber, HyperboloidalSlicing >
 
using argument_tags = tmpl::list<>
 
using volume_tags = tmpl::list<>
 
using argument_tags_linearized = tmpl::list<>
 
using volume_tags_linearized = tmpl::list<>
 

Public Member Functions

 Sommerfeld (const Sommerfeld &)=default
 
Sommerfeldoperator= (const Sommerfeld &)=default
 
 Sommerfeld (Sommerfeld &&)=default
 
Sommerfeldoperator= (Sommerfeld &&)=default
 
 Sommerfeld (double black_hole_mass, double black_hole_spin, double orbital_radius, int m_mode_number, bool hyperboloidal_slicing)
 
double black_hole_mass () const
 
double black_hole_spin () const
 
double orbital_radius () const
 
int m_mode_number () const
 
bool hyperboloidal_slicing () const
 
std::unique_ptr< domain::BoundaryConditions::BoundaryConditionget_clone () const override
 
std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const override
 
void apply (gsl::not_null< Scalar< ComplexDataVector > * > field, gsl::not_null< Scalar< ComplexDataVector > * > n_dot_field_gradient, const tnsr::i< ComplexDataVector, 2 > &deriv_field) const
 
void apply_linearized (gsl::not_null< Scalar< ComplexDataVector > * > field_correction, gsl::not_null< Scalar< ComplexDataVector > * > n_dot_field_gradient_correction, const tnsr::i< ComplexDataVector, 2 > &deriv_field_correction) const
 
void pup (PUP::er &p) override
 
- Public Member Functions inherited from elliptic::BoundaryConditions::BoundaryCondition< 2 >
 BoundaryCondition (const BoundaryCondition &)=default
 
 BoundaryCondition (BoundaryCondition &&)=default
 
BoundaryConditionoperator= (const BoundaryCondition &)=default
 
BoundaryConditionoperator= (BoundaryCondition &&)=default
 
virtual std::vector< elliptic::BoundaryConditionTypeboundary_condition_types () const=0
 
- 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 Public Attributes inherited from elliptic::BoundaryConditions::BoundaryCondition< 2 >
static constexpr size_t volume_dim
 

Friends

bool operator== (const Sommerfeld &lhs, const Sommerfeld &rhs)
 

Detailed Description

Radial Sommerfeld boundary conditions for the m-mode field.

The radial boundary conditions are given in Eq. (4.10-4.11) in [158] . They apply both near the Kerr horizon (inner radial boundary) and at large distance (outer radial boundary):

\begin{equation} n_i F^i = i m \Omega \Psi_m \end{equation}

These boundary conditions currently assume a circular equatorial orbit.

Member Function Documentation

◆ boundary_condition_types()

std::vector< elliptic::BoundaryConditionType > ScalarSelfForce::BoundaryConditions::Sommerfeld::boundary_condition_types ( ) const
inlineoverridevirtual

◆ get_clone()

std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > ScalarSelfForce::BoundaryConditions::Sommerfeld::get_clone ( ) const
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String ScalarSelfForce::BoundaryConditions::Sommerfeld::help
staticconstexpr
Initial value:
=
"Radial Sommerfeld boundary condition"

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