53 #ifndef Intrepid2_DerivedBasis_HIV_QUAD_h
54 #define Intrepid2_DerivedBasis_HIV_QUAD_h
56 #include <Kokkos_View.hpp>
57 #include <Kokkos_DynRankView.hpp>
66 template<
class HGRAD_LINE,
class HVOL_LINE>
71 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
72 using PointViewType =
typename HGRAD_LINE::PointViewType ;
73 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
75 using LineGradBasis = HGRAD_LINE;
76 using LineHVolBasis = HVOL_LINE;
87 LineGradBasis(polyOrder_y))
101 virtual void getValues(OutputViewType outputValues,
const EOperator operatorType,
102 const PointViewType inputPoints1,
const PointViewType inputPoints2,
103 bool tensorPoints)
const
107 const double weight = -1.0;
109 Intrepid2::EOperator op1, op2;
110 if (operatorType == Intrepid2::OPERATOR_VALUE)
112 op1 = Intrepid2::OPERATOR_VALUE;
113 op2 = Intrepid2::OPERATOR_VALUE;
116 auto outputValuesComponent1 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),0);
117 auto outputValuesComponent2 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),1);
121 inputPoints2, op2, tensorPoints, weight);
123 Kokkos::deep_copy(outputValuesComponent1,0.0);
125 else if (operatorType == Intrepid2::OPERATOR_DIV)
129 op1 = Intrepid2::OPERATOR_VALUE;
130 op2 = Intrepid2::OPERATOR_GRAD;
134 inputPoints2, op2, tensorPoints, weight);
138 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"operator not yet supported");
143 template<
class HGRAD_LINE,
class HVOL_LINE>
147 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
148 using PointViewType =
typename HGRAD_LINE::PointViewType ;
149 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
151 using LineGradBasis = HGRAD_LINE;
152 using LineHVolBasis = HVOL_LINE;
163 LineHVolBasis(polyOrder_y-1))
177 virtual void getValues(OutputViewType outputValues,
const EOperator operatorType,
178 const PointViewType inputPoints1,
const PointViewType inputPoints2,
179 bool tensorPoints)
const
181 Intrepid2::EOperator op1, op2;
182 if (operatorType == Intrepid2::OPERATOR_VALUE)
184 op1 = Intrepid2::OPERATOR_VALUE;
185 op2 = Intrepid2::OPERATOR_VALUE;
188 auto outputValuesComponent1 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),0);
189 auto outputValuesComponent2 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),1);
193 inputPoints2, op2, tensorPoints);
195 Kokkos::deep_copy(outputValuesComponent2, 0.0);
197 else if (operatorType == Intrepid2::OPERATOR_DIV)
201 op1 = Intrepid2::OPERATOR_GRAD;
202 op2 = Intrepid2::OPERATOR_VALUE;
206 inputPoints2, op2, tensorPoints);
210 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"operator not yet supported");
215 template<
class HGRAD_LINE,
class HVOL_LINE>
218 Basis_Derived_HDIV_Family2_QUAD<HGRAD_LINE, HVOL_LINE> >
231 Family2(polyOrder_x, polyOrder_y))
Implementation of bases that are tensor products of two or three component bases. ...
EFunctionSpace functionSpace_
The function space in which the basis is defined.
virtual void getValues(OutputViewType outputValues, const EOperator operatorType, const PointViewType inputPoints1, const PointViewType inputPoints2, bool tensorPoints) const
multi-component getValues() method (required/called by TensorBasis)
void getValues(OutputViewType outputValues, const PointViewType inputPoints, const EOperator operatorType=OPERATOR_VALUE) const override
Evaluation of a FEM basis on a reference cell.
virtual bool requireOrientation() const
True if orientation is required.
Free functions, callable from device code, that implement various polynomials useful in basis definit...
Implementation of a basis that is the direct sum of two other bases.
Basis_Derived_HDIV_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
virtual void getValues(OutputViewType outputValues, const EOperator operatorType, const PointViewType inputPoints1, const PointViewType inputPoints2, bool tensorPoints) const
multi-component getValues() method (required/called by TensorBasis)
A basis that is the direct sum of two other bases.
ordinal_type getDofCount(const ordinal_type subcDim, const ordinal_type subcOrd) const
DoF count for specified subcell.
Basis_Derived_HDIV_Family2_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
Basis_Derived_HDIV_Family1_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
Basis defined as the tensor product of two component bases.
Basis_Derived_HDIV_QUAD(int polyOrder)
Constructor.