1 #include <config.h>
2 
3 #include <iostream>
4 #include <sstream>
5 #include <string>
6 
7 #include <dune/common/parallel/mpihelper.hh>
8 
9 #include <dune/grid/idgrid.hh>
10 #include <dune/grid/io/file/dgfparser/dgfwriter.hh>
11 
12 #include "../common/gridtype.hh"
13 #include "../common/metagridtags.hh"
14 
15 using namespace Dune;
16 
17 #include "checkcalls.cc"
18 
main(int argc,char ** argv)19 int main (int argc , char **argv)
20 {
21   // this method calls MPI_Init, if MPI is enabled
22   MPIHelper & mpihelper = MPIHelper::instance(argc,argv);
23   int myrank = mpihelper.rank();
24   int mysize = mpihelper.size();
25 
26   try {
27     /* use grid-file appropriate for dimensions */
28 
29     if( argc < 2 )
30     {
31       std::cerr << "Usage: " << argv[0] << " <dgf file of hostgrid>" << std::endl;
32       return 1;
33     }
34 
35     const bool display = (argc > 2);
36 
37     //typedef Dune::GridSelector :: GridType HostGridType ;
38     std::string filename( argv[1] );
39     //GridPtr< HostGridType > hostGrid( filename );
40 
41     //typedef IdGrid< HostGridType > IdGridType;
42     //IdGridType grid( *hostGrid );
43 
44     // meta grid tuple
45     typedef tuple< METAGRIDS > MetaGridTuple;
46     // grid builder type
47     typedef GridBuilder< GridSelector::GridType, MetaGridTuple > GridBuilder;
48     // grid type
49     typedef GridBuilder::Grid Grid;
50 
51     GridPtr< Grid > gridPtr( filename );
52     Grid& grid = *gridPtr ;
53 
54     //grid.loadBalance();
55 
56     {
57       std::cout << "Check serial grid" << std::endl;
58       checkSerial(grid,
59                      (mysize == 1) ? 1 : 0,
60                      (mysize == 1) ? display: false);
61     }
62 
63     // perform parallel check only when more then one proc
64     if(mysize > 1)
65     {
66       if (myrank == 0) std::cout << "Check conform grid" << std::endl;
67       checkParallel(grid,1,0, display );
68       if (myrank == 0) std::cout << "Check non-conform grid" << std::endl;
69       checkParallel(grid,0,2, display );
70     }
71 
72   }
73   catch (Dune::Exception &e)
74   {
75     std::cerr << e << std::endl;
76     return 1;
77   }
78   catch (...)
79   {
80     std::cerr << "Generic exception!" << std::endl;
81     return 2;
82   }
83 
84   return 0;
85 }
86