Skip to content

Commit 7abacee

Browse files
committed
TESTS: added quadrature test comparing Qmat and nodes
1 parent fccbb5e commit 7abacee

File tree

1 file changed

+72
-20
lines changed

1 file changed

+72
-20
lines changed

tests/test_quadrature.cpp

Lines changed: 72 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
#include <gtest/gtest.h>
99
#include <gmock/gmock.h>
1010

11+
using namespace ::testing;
12+
1113
#include <pfasst/quadrature.hpp>
1214

1315
using namespace std;
@@ -74,13 +76,13 @@ TEST(NodesTest, GaussLegendreNodes)
7476
};
7577

7678
auto l3 = pfasst::compute_nodes<long double>(3, pfasst::QuadratureType::GaussLegendre);
77-
EXPECT_THAT(l3, testing::Pointwise(DoubleNear(), l3e));
79+
EXPECT_THAT(l3, Pointwise(DoubleNear(), l3e));
7880

7981
auto l5 = pfasst::compute_nodes<long double>(5, pfasst::QuadratureType::GaussLegendre);
80-
EXPECT_THAT(l5, testing::Pointwise(DoubleNear(), l5e));
82+
EXPECT_THAT(l5, Pointwise(DoubleNear(), l5e));
8183

8284
auto l7 = pfasst::compute_nodes<long double>(7, pfasst::QuadratureType::GaussLegendre);
83-
EXPECT_THAT(l7, testing::Pointwise(DoubleNear(), l7e));
85+
EXPECT_THAT(l7, Pointwise(DoubleNear(), l7e));
8486
}
8587

8688
TEST(NodesTest, GaussLobattoNodes)
@@ -122,19 +124,19 @@ TEST(NodesTest, GaussLobattoNodes)
122124
};
123125

124126
auto l2 = pfasst::compute_nodes<long double>(2, pfasst::QuadratureType::GaussLobatto);
125-
EXPECT_THAT(l2, testing::Pointwise(DoubleNear(), l2e));
127+
EXPECT_THAT(l2, Pointwise(DoubleNear(), l2e));
126128

127129
auto l3 = pfasst::compute_nodes<long double>(3, pfasst::QuadratureType::GaussLobatto);
128-
EXPECT_THAT(l3, testing::Pointwise(DoubleNear(), l3e));
130+
EXPECT_THAT(l3, Pointwise(DoubleNear(), l3e));
129131

130132
auto l5 = pfasst::compute_nodes<long double>(5, pfasst::QuadratureType::GaussLobatto);
131-
EXPECT_THAT(l5, testing::Pointwise(DoubleNear(), l5e));
133+
EXPECT_THAT(l5, Pointwise(DoubleNear(), l5e));
132134

133135
auto l7 = pfasst::compute_nodes<long double>(7, pfasst::QuadratureType::GaussLobatto);
134-
EXPECT_THAT(l7, testing::Pointwise(DoubleNear(), l7e));
136+
EXPECT_THAT(l7, Pointwise(DoubleNear(), l7e));
135137

136138
auto l9 = pfasst::compute_nodes<long double>(9, pfasst::QuadratureType::GaussLobatto);
137-
EXPECT_THAT(l9, testing::Pointwise(DoubleNear(), l9e));
139+
EXPECT_THAT(l9, Pointwise(DoubleNear(), l9e));
138140
}
139141

140142
TEST(NodesTest, ClenshawCurtisNodes)
@@ -176,19 +178,19 @@ TEST(NodesTest, ClenshawCurtisNodes)
176178
};
177179

178180
auto cc2 = pfasst::compute_nodes<long double>(2, pfasst::QuadratureType::ClenshawCurtis);
179-
EXPECT_THAT(cc2, testing::Pointwise(DoubleNear(), cc2e));
181+
EXPECT_THAT(cc2, Pointwise(DoubleNear(), cc2e));
180182

181183
auto cc3 = pfasst::compute_nodes<long double>(3, pfasst::QuadratureType::ClenshawCurtis);
182-
EXPECT_THAT(cc3, testing::Pointwise(DoubleNear(), cc3e));
184+
EXPECT_THAT(cc3, Pointwise(DoubleNear(), cc3e));
183185

184186
auto cc5 = pfasst::compute_nodes<long double>(5, pfasst::QuadratureType::ClenshawCurtis);
185-
EXPECT_THAT(cc5, testing::Pointwise(DoubleNear(), cc5e));
187+
EXPECT_THAT(cc5, Pointwise(DoubleNear(), cc5e));
186188

187189
auto cc7 = pfasst::compute_nodes<long double>(7, pfasst::QuadratureType::ClenshawCurtis);
188-
EXPECT_THAT(cc7, testing::Pointwise(DoubleNear(), cc7e));
190+
EXPECT_THAT(cc7, Pointwise(DoubleNear(), cc7e));
189191

190192
auto cc9 = pfasst::compute_nodes<long double>(9, pfasst::QuadratureType::ClenshawCurtis);
191-
EXPECT_THAT(cc9, testing::Pointwise(DoubleNear(), cc9e));
193+
EXPECT_THAT(cc9, Pointwise(DoubleNear(), cc9e));
192194
}
193195

