PlasCom2  1.0
XPACC Multi-physics simluation application
TestOverkit.C
Go to the documentation of this file.
1 #include "Testing.H"
2 #include "Simulation.H"
3 #include "OperatorKernels.H"
4 #include "Stencil.H"
5 #include "PCPPCommUtil.H"
6 #include "PCPPReport.H"
7 #include "PCPPIntervalUtils.H"
8 #include "PlasCom2.H"
9 #include "overkit.h"
10 
12 
13 void TestOverkit_Config(ix::test::results &parallelUnitResults,pcpp::CommunicatorType &testComm)
14 {
15 
16  std::ostringstream messageStream;
17 
18  fixtures::ConfigurationType testConfig;
19 
20  bool AssertValue;
21 
22  // Set up application
23  std::vector<std::string> args;
24  args.push_back("plascom2x");
25  args.push_back("-c");
26  args.push_back("plascom2.test.config");
27 
28  std::vector<char *> argv(args.size()+1);
29  for (int i = 0; i < args.size(); ++i) {
30  argv[i] = const_cast<char *>(args[i].c_str());
31  }
32  argv[args.size()] = NULL;
33 
34  plascom2::application simulationApplication(args.size(),&argv[0],testComm.GetCommunicator());
35 
36  int returnValue;
37 
38  returnValue = simulationApplication.InitializeApplication();
39 
40  // Check that initialization successfully completed
41  AssertValue = returnValue == 0;
42  parallelUnitResults.UpdateResult("Overkit:Config:ApplicationInitialized",AssertValue);
43 
44  returnValue = simulationApplication.ConfigureApplication();
45 
46  // Check that configuration successfully completed
47  AssertValue = returnValue == 0;
48  parallelUnitResults.UpdateResult("Overkit:Config:ApplicationConfigured",AssertValue);
49 
50  plascom2::overkit_data *OverkitData = simulationApplication.GetOverkitData();
51 
52  ovk_context *Context = OverkitData->context;
53  ovk_domain *Domain = OverkitData->domains[0];
54 
55  const ovk_context_properties *ContextProperties;
56  ovkGetContextProperties(Context, &ContextProperties);
57 
58  // Check context comm
59  // Overkit duplicates comm interally, but groups should match
60  MPI_Comm ContextComm;
61  ovkGetContextPropertyComm(ContextProperties, &ContextComm);
62  MPI_Comm_compare(ContextComm, testComm.GetCommunicator(), &returnValue);
63  AssertValue = returnValue == MPI_CONGRUENT;
64  parallelUnitResults.UpdateResult("Overkit:Config:CorrectContextComm",AssertValue);
65 
66  const ovk_domain_properties *DomainProperties;
67  ovkGetDomainProperties(Domain, &DomainProperties);
68 
69  // Check domain name
70  char DomainName[64];
71  ovkGetDomainPropertyName(DomainProperties, DomainName);
72  AssertValue = std::string(DomainName) == "euler3d-test";
73  parallelUnitResults.UpdateResult("Overkit:Config:CorrectDomainName",AssertValue);
74 
75  // Check domain comm
76  // Overkit duplicates comm interally, but groups should match
77  MPI_Comm DomainComm;
78  ovkGetDomainPropertyComm(DomainProperties, &DomainComm);
79  MPI_Comm_compare(DomainComm, testComm.GetCommunicator(), &returnValue);
80  AssertValue = returnValue == MPI_CONGRUENT;
81  parallelUnitResults.UpdateResult("Overkit:Config:CorrectDomainComm",AssertValue);
82 
83  // Check domain dimension
84  int NumDims;
85  ovkGetDomainPropertyDimension(DomainProperties, &NumDims);
86  AssertValue = NumDims == 3;
87  parallelUnitResults.UpdateResult("Overkit:Config:CorrectDomainDimension",AssertValue);
88 
89  // Check number of grids
90  int NumGrids;
91  ovkGetDomainPropertyGridCount(DomainProperties, &NumGrids);
92  AssertValue = NumGrids == 1;
93  parallelUnitResults.UpdateResult("Overkit:Config:CorrectDomainGridCount",AssertValue);
94 
95  const ovk_grid *Grid;
96  ovkGetGrid(Domain, 1, &Grid);
97 
98  const ovk_grid_properties *GridProperties;
99  ovkGetGridProperties(Grid, &GridProperties);
100 
101  // Check grid name
102  char GridName[64];
103  ovkGetGridPropertyName(GridProperties, GridName);
104  AssertValue = std::string(GridName) == "box:grid1";
105  parallelUnitResults.UpdateResult("Overkit:Config:CorrectDomainName",AssertValue);
106 
107  // Check grid comm
108  // Overkit duplicates comm interally, but groups should match
109  MPI_Comm GridComm;
110  ovkGetGridPropertyComm(GridProperties, &GridComm);
111  MPI_Comm_compare(GridComm, testComm.GetCommunicator(), &returnValue);
112  AssertValue = returnValue == MPI_CONGRUENT;
113  parallelUnitResults.UpdateResult("Overkit:Config:CorrectGridComm",AssertValue);
114 
115  // Check grid size
116  int GridSize[3];
117  ovkGetGridPropertySize(GridProperties, GridSize);
118  AssertValue = GridSize[0] == 101 && GridSize[1] == 101 && GridSize[2] == 101;
119  parallelUnitResults.UpdateResult("Overkit:Config:CorrectGridSize",AssertValue);
120 
121  returnValue = simulationApplication.FinalizeApplication();
122 
123  // Check that finalization successfully completed
124  AssertValue = returnValue == 0;
125  parallelUnitResults.UpdateResult("Overkit:Config:ApplicationFinalized",AssertValue);
126 
127  // Check that Overkit data was cleaned up
128  AssertValue = OverkitData->context == NULL;
129  parallelUnitResults.UpdateResult("Overkit:Config:DestroyedContext",AssertValue);
130 
131 }
bool CheckResult(bool &localResult, pcpp::CommunicatorType &testComm)
Definition: PCPPCommUtil.C:176
Encapsulating class for collections of test results.
Definition: Testing.H:18
MPI_Comm GetCommunicator() const
Definition: COMM.H:85
void TestOverkit_Config(ix::test::results &parallelUnitResults, pcpp::CommunicatorType &testComm)
Definition: TestOverkit.C:13
Main encapsulation of MPI.
Definition: COMM.H:62
std::string Grid(const GridType &inGrid)
Definition: Report.H:14
Testing constructs for unit testing.
void UpdateResult(const std::string &name, const ValueType &result)
Updates an existing test result.
Definition: Testing.H:55
virtual int InitializeApplication()
Definition: PC2Initialize.C:37