Intrepid2
Intrepid2_DerivedBasis_HVOL_WEDGE.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Intrepid2 Package
4 //
5 // Copyright 2007 NTESS and the Intrepid2 contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
17 #ifndef Intrepid2_DerivedBasis_HVOL_WEDGE_h
18 #define Intrepid2_DerivedBasis_HVOL_WEDGE_h
19 
21 
22 namespace Intrepid2
23 {
24  template<class HVOL_TRI, class HVOL_LINE>
26  : public Basis_TensorBasis<typename HVOL_LINE::BasisBase>
27  {
28  protected:
29  std::string name_;
30  ordinal_type order_xy_, order_z_;
31  EPointType pointType_;
32  public:
33  using ExecutionSpace = typename HVOL_LINE::ExecutionSpace;
34  using OutputValueType = typename HVOL_LINE::OutputValueType;
35  using PointValueType = typename HVOL_LINE::PointValueType;
36 
37  using OutputViewType = typename HVOL_LINE::OutputViewType;
38  using PointViewType = typename HVOL_LINE::PointViewType ;
39  using ScalarViewType = typename HVOL_LINE::ScalarViewType;
40 
41  using BasisBase = typename HVOL_LINE::BasisBase;
42  using TriBasis = HVOL_TRI;
43  using LineBasis = HVOL_LINE;
45 
51  Basis_Derived_HVOL_WEDGE(int polyOrder_xy, int polyOrder_z, const EPointType pointType=POINTTYPE_DEFAULT)
52  :
53  TensorBasis(Teuchos::rcp( new TriBasis(polyOrder_xy, pointType)),
54  Teuchos::rcp( new LineBasis(polyOrder_z, pointType)))
55  {
56  this->functionSpace_ = FUNCTION_SPACE_HVOL;
57 
58  std::ostringstream basisName;
59  basisName << "HVOL_WEDGE (" << this->TensorBasis::getName() << ")";
60  name_ = basisName.str();
61 
62  order_xy_= polyOrder_xy;
63  order_z_ = polyOrder_z;
64  pointType_ = pointType;
65 
66  this->setShardsTopologyAndTags();
67  }
68 
73  Basis_Derived_HVOL_WEDGE(int polyOrder, const EPointType pointType=POINTTYPE_DEFAULT) : Basis_Derived_HVOL_WEDGE(polyOrder,polyOrder,pointType) {}
74 
75 
78  virtual bool requireOrientation() const override {
79  return false;
80  }
81 
82  using BasisBase::getValues;
83 
88  virtual
89  const char*
90  getName() const override {
91  return name_.c_str();
92  }
93 
98  virtual HostBasisPtr<OutputValueType, PointValueType>
99  getHostBasis() const override {
101 
102  auto hostBasis = Teuchos::rcp(new HostBasis(order_xy_, order_z_, pointType_));
103 
104  return hostBasis;
105  }
106  };
107 } // end namespace Intrepid2
108 
109 #endif /* Intrepid2_DerivedBasis_HVOL_WEDGE_h */
Basis_Derived_HVOL_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. ...
virtual HostBasisPtr< OutputValueType, PointValueType > getHostBasis() const override
Creates and returns a Basis object whose DeviceType template argument is Kokkos::HostSpace::device_ty...
virtual bool requireOrientation() const override
True if orientation is required.
virtual const char * getName() const override
Returns basis name.
virtual const char * getName() const override
Returns basis name.
Basis_Derived_HVOL_WEDGE(int polyOrder, const EPointType pointType=POINTTYPE_DEFAULT)
Constructor.
Basis defined as the tensor product of two component bases.