Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

cluster/f.hh
Go to the documentation of this file.
00001 /* Far field matrix F
00002  */
00003 
00004 #ifndef clusterF_hh
00005 #define clusterF_hh
00006 
00007 #include "basics/outputOperator.hh"
00008 #include "toolbox/scannerConnectors.hh"
00009 #include "cluster/xy.hh"
00010 
00011 namespace cluster {
00012 
00013   // ****************************************************************** Nfld **
00014 
00019   template<class NodeX, class NodeY>
00020   class Nfld {
00022     const NodeX* x_;
00023     const NodeY* y_;
00024 
00025   public:
00026     inline Nfld() : x_(0), y_(0) {}
00027     inline Nfld(const NodeX* x, const NodeY* y) : x_(x), y_(y) {}
00028 
00029     const NodeX* clstX() const {return x_;}
00030     const NodeY* clstY() const {return y_;}
00031   };
00032 
00033   // ***************************************************************** ClstF **
00034 
00039   template<class NodeX, class NodeY>
00040   class ClstF : public concepts::OutputOperator {
00041   public:
00043     typedef TreeTraits<NodeX>   TraitsX;
00044     typedef TreeTraits<NodeY>   TraitsY;
00045     typedef typename TraitsX::F FX;
00046     typedef typename TraitsY::F FY;
00047 
00048     typedef Nfld<NodeX, NodeY>   NfldNodes;
00049     typedef concepts::Scan<NfldNodes> NfldScan;
00050 
00051     // Application operator.
00052     virtual void operator()(const ClstY<NodeY>& vecY,
00053           ClstX<NodeX>& vecX) const = 0;
00054 
00055     virtual NfldScan* scan() const = 0;
00056   };
00057 
00058 } // namespace cluster
00059 
00060 #endif // clusterF_hh

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)