1
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2
// vi: set et ts=4 sw=2 sts=2:
2
4
\brief A unit test for the PersistentContainer
10
#include <dune/common/mpihelper.hh>
11
#include <dune/common/parallel/mpihelper.hh>
11
12
#include <dune/grid/yaspgrid.hh>
13
14
#include <dune/grid/alugrid.hh>
36
37
PersistentContainer<GridType,DataType> container0(grid,0);
37
38
PersistentContainer<GridType,DataType> container1(grid,1);
38
39
PersistentContainer<GridType,DataType> container2(grid,2);
40
41
typedef typename GridType::LeafGridView GridView;
41
42
const GridView &view = grid.leafView();
42
43
typedef typename GridView::template Codim<0>::Iterator EIterator;
46
47
for(EIterator eit = view.template begin<0>(); eit != eend; ++eit)
48
49
container0[*eit] = eit->geometry().center();
49
const Dune::GenericReferenceElement< typename GridType::ctype, GridType::dimension > &refElement
50
= Dune::GenericReferenceElements< typename GridType::ctype, GridType::dimension >::general( eit->type() );
51
for (int i=0;i<eit->template count<1>();++i)
50
const Dune::ReferenceElement< typename GridType::ctype, GridType::dimension > &refElement
51
= Dune::ReferenceElements< typename GridType::ctype, GridType::dimension >::general( eit->type() );
52
for (int i=0; i<eit->template count<1>(); ++i)
52
53
container1(*eit,i) = eit->geometry().global( refElement.position(i,1) );
53
for (int i=0;i<eit->template count<2>();++i)
54
for (int i=0; i<eit->template count<2>(); ++i)
54
55
container2(*eit,i) = eit->geometry().global( refElement.position(i,2) );
58
59
grid.globalRefine(1);
64
65
const EIterator &eend = view.template end<0>();
65
66
for(EIterator eit = view.template begin<0>(); eit != eend; ++eit)
67
if (container0[*eit].used == true)
68
if (container0[*eit].used == true)
69
70
std::cout << "ERROR: a new element is marked as 'used' in the container - stop testing" << std::endl;
90
const Dune::GenericReferenceElement< typename GridType::ctype, GridType::dimension > &refElement
91
= Dune::GenericReferenceElements< typename GridType::ctype, GridType::dimension >::general( eit->type() );
92
for (int i=0;i<eit->template count<1>();++i)
91
const Dune::ReferenceElement< typename GridType::ctype, GridType::dimension > &refElement
92
= Dune::ReferenceElements< typename GridType::ctype, GridType::dimension >::general( eit->type() );
93
for (int i=0; i<eit->template count<1>(); ++i)
93
94
if ( ( container1(*up,i).coord - up->geometry().global( refElement.position(i,1) ) ).two_norm() > 1e-8 )
95
96
std::cout << "ERROR: wrong data stored in container1 - stop testing" << std::endl;
99
for (int i=0;i<eit->template count<2>();++i)
100
for (int i=0; i<eit->template count<2>(); ++i)
100
101
if ( ( container2(*up,i).coord - up->geometry().global( refElement.position(i,2) ) ).two_norm() > 1e-8 )
102
103
std::cout << "ERROR: wrong data stored in container1 - stop testing" << std::endl;
111
112
int main (int argc , char **argv)
114
// this method calls MPI_Init, if MPI is enabled
115
MPIHelper::instance(argc,argv);
117
// /////////////////////////////////////////////////////////////////////////////
119
// /////////////////////////////////////////////////////////////////////////////
121
typedef YaspGrid<2> GridType;
122
Dune::FieldVector<double,2> Len; Len = 1.0;
123
Dune::FieldVector<int,2> s; s = 2; s[0] = 6;
124
Dune::FieldVector<bool,2> p; p = false;
126
GridType grid(Len,s,p,overlap);
127
std::cout << "Testing YaspGrid" << std::endl;
115
// this method calls MPI_Init, if MPI is enabled
116
MPIHelper::instance(argc,argv);
118
// /////////////////////////////////////////////////////////////////////////////
120
// /////////////////////////////////////////////////////////////////////////////
122
typedef YaspGrid<2> GridType;
123
Dune::FieldVector<double,2> Len; Len = 1.0;
124
Dune::array<int,2> s = { {2, 6} };
127
GridType grid(Len,s,p,overlap);
128
std::cout << "Testing YaspGrid" << std::endl;
133
typedef ALUCubeGrid<2,2> GridType;
134
array<unsigned int,2> elements2d;
136
shared_ptr<GridType> grid = StructuredGridFactory<GridType>::createCubeGrid(FieldVector<double,2>(0),
137
FieldVector<double,2>(1), elements2d);
138
std::cout << "Testing ALUGrid" << std::endl;
134
typedef Dune::ALUGrid<2, 2, cube, nonconforming> GridType;
135
array<unsigned int,2> elements2d;
137
shared_ptr<GridType> grid = StructuredGridFactory<GridType>::createCubeGrid(FieldVector<double,2>(0),
138
FieldVector<double,2>(1), elements2d);
139
std::cout << "Testing ALUGrid" << std::endl;
145
} catch (Exception &e) {
146
std::cerr << e << std::endl;
149
std::cerr << "Generic exception!" << std::endl;
147
catch (Exception &e) {
148
std::cerr << e << std::endl;
151
std::cerr << "Generic exception!" << std::endl;