SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
elliptic::dg::Actions::DgOperator< System, Linearized, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag > Struct Template Reference

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

#include <ApplyOperator.hpp>

Public Types

using system = System
using temporal_id_tag = detail::TemporalIdTag
using apply_actions
using amr_projectors

Detailed Description

template<typename System, bool Linearized, typename PrimalFieldsTag, typename PrimalFluxesTag, typename OperatorAppliedToFieldsTag, typename PrimalMortarFieldsTag = PrimalFieldsTag, typename PrimalMortarFluxesTag = PrimalFluxesTag>
struct elliptic::dg::Actions::DgOperator< System, Linearized, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag >

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

Add the apply_actions 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.

AMR
Also add the amr_projectors to the list of AMR projectors to support AMR.

Member Typedef Documentation

◆ amr_projectors

template<typename System, bool Linearized, typename PrimalFieldsTag, typename PrimalFluxesTag, typename OperatorAppliedToFieldsTag, typename PrimalMortarFieldsTag = PrimalFieldsTag, typename PrimalMortarFluxesTag = PrimalFluxesTag>
using elliptic::dg::Actions::DgOperator< System, Linearized, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag >::amr_projectors
Initial value:
tmpl::list<
DerivVarsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag,
typename temporal_id_tag::type,
typename PrimalMortarFieldsTag::tags_list,
typename PrimalMortarFluxesTag::tags_list>,
Dim>>,
Data on mortars, indexed by a DirectionalId.
Definition Tags.hpp:27
For h-refinement copy the items from the parent/child, while for p-refinement leave the items unchang...
Definition CopyFromCreatorOrLeaveAsIs.hpp:41
Value initialize the items corresponding to Tags.
Definition DefaultInitialize.hpp:33
Holds elliptic::dg::MortarData, i.e. boundary data on both sides of a mortar.
Definition DgOperator.hpp:170

◆ apply_actions

template<typename System, bool Linearized, typename PrimalFieldsTag, typename PrimalFluxesTag, typename OperatorAppliedToFieldsTag, typename PrimalMortarFieldsTag = PrimalFieldsTag, typename PrimalMortarFluxesTag = PrimalFluxesTag>
using elliptic::dg::Actions::DgOperator< System, Linearized, PrimalFieldsTag, PrimalFluxesTag, OperatorAppliedToFieldsTag, PrimalMortarFieldsTag, PrimalMortarFluxesTag >::apply_actions
Initial value:
tmpl::list<detail::PrepareAndSendMortarData<
System, Linearized, temporal_id_tag, PrimalFieldsTag,
PrimalFluxesTag, OperatorAppliedToFieldsTag,
PrimalMortarFieldsTag, PrimalMortarFluxesTag>,
detail::ReceiveMortarDataAndApplyOperator<
System, Linearized, temporal_id_tag, PrimalFieldsTag,
PrimalFluxesTag, OperatorAppliedToFieldsTag,
PrimalMortarFieldsTag, PrimalMortarFluxesTag>>

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