ConvolutionCalculator¶
This is an introduction to the ConvolutionCalculator class. We write a small overarching summary of the class where we define the algorithm/equation/structure reasoning for having this class or where it fits with the rest of the code.
-
template<int D, typename T>
class ConvolutionCalculator : public mrcpp::TreeCalculator<D, T>¶ Private Functions
-
MWNodeVector<D, T> *makeOperBand(const MWNode<D, T> &gNode, std::vector<NodeIndex<D>> &idx_band)¶
Return a vector of nodes in F affected by O, given a node in G
-
void fillOperBand(MWNodeVector<D, T> *band, std::vector<NodeIndex<D>> &idx_band, NodeIndex<D> &idx, const int *nbox, int dim)¶
Recursively retrieve all reachable f-nodes within the bandwidth.
-
void initBandSizes()¶
Initialize the number of nodes formally within the bandwidth of an operator. The band size is used for thresholding.
-
void calcBandSizeFactor(Eigen::MatrixXi &bs, int depth, const BandWidth &bw)¶
Calculate the number of nodes within the bandwidth of an operator. Currently this routine ignores the fact that there are edges on the world box, and thus over estimates the number of nodes. This is different from the previous version.
-
void applyOperComp(OperatorState<D, T> &os)¶
Apply each component (term) of the operator expansion to a node in f
-
void applyOperator(int i, OperatorState<D, T> &os)¶
Apply a single operator component (term) to a single f-node.
Apply a single operator component (term) to a single f-node. Whether the operator actualy is applied is determined by a screening threshold. Here we make use of the sparcity of matrices \( A, B, C \).
-
MWNodeVector<D, T> *makeOperBand(const MWNode<D, T> &gNode, std::vector<NodeIndex<D>> &idx_band)¶