SpECTRE  v2021.12.06
CurvedScalarWave::BoundaryConditions::ConstraintPreservingSphericalRadiation< Dim > Class Template Referencefinal

Implements constraint-preserving boundary conditions with a second order Bayliss-Turkel radiation boundary condition. More...

#include <ConstraintPreservingSphericalRadiation.hpp>

Public Types

using options = tmpl::list<>
 
using dg_interior_evolved_variables_tags = tmpl::list< Phi< Dim >, Psi >
 
using dg_interior_temporary_tags = tmpl::list< domain::Tags::Coordinates< Dim, Frame::Inertial >, Tags::ConstraintGamma1, Tags::ConstraintGamma2, gr::Tags::Lapse< DataVector >, gr::Tags::Shift< Dim, Frame::Inertial, DataVector > >
 
using dg_interior_dt_vars_tags = tmpl::list<::Tags::dt< Pi >, ::Tags::dt< Phi< Dim > >, ::Tags::dt< Psi > >
 
using dg_interior_deriv_vars_tags = tmpl::list<::Tags::deriv< Psi, tmpl::size_t< Dim >, Frame::Inertial >, ::Tags::deriv< Phi< Dim >, tmpl::size_t< Dim >, Frame::Inertial > >
 
using dg_gridless_tags = tmpl::list<>
 

Public Member Functions

 ConstraintPreservingSphericalRadiation (ConstraintPreservingSphericalRadiation &&)=default
 
ConstraintPreservingSphericalRadiationoperator= (ConstraintPreservingSphericalRadiation &&)=default
 
 ConstraintPreservingSphericalRadiation (const ConstraintPreservingSphericalRadiation &)=default
 
ConstraintPreservingSphericalRadiationoperator= (const ConstraintPreservingSphericalRadiation &)=default
 
 ConstraintPreservingSphericalRadiation (CkMigrateMessage *msg)
 
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, ConstraintPreservingSphericalRadiation)
 
auto get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override
 
void pup (PUP::er &p) override
 
std::optional< std::stringdg_time_derivative (gsl::not_null< Scalar< DataVector > * > dt_pi_correction, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > dt_phi_correction, gsl::not_null< Scalar< DataVector > * > dt_psi_correction, const std::optional< tnsr::I< DataVector, Dim > > &face_mesh_velocity, const tnsr::i< DataVector, Dim > &normal_covector, const tnsr::I< DataVector, Dim > &normal_vector, const tnsr::i< DataVector, Dim > &phi, const Scalar< DataVector > &psi, const tnsr::I< DataVector, Dim, Frame::Inertial > &coords, const Scalar< DataVector > &gamma1, const Scalar< DataVector > &gamma2, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, Dim > &shift, const Scalar< DataVector > &dt_pi, const tnsr::i< DataVector, Dim > &dt_phi, const Scalar< DataVector > &dt_psi, const tnsr::i< DataVector, Dim > &d_psi, const tnsr::ij< DataVector, Dim > &d_phi) const
 
- Public Member Functions inherited from CurvedScalarWave::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 CurvedScalarWave::BoundaryConditions::ConstraintPreservingSphericalRadiation< Dim >

Implements constraint-preserving boundary conditions with a second order Bayliss-Turkel radiation boundary condition.

Details

The Bayliss-Turkel boundary conditions are technically only valid in flat space and should therefore only be used at boundaries where the background spacetime is approximately Minkwoski such as (sufficiently far out) outer boundaries for asymptotically flat spacetimes. Small reflections are still likely to occur.

The constraint-preserving part of the boundary conditions are set on the time derivatives of the evolved fields according to [60] . The physical Bayliss-Turkel boundary conditions are additionally set onto the time derivative of \(\Pi\).

The constraints are defined as follows:

\begin{align*} \mathcal{C}_i&=\partial_i\Psi - \Phi_i=0, \\ \mathcal{C}_{ij}&=\partial_{[i}\Phi_{j]}=0 \end{align*}

The boundary conditions are then given by:

\begin{align*} \partial_{t} \Psi&\to\partial_{t}\Psi + \lambda_\Psi n^i \mathcal{C}_i, \\ \partial_{t}\Pi&\to\partial_{t}\Pi-\left(\partial_t\Pi - \partial_t\Pi^{\mathrm{BC}}\right) +\gamma_2\lambda_\Psi n^i \mathcal{C}_i =\partial_t\Pi^{\mathrm{BC}} +\gamma_2\lambda_\Psi n^i \mathcal{C}_i, \\ \partial_{t}\Phi_i&\to\partial_{t}\Phi_i+ \lambda_0n^jP^k{}_i\mathcal{C}_{jk} = \partial_{t}\Phi_i+ \lambda_0n^j \mathcal{C}_{ji}. \end{align*}

These conditions are equivalent to equations (40) and (41) of [60] if the shift vector is parallel to the normal of the outer boundary. The Bayliss-Turkel boundary conditions are given by:

\begin{align*} \prod_{l=1}^m\left(\partial_t + \partial_r + \frac{2l-1}{r}\right)\Psi=0, \end{align*}

which we expand here to second order ( \(m=2\)) to derive conditions for \(\partial_t\Pi^{\mathrm{BC}}\):

\begin{align*} \partial_t\Pi^{\mathrm{BC}} &=\left(\partial_t\partial_r + \partial_r\partial_t + \partial_r^2+\frac{4}{r}\partial_t +\frac{4}{r}\partial_r + \frac{2}{r^2}\right)\Psi \notag \\ &=\left((2n^i + \beta^i) \partial_t \Phi_i + n^i n^j\partial_i\Phi_j + \frac{4}{r}\partial_t\Psi + \frac{4}{r}n^i\Phi_i + \frac{2}{r^2}\Psi \right) / \alpha. \end{align*}

This derivation makes the following assumptions:

  • The lapse, shift, normal vector and radius are time-independent, \(\partial_t \alpha = \partial_t \beta^i = \partial_t n^i = \partial_t r = 0\). If necessary, these time derivatives can be accounted for in the future by inserting the appropriate terms in a straightforward manner.
  • The outer boundary is spherical. It might be possible to generalize this condition but we have not tried this.

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ bc_type

template<size_t Dim>
constexpr evolution::BoundaryConditions::Type CurvedScalarWave::BoundaryConditions::ConstraintPreservingSphericalRadiation< Dim >::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::TimeDerivative

◆ help

template<size_t Dim>
constexpr Options::String CurvedScalarWave::BoundaryConditions::ConstraintPreservingSphericalRadiation< Dim >::help
staticconstexpr
Initial value:
{
"Constraint-preserving boundary conditions with a second order "
"Bayliss-Turkel radiation boundary condition."}

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