1+ #include " catch.hpp"
2+ #include " ../../UnitQuadTestCase.hpp"
3+
4+ std::unique_ptr<UnitQuadTestCase> TestCase;
5+
6+ TEST_CASE (" Geometry constructor" , " [Geometry]" ){
7+
8+ cout.rdbuf (nullptr );
9+
10+ TestCase = std::unique_ptr<UnitQuadTestCase>(new UnitQuadTestCase ());
11+
12+ TestCase->InitConfig ();
13+
14+ auto aux_geometry = std::unique_ptr<CGeometry>(new CPhysicalGeometry (TestCase->config .get (), 0 , 1 ));
15+
16+ CHECK (aux_geometry->GetnPoint () == 125 );
17+ CHECK (aux_geometry->GetnElem () == 64 );
18+ CHECK (aux_geometry->GetnElemHexa () == 64 );
19+ CHECK (aux_geometry->GetnEdge () == 0 );
20+ CHECK (aux_geometry->GetnElem_Bound (0 ) == 16 );
21+ CHECK (aux_geometry->GetnElem_Bound (5 ) == 16 );
22+
23+ TestCase->geometry = std::unique_ptr<CGeometry>(new CPhysicalGeometry (aux_geometry.get (), TestCase->config .get ()));
24+
25+ CHECK (TestCase->geometry ->GetnPoint () == 125 );
26+ CHECK (TestCase->geometry ->GetnElem () == 64 );
27+ CHECK (TestCase->geometry ->GetnElemHexa () == 64 );
28+ CHECK (TestCase->geometry ->GetnEdge () == 0 );
29+ CHECK (TestCase->geometry ->GetnElem_Bound (0 ) == 16 );
30+ CHECK (TestCase->geometry ->GetnElem_Bound (5 ) == 16 );
31+
32+ cout.rdbuf (TestCase->orig_buf );
33+
34+ }
35+
36+ TEST_CASE (" Set Send/Recv" , " [Geometry]" ){
37+ TestCase->geometry ->SetSendReceive (TestCase->config .get ());
38+
39+ /* ---- No check yet, since unit tests run in serial at the moment ---*/
40+ }
41+
42+ TEST_CASE (" Set Boundaries" , " [Geometry]" ){
43+
44+ TestCase->geometry ->SetBoundaries (TestCase->config .get ());
45+
46+ CHECK (TestCase->config ->GetMarker_All_KindBC (0 ) == CUSTOM_BOUNDARY);
47+ CHECK (TestCase->config ->GetMarker_All_KindBC (2 ) == HEAT_FLUX);
48+ CHECK (TestCase->config ->GetSolid_Wall (2 ));
49+ CHECK (TestCase->config ->GetSolid_Wall (3 ));
50+ }
51+
52+ TEST_CASE (" Set Point Connectivity" , " [Geometry]" ){
53+
54+ TestCase->geometry ->SetPoint_Connectivity ();
55+
56+ CHECK (TestCase->geometry ->nodes ->GetnElem (55 ) == 4 );
57+ CHECK (TestCase->geometry ->nodes ->GetElem (30 , 2 ) == 16 );
58+ CHECK (TestCase->geometry ->nodes ->GetnNeighbor (3 ) == 4 );
59+ CHECK (TestCase->geometry ->nodes ->GetPoint (99 , 2 ) == 98 );
60+ }
61+
62+ TEST_CASE (" Set elem connectivity" , " [Geometry]" ){
63+
64+ TestCase->geometry ->SetElement_Connectivity ();
65+
66+ CHECK (TestCase->geometry ->elem [14 ]->GetnNeighbor_Elements () == 6 );
67+ CHECK (TestCase->geometry ->elem [14 ]->GetNeighbor_Elements (1 ) == 15 );
68+
69+ }
70+
71+ TEST_CASE (" Set bound volume" , " [Geometry]" ){
72+
73+ TestCase->geometry ->SetBoundVolume ();
74+
75+ CHECK (TestCase->geometry ->bound [0 ][10 ]->GetDomainElement () == 40 );
76+ CHECK (TestCase->geometry ->bound [4 ][10 ]->GetDomainElement () == 10 );
77+
78+ }
79+
80+ TEST_CASE (" Set Edges" , " [Geometry]" ){
81+
82+ TestCase->geometry ->SetEdges ();
83+
84+ CHECK (TestCase->geometry ->edges ->GetnNodes () == 2 );
85+ CHECK (TestCase->geometry ->edges ->GetNode (42 ,0 ) == 15 );
86+ CHECK (TestCase->geometry ->edges ->GetNode (87 ,1 ) == 57 );
87+
88+ }
89+
90+ TEST_CASE (" Set vertex" , " [Geometry]" ){
91+
92+ TestCase->geometry ->SetVertex (TestCase->config .get ());
93+
94+ CHECK (TestCase->geometry ->GetnVertex (0 ) == 25 );
95+ CHECK (TestCase->geometry ->vertex [0 ][20 ]->GetNode () == 100 );
96+ CHECK (TestCase->geometry ->nodes ->GetVertex (100 , 0 ) == 20 );
97+ CHECK (TestCase->geometry ->nodes ->GetVertex (1 , 0 ) == -1 );
98+
99+ }
100+
101+ TEST_CASE (" Set center of gravity" , " [Geometry]" ){
102+
103+ TestCase->geometry ->SetCoord_CG ();
104+
105+ CHECK (TestCase->geometry ->elem [42 ]->GetCG (0 ) == 0.625 );
106+ CHECK (TestCase->geometry ->elem [3 ]->GetCG (1 ) == 0.125 );
107+ CHECK (TestCase->geometry ->elem [25 ]->GetCG (2 ) == 0.375 );
108+
109+ CHECK (TestCase->geometry ->bound [1 ][4 ]->GetCG (0 ) == 1.0 );
110+ CHECK (TestCase->geometry ->bound [3 ][2 ]->GetCG (1 ) == 1.0 );
111+ CHECK (TestCase->geometry ->bound [4 ][3 ]->GetCG (2 ) == 0.0 );
112+
113+ CHECK (TestCase->geometry ->edges ->GetCG (10 , 0 ) == 0.75 );
114+ CHECK (TestCase->geometry ->edges ->GetCG (3 , 1 ) == 0.125 );
115+ CHECK (TestCase->geometry ->edges ->GetCG (22 , 2 ) == 0.0 );
116+ }
117+
118+ TEST_CASE (" Set control volume" , " [Geometry]" ){
119+
120+ TestCase->geometry ->SetControlVolume (TestCase->config .get (), ALLOCATE);
121+
122+ CHECK (TestCase->geometry ->nodes ->GetVolume (42 ) == Approx (0.015625 ));
123+
124+ CHECK (TestCase->geometry ->edges ->GetNormal (32 )[0 ] == 0.03125 );
125+ CHECK (TestCase->geometry ->edges ->GetNormal (5 )[1 ] == 0.0 );
126+ CHECK (TestCase->geometry ->edges ->GetNormal (10 )[2 ] == 0.03125 );
127+
128+ CHECK (TestCase->config ->GetDomainVolume () == Approx (1.0 ));
129+
130+ }
131+
132+ TEST_CASE (" Set bound control volume" , " [Geometry]" ){
133+
134+ TestCase->geometry ->SetBoundControlVolume (TestCase->config .get (), ALLOCATE);
135+
136+ CHECK (TestCase->geometry ->vertex [0 ][4 ]->GetNormal ()[0 ] == -0.0625 );
137+ CHECK (TestCase->geometry ->vertex [3 ][2 ]->GetNormal ()[1 ] == -0.0625 );
138+ CHECK (TestCase->geometry ->vertex [5 ][3 ]->GetNormal ()[2 ] == 0.03125 );
139+
140+ }
0 commit comments