17 #ifndef Intrepid2_DerivedBasis_HGRAD_WEDGE_h
18 #define Intrepid2_DerivedBasis_HGRAD_WEDGE_h
25 template<
class HGRAD_TRI,
class HGRAD_LINE>
31 ordinal_type order_xy_, order_z_;
32 EPointType pointType_;
34 using ExecutionSpace =
typename HGRAD_LINE::ExecutionSpace;
35 using OutputValueType =
typename HGRAD_LINE::OutputValueType;
36 using PointValueType =
typename HGRAD_LINE::PointValueType;
38 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
39 using PointViewType =
typename HGRAD_LINE::PointViewType ;
40 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
42 using BasisBase =
typename HGRAD_LINE::BasisBase;
43 using TriBasis = HGRAD_TRI;
44 using LineBasis = HGRAD_LINE;
54 TensorBasis(Teuchos::rcp( new TriBasis(polyOrder_xy, pointType)),
55 Teuchos::rcp( new LineBasis(polyOrder_z, pointType)))
57 this->functionSpace_ = FUNCTION_SPACE_HGRAD;
59 std::ostringstream basisName;
61 name_ = basisName.str();
63 order_xy_= polyOrder_xy;
64 order_z_ = polyOrder_z;
65 pointType_ = pointType;
67 this->setShardsTopologyAndTags();
80 return (this->getDofCount(1,0) > 1);
83 using BasisBase::getValues;
104 Teuchos::RCP<BasisBase>
107 if(subCellDim == 1) {
109 return Teuchos::rcp(
new LineBasis(order_xy_, pointType_) );
111 return Teuchos::rcp(
new LineBasis(order_z_, pointType_) );
113 else if(subCellDim == 2) {
122 return Teuchos::rcp(
new TriBasis(order_xy_, pointType_) );
124 return Teuchos::rcp(
new TriBasis(order_xy_, pointType_) );
126 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"subCellOrd is out of bounds");
129 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"subCellDim is out of bounds");
136 virtual HostBasisPtr<OutputValueType, PointValueType>
140 auto hostBasis = Teuchos::rcp(
new HostBasis(order_xy_, order_z_, pointType_));
Basis_Derived_HGRAD_WEDGE(int polyOrder_xy, int polyOrder_z, const EPointType pointType=POINTTYPE_DEFAULT)
Constructor.
Implementation of bases that are tensor products of two or three component bases. ...
Basis_Derived_HGRAD_WEDGE(int polyOrder, const EPointType pointType=POINTTYPE_DEFAULT)
Constructor.
virtual const char * getName() const override
Returns basis name.
Implementation of H(grad) basis on the quadrilateral that is templated on H(grad) on the line...
virtual bool requireOrientation() const override
True if orientation is required.
virtual const char * getName() const override
Returns basis name.
Teuchos::RCP< BasisBase > getSubCellRefBasis(const ordinal_type subCellDim, const ordinal_type subCellOrd) const override
returns the basis associated to a subCell.
virtual HostBasisPtr< OutputValueType, PointValueType > getHostBasis() const override
Creates and returns a Basis object whose DeviceType template argument is Kokkos::HostSpace::device_ty...
Basis defined as the tensor product of two component bases.