41
41
//! return number of components
42
virtual int ncomps () const { return n; }
42
virtual int ncomps () const { return n; }
44
44
//! evaluate single component comp in the entity e at local coordinates xi
45
45
/*! Evaluate the function in an entity at local coordinates.
46
@param[in] comp number of component to be evaluated
47
@param[in] e reference to grid entity of codimension 0
48
@param[in] xi point in local coordinates of the reference element of e
49
\return value of the component
46
@param[in] comp number of component to be evaluated
47
@param[in] e reference to grid entity of codimension 0
48
@param[in] xi point in local coordinates of the reference element of e
49
\return value of the component
51
51
virtual double evaluate (int comp, const Entity& e, const Dune::FieldVector<DT,n>& xi) const
53
return comp*0.1*sin(time_*2.*M_PI);
53
return comp*0.1*sin(time_*2.*M_PI);
57
57
virtual std::string name () const
60
snprintf(_name, 256, "vector-%iD", ncomps());
61
return std::string(_name);
60
snprintf(_name, 256, "vector-%iD", ncomps());
61
return std::string(_name);
65
65
template< class GridView >
66
66
void doWrite( const GridView &gridView, Dune::VTK::DataMode dm )
68
enum { dim = GridView :: dimension };
70
const typename GridView :: IndexSet &is = gridView.indexSet();
71
std::vector<int> vertexdata(is.size(dim),dim);
72
std::vector<int> celldata(is.size(0),0);
74
std::stringstream name;
75
name << "vtktest-" << dim << "D-" << VTKDataMode(dm);
76
Dune :: VTKSequenceWriter< GridView >
77
vtk( gridView, name.str(), ".", "", dm );
80
vtk.addVertexData(vertexdata,"vertexData");
81
vtk.addCellData(celldata,"cellData");
82
VTKVectorFunction< GridView > *vectordata = new VTKVectorFunction< GridView >;
83
vtk.addVertexData(vectordata);
86
vectordata->setTime(time);
68
enum { dim = GridView :: dimension };
70
const typename GridView :: IndexSet &is = gridView.indexSet();
71
std::vector<int> vertexdata(is.size(dim),dim);
72
std::vector<int> celldata(is.size(0),0);
74
std::stringstream name;
75
name << "vtktest-" << dim << "D-" << VTKDataMode(dm);
76
Dune :: VTKSequenceWriter< GridView >
77
vtk( gridView, name.str(), ".", "", dm );
80
vtk.addVertexData(vertexdata,"vertexData");
81
vtk.addCellData(celldata,"cellData");
82
VTKVectorFunction< GridView > *vectordata = new VTKVectorFunction< GridView >;
83
vtk.addVertexData(vectordata);
86
vectordata->setTime(time);
93
93
void vtkCheck(int* n, double* h)
95
95
const Dune :: PartitionIteratorType VTK_Partition = Dune :: InteriorBorder_Partition;
96
std::cout << std::endl << "vtkSequenceCheck dim=" << dim << std::endl << std::endl;
97
Dune::SGrid<dim,dim> g(n, h);
96
std::cout << std::endl << "vtkSequenceCheck dim=" << dim << std::endl << std::endl;
97
Dune::SGrid<dim,dim> g(n, h);
100
doWrite( g.template leafView< VTK_Partition >(), Dune::VTK::conforming );
101
doWrite( g.template leafView< VTK_Partition >(), Dune::VTK::nonconforming );
102
doWrite( g.template levelView< VTK_Partition >( 0 ), Dune::VTK::conforming );
103
doWrite( g.template levelView< VTK_Partition >( 0 ), Dune::VTK::nonconforming );
104
doWrite( g.template levelView< VTK_Partition >( g.maxLevel() ), Dune::VTK::conforming );
105
doWrite( g.template levelView< VTK_Partition >( g.maxLevel() ), Dune::VTK::nonconforming );
100
doWrite( g.template leafGridView< VTK_Partition >(), Dune::VTK::conforming );
101
doWrite( g.template leafGridView< VTK_Partition >(), Dune::VTK::nonconforming );
102
doWrite( g.template levelGridView< VTK_Partition >( 0 ), Dune::VTK::conforming );
103
doWrite( g.template levelGridView< VTK_Partition >( 0 ), Dune::VTK::nonconforming );
104
doWrite( g.template levelGridView< VTK_Partition >( g.maxLevel() ), Dune::VTK::conforming );
105
doWrite( g.template levelGridView< VTK_Partition >( g.maxLevel() ), Dune::VTK::nonconforming );
108
108
int main(int argc, char **argv)