SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim > Class Template Referencefinal

Sets constraint preserving boundary conditions using the Bjorhus method. More...

#include <Bjorhus.hpp>

Classes

struct  IncomingWaveProfileOptionTag
struct  TypeOptionTag

Public Types

using options
using dg_interior_evolved_variables_tags
using dg_interior_temporary_tags
using dg_interior_dt_vars_tags
using dg_interior_deriv_vars_tags
using dg_gridless_tags = tmpl::list<::Tags::Time>

Public Member Functions

 ConstraintPreservingBjorhus (detail::ConstraintPreservingBjorhusType type, std::optional< std::unique_ptr<::MathFunction< 1, Frame::Inertial > > > incoming_wave_profile=std::nullopt)
 ConstraintPreservingBjorhus (CkMigrateMessage *msg)
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, ConstraintPreservingBjorhus)
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< tnsr::aa< DataVector, Dim, Frame::Inertial > * > dt_spacetime_metric_correction, gsl::not_null< tnsr::aa< DataVector, Dim, Frame::Inertial > * > dt_pi_correction, gsl::not_null< tnsr::iaa< DataVector, Dim, Frame::Inertial > * > dt_phi_correction, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &face_mesh_velocity, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, Dim, Frame::Inertial > &, const tnsr::aa< DataVector, Dim, Frame::Inertial > &spacetime_metric, const tnsr::aa< DataVector, Dim, Frame::Inertial > &pi, const tnsr::iaa< DataVector, Dim, Frame::Inertial > &phi, 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, Frame::Inertial > &shift, const tnsr::AA< DataVector, Dim, Frame::Inertial > &inverse_spacetime_metric, const tnsr::A< DataVector, Dim, Frame::Inertial > &spacetime_unit_normal_vector, const tnsr::iaa< DataVector, Dim, Frame::Inertial > &three_index_constraint, const tnsr::a< DataVector, Dim, Frame::Inertial > &gauge_source, const tnsr::ab< DataVector, Dim, Frame::Inertial > &spacetime_deriv_gauge_source, const tnsr::aa< DataVector, Dim, Frame::Inertial > &logical_dt_spacetime_metric, const tnsr::aa< DataVector, Dim, Frame::Inertial > &logical_dt_pi, const tnsr::iaa< DataVector, Dim, Frame::Inertial > &logical_dt_phi, const tnsr::iaa< DataVector, Dim, Frame::Inertial > &d_spacetime_metric, const tnsr::iaa< DataVector, Dim, Frame::Inertial > &d_pi, const tnsr::ijaa< DataVector, Dim, Frame::Inertial > &d_phi, double time=std::numeric_limits< double >::signaling_NaN()) const
Public Member Functions inherited from gh::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)

Static Public Member Functions

static std::string name ()

Static Public Attributes

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

Detailed Description

template<size_t Dim>
class gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >

Sets constraint preserving boundary conditions using the Bjorhus method.

Details

Boundary conditions for the generalized harmonic evolution system can be divided in to three parts, constraint-preserving, physical and gauge boundary conditions.

