40#include <boost/test/tools/floating_point_comparison.hpp>
41#include <boost/test/unit_test.hpp>
63 for (
size_t i1 = 0; i1 < tnm1; ++i1)
65 for (
size_t i0 = 0; i0 < tnm0; ++i0)
67 for (
size_t j1 = 0; j1 < fnm1; ++j1)
69 for (
size_t j0 = 0; j0 < fnm0; ++j0)
71 expected[i0 + tnm0 * i1] +=
72 (*ft0)(i0, j0) * from[j0 + fnm0 * j1] * (*ft1)(i1, j1);
102 for (
size_t i2 = 0; i2 < tnm2; ++i2)
104 for (
size_t i1 = 0; i1 < tnm1; ++i1)
106 for (
size_t i0 = 0; i0 < tnm0; ++i0)
108 for (
size_t j2 = 0; j2 < fnm2; ++j2)
110 for (
size_t j1 = 0; j1 < fnm1; ++j1)
112 for (
size_t j0 = 0; j0 < fnm0; ++j0)
114 expected[i0 + tnm0 * (i1 + tnm1 * i2)] +=
115 (*ft0)(i0, j0) * (*ft1)(i1, j1) *
117 from[j0 + fnm0 * (j1 + fnm1 * j2)];
130 using namespace LibUtilities;
139 for (
size_t i = 0; i < coeffs.size(); ++i)
141 coeffs[i] = 0.125 + 0.25 *
static_cast<NekDouble>(i);
152 BOOST_REQUIRE_EQUAL(expected.size(), actual.size());
155 for (
size_t i = 0; i < expected.size(); ++i)
157 BOOST_CHECK_SMALL(std::abs(expected[i] - actual[i]), epsilon);
163 using namespace LibUtilities;
174 for (
size_t i = 0; i < coeffs.size(); ++i)
176 coeffs[i] = 0.2 + 0.1 *
static_cast<NekDouble>((3 * i) % 11);
182 fbasis0, fbasis1, fbasis2, coeffs, tbasis0, tbasis1, tbasis2);
185 tbasis1, tbasis2, actual);
187 BOOST_REQUIRE_EQUAL(expected.size(), actual.size());
190 for (
size_t i = 0; i < expected.size(); ++i)
192 BOOST_CHECK_SMALL(std::abs(expected[i] - actual[i]), epsilon);
Describes the specification for a Basis.
int GetNumModes() const
Returns the order of the basis.
Defines a specification for a set of points.
BasisManagerT & BasisManager(void)
void InterpCoeff2D(const BasisKey &fbasis0, const BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, Array< OneD, NekDouble > &to)
void InterpCoeff3D(const BasisKey &fbasis0, const BasisKey &fbasis1, const BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const BasisKey &tbasis0, const BasisKey &tbasis1, const BasisKey &tbasis2, Array< OneD, NekDouble > &to)
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eOrtho_A
Principle Orthogonal Functions .
@ eModified_A
Principle Modified Functions .
Array< OneD, NekDouble > TensorProductInterp3D(const LibUtilities::BasisKey &fbasis0, const LibUtilities::BasisKey &fbasis1, const LibUtilities::BasisKey &fbasis2, const Array< OneD, const NekDouble > &from, const LibUtilities::BasisKey &tbasis0, const LibUtilities::BasisKey &tbasis1, const LibUtilities::BasisKey &tbasis2)
Array< OneD, NekDouble > TensorProductInterp2D(const LibUtilities::BasisKey &fbasis0, const LibUtilities::BasisKey &fbasis1, const Array< OneD, const NekDouble > &from, const LibUtilities::BasisKey &tbasis0, const LibUtilities::BasisKey &tbasis1)
BOOST_AUTO_TEST_CASE(TestCanGetRawPtr)
std::shared_ptr< DNekMat > DNekMatSharedPtr