/** * @file stencil.hpp * @author Julian Iseringhausen * @date Mon Apr 18 12:25:05 2011 * * @brief VMG::Stencil * */ #ifndef STENCIL_HPP_ #define STENCIL_HPP_ #include #include #include "base/defs.hpp" namespace VMG { class Grid; class Index; struct Displacement { int m, n, o; vmg_float val; Displacement(int m_, int n_, int o_, vmg_float val_) { m = m_; n = n_; o = o_; val = val_; } }; class Stencil { public: Stencil(vmg_float diag_) : diag(diag_) {} Stencil(const Stencil& stencil_) { this->diag = stencil_.GetDiag(); for (Stencil::iterator iter=stencil_.begin(); iter!=stencil_.end(); iter++) this->push_back(*iter); } typedef std::vector::const_iterator iterator; void push_back(const Displacement& val) { disp.push_back(val); } iterator begin() const { return disp.begin(); } iterator end() const { return disp.end(); } size_t size() const { return disp.size(); } vmg_float GetDiag() const {return diag;} void SetDiag(vmg_float diag_) {diag = diag_;} void Clear() { disp.clear(); } vmg_float Apply(const Grid& grid, const Index& index) const; private: std::vector disp; vmg_float diag; }; } #endif /* STENCIL_HPP_ */