59 constexpr Kokkos::Array poles = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0};
60 Kokkos::Array<double, MaxDerivatives> derivatives{};
61 calcTransverseDerivatives(poles, 7, 1.0, derivatives);
62 EXPECT_DOUBLE_EQ(derivatives[0], 15.0);
63 EXPECT_DOUBLE_EQ(derivatives[1], 55.0);
64 EXPECT_DOUBLE_EQ(derivatives[2], 170.0);
65 EXPECT_DOUBLE_EQ(derivatives[3], 414.0);
66 EXPECT_DOUBLE_EQ(derivatives[4], 696.0);
67 EXPECT_DOUBLE_EQ(derivatives[5], 600.0);
68 EXPECT_DOUBLE_EQ(derivatives[6], 0.0);
73 generateTanhCoefficients(5);
74 EXPECT_EQ(tanhCoefficients(0), (std::vector<double>{0, 1, 0, 0, 0, 0, 0}));
75 EXPECT_EQ(tanhCoefficients(1), (std::vector<double>{1, 0, -1, 0, 0, 0, 0}));
76 EXPECT_EQ(tanhCoefficients(2), (std::vector<double>{0, -2, 0, 2, 0, 0, 0}));
77 EXPECT_EQ(tanhCoefficients(3), (std::vector<double>{-2, 0, 8, 0, -6, 0, 0}));
78 EXPECT_EQ(tanhCoefficients(4), (std::vector<double>{0, 16, 0, -40, 0, 24, 0}));
79 EXPECT_EQ(tanhCoefficients(5), (std::vector<double>{16, 0, -136, 0, 240, 0, -120}));
84 Kokkos::Array<double, MaxDerivatives> derivativesNeg{};
85 Kokkos::Array<double, MaxDerivatives> derivativesPos{};
86 generateTanhCoefficients(6);
87 calcFringeDerivatives(2.0, 1.0, 1.0, -2.0, tanhCoefficientsHost_m, derivativesNeg);
88 calcFringeDerivatives(2.0, 1.0, 1.0, 2.0, tanhCoefficientsHost_m, derivativesPos);
89 EXPECT_NEAR(derivativesNeg[0], 0.49966464986953352, 1e-10);
90 EXPECT_NEAR(derivativesPos[0], 0.49966464986953352, 1e-10);
91 EXPECT_NEAR(derivativesNeg[1], 0.49932952465848707, 1e-10);
92 EXPECT_NEAR(derivativesPos[1], -0.49932952465848707, 1e-10);
93 EXPECT_NEAR(derivativesNeg[2], -0.0013400513070529474, 1e-10);
94 EXPECT_NEAR(derivativesPos[2], -0.0013400513070529474, 1e-10);
95 EXPECT_NEAR(derivativesNeg[3], -1.0026765069198489, 1e-10);
96 EXPECT_NEAR(derivativesPos[3], 1.0026765069198489, 1e-10);
97 EXPECT_NEAR(derivativesNeg[4], -0.0053386419156264964, 1e-10);
98 EXPECT_NEAR(derivativesPos[4], -0.0053386419156264964, 1e-10);
99 EXPECT_NEAR(derivativesNeg[5], 7.9893801387861263, 1e-10);
100 EXPECT_NEAR(derivativesPos[5], -7.9893801387861263, 1e-10);
101 EXPECT_NEAR(derivativesNeg[6], -0.021010422121266359, 1e-10);
102 EXPECT_NEAR(derivativesPos[6], -0.021010422121266359, 1e-10);
void getField(const Kokkos::View< Vector_t< double, 3 > * >, Kokkos::View< Vector_t< double, 3 > * >, Kokkos::View< Vector_t< double, 3 > * >, double, size_t) override