39#include <boost/test/tools/floating_point_comparison.hpp>
40#include <boost/test/unit_test.hpp>
104 face3, face4, face5};
130 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
136 unsigned int numQuadPoints = 6;
144 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
146 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
147 CollExp.push_back(Exp);
160 Exp->BwdTrans(coeffs, phys1);
163 double epsilon = 1.0e-8;
164 for (
int i = 0; i < phys1.size(); ++i)
166 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
190 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
211 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
215 basisKeyDir1, basisKeyDir2, basisKeyDir3);
217 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
218 CollExp.push_back(Exp);
231 Exp->BwdTrans(coeffs, phys1);
234 double epsilon = 1.0e-8;
235 for (
int i = 0; i < phys1.size(); ++i)
237 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
261 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
267 unsigned int numQuadPoints = 6;
275 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
279 basisKeyDir1, basisKeyDir1, basisKeyDir1);
281 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
282 CollExp.push_back(Exp);
295 Exp->BwdTrans(coeffs, phys1);
298 double epsilon = 1.0e-8;
299 for (
int i = 0; i < phys1.size(); ++i)
301 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
325 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
331 unsigned int numQuadPoints = 6;
343 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
347 basisKeyDir1, basisKeyDir2, basisKeyDir3);
349 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
350 CollExp.push_back(Exp);
363 Exp->BwdTrans(coeffs, phys1);
367 double epsilon = 1.0e-8;
368 for (
int i = 0; i < phys1.size(); ++i)
370 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
394 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
400 unsigned int numQuadPoints = 6;
412 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
416 basisKeyDir1, basisKeyDir2, basisKeyDir3);
420 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
421 for (
int i = 0; i < nelmts; ++i)
423 CollExp.push_back(Exp);
437 for (
int i = 0; i < nelmts; ++i)
439 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
440 tmp = phys1 + i * Exp->GetTotPoints());
445 double epsilon = 1.0e-8;
446 for (
int i = 0; i < phys1.size(); ++i)
448 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
472 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
478 unsigned int numQuadPoints = 6;
490 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
494 basisKeyDir1, basisKeyDir2, basisKeyDir3);
496 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
497 CollExp.push_back(Exp);
510 Exp->BwdTrans(coeffs, phys1);
514 double epsilon = 1.0e-8;
515 for (
int i = 0; i < phys1.size(); ++i)
517 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
541 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
547 unsigned int numQuadPoints = 6;
555 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
559 basisKeyDir1, basisKeyDir1, basisKeyDir1);
563 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
564 for (
int i = 0; i < nelmts; ++i)
566 CollExp.push_back(Exp);
580 for (
int i = 0; i < nelmts; ++i)
582 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
583 tmp = phys1 + i * Exp->GetTotPoints());
587 double epsilon = 1.0e-8;
588 for (
int i = 0; i < phys1.size(); ++i)
590 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
614 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
620 unsigned int numQuadPoints = 6;
628 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
632 basisKeyDir1, basisKeyDir1, basisKeyDir1);
636 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
637 for (
int i = 0; i < nelmts; ++i)
639 CollExp.push_back(Exp);
653 for (
int i = 0; i < nelmts; ++i)
655 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
656 tmp = phys1 + i * Exp->GetTotPoints());
660 double epsilon = 1.0e-8;
661 for (
int i = 0; i < phys1.size(); ++i)
663 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
687 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
708 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
712 basisKeyDir1, basisKeyDir2, basisKeyDir3);
716 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
717 for (
int i = 0; i < nelmts; ++i)
719 CollExp.push_back(Exp);
733 for (
int i = 0; i < nelmts; ++i)
735 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
736 tmp = phys1 + i * Exp->GetTotPoints());
740 double epsilon = 1.0e-8;
741 for (
int i = 0; i < phys1.size(); ++i)
743 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
767 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
788 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
792 basisKeyDir1, basisKeyDir2, basisKeyDir3);
796 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
797 for (
int i = 0; i < nelmts; ++i)
799 CollExp.push_back(Exp);
813 for (
int i = 0; i < nelmts; ++i)
815 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
816 tmp = phys1 + i * Exp->GetTotPoints());
820 double epsilon = 1.0e-8;
821 for (
int i = 0; i < phys1.size(); ++i)
823 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
847 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
853 unsigned int numQuadPoints = 6;
854 unsigned int numModes = 4;
862 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
866 basisKeyDir1, basisKeyDir1, basisKeyDir1);
868 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
869 CollExp.push_back(Exp);
882 Exp->BwdTrans(coeffs, physRef);
885 double epsilon = 1.0e-8;
886 for (
int i = 0; i < physRef.size(); ++i)
888 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
912 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
918 unsigned int numQuadPoints = 6;
926 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
930 basisKeyDir1, basisKeyDir1, basisKeyDir1);
932 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
933 CollExp.push_back(Exp);
942 const int nq = Exp->GetTotPoints();
949 Exp->GetCoords(xc, yc, zc);
951 for (
int i = 0; i < nq; ++i)
953 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
956 Exp->IProductWRTBase(phys, coeffs1);
959 double epsilon = 1.0e-8;
960 for (
int i = 0; i < coeffs1.size(); ++i)
962 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
986 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
992 unsigned int numQuadPoints = 5;
993 unsigned int numModes = 4;
1001 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
1005 basisKeyDir1, basisKeyDir1, basisKeyDir1);
1007 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1008 CollExp.push_back(Exp);
1017 const int nq = Exp->GetTotPoints();
1024 Exp->GetCoords(xc, yc, zc);
1026 for (
int i = 0; i < nq; ++i)
1028 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1031 Exp->IProductWRTBase(phys, coeffsRef);
1034 double epsilon = 1.0e-8;
1035 for (
int i = 0; i < coeffsRef.size(); ++i)
1037 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
1038 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
1039 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1063 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1069 unsigned int numQuadPoints = 5;
1070 unsigned int numModes = 4;
1072 quadPointsTypeDir1);
1078 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
1082 basisKeyDir1, basisKeyDir1, basisKeyDir1);
1084 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1085 CollExp.push_back(Exp);
1094 const int nq = Exp->GetTotPoints();
1101 Exp->GetCoords(xc, yc, zc);
1103 for (
int i = 0; i < nq; ++i)
1105 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1108 Exp->IProductWRTBase(phys, coeffsRef);
1111 double epsilon = 1.0e-8;
1112 for (
int i = 0; i < coeffsRef.size(); ++i)
1114 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
1115 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
1116 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1121 TestHexIProductWRTBase_MatrixFree_UniformP_Deformed_OverInt)
1141 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1147 unsigned int numQuadPoints = 8;
1148 unsigned int numModes = 4;
1150 quadPointsTypeDir1);
1156 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
1160 basisKeyDir1, basisKeyDir1, basisKeyDir1);
1162 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1163 CollExp.push_back(Exp);
1172 const int nq = Exp->GetTotPoints();
1179 Exp->GetCoords(xc, yc, zc);
1181 for (
int i = 0; i < nq; ++i)
1183 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1186 Exp->IProductWRTBase(phys, coeffsRef);
1189 double epsilon = 1.0e-8;
1190 for (
int i = 0; i < coeffsRef.size(); ++i)
1192 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
1193 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
1194 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1218 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1225 quadPointsTypeDir1);
1227 quadPointsTypeDir1);
1229 quadPointsTypeDir1);
1239 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1243 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1245 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1246 CollExp.push_back(Exp);
1255 const int nq = Exp->GetTotPoints();
1262 Exp->GetCoords(xc, yc, zc);
1264 for (
int i = 0; i < nq; ++i)
1266 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1269 Exp->IProductWRTBase(phys, coeffs1);
1273 double epsilon = 1.0e-8;
1274 for (
int i = 0; i < coeffs1.size(); ++i)
1276 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1300 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1307 quadPointsTypeDir1);
1309 quadPointsTypeDir1);
1311 quadPointsTypeDir1);
1321 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1325 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1327 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1328 CollExp.push_back(Exp);
1337 const int nq = Exp->GetTotPoints();
1344 Exp->GetCoords(xc, yc, zc);
1346 for (
int i = 0; i < nq; ++i)
1348 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1351 Exp->IProductWRTBase(phys, coeffs1);
1355 double epsilon = 1.0e-8;
1356 for (
int i = 0; i < coeffs1.size(); ++i)
1358 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1382 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1389 quadPointsTypeDir1);
1391 quadPointsTypeDir1);
1393 quadPointsTypeDir1);
1403 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1407 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1409 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1410 CollExp.push_back(Exp);
1419 const int nq = Exp->GetTotPoints();
1426 Exp->GetCoords(xc, yc, zc);
1428 for (
int i = 0; i < nq; ++i)
1430 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1433 Exp->IProductWRTBase(phys, coeffs1);
1436 double epsilon = 1.0e-8;
1437 for (
int i = 0; i < coeffs1.size(); ++i)
1439 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1463 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1470 quadPointsTypeDir1);
1472 quadPointsTypeDir1);
1474 quadPointsTypeDir1);
1484 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1488 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1490 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1491 CollExp.push_back(Exp);
1500 const int nq = Exp->GetTotPoints();
1507 Exp->GetCoords(xc, yc, zc);
1509 for (
int i = 0; i < nq; ++i)
1511 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1514 Exp->IProductWRTBase(phys, coeffs1);
1517 double epsilon = 1.0e-8;
1518 for (
int i = 0; i < coeffs1.size(); ++i)
1520 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1544 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1551 quadPointsTypeDir1);
1553 quadPointsTypeDir1);
1555 quadPointsTypeDir1);
1565 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1569 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1571 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1572 CollExp.push_back(Exp);
1581 const int nq = Exp->GetTotPoints();
1588 Exp->GetCoords(xc, yc, zc);
1590 for (
int i = 0; i < nq; ++i)
1592 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1595 Exp->IProductWRTBase(phys, coeffs1);
1598 double epsilon = 1.0e-8;
1599 for (
int i = 0; i < coeffs1.size(); ++i)
1601 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1625 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1632 quadPointsTypeDir1);
1634 quadPointsTypeDir1);
1636 quadPointsTypeDir1);
1646 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1650 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1654 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1655 for (
int i = 0; i < nelmts; ++i)
1657 CollExp.push_back(Exp);
1667 const int nq = Exp->GetTotPoints();
1674 Exp->GetCoords(xc, yc, zc);
1676 for (
int i = 0; i < nq; ++i)
1678 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1680 Exp->IProductWRTBase(phys, coeffs1);
1682 for (
int i = 1; i < nelmts; ++i)
1685 Exp->IProductWRTBase(phys + i * nq,
1686 tmp = coeffs1 + i * Exp->GetNcoeffs());
1691 double epsilon = 1.0e-8;
1692 for (
int i = 0; i < coeffs1.size(); ++i)
1694 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1718 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1725 quadPointsTypeDir1);
1727 quadPointsTypeDir1);
1729 quadPointsTypeDir1);
1739 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1743 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1747 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1748 for (
int i = 0; i < nelmts; ++i)
1750 CollExp.push_back(Exp);
1760 const int nq = Exp->GetTotPoints();
1767 Exp->GetCoords(xc, yc, zc);
1769 for (
int i = 0; i < nq; ++i)
1771 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1773 Exp->IProductWRTBase(phys, coeffs1);
1775 for (
int i = 1; i < nelmts; ++i)
1778 Exp->IProductWRTBase(phys + i * nq,
1779 tmp = coeffs1 + i * Exp->GetNcoeffs());
1784 double epsilon = 1.0e-8;
1785 for (
int i = 0; i < coeffs1.size(); ++i)
1787 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1811 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1817 unsigned int numQuadPoints = 6;
1819 quadPointsTypeDir1);
1825 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
1829 basisKeyDir1, basisKeyDir1, basisKeyDir1);
1831 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1832 CollExp.push_back(Exp);
1841 const int nq = Exp->GetTotPoints();
1848 Exp->GetCoords(xc, yc, zc);
1850 for (
int i = 0; i < nq; ++i)
1852 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1855 Exp->IProductWRTBase(phys, coeffs1);
1858 double epsilon = 1.0e-6;
1859 for (
int i = 0; i < coeffs1.size(); ++i)
1862 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-16) ? 0.0 : coeffs1[i];
1863 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-16) ? 0.0 : coeffs2[i];
1864 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1888 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1895 quadPointsTypeDir1);
1897 quadPointsTypeDir1);
1899 quadPointsTypeDir1);
1909 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
1913 basisKeyDir1, basisKeyDir2, basisKeyDir3);
1915 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1916 CollExp.push_back(Exp);
1925 const int nq = Exp->GetTotPoints();
1932 Exp->GetCoords(xc, yc, zc);
1934 for (
int i = 0; i < nq; ++i)
1936 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
1939 Exp->IProductWRTBase(phys, coeffs1);
1942 double epsilon = 1.0e-6;
1943 for (
int i = 0; i < coeffs1.size(); ++i)
1946 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-16) ? 0.0 : coeffs1[i];
1947 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-16) ? 0.0 : coeffs2[i];
1948 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1972 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
1979 quadPointsTypeDir1);
1985 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
1989 basisKeyDir1, basisKeyDir1, basisKeyDir1);
1993 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1994 for (
int i = 0; i < nelmts; ++i)
1996 CollExp.push_back(Exp);
2006 const int nq = Exp->GetTotPoints();
2013 Exp->GetCoords(xc, yc, zc);
2015 for (
int i = 0; i < nq; ++i)
2017 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2019 Exp->IProductWRTBase(phys, coeffs1);
2021 for (
int i = 1; i < nelmts; ++i)
2024 Exp->IProductWRTBase(phys + i * nq,
2025 tmp = coeffs1 + i * Exp->GetNcoeffs());
2029 double epsilon = 1.0e-6;
2030 for (
int i = 0; i < coeffs1.size(); ++i)
2033 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-16) ? 0.0 : coeffs1[i];
2034 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-16) ? 0.0 : coeffs2[i];
2035 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2059 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2066 quadPointsTypeDir1);
2068 quadPointsTypeDir1);
2070 quadPointsTypeDir1);
2080 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2084 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2088 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2089 for (
int i = 0; i < nelmts; ++i)
2091 CollExp.push_back(Exp);
2101 const int nq = Exp->GetTotPoints();
2108 Exp->GetCoords(xc, yc, zc);
2110 for (
int i = 0; i < nq; ++i)
2112 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2114 Exp->IProductWRTBase(phys, coeffs1);
2116 for (
int i = 1; i < nelmts; ++i)
2119 Exp->IProductWRTBase(phys + i * nq,
2120 tmp = coeffs1 + i * Exp->GetNcoeffs());
2124 double epsilon = 1.0e-4;
2125 for (
int i = 0; i < coeffs1.size(); ++i)
2128 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2129 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2130 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2135 TestHexIProductWRTBase_SumFac_VariableP_MultiElmt_CollDir02)
2155 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2162 quadPointsTypeDir1);
2164 quadPointsTypeDir1);
2166 quadPointsTypeDir1);
2176 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2180 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2184 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2185 for (
int i = 0; i < nelmts; ++i)
2187 CollExp.push_back(Exp);
2197 const int nq = Exp->GetTotPoints();
2204 Exp->GetCoords(xc, yc, zc);
2206 for (
int i = 0; i < nq; ++i)
2208 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2210 Exp->IProductWRTBase(phys, coeffs1);
2212 for (
int i = 1; i < nelmts; ++i)
2215 Exp->IProductWRTBase(phys + i * nq,
2216 tmp = coeffs1 + i * Exp->GetNcoeffs());
2220 double epsilon = 1.0e-4;
2221 for (
int i = 0; i < coeffs1.size(); ++i)
2224 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2225 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2226 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2231 TestHexIProductWRTBase_SumFac_VariableP_MultiElmt_CollDir12)
2251 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2258 quadPointsTypeDir1);
2260 quadPointsTypeDir1);
2262 quadPointsTypeDir1);
2272 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2276 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2280 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2281 for (
int i = 0; i < nelmts; ++i)
2283 CollExp.push_back(Exp);
2293 const int nq = Exp->GetTotPoints();
2300 Exp->GetCoords(xc, yc, zc);
2302 for (
int i = 0; i < nq; ++i)
2304 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2306 Exp->IProductWRTBase(phys, coeffs1);
2308 for (
int i = 1; i < nelmts; ++i)
2311 Exp->IProductWRTBase(phys + i * nq,
2312 tmp = coeffs1 + i * Exp->GetNcoeffs());
2316 double epsilon = 1.0e-4;
2317 for (
int i = 0; i < coeffs1.size(); ++i)
2320 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2321 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2322 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2346 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2352 unsigned int numQuadPoints = 6;
2354 quadPointsTypeDir1);
2360 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
2364 basisKeyDir1, basisKeyDir1, basisKeyDir1);
2366 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2367 CollExp.push_back(Exp);
2376 const int nq = Exp->GetTotPoints();
2382 Exp->GetCoords(xc, yc, zc);
2384 for (
int i = 0; i < nq; ++i)
2386 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2389 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq, tmp1 = diff1 + 2 * nq);
2391 tmp2 = diff2 + 2 * nq);
2393 double epsilon = 1.0e-8;
2394 for (
int i = 0; i < diff1.size(); ++i)
2396 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
2420 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2426 unsigned int numQuadPoints = 6;
2427 unsigned int numModes = 2;
2429 quadPointsTypeDir1);
2435 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
2439 basisKeyDir1, basisKeyDir1, basisKeyDir1);
2441 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2442 CollExp.push_back(Exp);
2451 const int nq = Exp->GetTotPoints();
2457 Exp->GetCoords(xc, yc, zc);
2459 for (
int i = 0; i < nq; ++i)
2461 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2464 Exp->PhysDeriv(phys, diffRef, tmp = diffRef + nq, tmp1 = diffRef + 2 * nq);
2466 tmp2 = diff + 2 * nq);
2468 double epsilon = 1.0e-8;
2469 for (
int i = 0; i < diffRef.size(); ++i)
2471 diffRef[i] = (
std::abs(diffRef[i]) < 1e-14) ? 0.0 : diffRef[i];
2472 diff[i] = (
std::abs(diff[i]) < 1e-14) ? 0.0 : diff[i];
2473 BOOST_CHECK_CLOSE(diffRef[i], diff[i], epsilon);
2497 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2503 unsigned int numQuadPoints = 5;
2504 unsigned int numModes = 2;
2506 quadPointsTypeDir1);
2512 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
2516 basisKeyDir1, basisKeyDir1, basisKeyDir1);
2518 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2519 CollExp.push_back(Exp);
2528 const int nq = Exp->GetTotPoints();
2534 Exp->GetCoords(xc, yc, zc);
2536 for (
int i = 0; i < nq; ++i)
2538 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2541 Exp->PhysDeriv(phys, diffRef, tmp = diffRef + nq, tmp1 = diffRef + 2 * nq);
2543 tmp2 = diff + 2 * nq);
2545 double epsilon = 1.0e-8;
2546 for (
int i = 0; i < diffRef.size(); ++i)
2548 diffRef[i] = (
std::abs(diffRef[i]) < 1e-14) ? 0.0 : diffRef[i];
2549 diff[i] = (
std::abs(diff[i]) < 1e-14) ? 0.0 : diff[i];
2550 BOOST_CHECK_CLOSE(diffRef[i], diff[i], epsilon);
2574 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2581 quadPointsTypeDir1);
2583 quadPointsTypeDir1);
2585 quadPointsTypeDir1);
2595 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2599 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2603 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2604 for (
int i = 0; i < nelmts; ++i)
2606 CollExp.push_back(Exp);
2616 const int nq = Exp->GetTotPoints();
2622 Exp->GetCoords(xc, yc, zc);
2624 for (
int i = 0; i < nq; ++i)
2626 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2628 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
2629 tmp2 = diff1 + (2 * nelmts) * nq);
2630 for (
int i = 1; i < nelmts; ++i)
2633 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
2634 tmp1 = diff1 + (nelmts + i) * nq,
2635 tmp2 = diff1 + (2 * nelmts + i) * nq);
2639 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
2641 double epsilon = 1.0e-8;
2642 for (
int i = 0; i < diff1.size(); ++i)
2644 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
2668 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2675 quadPointsTypeDir1);
2677 quadPointsTypeDir1);
2679 quadPointsTypeDir1);
2689 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2693 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2697 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2698 for (
int i = 0; i < nelmts; ++i)
2700 CollExp.push_back(Exp);
2710 const int nq = Exp->GetTotPoints();
2716 Exp->GetCoords(xc, yc, zc);
2718 for (
int i = 0; i < nq; ++i)
2720 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2722 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
2723 tmp2 = diff1 + (2 * nelmts) * nq);
2725 for (
int i = 1; i < nelmts; ++i)
2728 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
2729 tmp1 = diff1 + (nelmts + i) * nq,
2730 tmp2 = diff1 + (2 * nelmts + i) * nq);
2734 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
2736 double epsilon = 1.0e-8;
2737 for (
int i = 0; i < diff1.size(); ++i)
2739 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
2763 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2769 unsigned int numQuadPoints = 4;
2771 quadPointsTypeDir1);
2777 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
2781 basisKeyDir1, basisKeyDir1, basisKeyDir1);
2783 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2784 CollExp.push_back(Exp);
2793 const int nq = Exp->GetTotPoints();
2799 Exp->GetCoords(xc, yc, zc);
2801 for (
int i = 0; i < nq; ++i)
2803 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2806 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq, tmp1 = diff1 + 2 * nq);
2808 tmp2 = diff2 + 2 * nq);
2810 double epsilon = 1.0e-8;
2811 for (
int i = 0; i < diff1.size(); ++i)
2813 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
2837 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2844 quadPointsTypeDir1);
2846 quadPointsTypeDir1);
2848 quadPointsTypeDir1);
2858 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
2862 basisKeyDir1, basisKeyDir2, basisKeyDir3);
2866 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2867 for (
int i = 0; i < nelmts; ++i)
2869 CollExp.push_back(Exp);
2879 const int nq = Exp->GetTotPoints();
2885 Exp->GetCoords(xc, yc, zc);
2887 for (
int i = 0; i < nq; ++i)
2889 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2891 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
2892 tmp2 = diff1 + (2 * nelmts) * nq);
2893 for (
int i = 1; i < nelmts; ++i)
2896 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
2897 tmp1 = diff1 + (nelmts + i) * nq,
2898 tmp2 = diff1 + (2 * nelmts + i) * nq);
2902 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
2904 double epsilon = 1.0e-8;
2905 for (
int i = 0; i < diff1.size(); ++i)
2907 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
2931 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
2937 unsigned int numQuadPoints = 6;
2939 quadPointsTypeDir1);
2945 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
2949 basisKeyDir1, basisKeyDir1, basisKeyDir1);
2951 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2952 CollExp.push_back(Exp);
2961 const int nq = Exp->GetTotPoints();
2967 Exp->GetCoords(xc, yc, zc);
2969 for (
int i = 0; i < nq; ++i)
2971 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2974 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq, tmp1 = diff1 + 2 * nq);
2976 tmp2 = diff2 + 2 * nq);
2978 double epsilon = 1.0e-8;
2979 for (
int i = 0; i < diff1.size(); ++i)
2981 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
3005 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3012 quadPointsTypeDir1);
3014 quadPointsTypeDir1);
3016 quadPointsTypeDir1);
3026 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
3030 basisKeyDir1, basisKeyDir2, basisKeyDir3);
3034 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3035 for (
int i = 0; i < nelmts; ++i)
3037 CollExp.push_back(Exp);
3047 const int nq = Exp->GetTotPoints();
3053 Exp->GetCoords(xc, yc, zc);
3055 for (
int i = 0; i < nq; ++i)
3057 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3059 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq,
3060 tmp2 = diff1 + (2 * nelmts) * nq);
3061 for (
int i = 1; i < nelmts; ++i)
3064 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
3065 tmp1 = diff1 + (nelmts + i) * nq,
3066 tmp2 = diff1 + (2 * nelmts + i) * nq);
3070 tmp = diff2 + nelmts * nq, tmp2 = diff2 + 2 * nelmts * nq);
3072 double epsilon = 1.0e-8;
3073 for (
int i = 0; i < diff1.size(); ++i)
3075 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
3099 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3105 unsigned int numQuadPoints = 6;
3107 quadPointsTypeDir1);
3113 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3117 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3119 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3120 CollExp.push_back(Exp);
3129 const int nq = Exp->GetTotPoints();
3130 const int nm = Exp->GetNcoeffs();
3139 Exp->GetCoords(xc, yc, zc);
3141 for (
int i = 0; i < nq; ++i)
3143 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3144 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3145 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3149 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
3150 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
3151 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3152 Exp->IProductWRTDerivBase(2, phys3, coeffs2);
3153 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3158 double epsilon = 1.0e-8;
3159 for (
int i = 0; i < nm; ++i)
3161 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3162 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3163 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3187 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3193 unsigned int numQuadPoints = 5;
3194 unsigned int numModes = 4;
3196 quadPointsTypeDir1);
3202 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3206 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3208 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3209 CollExp.push_back(Exp);
3218 const int nq = Exp->GetTotPoints();
3219 const int nm = Exp->GetNcoeffs();
3228 Exp->GetCoords(xc, yc, zc);
3230 for (
int i = 0; i < nq; ++i)
3232 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3233 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3234 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3238 Exp->IProductWRTDerivBase(0, phys1, coeffsRef);
3239 Exp->IProductWRTDerivBase(1, phys2, coeffs);
3240 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3241 Exp->IProductWRTDerivBase(2, phys3, coeffs);
3242 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3247 double epsilon = 1.0e-8;
3248 for (
int i = 0; i < nm; ++i)
3250 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3251 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3252 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3276 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3282 unsigned int numQuadPoints = 5;
3283 unsigned int numModes = 4;
3285 quadPointsTypeDir1);
3291 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3295 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3297 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3298 CollExp.push_back(Exp);
3307 const int nq = Exp->GetTotPoints();
3308 const int nm = Exp->GetNcoeffs();
3317 Exp->GetCoords(xc, yc, zc);
3319 for (
int i = 0; i < nq; ++i)
3321 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3322 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3323 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3327 Exp->IProductWRTDerivBase(0, phys1, coeffsRef);
3328 Exp->IProductWRTDerivBase(1, phys2, coeffs);
3329 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3330 Exp->IProductWRTDerivBase(2, phys3, coeffs);
3331 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3336 double epsilon = 1.0e-8;
3337 for (
int i = 0; i < nm; ++i)
3339 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3340 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3341 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3346 TestHexIProductWRTDerivBase_MatrixFree_UniformP_Deformed_OverInt)
3366 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3372 unsigned int numQuadPoints = 8;
3373 unsigned int numModes = 4;
3375 quadPointsTypeDir1);
3381 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3385 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3387 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3388 CollExp.push_back(Exp);
3397 const int nq = Exp->GetTotPoints();
3398 const int nm = Exp->GetNcoeffs();
3407 Exp->GetCoords(xc, yc, zc);
3409 for (
int i = 0; i < nq; ++i)
3411 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3412 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3413 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3417 Exp->IProductWRTDerivBase(0, phys1, coeffsRef);
3418 Exp->IProductWRTDerivBase(1, phys2, coeffs);
3419 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3420 Exp->IProductWRTDerivBase(2, phys3, coeffs);
3421 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
3426 double epsilon = 1.0e-8;
3427 for (
int i = 0; i < nm; ++i)
3429 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3430 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3431 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3455 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3462 quadPointsTypeDir1);
3464 quadPointsTypeDir1);
3466 quadPointsTypeDir1);
3476 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
3480 basisKeyDir1, basisKeyDir2, basisKeyDir3);
3484 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3485 for (
int i = 0; i < nelmts; ++i)
3487 CollExp.push_back(Exp);
3497 const int nq = Exp->GetTotPoints();
3498 const int nm = Exp->GetNcoeffs();
3508 Exp->GetCoords(xc, yc, zc);
3510 for (
int i = 0; i < nq; ++i)
3512 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3513 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3514 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3517 for (
int i = 1; i < nelmts; ++i)
3525 for (
int i = 0; i < nelmts; ++i)
3528 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
3529 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
3530 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3531 tmp = coeffs1 + i * nm, 1);
3532 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
3533 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3534 tmp = coeffs1 + i * nm, 1);
3540 double epsilon = 1.0e-6;
3541 for (
int i = 0; i < coeffs1.size(); ++i)
3543 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3544 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3545 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3569 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3575 unsigned int numQuadPoints = 6;
3577 quadPointsTypeDir1);
3583 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3587 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3589 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3590 CollExp.push_back(Exp);
3599 const int nq = Exp->GetTotPoints();
3600 const int nm = Exp->GetNcoeffs();
3609 Exp->GetCoords(xc, yc, zc);
3611 for (
int i = 0; i < nq; ++i)
3613 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3614 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3615 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3619 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
3620 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
3621 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3622 Exp->IProductWRTDerivBase(2, phys3, coeffs2);
3623 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3628 double epsilon = 1.0e-8;
3629 for (
int i = 0; i < coeffs1.size(); ++i)
3631 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3632 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3633 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3657 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3664 quadPointsTypeDir1);
3666 quadPointsTypeDir1);
3668 quadPointsTypeDir1);
3678 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
3682 basisKeyDir1, basisKeyDir2, basisKeyDir3);
3686 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3687 for (
int i = 0; i < nelmts; ++i)
3689 CollExp.push_back(Exp);
3699 const int nq = Exp->GetTotPoints();
3700 const int nm = Exp->GetNcoeffs();
3710 Exp->GetCoords(xc, yc, zc);
3712 for (
int i = 0; i < nq; ++i)
3714 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3715 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3716 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3719 for (
int i = 1; i < nelmts; ++i)
3727 for (
int i = 0; i < nelmts; ++i)
3730 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
3731 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
3732 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3733 tmp = coeffs1 + i * nm, 1);
3734 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
3735 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3736 tmp = coeffs1 + i * nm, 1);
3742 double epsilon = 1.0e-8;
3743 for (
int i = 0; i < coeffs1.size(); ++i)
3745 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3746 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3747 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3752 TestHexIProductWRTDerivBase_NoCollection_VariableP_MultiElmt)
3772 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3779 quadPointsTypeDir1);
3781 quadPointsTypeDir1);
3783 quadPointsTypeDir1);
3793 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
3797 basisKeyDir1, basisKeyDir2, basisKeyDir3);
3801 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3802 for (
int i = 0; i < nelmts; ++i)
3804 CollExp.push_back(Exp);
3814 const int nq = Exp->GetTotPoints();
3815 const int nm = Exp->GetNcoeffs();
3824 Exp->GetCoords(xc, yc, zc);
3826 for (
int i = 0; i < nq; ++i)
3828 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3829 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3830 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3833 for (
int i = 1; i < nelmts; ++i)
3841 for (
int i = 0; i < nelmts; ++i)
3844 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
3845 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
3846 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3847 tmp = coeffs1 + i * nm, 1);
3848 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
3849 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3850 tmp = coeffs1 + i * nm, 1);
3856 double epsilon = 1.0e-6;
3857 for (
int i = 0; i < coeffs1.size(); ++i)
3859 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3860 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3861 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3885 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3891 unsigned int numQuadPoints = 6;
3893 quadPointsTypeDir1);
3899 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
3903 basisKeyDir1, basisKeyDir1, basisKeyDir1);
3905 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3906 CollExp.push_back(Exp);
3915 const int nq = Exp->GetTotPoints();
3916 const int nm = Exp->GetNcoeffs();
3925 Exp->GetCoords(xc, yc, zc);
3927 for (
int i = 0; i < nq; ++i)
3929 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
3930 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
3931 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
3935 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
3936 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
3937 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3938 Exp->IProductWRTDerivBase(2, phys3, coeffs2);
3939 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
3944 double epsilon = 1.0e-8;
3945 for (
int i = 0; i < coeffs1.size(); ++i)
3947 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3948 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3949 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3973 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
3980 quadPointsTypeDir1);
3982 quadPointsTypeDir1);
3984 quadPointsTypeDir1);
3994 basisKeyDir1, basisKeyDir2, basisKeyDir3, hexGeom);
3998 basisKeyDir1, basisKeyDir2, basisKeyDir3);
4002 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4003 for (
int i = 0; i < nelmts; ++i)
4005 CollExp.push_back(Exp);
4015 const int nq = Exp->GetTotPoints();
4016 const int nm = Exp->GetNcoeffs();
4026 Exp->GetCoords(xc, yc, zc);
4028 for (
int i = 0; i < nq; ++i)
4030 phys1[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
4031 phys2[i] = cos(xc[i]) * sin(yc[i]) * cos(zc[i]);
4032 phys2[i] = cos(xc[i]) * sin(yc[i]) * sin(zc[i]);
4035 for (
int i = 1; i < nelmts; ++i)
4043 for (
int i = 0; i < nelmts; ++i)
4045 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
4046 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs2 + i * nm);
4047 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
4048 tmp = coeffs1 + i * nm, 1);
4049 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs2 + i * nm);
4050 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
4051 tmp = coeffs1 + i * nm, 1);
4057 double epsilon = 1.0e-8;
4058 for (
int i = 0; i < coeffs1.size(); ++i)
4060 coeffs1[i] = (
std::abs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
4061 coeffs2[i] = (
std::abs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
4062 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
4086 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4092 unsigned int numQuadPoints = 5;
4093 unsigned int numModes = 4;
4096 quadPointsTypeDir1);
4102 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4106 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4110 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4111 for (
int i = 0; i < nelmts; ++i)
4113 CollExp.push_back(Exp);
4126 const int nm = Exp->GetNcoeffs();
4131 for (
int i = 0; i < nm; ++i)
4136 for (
int i = 1; i < nelmts; ++i)
4138 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4144 for (
int i = 0; i < nelmts; ++i)
4147 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4152 double epsilon = 1.0e-8;
4153 for (
int i = 0; i < coeffsRef.size(); ++i)
4155 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4156 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4157 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4181 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4187 unsigned int numQuadPoints = 5;
4188 unsigned int numModes = 4;
4191 quadPointsTypeDir1);
4197 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4201 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4205 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4206 for (
int i = 0; i < nelmts; ++i)
4208 CollExp.push_back(Exp);
4221 const int nm = Exp->GetNcoeffs();
4226 for (
int i = 0; i < nm; ++i)
4231 for (
int i = 1; i < nelmts; ++i)
4233 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4239 for (
int i = 0; i < nelmts; ++i)
4242 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4247 double epsilon = 1.0e-8;
4248 for (
int i = 0; i < coeffsRef.size(); ++i)
4250 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4251 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4252 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4276 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4282 unsigned int numQuadPoints = 5;
4283 unsigned int numModes = 4;
4286 quadPointsTypeDir1);
4292 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4296 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4300 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4301 for (
int i = 0; i < nelmts; ++i)
4303 CollExp.push_back(Exp);
4322 const int nm = Exp->GetNcoeffs();
4327 for (
int i = 0; i < nm; ++i)
4332 for (
int i = 1; i < nelmts; ++i)
4334 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4340 for (
int i = 0; i < nelmts; ++i)
4343 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4348 double epsilon = 1.0e-8;
4349 for (
int i = 0; i < coeffsRef.size(); ++i)
4351 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4352 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4353 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4377 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4383 unsigned int numQuadPoints = 5;
4384 unsigned int numModes = 4;
4387 quadPointsTypeDir1);
4393 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4397 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4401 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4402 for (
int i = 0; i < nelmts; ++i)
4404 CollExp.push_back(Exp);
4417 const int nm = Exp->GetNcoeffs();
4422 for (
int i = 0; i < nm; ++i)
4427 for (
int i = 1; i < nelmts; ++i)
4429 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4435 for (
int i = 0; i < nelmts; ++i)
4438 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4443 double epsilon = 1.0e-8;
4444 for (
int i = 0; i < coeffsRef.size(); ++i)
4446 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4447 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4448 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4472 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4478 unsigned int numQuadPoints = 8;
4479 unsigned int numModes = 4;
4482 quadPointsTypeDir1);
4488 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4492 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4496 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4497 for (
int i = 0; i < nelmts; ++i)
4499 CollExp.push_back(Exp);
4512 const int nm = Exp->GetNcoeffs();
4517 for (
int i = 0; i < nm; ++i)
4522 for (
int i = 1; i < nelmts; ++i)
4524 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4530 for (
int i = 0; i < nelmts; ++i)
4533 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4538 double epsilon = 1.0e-8;
4539 for (
int i = 0; i < coeffsRef.size(); ++i)
4541 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4542 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4543 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4567 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4573 unsigned int numQuadPoints = 5;
4574 unsigned int numModes = 4;
4577 quadPointsTypeDir1);
4583 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4587 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4591 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4592 for (
int i = 0; i < nelmts; ++i)
4594 CollExp.push_back(Exp);
4613 const int nm = Exp->GetNcoeffs();
4618 for (
int i = 0; i < nm; ++i)
4623 for (
int i = 1; i < nelmts; ++i)
4625 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
4631 for (
int i = 0; i < nelmts; ++i)
4634 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
4639 double epsilon = 1.0e-8;
4640 for (
int i = 0; i < coeffsRef.size(); ++i)
4642 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
4643 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
4644 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
4668 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4674 unsigned int numQuadPoints = 5;
4675 unsigned int numModes = 4;
4678 quadPointsTypeDir1);
4684 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4688 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4690 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4691 CollExp.push_back(Exp);
4703 const int nq = Exp->GetTotPoints();
4708 Exp->GetCoords(xc, yc, zc);
4710 for (
int i = 0; i < nq; ++i)
4712 phys[i] = pow(xc[i], 3) + pow(yc[i], 3) + pow(zc[i], 3);
4726 double epsilon = 1.0e-8;
4728 for (
int i = 0; i < nq1; ++i)
4730 NekDouble exact = pow(xc1[i], 3) + pow(yc1[i], 3) + pow(zc1[i], 3);
4731 phys1[i] = (fabs(phys1[i]) < 1e-14) ? 0.0 : phys1[i];
4732 exact = (fabs(exact) < 1e-14) ? 0.0 : exact;
4733 BOOST_CHECK_CLOSE(phys1[i], exact, epsilon);
4757 CreateHex(v0, v1, v2, v3, v4, v5, v6, v7);
4763 unsigned int numQuadPoints = 5;
4764 unsigned int numModes = 4;
4767 quadPointsTypeDir1);
4773 basisKeyDir1, basisKeyDir1, basisKeyDir1, hexGeom);
4777 basisKeyDir1, basisKeyDir1, basisKeyDir1);
4779 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
4780 CollExp.push_back(Exp);
4792 const int nq = Exp->GetTotPoints();
4797 Exp->GetCoords(xc, yc, zc);
4799 for (
int i = 0; i < nq; ++i)
4801 phys[i] = pow(xc[i], 3) + pow(yc[i], 3) + pow(zc[i], 3);
4815 double epsilon = 1.0e-8;
4817 for (
int i = 0; i < nq1; ++i)
4819 NekDouble exact = pow(xc1[i], 3) + pow(yc1[i], 3) + pow(zc1[i], 3);
4820 phys1[i] = (fabs(phys1[i]) < 1e-14) ? 0.0 : phys1[i];
4821 exact = (fabs(exact) < 1e-14) ? 0.0 : exact;
4822 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.
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::map< OperatorType, ImplementationType > OperatorImpMap
The above copyright notice and this permission notice shall be included.
BOOST_AUTO_TEST_CASE(TestHexBwdTrans_StdMat_UniformP)
SpatialDomains::HexGeomSharedPtr CreateHex(SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1, SpatialDomains::PointGeomSharedPtr v2, SpatialDomains::PointGeomSharedPtr v3, SpatialDomains::PointGeomSharedPtr v4, SpatialDomains::PointGeomSharedPtr v5, SpatialDomains::PointGeomSharedPtr v6, SpatialDomains::PointGeomSharedPtr v7)
SpatialDomains::SegGeomSharedPtr CreateSegGeom(unsigned int id, SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1)
std::shared_ptr< SessionReader > SessionReaderSharedPtr
@ eGaussLobattoLegendre
1D Gauss-Lobatto-Legendre quadrature points
@ eGLL_Lagrange
Lagrange for SEM basis .
@ eModified_A
Principle Modified Functions .
std::shared_ptr< HexExp > HexExpSharedPtr
std::shared_ptr< QuadGeom > QuadGeomSharedPtr
std::shared_ptr< HexGeom > HexGeomSharedPtr
std::shared_ptr< SegGeom > SegGeomSharedPtr
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
std::shared_ptr< StdHexExp > StdHexExpSharedPtr
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)