Class documentation of Concepts

Loading...
Searching...
No Matches
operator01.hh
Go to the documentation of this file.
1
6#ifndef clusterOperator01_hh
7#define clusterOperator01_hh
8
10#include "toolbox/dynArray.hh"
13#include "cluster/f.hh"
14
15namespace cluster {
16
17 // ***************************************************** CacheSizeExceeded **
18
25
26 // ************************************************************ Operator01 **
27
32 template<class NodeX, class NodeY>
33 class Operator01 : public concepts::Operator<typename TreeTraits<NodeX>::F> {
34 public:
38 typedef typename TraitsX::F FX;
39 typedef typename TraitsY::F FY;
42 class NfldMatrix {
44 NfldMatrix* lnk_;
46 uint dX_;
48 uint* idxX_;
50 uint dY_;
52 uint* idxY_;
54 FX* val_;
55 public:
69 concepts::DynArray<uint>& idxX, uint nidxX,
71 uint nelmX, concepts::DynArray<uint>& idxY, uint nidxY,
73 uint nelmY);
74 inline ~NfldMatrix() {delete[] val_; delete[] idxY_; delete[] idxX_;}
75
80 inline NfldMatrix* link() const {return lnk_;}
82 inline float memory() const;
83 };
92 virtual ~Operator01();
93
97 void operator()(const concepts::Vector<FY>& fncY,
102 float memory() const;
103 inline const concepts::Space<FX>& spaceX() const {return X_.space();}
104 inline const concepts::Space<FY>& spaceY() const {return Y_.space();}
105 protected:
106 std::ostream& info(std::ostream& os) const;
107 private:
113 ClstX<NodeX>& X_;
115 ClstY<NodeY>& Y_;
117 NfldMatrix* N_;
119 uint nnfldval_;
120
128 template<class Trts, class Nd>
129 void constructor_(const Nd* clst, concepts::DynArray<uint>& idx,
130 uint* nidx, concepts::DynArray<const concepts::Element
131 <typename Trts::F>*>& elm, uint* nelm);
132 };
133
134 template<class NodeX, class NodeY>
136 return sizeof(NfldMatrix)
137 + (float)dX_ * sizeof(idxX_[0])
138 + (float)dY_ * sizeof(idxY_[0])
139 + (float)(dX_ * dY_) * sizeof(val_[0]);
140 }
141
142} // namespace cluster
143
144#endif // clusterOperator01_hh
virtual const concepts::Space< F > & space() const =0
Space.
void operator()(const concepts::Vector< FY > &fncY, concepts::Vector< FX > &fncX)
Application operator.
NfldMatrix * link() const
Next near field entries.
Definition operator01.hh:80
NfldMatrix(concepts::BilinearForm< FX > &bf, NfldMatrix *lnk, concepts::DynArray< uint > &idxX, uint nidxX, concepts::DynArray< const concepts::Element< FX > * > &elmX, uint nelmX, concepts::DynArray< uint > &idxY, uint nidxY, concepts::DynArray< const concepts::Element< FY > * > &elmY, uint nelmY)
float memory() const
Memory usage in byte.
float memory() const
void operator()(const concepts::Function< FY > &fncY, concepts::Function< FX > &fncX)
Operator01(concepts::BilinearForm< FX > &bf, ClstF< NodeX, NodeY > &F, ClstX< NodeX > &X, ClstY< NodeY > &Y)
std::ostream & info(std::ostream &os) const
Returns information in an output stream.
TreeTraits< NodeX > TraitsX
Interface for the operator.
Definition operator01.hh:36
Node::CF F
Field of the node (Real or Cmplx)
Definition tree.hh:255