13#include "Phalanx_KokkosDeviceTypes.hpp"
29class BasisCoordsGenerator :
32 BasisCoordsGenerator(
const int basis_order,
const std::string & basis_type)
33 : _basis_type(basis_type), _basis_order(basis_order) {}
35 virtual ~BasisCoordsGenerator() =
default;
37 virtual Kokkos::DynRankView<double,PHX::Device>
38 getPoints(
const shards::CellTopology & topo)
const override
40 Teuchos::RCP<Intrepid2::Basis<PHX::Device,double,double> >
43 Kokkos::DynRankView<double,PHX::Device> view(_basis_type+
"_ref_coords",intrepid_basis->getCardinality(),topo.getDimension());
45 intrepid_basis->getDofCoords(view);
50 virtual int numPoints(
const shards::CellTopology & topo)
const override
52 Teuchos::RCP<Intrepid2::Basis<PHX::Device,double,double> >
54 return intrepid_basis->getCardinality();
57 virtual bool hasPoints(
const shards::CellTopology & topo)
const override
63 std::string _basis_type;
68 BasisCoordsGenerator();
69 BasisCoordsGenerator(
const BasisCoordsGenerator &);
79 _key = std::hash<BasisDescriptor>{}(*this);
86 _key = std::hash<BasisDescriptor>{}(*this);
118 std::size_t seed = 0;
int getOrder() const
Get order of basis.
std::string _basis_type
Basis type (HGrad, HDiv, HCurl, HVol).
const std::string & getType() const
Get type of basis.
PointDescriptor getPointDescriptor() const
Build a point descriptor that builds reference points for the DOF locations. This method throws if no...
BasisDescriptor()
Constructor for empty basis.
bool operator==(const panzer::BasisDescriptor &left, const panzer::BasisDescriptor &right)
void hash_combine(std::size_t &seed, const T &v)
Mixes the hash of v into seed, in place. Used to build a combined hash from multiple values.
Teuchos::RCP< Intrepid2::Basis< DeviceType, OutputValueType, PointValueType > > createIntrepid2Basis(const std::string basis_type, int basis_order, const shards::CellTopology &cell_topology)
Creates an Intrepid2::Basis object given the basis, order and cell topology.
std::size_t operator()(const panzer::BasisDescriptor &desc) const