41#include <boost/test/tools/floating_point_comparison.hpp>
42#include <boost/test/unit_test.hpp>
46namespace PyrCollectionTests
141 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
150 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
154 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
155 for (
int i = 0; i < nelmts; ++i)
157 CollExp.push_back(Exp);
171 for (
int i = 0; i < nelmts; ++i)
173 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
174 tmp = phys1 + i * Exp->GetTotPoints());
183 double epsilon = 1.0e-8;
184 for (
int i = 0; i < phys1.size(); ++i)
186 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
222 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
231 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
235 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
236 for (
int i = 0; i < nelmts; ++i)
238 CollExp.push_back(Exp);
253 for (
int i = 0; i < nelmts; ++i)
255 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
256 tmp = phys1 + i * Exp->GetTotPoints());
260 double epsilon = 1.0e-8;
261 for (
int i = 0; i < phys1.size(); ++i)
263 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
299 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
308 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
312 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
313 for (
int i = 0; i < nelmts; ++i)
315 CollExp.push_back(Exp);
331 for (
int i = 0; i < nelmts; ++i)
333 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
334 tmp = phys1 + i * Exp->GetTotPoints());
343 double epsilon = 1.0e-8;
344 for (
int i = 0; i < phys1.size(); ++i)
346 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
382 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
391 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
394 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
395 for (
int i = 0; i < nelmts; ++i)
397 CollExp.push_back(Exp);
412 for (
int i = 0; i < nelmts; ++i)
414 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
415 tmp = phys1 + i * Exp->GetTotPoints());
419 double epsilon = 1.0e-8;
420 for (
int i = 0; i < phys1.size(); ++i)
422 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
458 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
467 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
471 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
472 for (
int i = 0; i < nelmts; ++i)
474 CollExp.push_back(Exp);
489 for (
int i = 0; i < nelmts; ++i)
491 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
492 tmp = phys1 + i * Exp->GetTotPoints());
496 double epsilon = 1.0e-8;
497 for (
int i = 0; i < phys1.size(); ++i)
499 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
544 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
548 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
549 for (
int i = 0; i < nelmts; ++i)
551 CollExp.push_back(Exp);
567 for (
int i = 0; i < nelmts; ++i)
569 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
570 tmp = phys1 + i * Exp->GetTotPoints());
574 double epsilon = 1.0e-8;
575 for (
int i = 0; i < phys1.size(); ++i)
577 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
613 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
622 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
625 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
626 for (
int i = 0; i < nelmts; ++i)
628 CollExp.push_back(Exp);
638 const int nq = Exp->GetTotPoints();
644 Exp->GetCoords(xc, yc, zc);
646 for (
int i = 0; i < nq; ++i)
648 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
650 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
651 tmp2 = diff1 + (2 * nelmts) * nq);
653 for (
int i = 1; i < nelmts; ++i)
656 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
657 tmp1 = diff1 + (nelmts + i) * nq,
658 tmp2 = diff1 + (2 * nelmts + i) * nq);
664 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
668 double epsilon = 1.0e-8;
669 for (
int i = 0; i < diff1.size(); ++i)
671 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
707 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
716 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
720 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
721 for (
int i = 0; i < nelmts; ++i)
723 CollExp.push_back(Exp);
733 const int nq = Exp->GetTotPoints();
739 Exp->GetCoords(xc, yc, zc);
741 for (
int i = 0; i < nq; ++i)
743 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
745 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
746 tmp2 = diff1 + (2 * nelmts) * nq);
748 for (
int i = 1; i < nelmts; ++i)
751 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
752 tmp1 = diff1 + (nelmts + i) * nq,
753 tmp2 = diff1 + (2 * nelmts + i) * nq);
757 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
759 double epsilon = 1.0e-8;
760 for (
int i = 0; i < diff1.size(); ++i)
763 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
764 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
765 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
801 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
810 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
813 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
814 for (
int i = 0; i < nelmts; ++i)
816 CollExp.push_back(Exp);
827 const int nq = Exp->GetTotPoints();
833 Exp->GetCoords(xc, yc, zc);
835 for (
int i = 0; i < nq; ++i)
837 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
839 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
840 tmp2 = diff1 + (2 * nelmts) * nq);
842 for (
int i = 1; i < nelmts; ++i)
845 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
846 tmp1 = diff1 + (nelmts + i) * nq,
847 tmp2 = diff1 + (2 * nelmts + i) * nq);
853 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
857 double epsilon = 1.0e-8;
858 for (
int i = 0; i < diff1.size(); ++i)
861 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
862 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
863 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
899 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
908 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
912 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
913 for (
int i = 0; i < nelmts; ++i)
915 CollExp.push_back(Exp);
925 const int nq = Exp->GetTotPoints();
931 Exp->GetCoords(xc, yc, zc);
933 for (
int i = 0; i < nq; ++i)
935 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
937 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
938 tmp2 = diff1 + (2 * nelmts) * nq);
940 for (
int i = 1; i < nelmts; ++i)
943 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
944 tmp1 = diff1 + (nelmts + i) * nq,
945 tmp2 = diff1 + (2 * nelmts + i) * nq);
949 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
951 double epsilon = 1.0e-8;
952 for (
int i = 0; i < diff1.size(); ++i)
955 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
956 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
957 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
993 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1002 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1006 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1007 for (
int i = 0; i < nelmts; ++i)
1009 CollExp.push_back(Exp);
1021 const int nq = Exp->GetTotPoints();
1027 Exp->GetCoords(xc, yc, zc);
1029 for (
int i = 0; i < nq; ++i)
1031 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1033 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
1034 tmp2 = diff1 + (2 * nelmts) * nq);
1035 for (
int i = 1; i < nelmts; ++i)
1038 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1039 tmp1 = diff1 + (nelmts + i) * nq,
1040 tmp2 = diff1 + (2 * nelmts + i) * nq);
1044 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
1046 double epsilon = 1.0e-8;
1047 for (
int i = 0; i < diff1.size(); ++i)
1050 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
1051 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
1052 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1071 unsigned int numQuadPoints = 5;
1072 unsigned int numModes = 2;
1093 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1103 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1107 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1108 for (
int i = 0; i < nelmts; ++i)
1110 CollExp.push_back(Exp);
1122 const int nq = Exp->GetTotPoints();
1128 Exp->GetCoords(xc, yc, zc);
1130 for (
int i = 0; i < nq; ++i)
1132 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1134 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq,
1135 tmp2 = diff1 + (2 * nelmts) * nq);
1137 for (
int i = 1; i < nelmts; ++i)
1140 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1141 tmp1 = diff1 + (nelmts + i) * nq,
1142 tmp2 = diff1 + (2 * nelmts + i) * nq);
1148 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
1152 double epsilon = 1.0e-8;
1153 for (
int i = 0; i < diff1.size(); ++i)
1156 diff1[i] = (fabs(diff1[i]) < 1e-14) ? 0.0 : diff1[i];
1157 diff2[i] = (fabs(diff2[i]) < 1e-14) ? 0.0 : diff2[i];
1158 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1194 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1203 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1207 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1208 for (
int i = 0; i < nelmts; ++i)
1210 CollExp.push_back(Exp);
1220 const int nq = Exp->GetTotPoints();
1227 Exp->GetCoords(xc, yc, zc);
1229 for (
int i = 0; i < nq; ++i)
1231 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1233 Exp->IProductWRTBase(phys, coeffs1);
1235 for (
int i = 1; i < nelmts; ++i)
1238 Exp->IProductWRTBase(phys + i * nq,
1239 tmp = coeffs1 + i * Exp->GetNcoeffs());
1248 double epsilon = 1.0e-8;
1249 for (
int i = 0; i < coeffs1.size(); ++i)
1252 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1253 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1254 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1290 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1299 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1303 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1304 for (
int i = 0; i < nelmts; ++i)
1306 CollExp.push_back(Exp);
1316 const int nq = Exp->GetTotPoints();
1323 Exp->GetCoords(xc, yc, zc);
1325 for (
int i = 0; i < nq; ++i)
1327 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1329 Exp->IProductWRTBase(phys, coeffs1);
1331 for (
int i = 1; i < nelmts; ++i)
1334 Exp->IProductWRTBase(phys + i * nq,
1335 tmp = coeffs1 + i * Exp->GetNcoeffs());
1340 double epsilon = 1.0e-8;
1341 for (
int i = 0; i < coeffs1.size(); ++i)
1344 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1345 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1346 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1382 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1391 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1395 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1396 for (
int i = 0; i < nelmts; ++i)
1398 CollExp.push_back(Exp);
1409 const int nq = Exp->GetTotPoints();
1416 Exp->GetCoords(xc, yc, zc);
1418 for (
int i = 0; i < nq; ++i)
1420 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1422 Exp->IProductWRTBase(phys, coeffs1);
1424 for (
int i = 1; i < nelmts; ++i)
1427 Exp->IProductWRTBase(phys + i * nq,
1428 tmp = coeffs1 + i * Exp->GetNcoeffs());
1437 double epsilon = 1.0e-8;
1438 for (
int i = 0; i < coeffs1.size(); ++i)
1441 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1442 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1443 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1479 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1488 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1492 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1493 for (
int i = 0; i < nelmts; ++i)
1495 CollExp.push_back(Exp);
1505 const int nq = Exp->GetTotPoints();
1512 Exp->GetCoords(xc, yc, zc);
1514 for (
int i = 0; i < nq; ++i)
1516 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1518 Exp->IProductWRTBase(phys, coeffs1);
1520 for (
int i = 1; i < nelmts; ++i)
1523 Exp->IProductWRTBase(phys + i * nq,
1524 tmp = coeffs1 + i * Exp->GetNcoeffs());
1529 double epsilon = 1.0e-8;
1530 for (
int i = 0; i < coeffs1.size(); ++i)
1533 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1534 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1535 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1571 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1580 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1584 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1585 for (
int i = 0; i < nelmts; ++i)
1587 CollExp.push_back(Exp);
1597 const int nq = Exp->GetTotPoints();
1604 Exp->GetCoords(xc, yc, zc);
1606 for (
int i = 0; i < nq; ++i)
1608 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1610 Exp->IProductWRTBase(phys, coeffs1);
1612 for (
int i = 1; i < nelmts; ++i)
1615 Exp->IProductWRTBase(phys + i * nq,
1616 tmp = coeffs1 + i * Exp->GetNcoeffs());
1621 double epsilon = 1.0e-8;
1622 for (
int i = 0; i < coeffs1.size(); ++i)
1625 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1626 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1627 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1663 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1672 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1676 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1677 for (
int i = 0; i < nelmts; ++i)
1679 CollExp.push_back(Exp);
1690 const int nq = Exp->GetTotPoints();
1697 Exp->GetCoords(xc, yc, zc);
1699 for (
int i = 0; i < nq; ++i)
1701 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1703 Exp->IProductWRTBase(phys, coeffs1);
1705 for (
int i = 1; i < nelmts; ++i)
1708 Exp->IProductWRTBase(phys + i * nq,
1709 tmp = coeffs1 + i * Exp->GetNcoeffs());
1714 double epsilon = 1.0e-8;
1715 for (
int i = 0; i < coeffs1.size(); ++i)
1718 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1719 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1720 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1739 unsigned int numQuadPoints = 5;
1740 unsigned int numModes = 4;
1761 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1771 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1775 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1776 for (
int i = 0; i < nelmts; ++i)
1778 CollExp.push_back(Exp);
1789 const int nq = Exp->GetTotPoints();
1796 Exp->GetCoords(xc, yc, zc);
1798 for (
int i = 0; i < nq; ++i)
1800 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1802 Exp->IProductWRTBase(phys, coeffs1);
1804 for (
int i = 1; i < nelmts; ++i)
1807 Exp->IProductWRTBase(phys + i * nq,
1808 tmp = coeffs1 + i * Exp->GetNcoeffs());
1817 double epsilon = 1.0e-8;
1818 for (
int i = 0; i < coeffs1.size(); ++i)
1821 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1822 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1823 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1842 unsigned int numQuadPoints = 5;
1843 unsigned int numModes = 4;
1864 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1874 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1878 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1879 for (
int i = 0; i < nelmts; ++i)
1881 CollExp.push_back(Exp);
1893 const int nq = Exp->GetTotPoints();
1900 Exp->GetCoords(xc, yc, zc);
1902 for (
int i = 0; i < nq; ++i)
1904 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1906 Exp->IProductWRTBase(phys, coeffs1);
1908 for (
int i = 1; i < nelmts; ++i)
1911 Exp->IProductWRTBase(phys + i * nq,
1912 tmp = coeffs1 + i * Exp->GetNcoeffs());
1917 double epsilon = 1.0e-8;
1918 for (
int i = 0; i < coeffs1.size(); ++i)
1921 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
1922 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
1923 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1959 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
1968 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
1972 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1973 for (
int i = 0; i < nelmts; ++i)
1975 CollExp.push_back(Exp);
1985 const int nq = Exp->GetTotPoints();
1986 const int nm = Exp->GetNcoeffs();
1995 Exp->GetCoords(xc, yc, zc);
1997 for (
int i = 0; i < nq; ++i)
1999 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2000 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2001 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2003 for (
int i = 1; i < nelmts; ++i)
2011 for (
int i = 0; i < nelmts; ++i)
2013 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2014 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2015 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2016 tmp = coeffs1 + i * nm, 1);
2017 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2018 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2019 tmp = coeffs1 + i * nm, 1);
2029 double epsilon = 1.0e-8;
2030 for (
int i = 0; i < coeffs1.size(); ++i)
2032 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2033 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2034 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2070 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2079 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2083 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2084 for (
int i = 0; i < nelmts; ++i)
2086 CollExp.push_back(Exp);
2096 const int nq = Exp->GetTotPoints();
2097 const int nm = Exp->GetNcoeffs();
2106 Exp->GetCoords(xc, yc, zc);
2108 for (
int i = 0; i < nq; ++i)
2110 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2111 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2112 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2114 for (
int i = 1; i < nelmts; ++i)
2122 for (
int i = 0; i < nelmts; ++i)
2124 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2125 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2126 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2127 tmp = coeffs1 + i * nm, 1);
2128 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2129 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2130 tmp = coeffs1 + i * nm, 1);
2136 double epsilon = 1.0e-8;
2137 for (
int i = 0; i < coeffs1.size(); ++i)
2139 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2140 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2141 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2177 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2186 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2190 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2191 for (
int i = 0; i < nelmts; ++i)
2193 CollExp.push_back(Exp);
2203 const int nq = Exp->GetTotPoints();
2204 const int nm = Exp->GetNcoeffs();
2213 Exp->GetCoords(xc, yc, zc);
2215 for (
int i = 0; i < nq; ++i)
2217 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2218 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2219 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2221 for (
int i = 1; i < nelmts; ++i)
2229 for (
int i = 0; i < nelmts; ++i)
2231 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2232 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2233 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2234 tmp = coeffs1 + i * nm, 1);
2235 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2236 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2237 tmp = coeffs1 + i * nm, 1);
2247 double epsilon = 1.0e-8;
2248 for (
int i = 0; i < coeffs1.size(); ++i)
2250 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2251 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2252 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2288 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2297 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2301 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2302 for (
int i = 0; i < nelmts; ++i)
2304 CollExp.push_back(Exp);
2314 const int nq = Exp->GetTotPoints();
2315 const int nm = Exp->GetNcoeffs();
2324 Exp->GetCoords(xc, yc, zc);
2326 for (
int i = 0; i < nq; ++i)
2328 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2329 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2330 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2332 for (
int i = 1; i < nelmts; ++i)
2340 for (
int i = 0; i < nelmts; ++i)
2342 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2343 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2344 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2345 tmp = coeffs1 + i * nm, 1);
2346 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2347 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2348 tmp = coeffs1 + i * nm, 1);
2354 double epsilon = 1.0e-8;
2355 for (
int i = 0; i < coeffs1.size(); ++i)
2357 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2358 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2359 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2378 unsigned int numQuadPoints = 5;
2379 unsigned int numModes = 4;
2400 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2410 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2414 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2415 for (
int i = 0; i < nelmts; ++i)
2417 CollExp.push_back(Exp);
2427 const int nq = Exp->GetTotPoints();
2428 const int nm = Exp->GetNcoeffs();
2436 Exp->GetCoords(xc, yc, zc);
2438 for (
int i = 0; i < nq; ++i)
2440 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2441 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2442 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2444 for (
int i = 1; i < nelmts; ++i)
2452 for (
int i = 0; i < nelmts; ++i)
2454 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2455 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2456 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2457 tmp = coeffs1 + i * nm, 1);
2458 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2459 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2460 tmp = coeffs1 + i * nm, 1);
2470 double epsilon = 1.0e-8;
2471 for (
int i = 0; i < coeffs1.size(); ++i)
2473 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2474 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2475 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2479 TestPyrIProductWRTDerivBase_MatrixFree_Deformed_MultiElmt_OverInt)
2494 unsigned int numQuadPoints = 8;
2495 unsigned int numModes = 4;
2516 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2526 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2530 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2531 for (
int i = 0; i < nelmts; ++i)
2533 CollExp.push_back(Exp);
2543 const int nq = Exp->GetTotPoints();
2544 const int nm = Exp->GetNcoeffs();
2552 Exp->GetCoords(xc, yc, zc);
2554 for (
int i = 0; i < nq; ++i)
2556 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2557 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2558 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2560 for (
int i = 1; i < nelmts; ++i)
2568 for (
int i = 0; i < nelmts; ++i)
2570 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2571 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2572 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2573 tmp = coeffs1 + i * nm, 1);
2574 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2575 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2576 tmp = coeffs1 + i * nm, 1);
2582 double epsilon = 1.0e-8;
2583 for (
int i = 0; i < coeffs1.size(); ++i)
2585 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2586 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2587 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2606 unsigned int numQuadPoints = 5;
2607 unsigned int numModes = 4;
2628 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2638 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2640 unsigned int nelmts =
NELMTS;
2642 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2643 for (
unsigned int i = 0; i < nelmts; ++i)
2645 CollExp.push_back(Exp);
2663 for (
unsigned int i = 0; i < nelmts; ++i)
2665 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
2666 tmp = physRef + i * Exp->GetTotPoints());
2674 double epsilon = 1.0e-8;
2675 for (
unsigned int i = 0; i < physRef.size(); ++i)
2677 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
2696 unsigned int numQuadPoints = 8;
2697 unsigned int numModes = 4;
2718 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2728 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2730 unsigned int nelmts = 10;
2732 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2733 for (
unsigned int i = 0; i < nelmts; ++i)
2735 CollExp.push_back(Exp);
2753 for (
unsigned int i = 0; i < nelmts; ++i)
2755 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
2756 tmp = physRef + i * Exp->GetTotPoints());
2760 double epsilon = 1.0e-8;
2761 for (
unsigned int i = 0; i < physRef.size(); ++i)
2763 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
2799 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2808 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2812 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2813 for (
int i = 0; i < nelmts; ++i)
2815 CollExp.push_back(Exp);
2825 const int nq = Exp->GetTotPoints();
2826 const int nm = Exp->GetNcoeffs();
2835 Exp->GetCoords(xc, yc, zc);
2837 for (
int i = 0; i < nq; ++i)
2839 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2840 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2841 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2843 for (
int i = 1; i < nelmts; ++i)
2851 for (
int i = 0; i < nelmts; ++i)
2853 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2854 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2855 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2856 tmp = coeffs1 + i * nm, 1);
2857 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2858 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2859 tmp = coeffs1 + i * nm, 1);
2865 double epsilon = 1.0e-8;
2866 for (
int i = 0; i < coeffs1.size(); ++i)
2868 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2869 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2870 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2906 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
2915 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
2919 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2920 for (
int i = 0; i < nelmts; ++i)
2922 CollExp.push_back(Exp);
2932 const int nq = Exp->GetTotPoints();
2933 const int nm = Exp->GetNcoeffs();
2942 Exp->GetCoords(xc, yc, zc);
2944 for (
int i = 0; i < nq; ++i)
2946 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2947 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
2948 phys3[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
2950 for (
int i = 1; i < nelmts; ++i)
2958 for (
int i = 0; i < nelmts; ++i)
2960 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2961 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
2962 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2963 tmp = coeffs1 + i * nm, 1);
2964 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
2965 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2966 tmp = coeffs1 + i * nm, 1);
2972 double epsilon = 1.0e-8;
2973 for (
int i = 0; i < coeffs1.size(); ++i)
2975 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2976 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2977 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2996 unsigned int numQuadPoints = 5;
2997 unsigned int numModes = 4;
3018 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3028 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3032 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3033 for (
int i = 0; i < nelmts; ++i)
3035 CollExp.push_back(Exp);
3054 const int nm = Exp->GetNcoeffs();
3059 for (
int i = 0; i < nm; ++i)
3064 for (
int i = 1; i < nelmts; ++i)
3066 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3072 for (
int i = 0; i < nelmts; ++i)
3075 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3080 double epsilon = 1.0e-8;
3081 for (
int i = 0; i < coeffsRef.size(); ++i)
3083 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3084 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3085 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3104 unsigned int numQuadPoints = 5;
3105 unsigned int numModes = 4;
3126 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3136 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3140 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3141 for (
int i = 0; i < nelmts; ++i)
3143 CollExp.push_back(Exp);
3156 const int nm = Exp->GetNcoeffs();
3161 for (
int i = 0; i < nm; ++i)
3166 for (
int i = 1; i < nelmts; ++i)
3168 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3174 for (
int i = 0; i < nelmts; ++i)
3177 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3182 double epsilon = 1.0e-8;
3183 for (
int i = 0; i < coeffsRef.size(); ++i)
3185 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3186 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3187 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3206 unsigned int numQuadPoints = 8;
3207 unsigned int numModes = 4;
3228 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3238 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3242 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3243 for (
int i = 0; i < nelmts; ++i)
3245 CollExp.push_back(Exp);
3258 const int nm = Exp->GetNcoeffs();
3263 for (
int i = 0; i < nm; ++i)
3268 for (
int i = 1; i < nelmts; ++i)
3270 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3276 for (
int i = 0; i < nelmts; ++i)
3279 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3284 double epsilon = 1.0e-8;
3285 for (
int i = 0; i < coeffsRef.size(); ++i)
3287 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3288 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3289 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3308 unsigned int numQuadPoints = 5;
3309 unsigned int numModes = 4;
3330 Nektar::LibUtilities::eGaussRadauMAlpha2Beta0;
3340 basisKeyDir1, basisKeyDir2, basisKeyDir3, pyrGeom);
3344 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3345 for (
int i = 0; i < nelmts; ++i)
3347 CollExp.push_back(Exp);
3366 const int nm = Exp->GetNcoeffs();
3371 for (
int i = 0; i < nm; ++i)
3376 for (
int i = 1; i < nelmts; ++i)
3378 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3384 for (
int i = 0; i < nelmts; ++i)
3387 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3392 double epsilon = 1.0e-8;
3393 for (
int i = 0; i < coeffsRef.size(); ++i)
3395 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3396 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3397 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], 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)
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
The above copyright notice and this permission notice shall be included.
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)