|
|
| SphericalRadiation (detail::SphericalRadiationType type) |
|
| SphericalRadiation (SphericalRadiation &&)=default |
|
SphericalRadiation & | operator= (SphericalRadiation &&)=default |
|
| SphericalRadiation (const SphericalRadiation &)=default |
|
SphericalRadiation & | operator= (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::string > | dg_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 |
|
| BoundaryCondition (BoundaryCondition &&)=default |
|
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
|
| BoundaryCondition (const BoundaryCondition &)=default |
|
BoundaryCondition & | operator= (const BoundaryCondition &)=default |
|
| BoundaryCondition (CkMigrateMessage *msg) |
|
void | pup (PUP::er &p) override |
| Public Member Functions inherited from domain::BoundaryConditions::BoundaryCondition |
|
| BoundaryCondition (BoundaryCondition &&)=default |
|
BoundaryCondition & | operator= (BoundaryCondition &&)=default |
|
| BoundaryCondition (const BoundaryCondition &)=default |
|
BoundaryCondition & | operator= (const BoundaryCondition &)=default |
|
| BoundaryCondition (CkMigrateMessage *const msg) |
|
| WRAPPED_PUPable_abstract (BoundaryCondition) |
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.