194196
TEST(NodesTest, UniformNodes)
@@ -210,13 +212,13 @@ TEST(NodesTest, UniformNodes)
210212
};
211213

212214
auto u2 = pfasst::compute_nodes<long double>(2, pfasst::QuadratureType::Uniform);
213-
EXPECT_THAT(u2, testing::Pointwise(DoubleNear(), u2e));
215+
EXPECT_THAT(u2, Pointwise(DoubleNear(), u2e));
214216

215217
auto u3 = pfasst::compute_nodes<long double>(3, pfasst::QuadratureType::Uniform);
216-
EXPECT_THAT(u3, testing::Pointwise(DoubleNear(), u3e));
218+
EXPECT_THAT(u3, Pointwise(DoubleNear(), u3e));
217219

218220
auto u5 = pfasst::compute_nodes<long double>(5, pfasst::QuadratureType::Uniform);
219-
EXPECT_THAT(u5, testing::Pointwise(DoubleNear(), u5e));
221+
EXPECT_THAT(u5, Pointwise(DoubleNear(), u5e));
220222
}
221223

222224
TEST(QuadratureTest, GaussLobattoNodes)
@@ -232,7 +234,7 @@ TEST(QuadratureTest, GaussLobattoNodes)
232234
0.20833333333333333
233235
};
234236

235-
EXPECT_THAT(s3.data(), testing::Pointwise(DoubleNear(), s3e));
237+
EXPECT_THAT(s3.data(), Pointwise(DoubleNear(), s3e));
236238

237239
auto l5 = pfasst::compute_nodes<long double>(5, pfasst::QuadratureType::GaussLobatto);
238240
auto a5 = pfasst::augment_nodes(l5);
@@ -258,7 +260,7 @@ TEST(QuadratureTest, GaussLobattoNodes)
258260
0.11974476934341168251615379970493965,
259261
0.067728432186156897969267419174073482
260262
};
261-
EXPECT_THAT(s5.data(), testing::Pointwise(DoubleNear(), s5e));
263+
EXPECT_THAT(s5.data(), Pointwise(DoubleNear(), s5e));
262264
}
263265

264266
TEST(QuadratureTest, ClenshawCurtisNodes)
@@ -279,11 +281,61 @@ TEST(QuadratureTest, ClenshawCurtisNodes)
279281
0.16319444444444444444444444444444444,
280282
0.10243055555555555555555555555555556
281283
};
282-
EXPECT_THAT(s4.data(), testing::Pointwise(DoubleNear(), s4e));
284+
EXPECT_THAT(s4.data(), Pointwise(DoubleNear(), s4e));
283285
}
284286

287+
class QmatTest
288+
: public ::TestWithParam<tuple<size_t, pfasst::QuadratureType>>
289+
{
290+
protected:
291+
size_t nnodes;
292+
pfasst::QuadratureType qtype;
293+
vector<long double> nodes;
294+
matrix<long double> q;
295+
296+
public:
297+
virtual void SetUp()
298+
{
299+
nnodes = get<0>(GetParam());
300+
qtype = get<1>(GetParam());
301+
302+
auto cnodes = pfasst::compute_nodes<long double>(nnodes, qtype);
303+
auto n1 = pfasst::augment_nodes(cnodes);
304+
nodes = get<0>(n1);
305+
q = pfasst::compute_quadrature(nodes, nodes, get<1>(n1), pfasst::QuadratureMatrix::Q);
306+
307+
cout << "Quadrature type no. " << int(qtype) << " -- Number of nodes " << nnodes << endl;
308+
309+
}
310+
311+
virtual void TearDown()
312+
{}
313+
};
314+
315+
TEST_P(QmatTest, AllNodes)
316+
{
317+
long double qsum;
318+
for (size_t m = 0; m < q.size1(); ++m) {
319+
qsum = 0;
320+
for (size_t j = 0; j < q.size2(); ++j) {
321+
qsum += q(m,j);
322+
}
323+
EXPECT_NEAR(qsum, nodes[m+1],
324+
(qtype != pfasst::QuadratureType::Uniform) ? (long double)(1E-12) : (long double)(3E-12));
325+
}
326+
}
327+
328+
INSTANTIATE_TEST_CASE_P(Quadrature, QmatTest,
329+
::Combine(::Range<size_t>(2, 14),
330+
Values<pfasst::QuadratureType>(pfasst::QuadratureType::GaussLegendre,
331+
pfasst::QuadratureType::GaussLobatto,
332+
pfasst::QuadratureType::GaussRadau,
333+
pfasst::QuadratureType::ClenshawCurtis,
334+
pfasst::QuadratureType::Uniform)));
335+
336+
285337
int main(int argc, char** argv)
286338
{
287-
testing::InitGoogleTest(&argc, argv);
339+
InitGoogleTest(&argc, argv);
288340
return RUN_ALL_TESTS();
289341
}

0 commit comments

Comments
 (0)