1 #include "config.h"
2 
3 #include <cerrno>
4 #include <cstring>
5 
6 #include <dune/common/exceptions.hh>
7 
8 #include <dune/uggrid/low/namespace.h>
9 #include <dune/uggrid/low/initlow.h>
10 #include <dune/uggrid/ugdevices.h>
11 #include <dune/uggrid/gm/initgm.h>
12 #include <dune/uggrid/gm/rm.h>
13 
14 #include <dune/uggrid/gm/rm-write2file.h>
15 
main(int argc,char ** argv)16 int main(int argc, char** argv)
17 {
18   UG::InitLow();
19   UG::InitDevices();
20   NS_DIM_PREFIX InitGm();
21 
22   std::vector<NS_DIM_PREFIX REFRULE> rules;
23   std::vector<NS_PREFIX SHORT> patterns;
24 
25   // use an arbitrary additional argument to use the rules from "lib/ugdata/RefRules.data"
26   if( argc > 1 )
27   {
28     // read the file "lib/ugdata/RefRules.data" and use those rules
29     std::FILE* stream = std::fopen(argv[1], "r");
30     if (!stream)
31       DUNE_THROW(Dune::Exception, "Could not open file " << argv[1] << ": " << std::strerror(errno));
32     NS_DIM_PREFIX readTetrahedronRules(stream, rules, patterns);
33     std::fclose(stream);
34 
35     NS_DIM_PREFIX RefRules[NS_DIM_PREFIX TETRAHEDRON] = rules.data();
36     NS_DIM_PREFIX MaxRules[NS_DIM_PREFIX TETRAHEDRON] = rules.size();
37   }
38 
39   // write rules
40   for(int i=0; i<NS_DIM_PREFIX MaxRules[NS_DIM_PREFIX TETRAHEDRON]; i++)
41   {
42     NS_DIM_PREFIX ShowRefRuleX(NS_DIM_PREFIX TETRAHEDRON, i, std::printf);
43   }
44 
45   return 0;
46 }
47