41#include <boost/test/tools/floating_point_comparison.hpp>
42#include <boost/test/unit_test.hpp>
46namespace TriCollectionTests
98 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
108 basisKeyDir1, basisKeyDir2, triGeom);
110 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
111 CollExp.push_back(Exp);
124 Exp->BwdTrans(coeffs, phys1);
127 double epsilon = 1.0e-8;
128 for (
int i = 0; i < phys1.size(); ++i)
130 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
155 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
165 basisKeyDir1, basisKeyDir2, triGeom);
167 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
168 CollExp.push_back(Exp);
181 Exp->BwdTrans(coeffs, phys1);
184 double epsilon = 1.0e-8;
185 for (
int i = 0; i < phys1.size(); ++i)
187 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
212 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
222 basisKeyDir1, basisKeyDir2, triGeom);
226 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
227 for (
int i = 0; i < nelmts; ++i)
229 CollExp.push_back(Exp);
243 for (
int i = 0; i < nelmts; ++i)
245 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
246 tmp = phys1 + i * Exp->GetTotPoints());
251 double epsilon = 1.0e-8;
252 for (
int i = 0; i < phys1.size(); ++i)
254 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
279 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
289 basisKeyDir1, basisKeyDir2, triGeom);
291 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
292 CollExp.push_back(Exp);
305 Exp->BwdTrans(coeffs, phys1);
308 double epsilon = 1.0e-8;
309 for (
int i = 0; i < phys1.size(); ++i)
311 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
336 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
346 basisKeyDir1, basisKeyDir2, triGeom);
348 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
349 CollExp.push_back(Exp);
362 Exp->BwdTrans(coeffs, phys1);
365 double epsilon = 1.0e-8;
366 for (
int i = 0; i < phys1.size(); ++i)
368 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
383 unsigned int numQuadPoints = 5;
384 unsigned int numModes = 4;
395 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
405 basisKeyDir1, basisKeyDir2, triGeom);
407 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
408 CollExp.push_back(Exp);
423 Exp->BwdTrans(coeffs, physRef);
426 double epsilon = 1.0e-8;
427 for (
int i = 0; i < physRef.size(); ++i)
429 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
444 unsigned int numQuadPoints = 8;
445 unsigned int numModes = 4;
456 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
466 basisKeyDir1, basisKeyDir2, triGeom);
468 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
469 CollExp.push_back(Exp);
484 Exp->BwdTrans(coeffs, physRef);
487 double epsilon = 1.0e-8;
488 for (
int i = 0; i < physRef.size(); ++i)
490 BOOST_CHECK_CLOSE(physRef[i], phys[i], epsilon);
515 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
525 basisKeyDir1, basisKeyDir2, triGeom);
527 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
530 for (
int i = 0; i < nelmts; ++i)
532 CollExp.push_back(Exp);
546 for (
int i = 0; i < nelmts; ++i)
548 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
549 tmp = phys1 + i * Exp->GetTotPoints());
553 double epsilon = 1.0e-8;
554 for (
int i = 0; i < phys1.size(); ++i)
556 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
581 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
591 basisKeyDir1, basisKeyDir2, triGeom);
593 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
596 for (
int i = 0; i < nelmts; ++i)
598 CollExp.push_back(Exp);
612 for (
int i = 0; i < nelmts; ++i)
614 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
615 tmp = phys1 + i * Exp->GetTotPoints());
619 double epsilon = 1.0e-8;
620 for (
int i = 0; i < phys1.size(); ++i)
622 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
647 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
657 basisKeyDir1, basisKeyDir2, triGeom);
661 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
662 for (
int i = 0; i < nelmts; ++i)
664 CollExp.push_back(Exp);
678 for (
int i = 0; i < nelmts; ++i)
680 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
681 tmp = phys1 + i * Exp->GetTotPoints());
685 double epsilon = 1.0e-8;
686 for (
int i = 0; i < phys1.size(); ++i)
688 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
713 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
723 basisKeyDir1, basisKeyDir2, triGeom);
727 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
728 for (
int i = 0; i < nelmts; ++i)
730 CollExp.push_back(Exp);
744 for (
int i = 0; i < nelmts; ++i)
746 Exp->BwdTrans(coeffs + i * Exp->GetNcoeffs(),
747 tmp = phys1 + i * Exp->GetTotPoints());
751 double epsilon = 1.0e-8;
752 for (
int i = 0; i < phys1.size(); ++i)
754 BOOST_CHECK_CLOSE(phys1[i], phys2[i], epsilon);
779 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
789 basisKeyDir1, basisKeyDir2, triGeom);
791 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
792 CollExp.push_back(Exp);
801 const int nq = Exp->GetTotPoints();
808 Exp->GetCoords(xc, yc);
810 for (
int i = 0; i < nq; ++i)
812 phys[i] = sin(xc[i]) * cos(yc[i]);
815 Exp->IProductWRTBase(phys, coeffs1);
818 double epsilon = 1.0e-8;
819 for (
int i = 0; i < coeffs1.size(); ++i)
821 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
846 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
856 basisKeyDir1, basisKeyDir2, triGeom);
858 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
859 CollExp.push_back(Exp);
868 const int nq = Exp->GetTotPoints();
875 Exp->GetCoords(xc, yc);
877 for (
int i = 0; i < nq; ++i)
879 phys[i] = sin(xc[i]) * cos(yc[i]);
882 Exp->IProductWRTBase(phys, coeffs1);
885 double epsilon = 1.0e-8;
886 for (
int i = 0; i < coeffs1.size(); ++i)
888 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
913 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
923 basisKeyDir1, basisKeyDir2, triGeom);
927 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
928 for (
int i = 0; i < nelmts; ++i)
930 CollExp.push_back(Exp);
940 const int nq = Exp->GetTotPoints();
947 Exp->GetCoords(xc, yc);
949 for (
int i = 0; i < nq; ++i)
951 phys[i] = sin(xc[i]) * cos(yc[i]);
953 Exp->IProductWRTBase(phys, coeffs1);
955 for (
int i = 1; i < nelmts; ++i)
958 Exp->IProductWRTBase(phys + i * nq,
959 tmp = coeffs1 + i * Exp->GetNcoeffs());
964 double epsilon = 1.0e-8;
965 for (
int i = 0; i < coeffs1.size(); ++i)
967 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
992 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1002 basisKeyDir1, basisKeyDir2, triGeom);
1004 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1005 CollExp.push_back(Exp);
1014 const int nq = Exp->GetTotPoints();
1021 Exp->GetCoords(xc, yc);
1023 for (
int i = 0; i < nq; ++i)
1025 phys[i] = sin(xc[i]) * cos(yc[i]);
1028 Exp->IProductWRTBase(phys, coeffs1);
1031 double epsilon = 1.0e-8;
1032 for (
int i = 0; i < coeffs1.size(); ++i)
1034 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1059 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1069 basisKeyDir1, basisKeyDir2, triGeom);
1071 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1072 CollExp.push_back(Exp);
1081 const int nq = Exp->GetTotPoints();
1088 Exp->GetCoords(xc, yc);
1090 for (
int i = 0; i < nq; ++i)
1092 phys[i] = sin(xc[i]) * cos(yc[i]);
1095 Exp->IProductWRTBase(phys, coeffs1);
1098 double epsilon = 1.0e-8;
1099 for (
int i = 0; i < coeffs1.size(); ++i)
1101 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1116 unsigned int numQuadPoints = 5;
1117 unsigned int numModes = 4;
1128 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1137 basisKeyDir1, basisKeyDir2, triGeom);
1139 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1140 CollExp.push_back(Exp);
1151 const int nq = Exp->GetTotPoints();
1158 Exp->GetCoords(xc, yc);
1160 for (
int i = 0; i < nq; ++i)
1162 phys[i] = sin(xc[i]) * cos(yc[i]);
1165 Exp->IProductWRTBase(phys, coeffsRef);
1168 double epsilon = 1.0e-8;
1169 for (
int i = 0; i < coeffsRef.size(); ++i)
1171 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1186 unsigned int numQuadPoints = 5;
1187 unsigned int numModes = 4;
1198 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1207 basisKeyDir1, basisKeyDir2, triGeom);
1209 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1210 CollExp.push_back(Exp);
1221 const int nq = Exp->GetTotPoints();
1228 Exp->GetCoords(xc, yc);
1230 for (
int i = 0; i < nq; ++i)
1232 phys[i] = sin(xc[i]) * cos(yc[i]);
1235 Exp->IProductWRTBase(phys, coeffsRef);
1238 double epsilon = 1.0e-8;
1239 for (
int i = 0; i < coeffsRef.size(); ++i)
1241 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1246 TestTriIProductWRTBase_MatrixFree_UniformP_Deformed_OverInt)
1257 unsigned int numQuadPoints = 8;
1258 unsigned int numModes = 4;
1269 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1278 basisKeyDir1, basisKeyDir2, triGeom);
1280 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1281 CollExp.push_back(Exp);
1292 const int nq = Exp->GetTotPoints();
1299 Exp->GetCoords(xc, yc);
1301 for (
int i = 0; i < nq; ++i)
1303 phys[i] = sin(xc[i]) * cos(yc[i]);
1306 Exp->IProductWRTBase(phys, coeffsRef);
1309 double epsilon = 1.0e-8;
1310 for (
int i = 0; i < coeffsRef.size(); ++i)
1312 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
1337 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1347 basisKeyDir1, basisKeyDir2, triGeom);
1351 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1352 for (
int i = 0; i < nelmts; ++i)
1354 CollExp.push_back(Exp);
1364 const int nq = Exp->GetTotPoints();
1371 Exp->GetCoords(xc, yc);
1373 for (
int i = 0; i < nq; ++i)
1375 phys[i] = sin(xc[i]) * cos(yc[i]);
1377 Exp->IProductWRTBase(phys, coeffs1);
1379 for (
int i = 1; i < nelmts; ++i)
1382 Exp->IProductWRTBase(phys + i * nq,
1383 tmp = coeffs1 + i * Exp->GetNcoeffs());
1388 double epsilon = 1.0e-8;
1389 for (
int i = 0; i < coeffs1.size(); ++i)
1391 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
1416 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1426 basisKeyDir1, basisKeyDir2, triGeom);
1428 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1429 CollExp.push_back(Exp);
1438 const int nq = Exp->GetTotPoints();
1444 Exp->GetCoords(xc, yc);
1446 for (
int i = 0; i < nq; ++i)
1448 phys[i] = sin(xc[i]) * cos(yc[i]);
1451 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq);
1454 double epsilon = 1.0e-8;
1455 for (
int i = 0; i < diff1.size(); ++i)
1457 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1482 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1492 basisKeyDir1, basisKeyDir2, triGeom);
1494 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1495 CollExp.push_back(Exp);
1504 const int nq = Exp->GetTotPoints();
1510 Exp->GetCoords(xc, yc);
1512 for (
int i = 0; i < nq; ++i)
1514 phys[i] = sin(xc[i]) * cos(yc[i]);
1517 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq);
1520 double epsilon = 1.0e-8;
1521 for (
int i = 0; i < diff1.size(); ++i)
1523 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1548 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1558 basisKeyDir1, basisKeyDir2, triGeom);
1562 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1563 for (
int i = 0; i < nelmts; ++i)
1565 CollExp.push_back(Exp);
1575 const int nq = Exp->GetTotPoints();
1581 Exp->GetCoords(xc, yc);
1583 for (
int i = 0; i < nq; ++i)
1585 phys[i] = sin(xc[i]) * cos(yc[i]);
1587 Exp->PhysDeriv(phys, diff1, tmp1 = diff1 + (nelmts)*nq);
1589 for (
int i = 1; i < nelmts; ++i)
1592 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1593 tmp1 = diff1 + (nelmts + i) * nq);
1597 tmp = diff2 + nelmts * nq);
1599 double epsilon = 1.0e-8;
1600 for (
int i = 0; i < diff1.size(); ++i)
1602 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1627 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1637 basisKeyDir1, basisKeyDir2, triGeom);
1639 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1640 CollExp.push_back(Exp);
1649 const int nq = Exp->GetTotPoints();
1655 Exp->GetCoords(xc, yc);
1657 for (
int i = 0; i < nq; ++i)
1659 phys[i] = sin(xc[i]) * cos(yc[i]);
1662 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq);
1665 double epsilon = 1.0e-8;
1666 for (
int i = 0; i < diff1.size(); ++i)
1668 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1693 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1703 basisKeyDir1, basisKeyDir2, triGeom);
1707 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1708 for (
int i = 0; i < nelmts; ++i)
1710 CollExp.push_back(Exp);
1720 const int nq = Exp->GetTotPoints();
1726 Exp->GetCoords(xc, yc);
1728 for (
int i = 0; i < nq; ++i)
1730 phys[i] = sin(xc[i]) * cos(yc[i]);
1732 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq);
1734 for (
int i = 1; i < nelmts; ++i)
1737 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1738 tmp1 = diff1 + (nelmts + i) * nq);
1742 tmp = diff2 + nelmts * nq);
1744 double epsilon = 1.0e-8;
1745 for (
int i = 0; i < diff1.size(); ++i)
1747 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1772 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1782 basisKeyDir1, basisKeyDir2, triGeom);
1784 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1785 CollExp.push_back(Exp);
1794 const int nq = Exp->GetTotPoints();
1800 Exp->GetCoords(xc, yc);
1802 for (
int i = 0; i < nq; ++i)
1804 phys[i] = sin(xc[i]) * cos(yc[i]);
1807 Exp->PhysDeriv(phys, diff1, tmp = diff1 + nq);
1810 double epsilon = 1.0e-8;
1811 for (
int i = 0; i < diff1.size(); ++i)
1813 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1838 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1848 basisKeyDir1, basisKeyDir2, triGeom);
1852 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1853 for (
int i = 0; i < nelmts; ++i)
1855 CollExp.push_back(Exp);
1865 const int nq = Exp->GetTotPoints();
1871 Exp->GetCoords(xc, yc);
1873 for (
int i = 0; i < nq; ++i)
1875 phys[i] = sin(xc[i]) * cos(yc[i]);
1877 Exp->PhysDeriv(phys, tmp = diff1, tmp1 = diff1 + (nelmts)*nq);
1878 for (
int i = 1; i < nelmts; ++i)
1881 Exp->PhysDeriv(phys, tmp = diff1 + i * nq,
1882 tmp1 = diff1 + (nelmts + i) * nq);
1886 tmp = diff2 + nelmts * nq);
1888 double epsilon = 1.0e-8;
1889 for (
int i = 0; i < diff1.size(); ++i)
1891 BOOST_CHECK_CLOSE(diff1[i], diff2[i], epsilon);
1906 unsigned int numQuadPoints = 5;
1907 unsigned int numModes = 2;
1918 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1927 basisKeyDir1, basisKeyDir2, triGeom);
1929 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
1930 CollExp.push_back(Exp);
1942 const int nq = Exp->GetTotPoints();
1948 Exp->GetCoords(xc, yc);
1950 for (
int i = 0; i < nq; ++i)
1952 phys[i] = sin(xc[i]) * cos(yc[i]);
1955 Exp->PhysDeriv(phys, diffRef, tmp = diffRef + nq);
1958 double epsilon = 1.0e-8;
1959 for (
int i = 0; i < diffRef.size(); ++i)
1961 BOOST_CHECK_CLOSE(diffRef[i], diff[i], epsilon);
1976 unsigned int numQuadPoints = 5;
1977 unsigned int numModes = 2;
1988 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
1997 basisKeyDir1, basisKeyDir2, triGeom);
1999 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2000 CollExp.push_back(Exp);
2012 const int nq = Exp->GetTotPoints();
2018 Exp->GetCoords(xc, yc);
2020 for (
int i = 0; i < nq; ++i)
2022 phys[i] = sin(xc[i]) * cos(yc[i]);
2025 Exp->PhysDeriv(phys, diffRef, tmp = diffRef + nq);
2028 double epsilon = 1.0e-8;
2029 for (
int i = 0; i < diffRef.size(); ++i)
2031 BOOST_CHECK_CLOSE(diffRef[i], diff[i], epsilon);
2046 unsigned int numQuadPoints = 5;
2047 unsigned int numModes = 2;
2058 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2067 basisKeyDir1, basisKeyDir2, triGeom);
2069 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2070 CollExp.push_back(Exp);
2082 const int nq = Exp->GetTotPoints();
2088 Exp->GetCoords(xc, yc, zc);
2090 for (
int i = 0; i < nq; ++i)
2092 phys[i] = sin(xc[i]) * cos(yc[i]) * sin(zc[i]);
2095 Exp->PhysDeriv(phys, diffRef, tmp = diffRef + nq, tmp1 = diffRef + 2 * nq);
2097 tmp1 = diff + 2 * nq);
2099 double epsilon = 1.0e-8;
2100 for (
int i = 0; i < diffRef.size(); ++i)
2102 BOOST_CHECK_CLOSE(diffRef[i], diff[i], epsilon);
2127 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2137 basisKeyDir1, basisKeyDir2, triGeom);
2139 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2140 CollExp.push_back(Exp);
2149 const int nq = Exp->GetTotPoints();
2150 const int nm = Exp->GetNcoeffs();
2158 Exp->GetCoords(xc, yc);
2160 for (
int i = 0; i < nq; ++i)
2162 phys1[i] = sin(xc[i]) * cos(yc[i]);
2163 phys2[i] = cos(xc[i]) * sin(yc[i]);
2167 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
2168 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
2169 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
2173 double epsilon = 1.0e-8;
2174 for (
int i = 0; i < coeffs1.size(); ++i)
2176 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2177 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2178 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2203 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2213 basisKeyDir1, basisKeyDir2, triGeom);
2217 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2218 for (
int i = 0; i < nelmts; ++i)
2220 CollExp.push_back(Exp);
2230 const int nq = Exp->GetTotPoints();
2231 const int nm = Exp->GetNcoeffs();
2238 Exp->GetCoords(xc, yc);
2240 for (
int i = 0; i < nq; ++i)
2242 phys1[i] = sin(xc[i]) * cos(yc[i]);
2243 phys2[i] = cos(xc[i]) * sin(yc[i]);
2245 for (
int i = 1; i < nelmts; ++i)
2251 for (
int i = 0; i < nelmts; ++i)
2254 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2255 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp1 = coeffs2 + i * nm);
2256 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2257 tmp = coeffs1 + i * nm, 1);
2262 double epsilon = 1.0e-8;
2263 for (
int i = 0; i < coeffs1.size(); ++i)
2265 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2266 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2267 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2282 unsigned int numQuadPoints = 5;
2283 unsigned int numModes = 4;
2294 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2303 basisKeyDir1, basisKeyDir2, triGeom);
2304 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2305 CollExp.push_back(Exp);
2317 const int nq = Exp->GetTotPoints();
2318 const int nm = Exp->GetNcoeffs();
2326 Exp->GetCoords(xc, yc);
2328 for (
int i = 0; i < nq; ++i)
2330 phys1[i] = sin(xc[i]) * cos(yc[i]);
2331 phys2[i] = cos(xc[i]) * sin(yc[i]);
2335 Exp->IProductWRTDerivBase(0, phys1, coeffsRef);
2336 Exp->IProductWRTDerivBase(1, phys2, coeffs);
2337 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
2341 double epsilon = 1.0e-8;
2342 for (
int i = 0; i < coeffsRef.size(); ++i)
2344 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
2345 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
2346 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
2351 TestTriIProductWRTDerivBase_MatrixFree_UniformP_Undeformed_MultiElmt)
2362 unsigned int numQuadPoints = 5;
2363 unsigned int numModes = 4;
2374 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2383 basisKeyDir1, basisKeyDir2, triGeom);
2387 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2388 for (
int i = 0; i < nelmts; ++i)
2390 CollExp.push_back(Exp);
2403 const int nq = Exp->GetTotPoints();
2404 const int nm = Exp->GetNcoeffs();
2412 Exp->GetCoords(xc, yc);
2414 for (
int i = 0; i < nq; ++i)
2416 phys1[i] = sin(xc[i]) * cos(yc[i]);
2417 phys2[i] = cos(xc[i]) * sin(yc[i]);
2420 for (
int i = 1; i < nelmts; ++i)
2426 for (
int i = 0; i < nelmts; ++i)
2429 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffsRef + i * nm);
2430 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs + i * nm);
2431 Vmath::Vadd(nm, coeffsRef + i * nm, 1, coeffs + i * nm, 1,
2432 tmp = coeffsRef + i * nm, 1);
2437 double epsilon = 1.0e-8;
2438 for (
int i = 0; i < coeffsRef.size(); ++i)
2440 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
2441 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
2442 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
2457 unsigned int numQuadPoints = 5;
2458 unsigned int numModes = 4;
2469 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2478 basisKeyDir1, basisKeyDir2, triGeom);
2481 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2482 for (
int i = 0; i < nelmts; ++i)
2484 CollExp.push_back(Exp);
2497 const int nq = Exp->GetTotPoints();
2498 const int nm = Exp->GetNcoeffs();
2505 Exp->GetCoords(xc, yc);
2507 for (
int i = 0; i < nq; ++i)
2509 phys1[i] = sin(xc[i]) * cos(yc[i]);
2510 phys2[i] = cos(xc[i]) * sin(yc[i]);
2513 for (
int i = 1; i < nelmts; ++i)
2519 for (
int i = 0; i < nelmts; ++i)
2522 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffsRef + i * nm);
2523 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs + i * nm);
2524 Vmath::Vadd(nm, coeffsRef + i * nm, 1, coeffs + i * nm, 1,
2525 tmp = coeffsRef + i * nm, 1);
2534 double epsilon = 1.0e-8;
2535 for (
int i = 0; i < coeffsRef.size(); ++i)
2537 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
2538 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
2539 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
2544 TestTriIProductWRTDerivBase_MatrixFree_UniformP_Deformed_MultiElmt_ThreeD)
2555 unsigned int numQuadPoints = 5;
2556 unsigned int numModes = 4;
2567 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2576 basisKeyDir1, basisKeyDir2, triGeom);
2579 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2580 for (
int i = 0; i < nelmts; ++i)
2582 CollExp.push_back(Exp);
2595 const int nq = Exp->GetTotPoints();
2596 const int nm = Exp->GetNcoeffs();
2605 Exp->GetCoords(xc, yc, zc);
2607 for (
int i = 0; i < nq; ++i)
2609 phys1[i] = sin(xc[i]) * cos(yc[i]);
2610 phys2[i] = cos(xc[i]) * sin(yc[i]);
2611 phys3[i] = cos(xc[i]) * sin(zc[i]);
2614 for (
int i = 1; i < nelmts; ++i)
2621 for (
int i = 0; i < nelmts; ++i)
2624 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffsRef + i * nm);
2625 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp = coeffs + i * nm);
2626 Vmath::Vadd(nm, coeffsRef + i * nm, 1, coeffs + i * nm, 1,
2627 tmp = coeffsRef + i * nm, 1);
2628 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp = coeffs + i * nm);
2629 Vmath::Vadd(nm, coeffsRef + i * nm, 1, coeffs + i * nm, 1,
2630 tmp = coeffsRef + i * nm, 1);
2641 double epsilon = 1.0e-8;
2642 for (
int i = 0; i < coeffsRef.size(); ++i)
2644 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
2645 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
2646 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
2651 TestTriIProductWRTDerivBase_MatrixFree_UniformP_Deformed_OverInt)
2662 unsigned int numQuadPoints = 8;
2663 unsigned int numModes = 4;
2674 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2683 basisKeyDir1, basisKeyDir2, triGeom);
2684 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2685 CollExp.push_back(Exp);
2697 const int nq = Exp->GetTotPoints();
2698 const int nm = Exp->GetNcoeffs();
2706 Exp->GetCoords(xc, yc);
2708 for (
int i = 0; i < nq; ++i)
2710 phys1[i] = sin(xc[i]) * cos(yc[i]);
2711 phys2[i] = cos(xc[i]) * sin(yc[i]);
2715 Exp->IProductWRTDerivBase(0, phys1, coeffsRef);
2716 Exp->IProductWRTDerivBase(1, phys2, coeffs);
2717 Vmath::Vadd(nm, coeffsRef, 1, coeffs, 1, coeffsRef, 1);
2721 double epsilon = 1.0e-8;
2722 for (
int i = 0; i < coeffsRef.size(); ++i)
2724 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
2725 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
2726 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
2751 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2761 basisKeyDir1, basisKeyDir2, triGeom);
2763 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2764 CollExp.push_back(Exp);
2773 const int nq = Exp->GetTotPoints();
2774 const int nm = Exp->GetNcoeffs();
2782 Exp->GetCoords(xc, yc);
2784 for (
int i = 0; i < nq; ++i)
2786 phys1[i] = sin(xc[i]) * cos(yc[i]);
2787 phys2[i] = cos(xc[i]) * sin(yc[i]);
2791 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
2792 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
2793 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
2797 double epsilon = 1.0e-8;
2798 for (
int i = 0; i < coeffs1.size(); ++i)
2800 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2801 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2802 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2827 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2837 basisKeyDir1, basisKeyDir2, triGeom);
2841 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2842 for (
int i = 0; i < nelmts; ++i)
2844 CollExp.push_back(Exp);
2854 const int nq = Exp->GetTotPoints();
2855 const int nm = Exp->GetNcoeffs();
2862 Exp->GetCoords(xc, yc);
2864 for (
int i = 0; i < nq; ++i)
2866 phys1[i] = sin(xc[i]) * cos(yc[i]);
2867 phys2[i] = cos(xc[i]) * sin(yc[i]);
2869 for (
int i = 1; i < nelmts; ++i)
2875 for (
int i = 0; i < nelmts; ++i)
2878 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
2879 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp1 = coeffs2 + i * nm);
2880 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
2881 tmp = coeffs1 + i * nm, 1);
2886 double epsilon = 1.0e-8;
2887 for (
int i = 0; i < coeffs1.size(); ++i)
2889 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2890 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2891 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2916 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
2926 basisKeyDir1, basisKeyDir2, triGeom);
2928 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
2929 CollExp.push_back(Exp);
2938 const int nq = Exp->GetTotPoints();
2939 const int nm = Exp->GetNcoeffs();
2947 Exp->GetCoords(xc, yc);
2949 for (
int i = 0; i < nq; ++i)
2951 phys1[i] = sin(xc[i]) * cos(yc[i]);
2952 phys2[i] = cos(xc[i]) * sin(yc[i]);
2956 Exp->IProductWRTDerivBase(0, phys1, coeffs1);
2957 Exp->IProductWRTDerivBase(1, phys2, coeffs2);
2958 Vmath::Vadd(nm, coeffs1, 1, coeffs2, 1, coeffs1, 1);
2962 double epsilon = 1.0e-8;
2963 for (
int i = 0; i < coeffs1.size(); ++i)
2965 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
2966 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
2967 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
2992 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3002 basisKeyDir1, basisKeyDir2, triGeom);
3006 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3007 for (
int i = 0; i < nelmts; ++i)
3009 CollExp.push_back(Exp);
3019 const int nq = Exp->GetTotPoints();
3020 const int nm = Exp->GetNcoeffs();
3027 Exp->GetCoords(xc, yc);
3029 for (
int i = 0; i < nq; ++i)
3031 phys1[i] = sin(xc[i]) * cos(yc[i]);
3032 phys2[i] = cos(xc[i]) * sin(yc[i]);
3034 for (
int i = 1; i < nelmts; ++i)
3040 for (
int i = 0; i < nelmts; ++i)
3043 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
3044 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp1 = coeffs2 + i * nm);
3045 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3046 tmp = coeffs1 + i * nm, 1);
3051 double epsilon = 1.0e-8;
3052 for (
int i = 0; i < coeffs1.size(); ++i)
3054 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3055 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3056 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3061 TestTriIProductWRTDerivBase_SumFac_VariableP_MultiElmt_threedim)
3082 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3092 basisKeyDir1, basisKeyDir2, triGeom);
3096 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3097 for (
int i = 0; i < nelmts; ++i)
3099 CollExp.push_back(Exp);
3109 const int nq = Exp->GetTotPoints();
3110 const int nm = Exp->GetNcoeffs();
3118 Exp->GetCoords(xc, yc, zc);
3120 for (
int i = 0; i < nq; ++i)
3122 phys1[i] = sin(xc[i]) * cos(yc[i]);
3123 phys2[i] = cos(xc[i]) * sin(yc[i]);
3124 phys3[i] = cos(xc[i]) * sin(zc[i]);
3126 for (
int i = 1; i < nelmts; ++i)
3133 for (
int i = 0; i < nelmts; ++i)
3136 Exp->IProductWRTDerivBase(0, phys1 + i * nq, tmp = coeffs1 + i * nm);
3137 Exp->IProductWRTDerivBase(1, phys2 + i * nq, tmp1 = coeffs2 + i * nm);
3138 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3139 tmp = coeffs1 + i * nm, 1);
3140 Exp->IProductWRTDerivBase(2, phys3 + i * nq, tmp1 = coeffs2 + i * nm);
3141 Vmath::Vadd(nm, coeffs1 + i * nm, 1, coeffs2 + i * nm, 1,
3142 tmp = coeffs1 + i * nm, 1);
3148 double epsilon = 1.0e-8;
3149 for (
int i = 0; i < coeffs1.size(); ++i)
3151 coeffs1[i] = (fabs(coeffs1[i]) < 1e-14) ? 0.0 : coeffs1[i];
3152 coeffs2[i] = (fabs(coeffs2[i]) < 1e-14) ? 0.0 : coeffs2[i];
3153 BOOST_CHECK_CLOSE(coeffs1[i], coeffs2[i], epsilon);
3168 unsigned int numQuadPoints = 5;
3169 unsigned int numModes = 4;
3181 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3191 basisKeyDir1, basisKeyDir2, triGeom);
3195 basisKeyDir1, basisKeyDir1);
3199 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3201 for (
int i = 0; i < nelmts; ++i)
3203 CollExp.push_back(Exp);
3219 const int nm = Exp->GetNcoeffs();
3224 for (
int i = 0; i < nm; ++i)
3229 for (
int i = 1; i < nelmts; ++i)
3231 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3237 for (
int i = 0; i < nelmts; ++i)
3240 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3245 double epsilon = 1.0e-8;
3246 for (
int i = 0; i < coeffsRef.size(); ++i)
3248 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3249 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3250 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3265 unsigned int numQuadPoints = 5;
3266 unsigned int numModes = 4;
3278 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3288 basisKeyDir1, basisKeyDir2, triGeom);
3292 basisKeyDir1, basisKeyDir1);
3296 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3298 for (
int i = 0; i < nelmts; ++i)
3300 CollExp.push_back(Exp);
3313 const int nm = Exp->GetNcoeffs();
3318 for (
int i = 0; i < nm; ++i)
3323 for (
int i = 1; i < nelmts; ++i)
3325 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3331 for (
int i = 0; i < nelmts; ++i)
3334 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3339 double epsilon = 1.0e-8;
3340 for (
int i = 0; i < coeffsRef.size(); ++i)
3342 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3343 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3344 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3359 unsigned int numQuadPoints = 8;
3360 unsigned int numModes = 4;
3372 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3382 basisKeyDir1, basisKeyDir2, triGeom);
3386 basisKeyDir1, basisKeyDir1);
3390 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3392 for (
int i = 0; i < nelmts; ++i)
3394 CollExp.push_back(Exp);
3407 const int nm = Exp->GetNcoeffs();
3412 for (
int i = 0; i < nm; ++i)
3417 for (
int i = 1; i < nelmts; ++i)
3419 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3425 for (
int i = 0; i < nelmts; ++i)
3428 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3433 double epsilon = 1.0e-8;
3434 for (
int i = 0; i < coeffsRef.size(); ++i)
3436 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3437 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3438 BOOST_CHECK_CLOSE(coeffsRef[i], coeffs[i], epsilon);
3453 unsigned int numQuadPoints = 5;
3454 unsigned int numModes = 4;
3466 Nektar::LibUtilities::eGaussRadauMAlpha1Beta0;
3476 basisKeyDir1, basisKeyDir2, triGeom);
3480 basisKeyDir1, basisKeyDir1);
3484 std::vector<StdRegions::StdExpansionSharedPtr> CollExp;
3486 for (
int i = 0; i < nelmts; ++i)
3488 CollExp.push_back(Exp);
3504 const int nm = Exp->GetNcoeffs();
3509 for (
int i = 0; i < nm; ++i)
3514 for (
int i = 1; i < nelmts; ++i)
3516 Vmath::Vcopy(nm, coeffsIn, 1, tmp = coeffsIn + i * nm, 1);
3522 for (
int i = 0; i < nelmts; ++i)
3525 Exp->GeneralMatrixOp(coeffsIn + i * nm, tmp = coeffsRef + i * nm, mkey);
3530 double epsilon = 1.0e-8;
3531 for (
int i = 0; i < coeffsRef.size(); ++i)
3533 coeffsRef[i] = (
std::abs(coeffsRef[i]) < 1e-14) ? 0.0 : coeffsRef[i];
3534 coeffs[i] = (
std::abs(coeffs[i]) < 1e-14) ? 0.0 : coeffs[i];
3535 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.
static void PrintElapsedRegions()
Print elapsed time and call count for each region with default serial communicator.
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
@ eModified_B
Principle Modified Functions .
@ eModified_A
Principle Modified Functions .
std::shared_ptr< TriExp > TriExpSharedPtr
std::shared_ptr< SegGeom > SegGeomSharedPtr
std::shared_ptr< PointGeom > PointGeomSharedPtr
std::shared_ptr< TriGeom > TriGeomSharedPtr
std::shared_ptr< StdTriExp > StdTriExpSharedPtr
std::map< ConstFactorType, NekDouble > ConstFactorMap
SpatialDomains::SegGeomSharedPtr CreateSegGeom(unsigned int id, SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1)
SpatialDomains::TriGeomSharedPtr CreateTri(SpatialDomains::PointGeomSharedPtr v0, SpatialDomains::PointGeomSharedPtr v1, SpatialDomains::PointGeomSharedPtr v2)
BOOST_AUTO_TEST_CASE(TestTriBwdTrans_StdMat_UniformP)
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)