57 #ifndef Intrepid2_DerivedBasis_HGRAD_HEX_h
58 #define Intrepid2_DerivedBasis_HGRAD_HEX_h
67 template<
class HGRAD_LINE>
73 using ExecutionSpace =
typename HGRAD_LINE::ExecutionSpace;
74 using OutputValueType =
typename HGRAD_LINE::OutputValueType;
75 using PointValueType =
typename HGRAD_LINE::PointValueType;
77 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
78 using PointViewType =
typename HGRAD_LINE::PointViewType ;
79 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
81 using LineBasis = HGRAD_LINE;
93 LineBasis(polyOrder_z))
118 virtual void getValues(OutputViewType outputValues,
const EOperator operatorType,
119 const PointViewType inputPoints1,
const PointViewType inputPoints2,
120 bool tensorPoints)
const override
122 Intrepid2::EOperator op1, op2;
123 if (operatorType == Intrepid2::OPERATOR_VALUE)
125 op1 = Intrepid2::OPERATOR_VALUE;
126 op2 = Intrepid2::OPERATOR_VALUE;
130 inputPoints2, op2, tensorPoints);
132 else if (operatorType == Intrepid2::OPERATOR_GRAD)
141 auto outputValuesComponent1 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),std::make_pair(0,2));
142 auto outputValuesComponent2 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),2);
145 op1 = Intrepid2::OPERATOR_GRAD;
146 op2 = Intrepid2::OPERATOR_VALUE;
150 inputPoints2, op2, tensorPoints);
153 op1 = Intrepid2::OPERATOR_VALUE;
154 op2 = Intrepid2::OPERATOR_GRAD;
158 inputPoints2, op2, tensorPoints);
162 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"operator not yet supported");
Implementation of bases that are tensor products of two or three component bases. ...
EFunctionSpace functionSpace_
The function space in which the basis is defined.
An abstract base class that defines interface for concrete basis implementations for Finite Element (...
void getValues(OutputViewType outputValues, const PointViewType inputPoints, const EOperator operatorType=OPERATOR_VALUE) const override
Evaluation of a FEM basis on a reference cell.
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.
ordinal_type getDofCount(const ordinal_type subcDim, const ordinal_type subcOrd) const
DoF count for specified subcell.
Basis_Derived_HGRAD_HEX(int polyOrder)
Constructor.
virtual void getValues(OutputViewType outputValues, const EOperator operatorType, const PointViewType inputPoints1, const PointViewType inputPoints2, bool tensorPoints) const override
multi-component getValues() method (required/called by TensorBasis)
Basis_Derived_HGRAD_HEX(int polyOrder_x, int polyOrder_y, int polyOrder_z)
Constructor.
Basis defined as the tensor product of two component bases.