Apply parity-respecting FD ghost values for internal boundaries in a Cartoon evolution.
More...
|
|
static std::optional< std::string > | dg_ghost (gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::aa< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::iaa< DataVector, 3, Frame::Inertial > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< tnsr::i< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::Ij< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::IJ< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::i< DataVector, 3, Frame::Inertial > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< Scalar< DataVector > * >, gsl::not_null< tnsr::I< DataVector, 3, Frame::Inertial > * >, gsl::not_null< tnsr::II< DataVector, 3, Frame::Inertial > * >, const std::optional< tnsr::I< DataVector, 3, Frame::Inertial > > &, const tnsr::i< DataVector, 3, Frame::Inertial > &, const tnsr::I< DataVector, 3, Frame::Inertial > &) |
|
static void | fd_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 > * > 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, const Direction< 3 > &direction, 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 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 Scalar< DataVector > &interior_divergence_cleaning_field, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_spatial_velocity, const tnsr::I< DataVector, 3, Frame::Inertial > &interior_magnetic_field, const fd::Reconstructor< System > &reconstructor) |
template<typename
System>
class grmhd::GhValenciaDivClean::BoundaryConditions::CartoonGhost< System >
Apply parity-respecting FD ghost values for internal boundaries in a Cartoon evolution.
Domains using the cartoon method have boundaries at \(x = 0\), which require ghost data for FD evolution. We fill this FD ghost data by reflecting the data appropriately: due to the symmetry of cartoon simulations, we can determine the parity of each component of an arbitrary tensor, allowing us to either reflect the data or reflect and negate the data.
This only has fd_ghost() implemented because this boundary uses ZernikeB1 bases in DG elements which do not require a boundary condition.
Sets GH variables based on their parity, and calls the ValenciaDivClean::BoundaryConditions::CartoonGhost implementation to set the hydro variables.