SpECTRE  v2024.04.12
evolution::dg::subcell::SetInterpolators< Dim > Struct Template Reference

Sets the intrp::IrregularInterpolants for interpolating to ghost zone data at block boundaries. More...

#include <SetInterpolators.hpp>

Public Types

using return_tags = tmpl::list< evolution::dg::subcell::Tags::InterpolatorsFromFdToNeighborFd< Dim >, evolution::dg::subcell::Tags::InterpolatorsFromDgToNeighborFd< Dim >, evolution::dg::subcell::Tags::InterpolatorsFromNeighborDgToFd< Dim > >
 
using argument_tags = tmpl::list<::domain::Tags::Element< Dim >, ::domain::Tags::Domain< Dim >, domain::Tags::Mesh< Dim >, domain::Tags::Mesh< Dim >, evolution::dg::subcell::Tags::Mesh< Dim >, evolution::dg::subcell::Tags::Mesh< Dim >, ::domain::Tags::ElementMap< Dim, Frame::Grid >, evolution::dg::subcell::Tags::Reconstructor >
 

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)
 

Detailed Description

template<size_t Dim>
struct evolution::dg::subcell::SetInterpolators< Dim >

Sets the intrp::IrregularInterpolants 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.

Warning
Currently assumes that neighboring DG/FD elements are on the same refinement level and have the same DG mesh and subcell mesh.

The documentation for this struct was generated from the following file: