SpECTRE  v2024.04.12
LinearSolver::Actions::BuildMatrix< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag > Struct Template Reference

Build the explicit matrix representation of the linear operator. More...

#include <BuildMatrix.hpp>

Public Types

template<typename ApplyOperatorActions >
using actions = tmpl::list< CollectTotalNumPoints< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag >, SetUnitVector< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag >, ApplyOperatorActions, StoreMatrixColumn< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag > >
 
using amr_projectors = tmpl::list< ProjectBuildMatrix< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag > >
 
using register_actions = tmpl::list< observers::Actions::RegisterWithObservers< detail::RegisterWithVolumeObserver< ArraySectionIdTag > > >
 Add to the register phase to enable observations.
 

Detailed Description

template<typename IterationIdTag, typename OperandTag, typename OperatorAppliedToOperandTag, typename CoordsTag, typename ArraySectionIdTag = void>
struct LinearSolver::Actions::BuildMatrix< IterationIdTag, OperandTag, OperatorAppliedToOperandTag, CoordsTag, ArraySectionIdTag >

Build the explicit matrix representation of the linear operator.

This is useful for debugging and analysis only, not to actually solve the elliptic problem (that should happen iteratively).

Add the actions to the action list to build the matrix. The ApplyOperatorActions template parameter are the actions that apply the linear operator to the OperandTag. Also add the amr_projectors to the list of AMR projectors and the register_actions

Template Parameters
IterationIdTagUsed to keep track of the iteration over all matrix columns. Should be the same that's used to identify iterations in the ApplyOperatorActions.
OperandTagWill be set to unit vectors, with the '1' moving through all points over the course of the iteration.
OperatorAppliedToOperandTagWhere the ApplyOperatorActions store the result of applying the linear operator to the OperandTag.
CoordsTagThe tag of the coordinates observed alongside the matrix for volume data visualization.
ArraySectionIdTagCan identify a subset of elements that this algorithm should run over, e.g. in a multigrid setting.

The documentation for this struct was generated from the following file: