inline ordinal_type PointTools:: getLatticeSize( const shards::CellTopology cellType, const ordinal_type order, const ordinal_type offset ) { #ifdef HAVE_INTREPID2_DEBUG INTREPID2_TEST_FOR_EXCEPTION( order < 0 || offset < 0, std::invalid_argument , ">>> ERROR (PointTools::getLatticeSize): order and offset must be positive values." ); #endif ordinal_type r_val = 0; switch (cellType.getBaseKey()) { case shards::Tetrahedron<>::key: { const auto effectiveOrder = order - 4 * offset; r_val = (effectiveOrder < 0 ? 0 :(effectiveOrder+1)*(effectiveOrder+2)*(effectiveOrder+3)/6); break; } case shards::Triangle<>::key: { const auto effectiveOrder = order - 3 * offset; r_val = (effectiveOrder < 0 ? 0 : (effectiveOrder+1)*(effectiveOrder+2)/2); break; } case shards::Line<>::key: { const auto effectiveOrder = order - 2 * offset; r_val = (effectiveOrder < 0 ? 0 : (effectiveOrder+1)); break; } default: { INTREPID2_TEST_FOR_EXCEPTION( true , std::invalid_argument , ">>> ERROR (Intrepid2::PointTools::getLatticeSize): the specified cell type is not supported." ); } } return r_val; }
void PointTools:: getWarpBlendLattice( /**/ Kokkos::DynRankView<pointValueType,pointProperties...> points, const shards::CellTopology cell, const ordinal_type order, const ordinal_type offset ) { switch (cell.getBaseKey()) { // case shards::Tetrahedron<>::key: getWarpBlendLatticeTetrahedron( points, order, offset ); break; // case shards::Triangle<>::key: getWarpBlendLatticeTriangle ( points, order, offset ); break; case shards::Line<>::key: getWarpBlendLatticeLine ( points, order, offset ); break; default: { INTREPID2_TEST_FOR_EXCEPTION( true , std::invalid_argument , ">>> ERROR (Intrepid2::PointTools::getWarpBlendLattice): the specified cell type is not supported." ); } } }