SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput > Struct Template Reference

Apply corrections from boundary communication. More...

#include <ApplyBoundaryCorrections.hpp>

Public Types

using system = typename Metavariables::system
using variables_tag = typename system::variables_tag
using dt_variables_tag = db::add_tag_prefix<::Tags::dt, variables_tag>
using DtVariables = typename dt_variables_tag::type
using derived_boundary_corrections
using volume_tags_for_dg_boundary_terms
using TimeStepperType
using tag_to_update
using mortar_data_tag
using return_tags = tmpl::list<tag_to_update>
using argument_tags

Static Public Member Functions

template<typename... VolumeArgs>
static void apply (const gsl::not_null< typename tag_to_update::type * > vars_to_update, const typename mortar_data_tag::type &mortar_data, const Mesh< volume_dim > &volume_mesh, const Element< volume_dim > &element, const typename Tags::MortarMesh< volume_dim >::type &mortar_meshes, const typename Tags::MortarInfo< volume_dim >::type &mortar_infos, const ::dg::Formulation dg_formulation, const DirectionMap< volume_dim, std::optional< Variables< tmpl::list< evolution::dg::Tags::MagnitudeOfNormal, evolution::dg::Tags::NormalCovector< volume_dim > > > > > &face_normal_covector_and_magnitude, const TimeStepperType &time_stepper, const evolution::BoundaryCorrection &boundary_correction, const TimeDelta &time_step, const Scalar< DataVector > &gts_det_inv_jacobian, const VolumeArgs &... volume_args)
template<typename... VolumeArgs>
static void apply (const gsl::not_null< typename tag_to_update::type * > vars_to_update, const typename mortar_data_tag::type &mortar_data, const Mesh< volume_dim > &volume_mesh, const Element< volume_dim > &element, const typename Tags::MortarMesh< volume_dim >::type &mortar_meshes, const typename Tags::MortarInfo< volume_dim >::type &mortar_infos, const ::dg::Formulation dg_formulation, const DirectionMap< volume_dim, std::optional< Variables< tmpl::list< evolution::dg::Tags::MagnitudeOfNormal, evolution::dg::Tags::NormalCovector< volume_dim > > > > > &face_normal_covector_and_magnitude, const TimeStepperType &time_stepper, const evolution::BoundaryCorrection &boundary_correction, const TimeDelta &time_step, const VolumeArgs &... volume_args)
template<typename... VolumeArgs>
static void apply (const gsl::not_null< typename variables_tag::type * > vars_to_update, const typename mortar_data_tag::type &mortar_data, const Mesh< volume_dim > &volume_mesh, const Element< volume_dim > &element, const typename Tags::MortarMesh< volume_dim >::type &mortar_meshes, const typename Tags::MortarInfo< volume_dim >::type &mortar_infos, const ::dg::Formulation dg_formulation, const DirectionMap< volume_dim, std::optional< Variables< tmpl::list< evolution::dg::Tags::MagnitudeOfNormal, evolution::dg::Tags::NormalCovector< volume_dim > > > > > &face_normal_covector_and_magnitude, const LtsTimeStepper &time_stepper, const evolution::BoundaryCorrection &boundary_correction, const double dense_output_time, const VolumeArgs &... volume_args)
template<typename DbTagsList, typename... InboxTags, typename ArrayIndex, typename ParallelComponent>
static bool is_ready (const gsl::not_null< db::DataBox< DbTagsList > * > box, const gsl::not_null< tuples::TaggedTuple< InboxTags... > * > inboxes, Parallel::GlobalCache< Metavariables > &, const ArrayIndex &, const ParallelComponent *const)

Static Public Attributes

static constexpr bool local_time_stepping = LocalTimeStepping
static constexpr size_t volume_dim = VolumeDim

Detailed Description

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
struct evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >

Apply corrections from boundary communication.

If LocalTimeStepping is false, updates the derivative of the variables, which should be done before taking a time step. If LocalTimeStepping is true, updates the variables themselves, which should be done after the volume update.

Setting DenseOutput to true receives data required for output at Tags::Time instead of performing a full step. This is only used for local time-stepping.

Member Typedef Documentation

◆ argument_tags

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::argument_tags
Initial value:
tmpl::append<
tmpl::flatten<tmpl::list<
tmpl::conditional_t<DenseOutput, ::Tags::Time, ::Tags::TimeStep>,
tmpl::conditional_t<local_time_stepping, tmpl::list<>,
volume_tags_for_dg_boundary_terms>
Definition IndexType.hpp:43
Definition IndexType.hpp:46
Access to a time stepper through the StepperInterface interface (such as TimeStepper or LtsTimeSteppe...
Definition TimeStepper.hpp:61
The DG formulation to use.
Definition Formulation.hpp:27
The determinant of the inverse Jacobian from the source frame to the target frame.
Definition Tags.hpp:189
The Element associated with the DataBox.
Definition Tags.hpp:52
The computational grid of the Element in the DataBox.
Definition Tags.hpp:62
The boundary correction used for coupling together neighboring cells or applying boundary conditions.
Definition BoundaryCorrectionTags.hpp:37
The evolution::dg::MortarInfo for each mortar.
Definition MortarTags.hpp:69
Mesh on the mortars, indexed by (Direction, ElementId) pairs.
Definition MortarTags.hpp:61
The normal covector and its magnitude for all internal faces of an element.
Definition NormalVectorTags.hpp:35

◆ derived_boundary_corrections

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::derived_boundary_corrections
Initial value:
tmpl::at<typename Metavariables::factory_creation::factory_classes,
The base class used to create boundary corrections from input files and store them in the global cach...
Definition BoundaryCorrection.hpp:16

◆ mortar_data_tag

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::mortar_data_tag
Initial value:
tmpl::conditional_t<local_time_stepping,
History of the data on mortars, indexed by (Direction, ElementId) pairs, and used by the linear multi...
Definition MortarTags.hpp:50
Data on mortars, indexed by (Direction, ElementId) pairs.
Definition MortarTags.hpp:41

◆ tag_to_update

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::tag_to_update
Initial value:
tmpl::conditional_t<local_time_stepping, variables_tag, dt_variables_tag>

◆ TimeStepperType

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::TimeStepperType
Initial value:
tmpl::conditional_t<local_time_stepping, LtsTimeStepper, TimeStepper>

◆ volume_tags_for_dg_boundary_terms

template<bool LocalTimeStepping, typename Metavariables, size_t VolumeDim, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, VolumeDim, DenseOutput >::volume_tags_for_dg_boundary_terms
Initial value:
tmpl::remove_duplicates<
tmpl::flatten<tmpl::transform<derived_boundary_corrections,
detail::get_dg_boundary_terms<tmpl::_1>>>>

The documentation for this struct was generated from the following file:
  • src/Evolution/DiscontinuousGalerkin/Actions/ApplyBoundaryCorrections.hpp