6#ifndef DUNE_GRID_COMMON_GRIDINFO_HH 
    7#define DUNE_GRID_COMMON_GRIDINFO_HH 
   13#include <dune/geometry/referenceelements.hh> 
   33  void gridinfo (
const G& grid, std::string prefix=
"")
 
   36    const int dim = G::dimension;
 
   37    const int dimworld = G::dimensionworld;
 
   40    std::cout << prefix << 
"=> " << 
className(grid)
 
   42              << 
", dimworld=" << dimworld
 
   46    for (
int level=0; level<=grid.maxLevel(); level++)
 
   48      std::cout << prefix << 
"level " << level;
 
   49      for (
int cd=0; cd<=dim; cd++)
 
   51        std::cout << 
" codim[" << cd << 
"]=" << grid.size(level,cd);
 
   53      std::cout << std::endl;
 
   57    std::cout << prefix << 
"leaf   ";
 
   58    for (
int cd=0; cd<=dim; cd++)
 
   60      std::cout << 
" codim[" << cd << 
"]=" << grid.size(cd);
 
   62    std::cout << std::endl;
 
   64    std::cout << prefix << 
"leaf" 
   68    for (
int c=0; c<=dim; c++)
 
   70      for (std::size_t i=0; i<grid.leafIndexSet().types(c).
size(); i++)
 
   72        if (!first) std::cout << 
",";
 
   73        std::cout << grid.leafIndexSet().types(c)[i]
 
   75                  << 
"=" << grid.leafIndexSet().size(grid.leafIndexSet().types(c)[i]);
 
   79    std::cout << 
")" << std::endl;
 
   89    const int dim = G::dimension;
 
   92    typedef typename G::ctype ct;
 
   95    std::cout << prefix << 
"level=" << level
 
   99    for (
unsigned i=0; i<grid.levelIndexSet(level).types(0).
size(); i++)
 
  101      if (!first) std::cout << 
",";
 
  102      std::cout << grid.levelIndexSet(level).types(0)[i]
 
  103                << 
"=" << grid.levelIndexSet(level).size(grid.levelIndexSet(level).types(0)[i]);
 
  106    std::cout << 
")" << std::endl;
 
  109    for (
const auto& element : elements(
levelGridView(grid, level)))
 
  111      const auto& geometry = element.geometry();
 
  112      std::cout << prefix << 
"level=" << element.level()
 
  113                << 
" " << element.type() << 
"[" << dim << 
"]" 
  114                << 
" index=" << grid.levelIndexSet(level).index(element)
 
  115                << 
" gid=" << grid.globalIdSet().template id<0>(element)
 
  116                << 
" leaf=" << element.isLeaf()
 
  121                << 
" first=(" << geometry.corner(0) << 
")" 
  124      std::cout << prefix << 
"codim " << dim << 
" subindex";
 
  125      for (
unsigned int i=0; i < element.subEntities(dim); i++)
 
  127        std::cout << 
" " << i << 
":" << grid.levelIndexSet(level).subIndex(element,i,dim);
 
  129      std::cout << std::endl;
 
  131      std::cout << prefix << 
"codim " << dim-1 << 
" subindex";
 
  132      for (
unsigned int i=0; i < element.subEntities(dim-1); i++)
 
  134        std::cout << 
" " << i << 
":" << grid.levelIndexSet(level).subIndex(element,i,dim-1);
 
  136      std::cout << std::endl;
 
  148    const int dim = G::dimension;
 
  151    typedef typename G::ctype ct;
 
  154    std::cout << prefix << 
"leaf" 
  158    for (
int c=0; c<=dim; c++)
 
  160      for (
unsigned i=0; i<grid.leafIndexSet().types(c).
size(); i++)
 
  162        if (!first) std::cout << 
",";
 
  163        std::cout << grid.leafIndexSet().types(c)[i]
 
  165                  << 
"=" << grid.leafIndexSet().size(grid.leafIndexSet().types(c)[i]);
 
  169    std::cout << 
")" << std::endl;
 
  174      std::cout << prefix << 
"level=" << 
vertex.level()
 
  175                << 
" " << 
vertex.type() << 
"[" << dim << 
"]" 
  176                << 
" index=" << grid.leafIndexSet().index(
vertex)
 
  177                << 
" gid=" << grid.globalIdSet().template id<dim>(
vertex)
 
  179                << 
" pos=(" << 
vertex.geometry().corner(0) << 
")" 
  184    for (
const auto& element : elements(
leafGridView(grid)))
 
  186      const auto& geometry = element.geometry();
 
  187      std::cout << prefix << 
"level=" << element.level()
 
  188                << 
" " << element.type() << 
"[" << dim << 
"]" 
  189                << 
" index=" << grid.leafIndexSet().index(element)
 
  190                << 
" gid=" << grid.globalIdSet().template id<0>(element)
 
  191                << 
" leaf=" << element.isLeaf()
 
  196                << 
" first=(" << geometry.corner(0) << 
")" 
  199      std::cout << prefix << 
"codim " << dim << 
" subindex";
 
  200      for (
unsigned int i=0; i < element.subEntities(dim); i++)
 
  202        std::cout << 
" " << i << 
":" << grid.leafIndexSet().subIndex(element,i,dim);
 
  204      std::cout << std::endl;
 
  206      std::cout << prefix << 
"codim " << dim-1 << 
" subindex";
 
  207      for (
unsigned int i=0; i < element.subEntities(dim-1); i++)
 
  209        std::cout << 
" " << i << 
":" << grid.leafIndexSet().subIndex(element,i,dim-1);
 
  211      std::cout << std::endl;
 
A free function to provide the demangled class name of a given object or type as a string.
 
A few common exception classes.
 
Grid< dim, dimworld, ct, GridFamily >::LeafGridView leafGridView(const Grid< dim, dimworld, ct, GridFamily > &grid)
leaf grid view for the given grid
Definition: grid.hh:805
 
Grid< dim, dimworld, ct, GridFamily >::LevelGridView levelGridView(const Grid< dim, dimworld, ct, GridFamily > &grid, int level)
level grid view for the given grid and level.
Definition: grid.hh:788
 
constexpr GeometryType vertex
GeometryType representing a vertex.
Definition: type.hh:492
 
void gridinfo(const G &grid, std::string prefix="")
A function to print some information about the grid as a whole.
Definition: gridinfo.hh:33
 
void gridlevellist(const G &grid, int level, std::string prefix)
A function to print info about a grid level and its entities.
Definition: gridinfo.hh:86
 
void gridleaflist(const G &grid, std::string prefix)
A function to print info about a leaf grid and its entities.
Definition: gridinfo.hh:145
 
Dune namespace.
Definition: alignedallocator.hh:13
 
constexpr std::integral_constant< std::size_t, sizeof...(II)> size(std::integer_sequence< T, II... >)
Return the size of the sequence.
Definition: integersequence.hh:75
 
std::string className()
Provide the demangled class name of a type T as a string.
Definition: classname.hh:47
 
Class providing access to the singletons of the reference elements.
Definition: referenceelements.hh:128