SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
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
using dg_interior_evolved_variables_tags
using dg_interior_temporary_tags
using dg_interior_primitive_variables_tags
using dg_gridless_tags = tmpl::list<>
using dg_interior_dt_vars_tags
using dg_interior_deriv_vars_tags
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, std::optional< std::unique_ptr<::MathFunction< 1, Frame::Inertial > > > incoming_wave_profile=std::nullopt)
 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 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)

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::i< DataVector, 3, Frame::Inertial > * > spatial_velocity_one_form, gsl::not_null< Scalar< DataVector > * > rest_mass_density, gsl::not_null< Scalar< DataVector > * > electron_fraction, gsl::not_null< Scalar< DataVector > * > temperature, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > spatial_velocity, 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 Scalar< DataVector > &interior_temperature, 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 Typedef Documentation

◆ dg_interior_deriv_vars_tags

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::dg_interior_deriv_vars_tags
Initial value:
tmpl::list<::Tags::deriv<gr::Tags::SpacetimeMetric<DataVector, 3>,
tmpl::size_t<3>, Frame::Inertial>,
Definition IndexType.hpp:46
Prefix indicating spatial derivatives.
Definition Prefixes.hpp:46

◆ dg_interior_dt_vars_tags

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::dg_interior_dt_vars_tags
Initial value:
tmpl::list<::Tags::dt<gr::Tags::SpacetimeMetric<DataVector, 3>>,
Prefix indicating a time derivative.
Definition Prefixes.hpp:28

◆ dg_interior_evolved_variables_tags

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::dg_interior_evolved_variables_tags
Initial value:
tmpl::list<gr::Tags::SpacetimeMetric<DataVector, 3>,
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_primitive_variables_tags

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::dg_interior_primitive_variables_tags
Initial value:
tmpl::list<hydro::Tags::RestMassDensity<DataVector>,
The electron fraction .
Definition Tags.hpp:105
The Lorentz factor , where is the spatial velocity of the fluid.
Definition Tags.hpp:181
The magnetic field measured by an Eulerian observer, where is the normal to the spatial hypersurfac...
Definition Tags.hpp:197
The fluid pressure .
Definition Tags.hpp:234
The spatial velocity of the fluid, where . Here is the spatial part of the 4-velocity of the fluid,...
Definition Tags.hpp:257
The specific internal energy .
Definition Tags.hpp:286
The temperature of the fluid.
Definition Tags.hpp:292

◆ dg_interior_temporary_tags

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::dg_interior_temporary_tags
Initial value:
tmpl::list<domain::Tags::Coordinates<3, Frame::Inertial>,
Constraint dammping parameter for the generalized harmonic system (cf. lindblom2005qh).
Definition ConstraintDampingTags.hpp:62
Constraint dammping parameter for the generalized harmonic system (cf. lindblom2005qh).
Definition ConstraintDampingTags.hpp:70
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
Inverse of the spatial metric.
Definition Tags.hpp:32
Definition Tags.hpp:65
Definition Tags.hpp:61
Definition Tags.hpp:100

◆ options

using grmhd::GhValenciaDivClean::BoundaryConditions::ConstraintPreservingFreeOutflow::options
Initial value:
typename gh::BoundaryConditions::ConstraintPreservingBjorhus<3>::options

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

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

◆ help

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:
  • src/Evolution/Systems/GrMhd/GhValenciaDivClean/BoundaryConditions/ConstraintPreservingFreeOutflow.hpp