SpECTRE  v2024.04.12
grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow Class Referencefinal

Sets constraint-preserving boundary conditions on the spacetime variables and hydro free outflow on the GRMHD variables. More...

#include <ConstraintPreservingFreeOutflow.hpp>

Public Types

using options = typename gh::BoundaryConditions::ConstraintPreservingBjorhus< 3 >::options
 
using dg_interior_evolved_variables_tags = tmpl::list< gr::Tags::SpacetimeMetric< DataVector, 3 >, gh::Tags::Pi< DataVector, 3 >, gh::Tags::Phi< DataVector, 3 > >
 
using dg_interior_temporary_tags = tmpl::list< domain::Tags::Coordinates< 3, Frame::Inertial >, ::gh::ConstraintDamping::Tags::ConstraintGamma1, ::gh::ConstraintDamping::Tags::ConstraintGamma2, gr::Tags::Lapse< DataVector >, gr::Tags::Shift< DataVector, 3 >, gr::Tags::InverseSpatialMetric< DataVector, 3 >, gr::Tags::InverseSpacetimeMetric< DataVector, 3 >, gr::Tags::SpacetimeNormalVector< DataVector, 3 >, gh::Tags::ThreeIndexConstraint< DataVector, 3 >, gh::Tags::GaugeH< DataVector, 3 >, gh::Tags::SpacetimeDerivGaugeH< DataVector, 3 > >
 
using dg_interior_primitive_variables_tags = tmpl::list< hydro::Tags::RestMassDensity< DataVector >, hydro::Tags::ElectronFraction< DataVector >, hydro::Tags::SpecificInternalEnergy< DataVector >, hydro::Tags::SpatialVelocity< DataVector, 3 >, hydro::Tags::MagneticField< DataVector, 3 >, hydro::Tags::LorentzFactor< DataVector >, hydro::Tags::Pressure< DataVector > >
 
using dg_gridless_tags = tmpl::list<>
 
using dg_interior_dt_vars_tags = tmpl::list<::Tags::dt< gr::Tags::SpacetimeMetric< DataVector, 3 > >, ::Tags::dt< gh::Tags::Pi< DataVector, 3 > >, ::Tags::dt< gh::Tags::Phi< DataVector, 3 > > >
 
using dg_interior_deriv_vars_tags = tmpl::list<::Tags::deriv< gr::Tags::SpacetimeMetric< DataVector, 3 >, tmpl::size_t< 3 >, Frame::Inertial >, ::Tags::deriv< gh::Tags::Pi< DataVector, 3 >, tmpl::size_t< 3 >, Frame::Inertial >, ::Tags::deriv< gh::Tags::Phi< DataVector, 3 >, tmpl::size_t< 3 >, Frame::Inertial > >
 
using fd_interior_evolved_variables_tags = tmpl::list<>
 
using fd_interior_temporary_tags = tmpl::list<>
 
using fd_interior_primitive_variables_tags = tmpl::list<>
 
using fd_gridless_tags = tmpl::list<>
 

Public Member Functions

 ConstraintPreservingFreeOutflow (gh::BoundaryConditions::detail::ConstraintPreservingBjorhusType type)
 
 ConstraintPreservingFreeOutflow (ConstraintPreservingFreeOutflow &&)=default
 
ConstraintPreservingFreeOutflowoperator= (ConstraintPreservingFreeOutflow &&)=default
 
 ConstraintPreservingFreeOutflow (const ConstraintPreservingFreeOutflow &)=default
 
ConstraintPreservingFreeOutflowoperator= (const ConstraintPreservingFreeOutflow &)=default
 
 ConstraintPreservingFreeOutflow (CkMigrateMessage *msg)
 
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, ConstraintPreservingFreeOutflow)
 
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, 3, Frame::Inertial > * > dt_spacetime_metric_correction, gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * > dt_pi_correction, gsl::not_null< tnsr::iaa< DataVector, 3, Frame::Inertial > * > dt_phi_correction, gsl::not_null< Scalar< DataVector > * > dt_tilde_d, gsl::not_null< Scalar< DataVector > * > dt_tilde_ye, gsl::not_null< Scalar< DataVector > * > dt_tilde_tau, gsl::not_null< tnsr::i< DataVector, 3, Frame::Inertial > * > dt_tilde_s, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > dt_tilde_b, gsl::not_null< Scalar< DataVector > * > dt_tilde_phi, const std::optional< tnsr::I< DataVector, 3, Frame::Inertial > > &face_mesh_velocity, const tnsr::i< DataVector, 3, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, 3, Frame::Inertial > &normal_vector, const tnsr::aa< DataVector, 3, Frame::Inertial > &spacetime_metric, const tnsr::aa< DataVector, 3, Frame::Inertial > &pi, const tnsr::iaa< DataVector, 3, Frame::Inertial > &phi, const Scalar< DataVector > &, const Scalar< DataVector > &, const Scalar< DataVector > &, const tnsr::I< DataVector, 3, Frame::Inertial > &, const tnsr::I< DataVector, 3, Frame::Inertial > &, const Scalar< DataVector > &, const Scalar< DataVector > &, const tnsr::I< DataVector, 3, Frame::Inertial > &coords, const Scalar< DataVector > &gamma1, const Scalar< DataVector > &gamma2, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, 3, Frame::Inertial > &shift, const tnsr::II< DataVector, 3 > &, const tnsr::AA< DataVector, 3, Frame::Inertial > &inverse_spacetime_metric, const tnsr::A< DataVector, 3, Frame::Inertial > &spacetime_unit_normal_vector, const tnsr::iaa< DataVector, 3, Frame::Inertial > &three_index_constraint, const tnsr::a< DataVector, 3, Frame::Inertial > &gauge_source, const tnsr::ab< DataVector, 3, Frame::Inertial > &spacetime_deriv_gauge_source, const tnsr::aa< DataVector, 3, Frame::Inertial > &logical_dt_spacetime_metric, const tnsr::aa< DataVector, 3, Frame::Inertial > &logical_dt_pi, const tnsr::iaa< DataVector, 3, Frame::Inertial > &logical_dt_phi, const tnsr::iaa< DataVector, 3, Frame::Inertial > &d_spacetime_metric, const tnsr::iaa< DataVector, 3, Frame::Inertial > &d_pi, const tnsr::ijaa< DataVector, 3, Frame::Inertial > &d_phi) const
 
