00001 /* post processing, ie. looping over all cells / elements 00002 * and doing something 00003 */ 00004 00005 #ifndef Postprocess_hh 00006 #define Postprocess_hh 00007 00008 #include "basics/outputOperator.hh" 00009 #include "basics/typedefs.hh" 00010 00011 namespace concepts { 00012 00013 // forward declarations 00014 template<class F> 00015 class Space; 00016 00017 template<class F> 00018 class Element; 00019 00020 class Cell; 00021 00022 class Mesh; 00023 00024 // ******************************************************* CellPostprocess ** 00025 00035 template<class F> 00036 class CellPostprocess : public OutputOperator { 00037 public: 00042 virtual void operator() (const Element<F>& elm) = 0; 00043 00048 virtual void operator() (const Cell& cell) = 0; 00049 protected: 00050 virtual std::ostream& info(std::ostream& os) const; 00051 }; 00052 00053 // ***************************************************** GlobalPostprocess ** 00054 00067 template<class F = Real> 00068 class GlobalPostprocess : public OutputOperator { 00069 public: 00073 GlobalPostprocess(const Space<F>& spc); 00074 00078 GlobalPostprocess(Mesh& msh); 00079 00086 void operator() (CellPostprocess<F>& perCell) const; 00087 protected: 00088 virtual std::ostream& info(std::ostream& os) const; 00089 private: 00091 const Space<F>* spc_; 00092 00094 Mesh* msh_; 00095 }; 00096 00097 } // namespace concepts 00098 00099 #endif // Postprocess_hh