Apply parity-respecting FD ghost values for internal boundaries in a Cartoon evolution.
More...
|
|
static std::optional< std::string > | dg_ghost (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< 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< 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 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 &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 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 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) |
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.