PlasCom2  1.0
XPACC Multi-physics simluation application
QuickTest.C
Go to the documentation of this file.
1 #include "Global.H"
7 #include "Profiler.H"
8 #include "COMM.H"
9 
10 namespace ix {
11 
14 
19  {
20  public:
22  : util::ComLineObject()
23  {};
24  TestComLine(const char *args[])
25  : util::ComLineObject(args)
26  {};
27  void Initialize(){
28  AddOption('h',"help");
29  AddOption('p',"partition",2,"number");
30  AddOption('v',"verb",1,"level");
31  AddOption('c',"clone",2,"number");
32  AddOption('a',"assembly");
33  AddOption('m',"mesh");
34  AddOption('d',"debug");
35  AddOption('k',"checking");
36  AddOption('r',"reorient");
37  AddOption('g',"generate");
38  AddOption('s',"sparse");
39  AddOption('t',"metis");
40  AddOption('n',"renumber");
41  AddArgument("input",1);
42  AddHelp("metis","Metis testing stub.");
43  AddHelp("sparse","Write out the sparse matrix for visualization.");
44  AddHelp("clone","Generate <number> of partitions identical to the input mesh.");
45  AddHelp("generate","Generate a uniform mesh with N nodes and quit.");
46  AddHelp("checking","Paranoid and insanely verbose dumping of all important arrays to Log.");
47  AddHelp("partition","Performs Metis partitioning of input mesh into <number> partitions.");
48  AddHelp("assembly","Performs assembly test.");
49  AddHelp("mesh","Performs mesh tests.");
50  AddHelp("help","Prints this long version of help.");
51  AddHelp("verb","Makes the test more verbose. Default level is 1.");
52  AddHelp("config","Specifies the name of the configuration file.");
53  AddHelp("out","Specifies the name of the output file.");
54  AddHelp("renumber","Uses ParMETIS to do optimal graph reordering.");
55  AddArgHelp("input","Mode dependent arguments");
56  std::ostringstream Ostr;
57  // Ostr << "Use fixed problem size in scalability analysis. Only makes"
58  // << "\n\t\tsense when scalability mode is enabled.";
59  // Ostr.str("");
60  Ostr << "Test tool for exercising the mesh library.";
61  _description.assign(Ostr.str());
62  };
63  };
64 
66 
67  class TestProgram : public global::Program<TestGlobal,TestComLine>
68  {
69  protected:
70  std::string sverb, spart, sclone;
71  bool do_part,do_meshtest,do_assem,do_orient,debug;
72  bool do_check, do_gen, do_clone, do_dump, do_renum;
73 
74  public:
76  global::Program<TestGlobal,TestComLine>()
77  {};
78  TestProgram(int nargs,char **args) :
79  global::Program<TestGlobal,TestComLine>(nargs,args)
80  {};
81  virtual int Initialize()
82  {
84  sverb = _command_line.GetOption("verb");
85  spart = _command_line.GetOption("partition");
86  sclone = _command_line.GetOption("clone");
87  do_part = !_command_line.GetOption("partition").empty();
88  do_meshtest = !_command_line.GetOption("mesh").empty();
89  do_assem = !_command_line.GetOption("assembly").empty();
90  do_orient = !_command_line.GetOption("reorient").empty();
91  debug = !_command_line.GetOption("debug").empty();
92  do_check = !_command_line.GetOption("checking").empty();
93  do_gen = !_command_line.GetOption("generate").empty();
94  do_clone = !_command_line.GetOption("clone").empty();
95  do_renum = !_command_line.GetOption("renumber").empty();
96  do_dump = !_command_line.GetOption("sparse").empty();
97  if(!_command_line.GetOption("help").empty()){
98  if(_OutStream)
99  *_OutStream << _command_line.LongUsage() << std::endl;
100  globalCommunicator.SetExit(1);
101  }
102  if(globalCommunicator.Check())
103  return(1);
104  if(retval){
105  if(_ErrStream)
106  *_ErrStream << _command_line.ErrorReport() << std::endl
107  << std::endl << _command_line.ShortUsage() << std::endl;
108  globalCommunicator.SetExit(1);
109  }
110  if(globalCommunicator.Check())
111  return(1);
112  return(0);
113  };
114  };
115 
116 
117  int MyTestProgram(int argc,char *argv[])
118  {
119  TestProgram MyProgram(argc,argv);
120  if(MyProgram.Initialize())
121  return(1);
122  MyProgram.OutStream() << "Calling RUN." << std::endl;
123  MyProgram.StdOut("Testing\n");
124  if(MyProgram.Run())
125  return(1);
126  std::cout << "Calling Finalize." << std::endl;
127  MyParams params;
128  // MyParams::iterator pi = params.begin();
129  // while(pi != params.end())
130  // std::cout << *pi++ << std::endl;
131  std::cout << params << std::endl;
132  if(MyProgram.Finalize())
133  return(1);
134  std::cout << "All done." << std::endl;
135  return(0);
136  }
138 };
139 
140 int main(int argc,char *argv[])
141 {
142  return(ix::MyTestProgram(argc,argv));
143 }
144 
int MyTestProgram(int argc, char *argv[])
Definition: QuickTest.C:117
Communication utilities.
Defines MPI-specific parallel global and program classes.
virtual int Initialize()
Definition: Global.H:661
std::ostream & OutStream()
Gets the stdout stream object.
Definition: Global.H:348
TestComLine(const char *args[])
Definition: QuickTest.C:24
virtual int Initialize()
Definition: QuickTest.C:81
void Initialize()
virtual function for program specific Initialization.
Definition: QuickTest.C:27
Performance Profiling interface definition.
std::string _description
application description.
Definition: ComLine.H:73
virtual int Finalize()
Definition: Global.H:668
virtual int StdOut(const std::string &outstr, unsigned char inlev=1)
Definition: Global.H:439
void AddOption(char s, const std::string &l, int=0)
User interface to describe simple option.
Definition: ComLine.C:295
Base global object header.
ComLineObject for testing app.
Definition: QuickTest.C:18
int main(int argc, char *argv[])
Definition: QuickTest.C:140
virtual int Run()
Definition: Global.H:667
TestProgram(int nargs, char **args)
Definition: QuickTest.C:78
std::string sverb
Definition: QuickTest.C:70
Command line processing.
Definition: ComLine.H:62
void AddArgument(const std::string &a, int reqd=0)
User interface to describe an application argument.
Definition: ComLine.H:183
ComLineObject()
Default constructor.
Definition: ComLine.H:102
void AddHelp(char s, const std::string &help)
Specify usage for an option.
Definition: ComLine.H:227
void AddArgHelp(const std::string &a, const std::string &help)
Specify the usage info for application argument.
Definition: ComLine.H:197
global::ParallelGlobalObj< comm::CommunicatorObject, std::string, int, profiler::ProfilerObj > TestGlobal
Definition: QuickTest.C:65