51 #ifndef Intrepid2_DerivedBasis_HGRAD_WEDGE_h
52 #define Intrepid2_DerivedBasis_HGRAD_WEDGE_h
59 template<
class HGRAD_TRI,
class HGRAD_LINE>
65 ordinal_type order_xy_, order_z_;
66 EPointType pointType_;
68 using ExecutionSpace =
typename HGRAD_LINE::ExecutionSpace;
69 using OutputValueType =
typename HGRAD_LINE::OutputValueType;
70 using PointValueType =
typename HGRAD_LINE::PointValueType;
72 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
73 using PointViewType =
typename HGRAD_LINE::PointViewType ;
74 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
76 using BasisBase =
typename HGRAD_LINE::BasisBase;
77 using TriBasis = HGRAD_TRI;
78 using LineBasis = HGRAD_LINE;
88 TensorBasis(Teuchos::rcp( new TriBasis(polyOrder_xy, pointType)),
89 Teuchos::rcp( new LineBasis(polyOrder_z, pointType)))
91 this->functionSpace_ = FUNCTION_SPACE_HGRAD;
93 std::ostringstream basisName;
95 name_ = basisName.str();
97 order_xy_= polyOrder_xy;
98 order_z_ = polyOrder_z;
99 pointType_ = pointType;
101 this->setShardsTopologyAndTags();
114 return (this->getDofCount(1,0) > 1);
117 using BasisBase::getValues;
126 return name_.c_str();
138 Teuchos::RCP<BasisBase>
141 if(subCellDim == 1) {
143 return Teuchos::rcp(
new LineBasis(order_xy_, pointType_) );
145 return Teuchos::rcp(
new LineBasis(order_z_, pointType_) );
147 else if(subCellDim == 2) {
156 return Teuchos::rcp(
new TriBasis(order_xy_, pointType_) );
158 return Teuchos::rcp(
new TriBasis(order_xy_, pointType_) );
160 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"subCellOrd is out of bounds");
163 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"subCellDim is out of bounds");
170 virtual HostBasisPtr<OutputValueType, PointValueType>
174 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.