53 #ifndef Intrepid2_DerivedBasis_HCURL_QUAD_h 54 #define Intrepid2_DerivedBasis_HCURL_QUAD_h 56 #include <Kokkos_View.hpp> 57 #include <Kokkos_DynRankView.hpp> 66 template<
class HGRAD_LINE,
class HVOL_LINE>
71 using ExecutionSpace =
typename HGRAD_LINE::ExecutionSpace;
72 using OutputValueType =
typename HGRAD_LINE::OutputValueType;
73 using PointValueType =
typename HGRAD_LINE::PointValueType;
75 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
76 using PointViewType =
typename HGRAD_LINE::PointViewType ;
77 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
79 using LineGradBasis = HGRAD_LINE;
80 using LineHVolBasis = HVOL_LINE;
91 LineGradBasis(polyOrder_y))
106 const PointViewType inputPoints1,
const PointViewType inputPoints2,
107 bool tensorPoints)
const 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);
123 Kokkos::deep_copy(outputValuesComponent2,0.0);
125 else if (operatorType == Intrepid2::OPERATOR_CURL)
129 op1 = Intrepid2::OPERATOR_VALUE;
130 op2 = Intrepid2::OPERATOR_GRAD;
132 double weight = -1.0;
135 inputPoints2, op2, tensorPoints, weight);
139 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"operator not yet supported");
144 template<
class HGRAD_LINE,
class HVOL_LINE>
149 using ExecutionSpace =
typename HGRAD_LINE::ExecutionSpace;
150 using OutputValueType =
typename HGRAD_LINE::OutputValueType;
151 using PointValueType =
typename HGRAD_LINE::PointValueType;
153 using OutputViewType =
typename HGRAD_LINE::OutputViewType;
154 using PointViewType =
typename HGRAD_LINE::PointViewType ;
155 using ScalarViewType =
typename HGRAD_LINE::ScalarViewType;
157 using LineGradBasis = HGRAD_LINE;
158 using LineHVolBasis = HVOL_LINE;
169 LineHVolBasis(polyOrder_y-1))
184 const PointViewType inputPoints1,
const PointViewType inputPoints2,
185 bool tensorPoints)
const 188 if (operatorType == Intrepid2::OPERATOR_VALUE)
190 op1 = Intrepid2::OPERATOR_VALUE;
191 op2 = Intrepid2::OPERATOR_VALUE;
194 auto outputValuesComponent1 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),0);
195 auto outputValuesComponent2 = Kokkos::subview(outputValues,Kokkos::ALL(),Kokkos::ALL(),1);
198 Kokkos::deep_copy(outputValuesComponent1, 0.0);
201 inputPoints2, op2, tensorPoints);
204 else if (operatorType == Intrepid2::OPERATOR_CURL)
208 op1 = Intrepid2::OPERATOR_GRAD;
209 op2 = Intrepid2::OPERATOR_VALUE;
213 inputPoints2, op2, tensorPoints);
217 INTREPID2_TEST_FOR_EXCEPTION(
true,std::invalid_argument,
"operator not yet supported");
222 template<
class HGRAD_LINE,
class HVOL_LINE>
225 Basis_Derived_HCURL_Family2_QUAD<HGRAD_LINE, HVOL_LINE> >
238 Family2(polyOrder_x, polyOrder_y)) {
Implementation of bases that are tensor products of two or three component bases. ...
Basis_Derived_HCURL_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
EFunctionSpace functionSpace_
The function space in which the basis is defined.
void getValues(OutputViewType outputValues, const PointViewType inputPoints, const EOperator operatorType=OPERATOR_VALUE) const override
Evaluation of a FEM basis on a reference cell.
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.
ordinal_type getDofCount(const ordinal_type subcDim, const ordinal_type subcOrd) const
DoF count for specified subcell.
A basis that is the direct sum of two other bases.
Basis_Derived_HCURL_Family2_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)
EOperator
Enumeration of primitive operators available in Intrepid. Primitive operators act on reconstructed fu...
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_HCURL_Family1_QUAD(int polyOrder_x, int polyOrder_y)
Constructor.
Basis_Derived_HCURL_QUAD(int polyOrder)
Constructor.
Basis defined as the tensor product of two component bases.
virtual bool requireOrientation() const
True if orientation is required.