29TEST(FunctionalExpansionsTest, zernikeSeriesEvaluationXY)
31 const unsigned int order = 4;
32 const Point location(-0.90922108754014, 0.262698547343, 0.156796889218);
42 const std::array<Real, 15> truth = {{0.318309886183791,
58 auto & answer = zernike.getAllGeneration();
59 for (std::size_t i = 0; i < zernike.getNumberOfTerms(); ++i)
60 EXPECT_NEAR(answer[i], truth[i],
tol);
63TEST(FunctionalExpansionsTest, zernikeSeriesEvaluationXZ)
65 const unsigned int order = 4;
66 const Point location(-0.90922108754014, 0.262698547343, 0.156796889218);
76 const std::array<Real, 15> truth = {{0.318309886183791,
92 auto & answer = zernike.getAllGeneration();
93 for (std::size_t i = 0; i < zernike.getNumberOfTerms(); ++i)
94 EXPECT_NEAR(answer[i], truth[i],
tol);
97TEST(FunctionalExpansionsTest, zernikeSeriesEvaluationYZ)
99 const unsigned int order = 4;
100 const Point location(-0.90922108754014, 0.262698547343, 0.156796889218);
110 const std::array<Real, 15> truth = {{0.318309886183791,
126 auto & answer = zernike.getAllGeneration();
127 for (std::size_t i = 0; i < zernike.getNumberOfTerms(); ++i)
128 EXPECT_NEAR(answer[i], truth[i],
tol);
131TEST(FunctionalExpansionsTest, zernikeSeriesSqrtMuEvaluation)
133 const unsigned int order = 4;
134 const Point location(-0.90922108754014, 0.262698547343, 0.156796889218);
144 const std::array<Real, 15> truth = {{0.318309886183791,
160 auto & answer = zernike.getAllGeneration();
161 EXPECT_NEAR(answer[0], truth[0] * std::sqrt(M_PI),
tol);
163 for (
size_t n = 1; n < order + 1; ++n)
165 for (
size_t m = 0; m < n + 1; ++m)
167 if (m != 0 && n / m == 2 && n % m == 0)
168 EXPECT_NEAR(answer[i], truth[i] * std::sqrt(M_PI / (n + 1)),
tol);
170 EXPECT_NEAR(answer[i], truth[i] * std::sqrt(M_PI / (2 * n + 2)),
tol);
176TEST(FunctionalExpansionsTest, zernikeSeriesStandardEvaluation)
178 const unsigned int order = 4;
179 const Point location(-0.90922108754014, 0.262698547343, 0.156796889218);
189 const std::array<Real, 15> truth = {{0.318309886183791,
205 auto & answer = zernike.getAllGeneration();
206 EXPECT_NEAR(answer[0], truth[0] * M_PI,
tol);
208 for (
size_t n = 1; n < order + 1; ++n)
210 for (
size_t m = 0; m < n + 1; ++m)
212 if (m != 0 && n / m == 2 && n % m == 0)
213 EXPECT_NEAR(answer[i], truth[i] * M_PI / (n + 1),
tol);
215 EXPECT_NEAR(answer[i], truth[i] * M_PI / (2 * n + 2),
tol);
269TEST(FunctionalExpansionsTest, cylindricalDuoEvaluator)
274 const std::vector<std::size_t> orders = {15, 17};
282 const std::vector<Point> locations = {
283 Point(-0.14854612627465, 0.60364074055275, 0.76978431165674),
284 Point(0.93801805187856, 0.74175118177279, 0.45207131996044),
285 Point(0.35423736896098, -0.83921049062126, -0.02231845586669)};
286 const std::vector<Real> standard_truth = {
287 0.42889689399543629, 4.3724388003439207, 0.82275646257084989};
288 const std::vector<Real> orthogonal_truth = {
289 -10.386457517518826, -161.7959192066881, -3.9949571266605481};
291 for (std::size_t i = 0; i < locations.size(); ++i)
300TEST(FunctionalExpansionsTest, functionalBasisInterfaceCylindrical)
305 const std::vector<std::size_t> orders = {4, 5};
313 const Point location(-0.38541903411291, 0.61369802505416, -0.04539307255549);
314 const Real truth = 0.10414963426362565;
318 EXPECT_NEAR(interface.getExpansionSeriesSum(), truth,
tol);