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

Apply hydrodynamic free outflow and no inflow boundary condition to GRMHD primitive variables. More...

#include <HydroFreeOutflow.hpp>

Public Types

using options = tmpl::list<>
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

 HydroFreeOutflow (HydroFreeOutflow &&)=default
HydroFreeOutflowoperator= (HydroFreeOutflow &&)=default
 HydroFreeOutflow (const HydroFreeOutflow &)=default
HydroFreeOutflowoperator= (const HydroFreeOutflow &)=default
 HydroFreeOutflow (CkMigrateMessage *msg)
 WRAPPED_PUPable_decl_base_template (domain::BoundaryConditions::BoundaryCondition, HydroFreeOutflow)
auto get_clone () const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > override
void pup (PUP::er &p) override
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 Member Functions

static 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)
static 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< ::Tags::Flux, typename grmhd::ValenciaDivClean::System::flux_variables, tmpl::size_t< 3 >, Frame::Inertial > > > * > 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)
static 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)

Static Public Attributes

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

Detailed Description

Apply hydrodynamic free outflow and no inflow boundary condition to GRMHD primitive variables.

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

  • If \(n_iv^i \geq 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 normal component is zero at the interface i.e. \(v_\text{ghost}^i = v^i - (n_jv^j)n^i\).
  • 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.
Note
In principle we need to recompute the Lorentz factor \(W_\text{ghost}\) using \(v_\text{ghost}^i\). However, the case in which skipping that procedure becomes problematic is only when the fluid has relativistic incoming normal speed on the external boundary, which already implies the failure of adopting outflow type boundary conditions.
  • Divergence cleaning scalar field \(\Phi\) is set to zero in ghost zone.

Member Typedef Documentation

◆ dg_interior_primitive_variables_tags

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

◆ fd_interior_temporary_tags

using grmhd::ValenciaDivClean::BoundaryConditions::HydroFreeOutflow::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::HydroFreeOutflow::get_clone ( ) const -> std::unique_ptr< domain::BoundaryConditions::BoundaryCondition >
overridevirtual

Member Data Documentation

◆ bc_type

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

◆ help

Options::String grmhd::ValenciaDivClean::BoundaryConditions::HydroFreeOutflow::help
staticconstexpr
Initial value:
{
"Free outflow & no inflow boundary condition on GRMHD primitive "
"variables"}

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