SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, 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 = system::volume_dim

Detailed Description

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

Apply corrections from boundary communication.

This is usually used indirectly through ApplyBoundaryCorrectionsToTimeDerivative, ApplyLtsBoundaryCorrections, or ApplyLtsDenseBoundaryCorrections.

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, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, 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, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, 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, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, 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, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, DenseOutput >::tag_to_update
Initial value:
tmpl::conditional_t<local_time_stepping, variables_tag, dt_variables_tag>

◆ TimeStepperType

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

◆ volume_tags_for_dg_boundary_terms

template<bool LocalTimeStepping, typename Metavariables, bool DenseOutput>
using evolution::dg::ApplyBoundaryCorrections< LocalTimeStepping, Metavariables, 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