3 #ifndef DUNE_GRIDINFO_HH
4 #define DUNE_GRIDINFO_HH
8 #include <dune/common/exceptions.hh>
9 #include <dune/common/classname.hh>
10 #include <dune/geometry/referenceelements.hh>
30 void gridinfo (
const G& grid, std::string prefix=
"")
33 const int dim = G::dimension;
34 const int dimworld = G::dimensionworld;
37 std::cout << prefix <<
"=> " << className(grid)
39 <<
", dimworld=" << dimworld
43 for (
int level=0; level<=grid.maxLevel(); level++)
45 std::cout << prefix <<
"level " << level;
46 for (
int cd=0; cd<=dim; cd++)
48 std::cout <<
" codim[" << cd <<
"]=" << grid.size(level,cd);
50 std::cout << std::endl;
54 std::cout << prefix <<
"leaf ";
55 for (
int cd=0; cd<=dim; cd++)
57 std::cout <<
" codim[" << cd <<
"]=" << grid.size(cd);
59 std::cout << std::endl;
61 std::cout << prefix <<
"leaf"
65 for (
int c=0; c<=dim; c++)
67 for (std::size_t i=0; i<grid.leafIndexSet().geomTypes(c).size(); i++)
69 if (!first) std::cout <<
",";
70 std::cout << grid.leafIndexSet().geomTypes(c)[i]
72 <<
"=" << grid.leafIndexSet().size(grid.leafIndexSet().geomTypes(c)[i]);
76 std::cout <<
")" << std::endl;
89 const int dim = G::dimension;
92 typedef typename G::ctype ct;
97 typedef typename G::Traits::template Codim<0>::LevelIterator
LevelIterator;
100 std::cout << prefix <<
"level=" << level
104 for (
unsigned i=0; i<grid.levelIndexSet(level).geomTypes(0).size(); i++)
106 if (!first) std::cout <<
",";
107 std::cout << grid.levelIndexSet(level).geomTypes(0)[i]
108 <<
"=" << grid.levelIndexSet(level).size(grid.levelIndexSet(level).geomTypes(0)[i]);
111 std::cout <<
")" << std::endl;
114 LevelIterator eendit = grid.template lend<0>(level);
115 for (LevelIterator it = grid.template lbegin<0>(level); it!=eendit; ++it)
117 std::cout << prefix <<
"level=" << it->
level()
118 <<
" " << it->type() <<
"[" << dim <<
"]"
119 <<
" index=" << grid.levelIndexSet(level).index(*it)
120 <<
" gid=" << grid.globalIdSet().template id<0>(*it)
121 <<
" leaf=" << it->isLeaf()
124 << it->geometry().global(Dune::GenericReferenceElements<ct,dim>::general(it->type()).position(0,0))
126 <<
" first=(" << it->geometry().corner(0) <<
")"
129 std::cout << prefix <<
"codim " << dim <<
" subindex";
130 for (
int i=0; i<it->template count<dim>(); i++)
132 std::cout <<
" " << i <<
":" << grid.levelIndexSet(level).subIndex(*it,i,dim);
134 std::cout << std::endl;
136 std::cout << prefix <<
"codim " << dim-1 <<
" subindex";
137 for (
int i=0; i<it->template count<dim-1>(); i++)
139 std::cout <<
" " << i <<
":" << grid.levelIndexSet(level).subIndex(*it,i,dim-1);
141 std::cout << std::endl;
155 const int dim = G::dimension;
158 typedef typename G::ctype ct;
163 typedef typename G::Traits::template Codim<0>::LeafIterator
LeafIterator;
164 typedef typename G::Traits::template Codim<dim>::LeafIterator VLeafIterator;
167 std::cout << prefix <<
"leaf"
171 for (
int c=0; c<=dim; c++)
173 for (
unsigned i=0; i<grid.leafIndexSet().geomTypes(c).size(); i++)
175 if (!first) std::cout <<
",";
176 std::cout << grid.leafIndexSet().geomTypes(c)[i]
178 <<
"=" << grid.leafIndexSet().size(grid.leafIndexSet().geomTypes(c)[i]);
182 std::cout <<
")" << std::endl;
185 VLeafIterator veendit = grid.template leafend<dim>();
186 for (VLeafIterator it = grid.template leafbegin<dim>(); it!=veendit; ++it)
188 std::cout << prefix <<
"level=" << it->
level()
189 <<
" " << it->type() <<
"[" << dim <<
"]"
190 <<
" index=" << grid.leafIndexSet().index(*it)
191 <<
" gid=" << grid.globalIdSet().template id<dim>(*it)
193 <<
" pos=(" << it->geometry().corner(0) <<
")"
198 LeafIterator eendit = grid.template leafend<0>();
199 for (LeafIterator it = grid.template leafbegin<0>(); it!=eendit; ++it)
201 std::cout << prefix <<
"level=" << it->level()
202 <<
" " << it->type() <<
"[" << dim <<
"]"
203 <<
" index=" << grid.leafIndexSet().index(*it)
204 <<
" gid=" << grid.globalIdSet().template id<0>(*it)
205 <<
" leaf=" << it->isLeaf()
208 << it->geometry().global(Dune::GenericReferenceElements<ct,dim>::general(it->type()).position(0,0))
210 <<
" first=(" << it->geometry().corner(0) <<
")"
213 std::cout << prefix <<
"codim " << dim <<
" subindex";
214 for (
int i=0; i<it->template count<dim>(); i++)
216 std::cout <<
" " << i <<
":" << grid.leafIndexSet().subIndex(*it,i,dim);
218 std::cout << std::endl;
220 std::cout << prefix <<
"codim " << dim-1 <<
" subindex";
221 for (
int i=0; i<it->template count<dim-1>(); i++)
223 std::cout <<
" " << i <<
":" << grid.leafIndexSet().subIndex(*it,i,dim-1);
225 std::cout << std::endl;