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

Sets boundary conditions for the elements abutting the worldtube using a combination of constraint-preserving boundary conditions and the local solution evolved inside the worldtube. More...

#include <Worldtube.hpp>

Public Types

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

Public Member Functions

 Worldtube (CkMigrateMessage *msg)
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, Worldtube)
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_psi_correction, gsl::not_null< Scalar< DataVector > * > dt_pi_correction, gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > dt_phi_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 Scalar< DataVector > &, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &phi, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, Dim > &shift, const tnsr::II< DataVector, Dim, Frame::Inertial > &, const Scalar< DataVector > &gamma1, const Scalar< DataVector > &gamma2, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &d_psi, const tnsr::ij< DataVector, Dim > &d_phi, const Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< Dim > > > &) const
std::optional< std::stringdg_ghost (const gsl::not_null< Scalar< DataVector > * > psi, const gsl::not_null< Scalar< DataVector > * > pi, const gsl::not_null< tnsr::i< DataVector, Dim, Frame::Inertial > * > phi, const gsl::not_null< Scalar< DataVector > * > lapse, const gsl::not_null< tnsr::I< DataVector, Dim, Frame::Inertial > * > shift, const gsl::not_null< Scalar< DataVector > * > gamma1, const gsl::not_null< Scalar< DataVector > * > gamma2, const gsl::not_null< tnsr::II< DataVector, Dim, Frame::Inertial > * > inverse_spatial_metric, const std::optional< tnsr::I< DataVector, Dim, Frame::Inertial > > &, const tnsr::i< DataVector, Dim, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, Dim, Frame::Inertial > &normal_vector, const Scalar< DataVector > &psi_interior, const Scalar< DataVector > &pi_interior, const tnsr::i< DataVector, Dim > &phi_interior, const Scalar< DataVector > &lapse_interior, const tnsr::I< DataVector, Dim, Frame::Inertial > &shift_interior, const tnsr::II< DataVector, Dim, Frame::Inertial > &inverse_spatial_metric_interior, const Scalar< DataVector > &gamma1_interior, const Scalar< DataVector > &gamma2_interior, const Scalar< DataVector > &, const tnsr::i< DataVector, Dim > &d_psi, const tnsr::ij< DataVector, Dim > &, const Variables< tmpl::list< Tags::Psi, Tags::Pi, Tags::Phi< Dim > > > &worldtube_vars) 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)

Static Public Attributes

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

Detailed Description

template<size_t Dim>
class CurvedScalarWave::BoundaryConditions::Worldtube< Dim >

Sets boundary conditions for the elements abutting the worldtube using a combination of constraint-preserving boundary conditions and the local solution evolved inside the worldtube.

Details

After extensive experimentation we found this set of boundary conditions to be optimal. They are formulated in terms of characteristic fields.

Boundary conditions for \(w^0_\psi\) \(w^0_i\) are formulated by demanding that there are no constraint violations flowing into the numerical domain and are formulated as corrections to the time derivative of the evolved variables directly. The derivation is described in ConstraintPreservingSphericalRadiation .

Boundary conditions for \(\w^-\) are formulated by evaluating the analytical solution of the worldtube at the grid points of each element abutting the worldtube. The data is updated and saved to CurvedScalarWave::Worldtube::Tags::WorldtubeSolution each time step. It is then treated like a ghost field and applied with the chosen numerical flux. So far only the upwind flux has been tried.

We tried several other combinations such as setting all fields from the worldtube solution but found that this caused major constraint violations to flow out of the worldtube.

Note
We found that, depending on the worldtube size, a fairly high value for \(\gamma_2\) of ca. 10 is required near the worldtube to ensure a stable evolution when using these boundary conditions.

Member Typedef Documentation

◆ dg_gridless_tags

template<size_t Dim>
using CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::dg_gridless_tags
Initial value:
tmpl::list<CurvedScalarWave::Worldtube::Tags::WorldtubeSolution<Dim>>

◆ dg_interior_deriv_vars_tags

template<size_t Dim>
using CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::dg_interior_deriv_vars_tags
Initial value:
tmpl::list<
Definition IndexType.hpp:46
Prefix indicating spatial derivatives.
Definition Prefixes.hpp:46

◆ dg_interior_evolved_variables_tags

template<size_t Dim>
using CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::dg_interior_evolved_variables_tags
Initial value:
tmpl::list<Tags::Psi, Tags::Pi, Tags::Phi<Dim>>

◆ dg_interior_temporary_tags

template<size_t Dim>
using CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::dg_interior_temporary_tags
Initial value:
tmpl::list<gr::Tags::Lapse<DataVector>, gr::Tags::Shift<DataVector, Dim>,
Inverse of the spatial metric.
Definition Tags.hpp:32
Definition Tags.hpp:61

Member Function Documentation

◆ get_clone()

Member Data Documentation

◆ bc_type

template<size_t Dim>
evolution::BoundaryConditions::Type CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::GhostAndTimeDerivative

◆ help

template<size_t Dim>
Options::String CurvedScalarWave::BoundaryConditions::Worldtube< Dim >::help
staticconstexpr
Initial value:
{
"Boundary conditions set by the worldtube. w^- will be set by the "
"internal worldtube solution, w^psi and w^0_i are fixed by constraint "
"preserving boundary conditions on the time derivative."}

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