- Public Member Functions inherited from grmhd::GhValenciaDivClean::BoundaryConditions::BoundaryCondition
 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 Member Functions

static std::optional< std::stringdg_ghost (gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * > spacetime_metric, gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * > pi, gsl::not_null< tnsr::iaa< DataVector, 3, Frame::Inertial > * > phi, gsl::not_null< Scalar< DataVector > * > tilde_d, gsl::not_null< Scalar< DataVector > * > tilde_ye, gsl::not_null< Scalar< DataVector > * > tilde_tau, gsl::not_null< tnsr::i< DataVector, 3, Frame::Inertial > * > tilde_s, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > tilde_b, gsl::not_null< Scalar< DataVector > * > tilde_phi, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > tilde_d_flux, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > tilde_ye_flux, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > tilde_tau_flux, gsl::not_null< tnsr::Ij< DataVector, 3, Frame::Inertial > * > tilde_s_flux, gsl::not_null< tnsr::IJ< DataVector, 3, Frame::Inertial > * > tilde_b_flux, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > tilde_phi_flux, gsl::not_null< Scalar< DataVector > * > gamma1, gsl::not_null< Scalar< DataVector > * > gamma2, gsl::not_null< Scalar< DataVector > * > lapse, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > shift, gsl::not_null< tnsr::II< DataVector, 3, Frame::Inertial > * > inv_spatial_metric, const std::optional< tnsr::I< DataVector, 3, Frame::Inertial > > &face_mesh_velocity, const tnsr::i< DataVector, 3, Frame::Inertial > &normal_covector, const tnsr::I< DataVector, 3, Frame::Inertial > &normal_vector, const tnsr::aa< DataVector, 3, Frame::Inertial > &interior_spacetime_metric, const tnsr::aa< DataVector, 3, Frame::Inertial > &interior_pi, const tnsr::iaa< DataVector, 3, Frame::Inertial > &interior_phi, const Scalar< DataVector > &interior_rest_mass_density, const Scalar< DataVector > &interior_electron_fraction, const Scalar< DataVector > &interior_specific_internal_energy, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_spatial_velocity, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_magnetic_field, const Scalar< DataVector > &interior_lorentz_factor, const Scalar< DataVector > &interior_pressure, const tnsr::I< DataVector, 3, Frame::Inertial > &, const Scalar< DataVector > &interior_gamma1, const Scalar< DataVector > &interior_gamma2, const Scalar< DataVector > &interior_lapse, const tnsr::I< DataVector, 3 > &interior_shift, const tnsr::II< DataVector, 3 > &interior_inv_spatial_metric, const tnsr::AA< DataVector, 3, Frame::Inertial > &, const tnsr::A< DataVector, 3, Frame::Inertial > &, const tnsr::iaa< DataVector, 3, Frame::Inertial > &, const tnsr::a< DataVector, 3, Frame::Inertial > &, const tnsr::ab< DataVector, 3, Frame::Inertial > &, const tnsr::aa< DataVector, 3, Frame::Inertial > &, const tnsr::aa< DataVector, 3, Frame::Inertial > &, const tnsr::iaa< DataVector, 3, Frame::Inertial > &, const tnsr::iaa< DataVector, 3, Frame::Inertial > &, const tnsr::iaa< DataVector, 3, Frame::Inertial > &, const tnsr::ijaa< DataVector, 3, Frame::Inertial > &)
 
static void fd_ghost (const gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * >, const gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * >, const gsl::not_null< tnsr::iaa< DataVector, 3, Frame::Inertial > * >, const gsl::not_null< Scalar< DataVector > * >, const gsl::not_null< Scalar< DataVector > * >, const gsl::not_null< Scalar< DataVector > * >, const gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, const gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, const gsl::not_null< Scalar< DataVector > * >, const Direction< 3 > &)
 

Static Public Attributes

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

Detailed Description

Sets constraint-preserving boundary conditions on the spacetime variables and hydro free outflow on the GRMHD variables.

Warning
This is only implemented for DG, on FD you get an error. The reason is that some care and experimentation is necessary to impose the boundary condition correctly on FD.

Member Function Documentation

◆ get_clone()

auto grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::get_clone ( ) const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition >
overridevirtual

Member Data Documentation

◆ bc_type

constexpr evolution::BoundaryConditions::Type grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::GhostAndTimeDerivative

◆ help

constexpr Options::String grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::help
staticconstexpr
Initial value:
{
"ConstraintPreservingAnalytic boundary conditions for GH variables and "
"hydro free outflow for GRMHD."}

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