4 #ifndef DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
5 #define DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH
10 #include <dune/common/fvector.hh>
11 #include <dune/common/shared_ptr.hh>
34 template<
typename GV,
typename RF>
37 typedef typename GV::Intersection
Cell;
41 typedef FieldVector<DomainField, dimDomain>
Domain;
44 typedef std::vector<RangeField>
Range;
48 template <
typename GV,
typename RF>
78 template<
typename Func>
82 typedef typename Func::Traits::RangeField RF;
84 shared_ptr<const Func> func;
87 shared_ptr<DataArrayWriter<RF> > arraywriter;
91 const std::string&
name,
unsigned dimR_)
92 : func(func_), name_(name), dimR(dimR_)
96 const std::string&
name)
97 : func(func_), name_(name), dimR(func->dimRange())
101 virtual std::string
name()
const {
return name_; }
104 virtual unsigned ncomps()
const {
return dimR; }
115 return !arraywriter->writeIsNoop();
119 virtual void write(
const typename Func::Traits::Cell& cell,
120 const typename Func::Traits::Domain& xl) {
121 typename Func::Traits::Range result;
122 func->evaluate(cell, xl, result);
123 for(
unsigned d = 0; d < result.size() && d < dimR; ++d)
124 arraywriter->write(result[d]);
125 for(
unsigned d = result.size(); d < dimR; ++d)
126 arraywriter->write(0);
141 #endif // DUNE_GRID_IO_FILE_VTK_SKELETONFUNCTION_HH