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();
97 for (
int i=0;i<numElementBlocks;++i) {
101 orientation.resize(total_elems);
103 for (
int i=0;i<numElementBlocks;++i) {
105 const auto &elementBlock = connMgr.
getElementBlock(elementBlockIds.at(i));
107 const int numElementsPerBlock = elementBlock.size();
110 for (
int c=0;c<numElementsPerBlock;++c) {
111 const int localCellId = elementBlock.at(c);
112 Kokkos::View<const GlobalOrdinal*, Kokkos::DefaultHostExecutionSpace>
114 orientation[localCellId] = (Intrepid2::Orientation::getOrientation(cellTopo, nodes));
virtual void getElementBlockIds(std::vector< std::string > &elementBlockIds) const =0
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
virtual void getElementBlockTopologies(std::vector< shards::CellTopology > &elementBlockTopologies) 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
virtual const GlobalOrdinal * getConnectivity(LocalOrdinal localElmtId) const =0
virtual const std::vector< LocalOrdinal > & getElementBlock(const std::string &blockID) const =0
virtual void buildConnectivity(const FieldPattern &fp)=0