43 #ifndef __Panzer_IntrepidOrientation_hpp__ 44 #define __Panzer_IntrepidOrientation_hpp__ 46 #include "Intrepid2_Orientation.hpp" 48 #include "PanzerDiscFE_config.hpp" 55 template <
typename LocalOrdinal,
typename GlobalOrdinal>
60 using Teuchos::rcp_dynamic_cast;
76 std::vector<std::string> elementBlockIds;
77 std::vector<shards::CellTopology> elementBlockTopologies;
83 numElementBlocks != static_cast<int>(elementBlockIds.size()) &&
84 numElementBlocks != static_cast<int>(elementBlockTopologies.size()),
86 "panzer::buildIntrepidOrientation: Number of element blocks does not match to element block meta data");
89 const auto cellTopo = elementBlockTopologies.at(0);
90 const int numVertexPerCell = cellTopo.getVertexCount();
96 for (
int i=0;i<numElementBlocks;++i) {
98 const auto &elementBlock = connMgr.
getElementBlock(elementBlockIds.at(i));
100 const int numElementsPerBlock = elementBlock.size();
103 for (
int c=0;c<numElementsPerBlock;++c) {
104 const int localCellId = elementBlock.at(c);
105 Kokkos::View<const GlobalOrdinal*, Kokkos::DefaultHostExecutionSpace>
107 orientation.push_back(Intrepid2::Orientation::getOrientation(cellTopo, nodes));
virtual void getElementBlockTopologies(std::vector< shards::CellTopology > &elementBlockTopologies) const =0
virtual const GlobalOrdinal * getConnectivity(LocalOrdinal localElmtId) const =0
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
virtual const std::vector< LocalOrdinal > & getElementBlock(const std::string &blockID) const =0
virtual void buildConnectivity(const FieldPattern &fp)=0
virtual void getElementBlockIds(std::vector< std::string > &elementBlockIds) const =0
Teuchos::RCP< std::vector< Intrepid2::Orientation > > buildIntrepidOrientation(const Teuchos::RCP< const UniqueGlobalIndexerBase > globalIndexer)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
virtual std::size_t numElementBlocks() const =0