The generalized harmonic (GH) evolution system is a first-order reduction of Einstein equations brought about by the imposition of GH gauge. This introduces constraints on the free (evolved) variables in addition to the standard Hamiltonian and momentum constraints. The constraint-preserving portion of the boundary conditions is designed to prevent the influx of constraint violations from external faces of the evolution domain, by damping them away on a controlled and short time-scale. These conditions are imposed as corrections to the characteristic projections of the right-hand-sides of the GH evolution equations (i.e. using Bjorhus' method [23]), as written down in Eq. (63) - (65) of [132] . In addition to these equations, the fourth projection is simply frozen in the unlikely case its coordinate speed becomes negative, i.e. \(d_t u^{\hat{1}+}{}_{ab}=0\) (in the notation of [132]). The gauge degrees of freedom are controlled by imposing a Sommerfeld-type condition ( \(L=0\) member of the hierarchy derived in [17]) that allow gauge perturbations to pass through the boundary without strong reflections. These assume a spherical outer boundary, and can be written down as in Eq. (25) of [181] . Finally, the physical boundary conditions control the influx of inward propagating gravitational-wave solutions from the external boundaries. These are derived by considering the evolution system of the Weyl curvature tensor, and controlling the inward propagating characteristics of the system that are proportional to the Newman-Penrose curvature spinor components \(\Psi_4\) and \(\Psi_0\). Here we use Eq. (68) of [132] to disallow any incoming waves. It is to be noted that all the above conditions are also imposed on characteristic modes with speeds exactly zero.

An optional injected incoming-wave contribution can be specified through IncomingWaveProfile. The injected strain-rate tensor is

\[ \dot{h}_{ab} = \dot{f}(t) \left(\hat{x}_a \hat{x}_b + \hat{y}_a \hat{y}_b - 2 \hat{z}_a \hat{z}_b\right), \]

where the configured profile is interpreted directly as \(\dot{f}(t)\) and \(\hat{x}_a\), \(\hat{y}_a\) and \(\hat{z}_a\) are the components of the coordinate basis vectors. This formula is taken from [132]. It should be considered an approximate perturbation rather than an exact gravitational wave which would have to be constructed at null-infinity. Note that the profile of the injected wave is specified at the outer boundary and its amplitude should be adjusted according to the usual 1/r scaling.

This class provides two choices of combinations of the above corrections:

  • ConstraintPreserving : this imposes the constraint-preserving and gauge-controlling corrections;
  • ConstraintPreservingPhysical : this additionally restricts the influx of any physical gravitational waves from the outer boundary, in addition to preventing the influx of constraint violations and gauge perturbations.

We refer to Bjorhus::constraint_preserving_corrections_dt_v_psi(), Bjorhus::constraint_preserving_corrections_dt_v_zero(), Bjorhus::constraint_preserving_gauge_corrections_dt_v_minus(), and Bjorhus::constraint_preserving_gauge_physical_corrections_dt_v_minus() for the further details on implementation.

Note
These boundary conditions assume a spherical outer boundary.

Member Typedef Documentation

◆ dg_interior_deriv_vars_tags

template<size_t Dim>
using gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::dg_interior_deriv_vars_tags
Initial value:
tmpl::list<::Tags::deriv<gr::Tags::SpacetimeMetric<DataVector, Dim>,
tmpl::size_t<Dim>, Frame::Inertial>,
Definition IndexType.hpp:46
Prefix indicating spatial derivatives.
Definition Prefixes.hpp:46

◆ dg_interior_dt_vars_tags

template<size_t Dim>
using gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::dg_interior_dt_vars_tags
Initial value:
tmpl::list<::Tags::dt<gr::Tags::SpacetimeMetric<DataVector, Dim>>,
Prefix indicating a time derivative.
Definition Prefixes.hpp:28

◆ dg_interior_evolved_variables_tags

template<size_t Dim>
using gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::dg_interior_evolved_variables_tags
Initial value:
tmpl::list<gr::Tags::SpacetimeMetric<DataVector, Dim>,
Auxiliary variable which is analytically the spatial derivative of the spacetime metric.
Definition Tags.hpp:38
Conjugate momentum to the spacetime metric.
Definition Tags.hpp:27

◆ dg_interior_temporary_tags

template<size_t Dim>
using gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::dg_interior_temporary_tags
Initial value:
tmpl::list<domain::Tags::Coordinates<Dim, Frame::Inertial>,
Gauge source function for the generalized harmonic system.
Definition Tags.hpp:51
Spacetime derivatives of the gauge source function for the generalized harmonic system.
Definition Tags.hpp:65
Tags corresponding to various constraints of the generalized harmonic system, and their diagnosticall...
Definition Tags.hpp:190
Definition Tags.hpp:20
Definition Tags.hpp:65
Definition Tags.hpp:61
Definition Tags.hpp:100

◆ options

template<size_t Dim>
using gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::options
Initial value:
tmpl::flatten<tmpl::list<
tmpl::conditional_t<Dim == 3, tmpl::list<IncomingWaveProfileOptionTag>,
tmpl::list<>>>>

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ bc_type

template<size_t Dim>
evolution::BoundaryConditions::Type gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::TimeDerivative

◆ help

template<size_t Dim>
Options::String gh::BoundaryConditions::ConstraintPreservingBjorhus< Dim >::help
staticconstexpr
Initial value:
{
"ConstraintPreservingBjorhus boundary conditions setting the value of the"
"time derivatives of the spacetime metric, Phi and Pi to expressions that"
"prevent the influx of constraint violations and reflections."}

The documentation for this class was generated from the following file:
  • src/Evolution/Systems/GeneralizedHarmonic/BoundaryConditions/Bjorhus.hpp