SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
grmhd::ValenciaDivClean::BoundaryConditions::Reflective Class Referencefinal

Apply "soft" reflective boundary condition as described in [187]. More...

#include <Reflective.hpp>

Classes

struct  ReflectBoth

Public Types

using options = tmpl::list<ReflectBoth>
using dg_interior_evolved_variables_tags = tmpl::list<>
using dg_interior_primitive_variables_tags
using dg_interior_temporary_tags = tmpl::list<Shift, Lapse, InvSpatialMetric>
using dg_gridless_tags = tmpl::list<>
using fd_interior_evolved_variables_tags = tmpl::list<>
using fd_interior_temporary_tags
using fd_interior_primitive_variables_tags
using fd_gridless_tags = tmpl::list<fd::Tags::Reconstructor>

Public Member Functions

 Reflective (Reflective &&)=default
Reflectiveoperator= (Reflective &&)=default
 Reflective (const Reflective &)=default
Reflectiveoperator= (const Reflective &)=default
 Reflective (bool reflect_both)
 Reflective (CkMigrateMessage *msg)
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, Reflective)
auto get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override
void pup (PUP::er &p) override
std::optional< std::stringdg_ghost (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 > * > 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 > > &, const tnsr::i< DataVector, 3, Frame::Inertial > &outward_directed_normal_covector, const tnsr::I< DataVector, 3, Frame::Inertial > &outward_directed_normal_vector, 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 > &interior_shift, const Scalar< DataVector > &interior_lapse, const tnsr::II< DataVector, 3, Frame::Inertial > &interior_inv_spatial_metric) const
void fd_ghost (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 > * > lorentz_factor_times_spatial_velocity, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > magnetic_field, gsl::not_null< Scalar< DataVector > * > divergence_cleaning_field, gsl::not_null< std::optional< Variables< db::wrap_tags_in< Flux, typename grmhd::ValenciaDivClean::System::flux_variables > > > * > cell_centered_ghost_fluxes, const Direction< 3 > &direction, const Mesh< 3 > &subcell_mesh, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_shift, const Scalar< DataVector > &interior_lapse, const tnsr::ii< DataVector, 3, Frame::Inertial > &interior_spatial_metric, const Scalar< DataVector > &interior_rest_mass_density, const Scalar< DataVector > &interior_electron_fraction, const Scalar< DataVector > &interior_temperature, const Scalar< DataVector > &interior_pressure, const Scalar< DataVector > &interior_specific_internal_energy, const Scalar< DataVector > &interior_lorentz_factor, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_spatial_velocity, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_magnetic_field, const fd::Reconstructor &reconstructor) const
void fd_ghost_impl (gsl::not_null< Scalar< DataVector > * > rest_mass_density, gsl::not_null< Scalar< DataVector > * > electron_fraction, gsl::not_null< Scalar< DataVector > * > temperature, gsl::not_null< Scalar< DataVector > * > pressure, gsl::not_null< Scalar< DataVector > * > specific_internal_energy, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > lorentz_factor_times_spatial_velocity, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > spatial_velocity, gsl::not_null< Scalar< DataVector > * > lorentz_factor, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > magnetic_field, gsl::not_null< Scalar< DataVector > * > divergence_cleaning_field, gsl::not_null< tnsr::ii< DataVector, 3, Frame::Inertial > * > spatial_metric, gsl::not_null< tnsr::II< DataVector, 3, Frame::Inertial > * > inv_spatial_metric, gsl::not_null< Scalar< DataVector > * > sqrt_det_spatial_metric, gsl::not_null< Scalar< DataVector > * > lapse, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * > shift, const Direction< 3 > &direction, const Mesh< 3 > &subcell_mesh, const Scalar< DataVector > &interior_rest_mass_density, const Scalar< DataVector > &interior_electron_fraction, const Scalar< DataVector > &interior_temperature, const Scalar< DataVector > &interior_pressure, const Scalar< DataVector > &interior_specific_internal_energy, const Scalar< DataVector > &interior_lorentz_factor, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_spatial_velocity, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_magnetic_field, const tnsr::ii< DataVector, 3, Frame::Inertial > &interior_spatial_metric, const Scalar< DataVector > &interior_lapse, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_shift, size_t ghost_zone_size, bool need_tags_for_fluxes) const
Public Member Functions inherited from grmhd::ValenciaDivClean::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 Attributes

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

Detailed Description

Apply "soft" reflective boundary condition as described in [187].

All primitive variables at the boundary are copied into ghost zone except :

  • If \(n_iv^i \leq 0\) where \(v^i\) is spatial velocity and \(n_i\) is outward directed normal covector, copy the values of \(v^i\) at the boundary to ghost zone. If \(n_iv^i>0\), spatial velocity in the ghost zone is modified such that the sign of normal component is inverted at the interface i.e. \(v_\text{ghost}^i = v^i - 2*(n_jv^j)n^i\).
  • If \(n_iB^i \leq 0\) where \(B^i\) is magnetic field and \(n_i\) is outward directed normal covector, copy the values of \(B^i\) at the boundary to ghost zone. If \(n_iB^i>0\), magnetic field in the ghost zone is modified such that the sign of normal component is inverted at the interface i.e. \(B_\text{ghost}^i = B^i - 2*(n_jB^j)n^i\).
  • If reflect_both is true, then spatial velocity and magnetic field are are inverted regardless of whether the normal component is pointing outward or inward.
  • However, regardless of whether the normal component of the spatial velocity \(n_iv^i\) is pointing outward or inward, the lorentz factor \(W\) is copied into ghost zone without any modification.
  • Divergence cleaning scalar field \(\Phi\) is set to zero in ghost zone.

Member Typedef Documentation

◆ dg_interior_primitive_variables_tags

using grmhd::ValenciaDivClean::BoundaryConditions::Reflective::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

◆ fd_interior_primitive_variables_tags

using grmhd::ValenciaDivClean::BoundaryConditions::Reflective::fd_interior_primitive_variables_tags

◆ fd_interior_temporary_tags

using grmhd::ValenciaDivClean::BoundaryConditions::Reflective::fd_interior_temporary_tags
Initial value:
tmpl::list<evolution::dg::subcell::Tags::Mesh<3>, Shift, Lapse,
SpatialMetric>

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ bc_type

evolution::BoundaryConditions::Type grmhd::ValenciaDivClean::BoundaryConditions::Reflective::bc_type
staticconstexpr
Initial value:
=
evolution::BoundaryConditions::Type::Ghost

◆ help

Options::String grmhd::ValenciaDivClean::BoundaryConditions::Reflective::help
staticconstexpr
Initial value:
{
"Reflective boundary conditions, inverting the sign "
"of outgoing normal component of spatial velocity "
"and magnetic field."}

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