SpECTRE  v2021.11.01
elliptic::dg::Actions Namespace Reference

Actions related to elliptic discontinuous Galerkin schemes. More...

## Classes

struct  ImposeInhomogeneousBoundaryConditionsOnSource
For linear systems, impose inhomogeneous boundary conditions as contributions to the fixed sources (i.e. the RHS of the equations). More...

struct  InitializeDomain
Initialize items related to the basic structure of the element. More...

## Typedefs

template<typename System , typename BackgroundTag = void>
using initialize_operator = tmpl::list< detail::InitializeFacesMortarsAndBackground< System, BackgroundTag > >
Initialize geometric and background quantities for the elliptic DG operator. More...

template<typename System , bool Linearized, typename TemporalIdTag , typename PrimalFieldsTag , typename PrimalFluxesTag , typename OperatorAppliedToFieldsTag , typename PrimalMortarFieldsTag = PrimalFieldsTag, typename PrimalMortarFluxesTag = PrimalFluxesTag>
using apply_operator = tmpl::list< detail::PrepareAndSendMortarData< System, Linearized, TemporalIdTag, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag >, detail::ReceiveMortarDataAndApplyOperator< System, Linearized, TemporalIdTag, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag > >
Apply the DG operator to the PrimalFieldsTag and write the result to the OperatorAppliedToFieldsTag More...

## Detailed Description

Actions related to elliptic discontinuous Galerkin schemes.

## ◆ apply_operator

template<typename System , bool Linearized, typename TemporalIdTag , typename PrimalFieldsTag , typename PrimalFluxesTag , typename OperatorAppliedToFieldsTag , typename PrimalMortarFieldsTag = PrimalFieldsTag, typename PrimalMortarFluxesTag = PrimalFluxesTag>
 using elliptic::dg::Actions::apply_operator = typedef tmpl::list, detail::ReceiveMortarDataAndApplyOperator< System, Linearized, TemporalIdTag, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag> >

Apply the DG operator to the PrimalFieldsTag and write the result to the OperatorAppliedToFieldsTag

Add this list to the action list of a parallel component to compute the elliptic DG operator or its linearization. The operator involves a communication between nearest-neighbor elements. See elliptic::dg for details on the elliptic DG operator. Make sure to add elliptic::dg::Actions::initialize_operator to the initialization phase of your parallel component so the required DataBox tags are set up before applying the operator.

The result of the computation is written to the OperatorAppliedToFieldsTag. Additionally, the primal fluxes are written to the PrimalFluxesTag as an intermediate result. The auxiliary fields and fluxes are discarded to avoid inflating the memory usage.

You can specify the PrimalMortarFieldsTag and the PrimalMortarFluxesTag to re-use mortar-data memory buffers from other operator applications, for example when applying the nonlinear and linearized operator. They default to the PrimalFieldsTag and the PrimalFluxesTag, meaning memory buffers corresponding to these tags are set up in the DataBox.

## ◆ initialize_operator

template<typename System , typename BackgroundTag = void>
 using elliptic::dg::Actions::initialize_operator = typedef tmpl::list< detail::InitializeFacesMortarsAndBackground >

Initialize geometric and background quantities for the elliptic DG operator.

The geometric and background quantities are initialized together because the geometry depends on the background metric through the normalization of face normals. Other examples for background fields are curvature quantities associated with the background metric, or matter sources such as a mass-density in the XCTS equations. All System::background_fields are retrieved from the BackgroundTag together, to enable re-using cached temporary quantities in the computations. The variables function is invoked on the BackgroundTag with the inertial coordinates, the element's Mesh and the element's inverse Jacobian. These arguments allow computing numeric derivatives, if necessary. The BackgroundTag can be set to void (default) if the System has no background fields.

DataBox:

• Uses:
• domain::Tags::InitialExtents<Dim>
• BackgroundTag
• Tags::Mortars<domain::Tags::Mesh<Dim - 1>, Dim>
• Tags::Mortars<::Tags::MortarSize<Dim - 1>, Dim>
• Tags::Variables<background_fields>
• domain::Tags::Coordinates<Dim, Frame::Inertial>
• Tags::Normalized<domain::Tags::UnnormalizedFaceNormal<Dim>>
• Tags::Magnitude<domain::Tags::UnnormalizedFaceNormal<Dim>>
• Tags::Variables<background_fields>
This action relies on the SetupDataBox aggregated initialization mechanism, so Actions::SetupDataBox must be present in the Initialization phase action list prior to this action.