41#include <boost/test/tools/floating_point_comparison.hpp>
42#include <boost/test/unit_test.hpp>
139 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
148 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
152 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
153 for (
int i = 0; i < nelmts; ++i)
155 CollExp.push_back(Exp);
169 for (
int i = 0; i < nelmts; ++i)
171 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
172 tmp = phys1 + i * Exp->GetTotPoints());
181 double epsilon = 1.0e-8;
182 for (
int i = 0; i < phys1.size(); ++i)
184 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
220 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
229 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
233 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
234 for (
int i = 0; i < nelmts; ++i)
236 CollExp.push_back(Exp);
251 for (
int i = 0; i < nelmts; ++i)
253 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
254 tmp = phys1 + i * Exp->GetTotPoints());
258 double epsilon = 1.0e-8;
259 for (
int i = 0; i < phys1.size(); ++i)
261 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
297 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
306 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
310 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
311 for (
int i = 0; i < nelmts; ++i)
313 CollExp.push_back(Exp);
329 for (
int i = 0; i < nelmts; ++i)
331 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
332 tmp = phys1 + i * Exp->GetTotPoints());
341 double epsilon = 1.0e-8;
342 for (
int i = 0; i < phys1.size(); ++i)
344 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
380 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
389 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
392 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
393 for (
int i = 0; i < nelmts; ++i)
395 CollExp.push_back(Exp);
410 for (
int i = 0; i < nelmts; ++i)
412 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
413 tmp = phys1 + i * Exp->GetTotPoints());
417 double epsilon = 1.0e-8;
418 for (
int i = 0; i < phys1.size(); ++i)
420 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
456 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
465 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
469 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
470 for (
int i = 0; i < nelmts; ++i)
472 CollExp.push_back(Exp);
487 for (
int i = 0; i < nelmts; ++i)
489 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
490 tmp = phys1 + i * Exp->GetTotPoints());
494 double epsilon = 1.0e-8;
495 for (
int i = 0; i < phys1.size(); ++i)
497 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
542 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
546 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
547 for (
int i = 0; i < nelmts; ++i)
549 CollExp.push_back(Exp);
565 for (
int i = 0; i < nelmts; ++i)
567 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
568 tmp = phys1 + i * Exp->GetTotPoints());
572 double epsilon = 1.0e-8;
573 for (
int i = 0; i < phys1.size(); ++i)
575 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
611 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
620 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
623 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
624 for (
int i = 0; i < nelmts; ++i)
626 CollExp.push_back(Exp);
636 const int nq = Exp->GetTotPoints();
642 Exp->GetCoords(xc, yc, zc);
644 for (
int i = 0; i < nq; ++i)
646 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
648 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
649 tmp2 = diff1 + (2 * nelmts) * nq);
651 for (
int i = 1; i < nelmts; ++i)
654 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
655 tmp1 = diff1 + (nelmts + i) * nq,
656 tmp2 = diff1 + (2 * nelmts + i) * nq);
662 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
666 double epsilon = 1.0e-8;
667 for (
int i = 0; i < diff1.size(); ++i)
669 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
705 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
714 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
718 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
719 for (
int i = 0; i < nelmts; ++i)
721 CollExp.push_back(Exp);
731 const int nq = Exp->GetTotPoints();
737 Exp->GetCoords(xc, yc, zc);
739 for (
int i = 0; i < nq; ++i)
741 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
743 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
744 tmp2 = diff1 + (2 * nelmts) * nq);
746 for (
int i = 1; i < nelmts; ++i)
749 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
750 tmp1 = diff1 + (nelmts + i) * nq,
751 tmp2 = diff1 + (2 * nelmts + i) * nq);
755 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
757 double epsilon = 1.0e-8;
758 for (
int i = 0; i < diff1.size(); ++i)
761 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
762 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
763 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
799 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
808 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
811 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
812 for (
int i = 0; i < nelmts; ++i)
814 CollExp.push_back(Exp);
825 const int nq = Exp->GetTotPoints();
831 Exp->GetCoords(xc, yc, zc);
833 for (
int i = 0; i < nq; ++i)
835 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
837 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
838 tmp2 = diff1 + (2 * nelmts) * nq);
840 for (
int i = 1; i < nelmts; ++i)
843 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
844 tmp1 = diff1 + (nelmts + i) * nq,
845 tmp2 = diff1 + (2 * nelmts + i) * nq);
851 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
855 double epsilon = 1.0e-8;
856 for (
int i = 0; i < diff1.size(); ++i)
859 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
860 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
861 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
897 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
906 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
910 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
911 for (
int i = 0; i < nelmts; ++i)
913 CollExp.push_back(Exp);
923 const int nq = Exp->GetTotPoints();
929 Exp->GetCoords(xc, yc, zc);
931 for (
int i = 0; i < nq; ++i)
933 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
935 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
936 tmp2 = diff1 + (2 * nelmts) * nq);
938 for (
int i = 1; i < nelmts; ++i)
941 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
942 tmp1 = diff1 + (nelmts + i) * nq,
943 tmp2 = diff1 + (2 * nelmts + i) * nq);
947 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
949 double epsilon = 1.0e-8;
950 for (
int i = 0; i < diff1.size(); ++i)
953 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
954 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
955 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
991 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1000 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1004 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1005 for (
int i = 0; i < nelmts; ++i)
1007 CollExp.push_back(Exp);
1019 const int nq = Exp->GetTotPoints();
1025 Exp->GetCoords(xc, yc, zc);
1027 for (
int i = 0; i < nq; ++i)
1029 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1031 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
1032 tmp2 = diff1 + (2 * nelmts) * nq);
1033 for (
int i = 1; i < nelmts; ++i)
1036 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1037 tmp1 = diff1 + (nelmts + i) * nq,
1038 tmp2 = diff1 + (2 * nelmts + i) * nq);
1042 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
1044 double epsilon = 1.0e-8;
1045 for (
int i = 0; i < diff1.size(); ++i)
1048 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
1049 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
1050 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1069 unsigned int numQuadPoints = 5;
1070 unsigned int numModes = 2;
1091 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1101 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1105 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1106 for (
int i = 0; i < nelmts; ++i)
1108 CollExp.push_back(Exp);
1120 const int nq = Exp->GetTotPoints();
1126 Exp->GetCoords(xc, yc, zc);
1128 for (
int i = 0; i < nq; ++i)
1130 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1132 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
1133 tmp2 = diff1 + (2 * nelmts) * nq);
1135 for (
int i = 1; i < nelmts; ++i)
1138 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1139 tmp1 = diff1 + (nelmts + i) * nq,
1140 tmp2 = diff1 + (2 * nelmts + i) * nq);
1146 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
1150 double epsilon = 1.0e-8;
1151 for (
int i = 0; i < diff1.size(); ++i)
1154 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
1155 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
1156 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1192 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1201 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1205 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1206 for (
int i = 0; i < nelmts; ++i)
1208 CollExp.push_back(Exp);
1218 const int nq = Exp->GetTotPoints();
1225 Exp->GetCoords(xc, yc, zc);
1227 for (
int i = 0; i < nq; ++i)
1229 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1231 Exp->IProductWRTBase(phys, coeffs1);
1233 for (
int i = 1; i < nelmts; ++i)
1236 Exp->IProductWRTBase(phys + i * nq,
1237 tmp = coeffs1 + i * Exp->GetNcoeffs());
1246 double epsilon = 1.0e-8;
1247 for (
int i = 0; i < coeffs1.size(); ++i)
1250 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1251 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1252 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1288 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1297 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1301 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1302 for (
int i = 0; i < nelmts; ++i)
1304 CollExp.push_back(Exp);
1314 const int nq = Exp->GetTotPoints();
1321 Exp->GetCoords(xc, yc, zc);
1323 for (
int i = 0; i < nq; ++i)
1325 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1327 Exp->IProductWRTBase(phys, coeffs1);
1329 for (
int i = 1; i < nelmts; ++i)
1332 Exp->IProductWRTBase(phys + i * nq,
1333 tmp = coeffs1 + i * Exp->GetNcoeffs());
1338 double epsilon = 1.0e-8;
1339 for (
int i = 0; i < coeffs1.size(); ++i)
1342 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1343 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1344 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1380 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1389 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1393 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1394 for (
int i = 0; i < nelmts; ++i)
1396 CollExp.push_back(Exp);
1407 const int nq = Exp->GetTotPoints();
1414 Exp->GetCoords(xc, yc, zc);
1416 for (
int i = 0; i < nq; ++i)
1418 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1420 Exp->IProductWRTBase(phys, coeffs1);
1422 for (
int i = 1; i < nelmts; ++i)
1425 Exp->IProductWRTBase(phys + i * nq,
1426 tmp = coeffs1 + i * Exp->GetNcoeffs());
1435 double epsilon = 1.0e-8;
1436 for (
int i = 0; i < coeffs1.size(); ++i)
1439 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1440 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1441 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1477 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1486 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1490 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1491 for (
int i = 0; i < nelmts; ++i)
1493 CollExp.push_back(Exp);
1503 const int nq = Exp->GetTotPoints();
1510 Exp->GetCoords(xc, yc, zc);
1512 for (
int i = 0; i < nq; ++i)
1514 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1516 Exp->IProductWRTBase(phys, coeffs1);
1518 for (
int i = 1; i < nelmts; ++i)
1521 Exp->IProductWRTBase(phys + i * nq,
1522 tmp = coeffs1 + i * Exp->GetNcoeffs());
1527 double epsilon = 1.0e-8;
1528 for (
int i = 0; i < coeffs1.size(); ++i)
1531 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1532 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1533 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1569 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1578 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1582 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1583 for (
int i = 0; i < nelmts; ++i)
1585 CollExp.push_back(Exp);
1595 const int nq = Exp->GetTotPoints();
1602 Exp->GetCoords(xc, yc, zc);
1604 for (
int i = 0; i < nq; ++i)
1606 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1608 Exp->IProductWRTBase(phys, coeffs1);
1610 for (
int i = 1; i < nelmts; ++i)
1613 Exp->IProductWRTBase(phys + i * nq,
1614 tmp = coeffs1 + i * Exp->GetNcoeffs());
1619 double epsilon = 1.0e-8;
1620 for (
int i = 0; i < coeffs1.size(); ++i)
1623 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1624 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1625 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1661 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1670 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1674 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1675 for (
int i = 0; i < nelmts; ++i)
1677 CollExp.push_back(Exp);
1688 const int nq = Exp->GetTotPoints();
1695 Exp->GetCoords(xc, yc, zc);
1697 for (
int i = 0; i < nq; ++i)
1699 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1701 Exp->IProductWRTBase(phys, coeffs1);
1703 for (
int i = 1; i < nelmts; ++i)
1706 Exp->IProductWRTBase(phys + i * nq,
1707 tmp = coeffs1 + i * Exp->GetNcoeffs());
1712 double epsilon = 1.0e-8;
1713 for (
int i = 0; i < coeffs1.size(); ++i)
1716 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1717 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1718 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1737 unsigned int numQuadPoints = 5;
1738 unsigned int numModes = 4;
1759 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1769 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1773 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1774 for (
int i = 0; i < nelmts; ++i)
1776 CollExp.push_back(Exp);
1787 const int nq = Exp->GetTotPoints();
1794 Exp->GetCoords(xc, yc, zc);
1796 for (
int i = 0; i < nq; ++i)
1798 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1800 Exp->IProductWRTBase(phys, coeffs1);
1802 for (
int i = 1; i < nelmts; ++i)
1805 Exp->IProductWRTBase(phys + i * nq,
1806 tmp = coeffs1 + i * Exp->GetNcoeffs());
1815 double epsilon = 1.0e-8;
1816 for (
int i = 0; i < coeffs1.size(); ++i)
1819 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1820 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1821 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1840 unsigned int numQuadPoints = 5;
1841 unsigned int numModes = 4;
1862 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1872 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1876 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1877 for (
int i = 0; i < nelmts; ++i)
1879 CollExp.push_back(Exp);
1891 const int nq = Exp->GetTotPoints();
1898 Exp->GetCoords(xc, yc, zc);
1900 for (
int i = 0; i < nq; ++i)
1902 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1904 Exp->IProductWRTBase(phys, coeffs1);
1906 for (
int i = 1; i < nelmts; ++i)
1909 Exp->IProductWRTBase(phys + i * nq,
1910 tmp = coeffs1 + i * Exp->GetNcoeffs());
1915 double epsilon = 1.0e-8;
1916 for (
int i = 0; i < coeffs1.size(); ++i)
1919 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1920 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1921 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1957 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1966 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1970 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1971 for (
int i = 0; i < nelmts; ++i)
1973 CollExp.push_back(Exp);
1983 const int nq = Exp->GetTotPoints();
1984 const int nm = Exp->GetNcoeffs();
1993 Exp->GetCoords(xc, yc, zc);
1995 for (
int i = 0; i < nq; ++i)
1997 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1998 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
1999 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2001 for (
int i = 1; i < nelmts; ++i)
2009 for (
int i = 0; i < nelmts; ++i)
2011 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2012 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2013 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2014 tmp = coeffs1 + i * nm, 1);
2015 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2016 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2017 tmp = coeffs1 + i * nm, 1);
2027 double epsilon = 1.0e-8;
2028 for (
int i = 0; i < coeffs1.size(); ++i)
2030 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2031 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2032 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2068 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2077 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2081 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2082 for (
int i = 0; i < nelmts; ++i)
2084 CollExp.push_back(Exp);
2094 const int nq = Exp->GetTotPoints();
2095 const int nm = Exp->GetNcoeffs();
2104 Exp->GetCoords(xc, yc, zc);
2106 for (
int i = 0; i < nq; ++i)
2108 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2109 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2110 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2112 for (
int i = 1; i < nelmts; ++i)
2120 for (
int i = 0; i < nelmts; ++i)
2122 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2123 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2124 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2125 tmp = coeffs1 + i * nm, 1);
2126 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2127 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2128 tmp = coeffs1 + i * nm, 1);
2134 double epsilon = 1.0e-8;
2135 for (
int i = 0; i < coeffs1.size(); ++i)
2137 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2138 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2139 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2175 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2184 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2188 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2189 for (
int i = 0; i < nelmts; ++i)
2191 CollExp.push_back(Exp);
2201 const int nq = Exp->GetTotPoints();
2202 const int nm = Exp->GetNcoeffs();
2211 Exp->GetCoords(xc, yc, zc);
2213 for (
int i = 0; i < nq; ++i)
2215 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2216 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2217 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2219 for (
int i = 1; i < nelmts; ++i)
2227 for (
int i = 0; i < nelmts; ++i)
2229 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2230 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2231 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2232 tmp = coeffs1 + i * nm, 1);
2233 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2234 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2235 tmp = coeffs1 + i * nm, 1);
2245 double epsilon = 1.0e-8;
2246 for (
int i = 0; i < coeffs1.size(); ++i)
2248 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2249 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2250 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2286 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2295 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2299 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2300 for (
int i = 0; i < nelmts; ++i)
2302 CollExp.push_back(Exp);
2312 const int nq = Exp->GetTotPoints();
2313 const int nm = Exp->GetNcoeffs();
2322 Exp->GetCoords(xc, yc, zc);
2324 for (
int i = 0; i < nq; ++i)
2326 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2327 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2328 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2330 for (
int i = 1; i < nelmts; ++i)
2338 for (
int i = 0; i < nelmts; ++i)
2340 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2341 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2342 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2343 tmp = coeffs1 + i * nm, 1);
2344 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2345 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2346 tmp = coeffs1 + i * nm, 1);
2352 double epsilon = 1.0e-8;
2353 for (
int i = 0; i < coeffs1.size(); ++i)
2355 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2356 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2357 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2376 unsigned int numQuadPoints = 5;
2377 unsigned int numModes = 4;
2398 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2408 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2412 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2413 for (
int i = 0; i < nelmts; ++i)
2415 CollExp.push_back(Exp);
2425 const int nq = Exp->GetTotPoints();
2426 const int nm = Exp->GetNcoeffs();
2434 Exp->GetCoords(xc, yc, zc);
2436 for (
int i = 0; i < nq; ++i)
2438 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2439 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2440 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2442 for (
int i = 1; i < nelmts; ++i)
2450 for (
int i = 0; i < nelmts; ++i)
2452 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2453 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2454 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2455 tmp = coeffs1 + i * nm, 1);
2456 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2457 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2458 tmp = coeffs1 + i * nm, 1);
2468 double epsilon = 1.0e-8;
2469 for (
int i = 0; i < coeffs1.size(); ++i)
2471 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2472 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2473 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2477 TestPyrIProductWRTDerivBase_MatrixFree_Deformed_MultiElmt_OverInt)
2492 unsigned int numQuadPoints = 8;
2493 unsigned int numModes = 4;
2514 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2524 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2528 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2529 for (
int i = 0; i < nelmts; ++i)
2531 CollExp.push_back(Exp);
2541 const int nq = Exp->GetTotPoints();
2542 const int nm = Exp->GetNcoeffs();
2550 Exp->GetCoords(xc, yc, zc);
2552 for (
int i = 0; i < nq; ++i)
2554 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2555 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2556 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2558 for (
int i = 1; i < nelmts; ++i)
2566 for (
int i = 0; i < nelmts; ++i)
2568 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2569 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2570 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2571 tmp = coeffs1 + i * nm, 1);
2572 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2573 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2574 tmp = coeffs1 + i * nm, 1);
2580 double epsilon = 1.0e-8;
2581 for (
int i = 0; i < coeffs1.size(); ++i)
2583 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2584 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2585 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2604 unsigned int numQuadPoints = 5;
2605 unsigned int numModes = 4;
2626 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2636 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2638 unsigned int nelmts =
NELMTS;
2640 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2641 for (
unsigned int i = 0; i < nelmts; ++i)
2643 CollExp.push_back(Exp);
2661 for (
unsigned int i = 0; i < nelmts; ++i)
2663 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
2664 tmp = physRef + i * Exp->GetTotPoints());
2672 double epsilon = 1.0e-8;
2673 for (
unsigned int i = 0; i < physRef.size(); ++i)
2675 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
2694 unsigned int numQuadPoints = 8;
2695 unsigned int numModes = 4;
2716 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2726 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2728 unsigned int nelmts = 10;
2730 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2731 for (
unsigned int i = 0; i < nelmts; ++i)
2733 CollExp.push_back(Exp);
2751 for (
unsigned int i = 0; i < nelmts; ++i)
2753 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
2754 tmp = physRef + i * Exp->GetTotPoints());
2758 double epsilon = 1.0e-8;
2759 for (
unsigned int i = 0; i < physRef.size(); ++i)
2761 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
2797 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2806 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2810 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2811 for (
int i = 0; i < nelmts; ++i)
2813 CollExp.push_back(Exp);
2823 const int nq = Exp->GetTotPoints();
2824 const int nm = Exp->GetNcoeffs();
2833 Exp->GetCoords(xc, yc, zc);
2835 for (
int i = 0; i < nq; ++i)
2837 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2838 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2839 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2841 for (
int i = 1; i < nelmts; ++i)
2849 for (
int i = 0; i < nelmts; ++i)
2851 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2852 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2853 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2854 tmp = coeffs1 + i * nm, 1);
2855 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2856 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2857 tmp = coeffs1 + i * nm, 1);
2863 double epsilon = 1.0e-8;
2864 for (
int i = 0; i < coeffs1.size(); ++i)
2866 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2867 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2868 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2904 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2913 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2917 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2918 for (
int i = 0; i < nelmts; ++i)
2920 CollExp.push_back(Exp);
2930 const int nq = Exp->GetTotPoints();
2931 const int nm = Exp->GetNcoeffs();
2940 Exp->GetCoords(xc, yc, zc);
2942 for (
int i = 0; i < nq; ++i)
2944 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2945 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2946 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2948 for (
int i = 1; i < nelmts; ++i)
2956 for (
int i = 0; i < nelmts; ++i)
2958 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2959 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2960 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2961 tmp = coeffs1 + i * nm, 1);
2962 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2963 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2964 tmp = coeffs1 + i * nm, 1);
2970 double epsilon = 1.0e-8;
2971 for (
int i = 0; i < coeffs1.size(); ++i)
2973 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2974 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2975 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2994 unsigned int numQuadPoints = 5;
2995 unsigned int numModes = 4;
3016 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3026 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3030 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3031 for (
int i = 0; i < nelmts; ++i)
3033 CollExp.push_back(Exp);
3052 const int nm = Exp->GetNcoeffs();
3057 for (
int i = 0; i < nm; ++i)
3062 for (
int i = 1; i < nelmts; ++i)
3064 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3070 for (
int i = 0; i < nelmts; ++i)
3073 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3078 double epsilon = 1.0e-8;
3079 for (
int i = 0; i < coeffsRef.size(); ++i)
3081 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3082 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3083 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3102 unsigned int numQuadPoints = 5;
3103 unsigned int numModes = 4;
3124 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3134 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3138 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3139 for (
int i = 0; i < nelmts; ++i)
3141 CollExp.push_back(Exp);
3154 const int nm = Exp->GetNcoeffs();
3159 for (
int i = 0; i < nm; ++i)
3164 for (
int i = 1; i < nelmts; ++i)
3166 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3172 for (
int i = 0; i < nelmts; ++i)
3175 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3180 double epsilon = 1.0e-8;
3181 for (
int i = 0; i < coeffsRef.size(); ++i)
3183 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3184 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3185 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3204 unsigned int numQuadPoints = 8;
3205 unsigned int numModes = 4;
3226 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3236 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3240 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3241 for (
int i = 0; i < nelmts; ++i)
3243 CollExp.push_back(Exp);
3256 const int nm = Exp->GetNcoeffs();
3261 for (
int i = 0; i < nm; ++i)
3266 for (
int i = 1; i < nelmts; ++i)
3268 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3274 for (
int i = 0; i < nelmts; ++i)
3277 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3282 double epsilon = 1.0e-8;
3283 for (
int i = 0; i < coeffsRef.size(); ++i)
3285 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3286 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3287 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3306 unsigned int numQuadPoints = 5;
3307 unsigned int numModes = 4;
3328 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3338 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3342 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3343 for (
int i = 0; i < nelmts; ++i)
3345 CollExp.push_back(Exp);
3364 const int nm = Exp->GetNcoeffs();
3369 for (
int i = 0; i < nm; ++i)
3374 for (
int i = 1; i < nelmts; ++i)
3376 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3382 for (
int i = 0; i < nelmts; ++i)
3385 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3390 double epsilon = 1.0e-8;
3391 for (
int i = 0; i < coeffsRef.size(); ++i)
3393 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3394 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3395 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3431 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3440 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3444 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3445 for (
int i = 0; i < nelmts; ++i)
3447 CollExp.push_back(Exp);
3459 const int nq = Exp->GetTotPoints();
3463 Exp->GetCoords(xc, yc, zc);
3465 for (
int i = 0; i < nq; ++i)
3467 phys[i] = pow(xc[i], 3) + pow(yc[i], 3) + pow(zc[i], 3);
3481 double epsilon = 2.0e-8;
3482 for (
int i = 0; i < nq1; ++i)
3484 NekDouble exact = pow(xc1[i], 3) + pow(yc1[i], 3) + pow(zc1[i], 3);
3485 phys1[i] = (fabs(phys1[i]) < 1e-14) ? 0.0 : phys1[i];
3486 exact = (fabs(exact) < 1e-14) ? 0.0 : exact;
3487 BOOST_CHECK_CLOSE(phys1[i], exact, epsilon);
3523 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3532 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3536 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3537 for (
int i = 0; i < nelmts; ++i)
3539 CollExp.push_back(Exp);
3551 const int nq = Exp->GetTotPoints();
3555 Exp->GetCoords(xc, yc, zc);
3557 for (
int i = 0; i < nq; ++i)
3559 phys[i] = pow(xc[i], 3) + pow(yc[i], 3) + pow(zc[i], 3);
3573 double epsilon = 2.0e-8;
3574 for (
int i = 0; i < nq1; ++i)
3576 NekDouble exact = pow(xc1[i], 3) + pow(yc1[i], 3) + pow(zc1[i], 3);
3577 phys1[i] = (fabs(phys1[i]) < 1e-14) ? 0.0 : phys1[i];
3578 exact = (fabs(exact) < 1e-14) ? 0.0 : exact;
3579 BOOST_CHECK_CLOSE(phys1[i], exact, epsilon);
COLLECTIONS_EXPORT void Initialise(const OperatorType opType, StdRegions::FactorMap factors=StdRegions::NullFactorMap)
void ApplyOperator(const OperatorType &op, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &output)
int GetOutputSize(const OperatorType &op, bool defaultOut=true)
COLLECTIONS_EXPORT OperatorImpMap GetOperatorImpMap(StdRegions::StdExpansionSharedPtr pExp)
Get Operator Implementation Map from XMl or using default;.
Describes the specification for a Basis.
Defines a specification for a set of points.
void AccumulateRegion(std::string, int iolevel=0)
Accumulate elapsed time for a region.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
static const int kNedges
Get the orientation of face1.
std::map< OperatorType, ImplementationType > OperatorImpMap
std::shared_ptr< SessionReader > SessionReaderSharedPtr
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eModifiedPyr_C
Principle Modified Functions.
@ eModified_A
Principle Modified Functions .
std::shared_ptr< PyrExp > PyrExpSharedPtr
SpatialDomains::PyrGeomSharedPtr CreatePyr(SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1, SpatialDomains::PointGeomSharedPtr v2, SpatialDomains::PointGeomSharedPtr v3, SpatialDomains::PointGeomSharedPtr v4)
SpatialDomains::SegGeomSharedPtr CreateSegGeom(unsigned int id, SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1)
BOOST_AUTO_TEST_CASE(TestPyrBwdTrans_IterPerExp_UniformP_MultiElmt)
std::shared_ptr< QuadGeom > QuadGeomSharedPtr
std::shared_ptr< SegGeom > SegGeomSharedPtr
std::shared_ptr< PyrGeom > PyrGeomSharedPtr
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::shared_ptr< Geometry2D > Geometry2DSharedPtr
std::shared_ptr< TriGeom > TriGeomSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
StdRegions::ConstFactorMap factors
void Vadd(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Add vector z = x+y.
void Vcopy(int n, const T *x, const int incx, T *y, const int incy)
scalarT< T > abs(scalarT< T > in)