SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
evolution::dg::subcell::SetInterpolators< Dim, ReconstructorTag > 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
using argument_tags

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 gsl::not_null< DirectionMap< Dim, interpolators_detail::ExtensionDirection< Dim > > * > extension_direction_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)

Detailed Description

template<size_t Dim, typename ReconstructorTag>
struct evolution::dg::subcell::SetInterpolators< Dim, ReconstructorTag >

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.

Member Typedef Documentation

◆ argument_tags

template<size_t Dim, typename ReconstructorTag>
using evolution::dg::subcell::SetInterpolators< Dim, ReconstructorTag >::argument_tags
Initial value:
tmpl::list<::domain::Tags::Element<Dim>, ::domain::Tags::Domain<Dim>,
The Domain.
Definition Domain.hpp:20
The coordinate map from the ElementLogical frame to the TargetFrame.
Definition Tags.hpp:70
The computational grid of the Element in the DataBox.
Definition Tags.hpp:62
The mesh on the subcells.
Definition Mesh.hpp:22
System-agnostic options for DG-subcell.
Definition SubcellOptions.hpp:31

◆ return_tags

template<size_t Dim, typename ReconstructorTag>
using evolution::dg::subcell::SetInterpolators< Dim, ReconstructorTag >::return_tags
Initial value:
tmpl::list<
Records directions in which neighbor ghost zones fall outside the local element's domain and require ...
Definition Interpolators.hpp:96
An intrp::Irregular from our DG grid to our neighbors' FD grid.
Definition Interpolators.hpp:72
An intrp::Irregular from our FD grid to our neighbors' FD grid.
Definition Interpolators.hpp:61
An intrp::Irregular from our neighbors' DG grid to our FD grid.
Definition Interpolators.hpp:83

The documentation for this struct was generated from the following file:
  • src/Evolution/DgSubcell/SetInterpolators.hpp