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 a basis that is the direct sum of two other bases.
Free functions, callable from device code, that implement various polynomials useful in basis definit...
Implementation of bases that are tensor products of two or three component bases.
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)
Basis_Derived_HDIV_Family1_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)
Basis_Derived_HDIV_Family2_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
Basis_Derived_HDIV_QUAD(int polyOrder)
Constructor.
virtual bool requireOrientation() const
True if orientation is required.
Basis_Derived_HDIV_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
A basis that is the direct sum of two other bases.
Basis defined as the tensor product of two component bases.
virtual void getValues(OutputViewType, const PointViewType, const EOperator=OPERATOR_VALUE) const
Evaluation of a FEM basis on a reference cell.
ordinal_type getDofCount(const ordinal_type subcDim, const ordinal_type subcOrd) const
DoF count for specified subcell.
EFunctionSpace functionSpace_
The function space in which the basis is defined.