SpECTRE
v2025.03.17
|
Sets the intrp::IrregularInterpolant
s for interpolating to ghost zone data at block boundaries.
More...
#include <SetInterpolators.hpp>
Public Types | |
using | return_tags = implementation defined |
using | argument_tags = implementation defined |
Static Public Member Functions | |
template<typename ReconstructorType > | |
static void | apply (const gsl::not_null< DirectionalIdMap< Dim, std::optional< intrp::Irregular< Dim > > > * > interpolators_fd_to_neighbor_fd_ptr, const gsl::not_null< DirectionalIdMap< Dim, std::optional< intrp::Irregular< Dim > > > * > interpolators_dg_to_neighbor_fd_ptr, const gsl::not_null< DirectionalIdMap< Dim, std::optional< intrp::Irregular< Dim > > > * > interpolators_neighbor_dg_to_fd_ptr, const Element< Dim > &element, const Domain< Dim > &domain, const Mesh< Dim > &my_dg_mesh, const Mesh< Dim > &neighbor_dg_mesh, const Mesh< Dim > &my_fd_mesh, const Mesh< Dim > &neighbor_fd_mesh, const ElementMap< Dim, Frame::Grid > &element_map, const ReconstructorType &reconstructor, const evolution::dg::subcell::SubcellOptions &subcell_options) |
Sets the intrp::IrregularInterpolant
s for interpolating to ghost zone data at block boundaries.
The DG to FD interpolants are at full order of the DG grid. The FD to FD interpolant is piecewise linear with no support for neighboring elements. We will want to use high-order slope-limited FD interpolation in the future, but that requires neighbor communication. A slightly simpler approach would be to use high-order Lagrange interpolation, which still requires neighbor communication but does not require any additional changes to the reconstruction routines to work on non-uniform grids. This is what the Multipatch-MHD code does, relying on the slope limiting from the ghost zones to remove oscillations. I (Nils Deppe) am not sure I love that, but it's worth a try since it should be pretty easy to do.