Panzer  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Panzer_STK_SetupUtilities.hpp
Go to the documentation of this file.
1 // @HEADER
2 // *****************************************************************************
3 // Panzer: A partial differential equation assembly
4 // engine for strongly coupled complex multiphysics systems
5 //
6 // Copyright 2011 NTESS and the Panzer contributors.
7 // SPDX-License-Identifier: BSD-3-Clause
8 // *****************************************************************************
9 // @HEADER
10 
11 #ifndef __Panzer_STK_SetupUtilities_hpp__
12 #define __Panzer_STK_SetupUtilities_hpp__
13 
14 #include "Panzer_STK_Interface.hpp"
15 
16 
17 #include "Panzer_Workset.hpp"
18 #include "Panzer_WorksetNeeds.hpp"
19 
20 #include "Teuchos_RCP.hpp"
21 
22 #include <vector>
23 #include <map>
24 #include <string>
25 
26 namespace panzer_stk {
27 
38  const std::string & eBlock,
39  const panzer::WorksetNeeds & needs);
40 
57  const panzer::WorksetNeeds & needs,
58  const std::string & sideset,
59  const std::string & eBlock,
60  bool useCascade=false);
61 
76  const panzer::WorksetNeeds & needs_a,
77  const std::string & blockid_a,
78  const panzer::WorksetNeeds & needs_b,
79  const std::string & blockid_b,
80  const std::string & sideset);
81 
84  const panzer::WorksetNeeds & needs_a,const std::string & eblock_a,
85  const panzer::WorksetNeeds & needs_b,const std::string & eblock_b,
86  const std::string & sideset);
87 
102  const panzer::WorksetNeeds & needs,
103  const std::string & eblockID,
104  const std::string & sidesetID);
105 
106 // namespace may not be neccssary in the future, currently avoids
107 // collisions with previously implemented code in tests
108 namespace workset_utils {
109 
111 
120 template<typename ArrayT>
122  std::string blockId,
123  std::vector<std::size_t>& localIds,
124  ArrayT& vertices);
125 
127 
136 template<typename ArrayT>
138  std::string blockId,
139  std::vector<std::size_t>& localIds,
140  ArrayT& nodes);
141 
163  const std::string & blockId,
164  const std::vector<stk::mesh::Entity> & entities,
165  std::vector<std::size_t> & localEntityIds,
166  std::vector<stk::mesh::Entity> & elements);
167 
195  const std::string & blockId,
196  const std::vector<stk::mesh::Entity> & entities,
197  std::vector<std::size_t> & localEntityIds,
198  std::vector<stk::mesh::Entity> & elements,
199  std::vector<std::size_t> & missingElementIndices);
200 
221  const std::string & blockId,
222  const std::vector<stk::mesh::Entity> & sides,
223  std::vector<std::size_t> & localSideIds,
224  std::vector<stk::mesh::Entity> & elements);
225 
256  const std::string & blockId_a,
257  const std::string & blockId_b,
258  const std::vector<stk::mesh::Entity> & sides,
259  std::vector<std::size_t> & localSideIds_a,
260  std::vector<stk::mesh::Entity> & elements_a,
261  std::vector<std::size_t> & localSideIds_b,
262  std::vector<stk::mesh::Entity> & elements_b);
263 
284  const std::string & blockId,
285  const std::vector<stk::mesh::Entity> & nodes,
286  std::vector<std::size_t> & localNodeIds,
287  std::vector<stk::mesh::Entity> & elements);
288 
307  const std::string & blockId,
308  const std::vector<stk::mesh::Entity> & sides,
309  std::vector<std::size_t> & localSubcellDim,
310  std::vector<std::size_t> & subcellIds,
311  std::vector<stk::mesh::Entity> & elements);
312 
326  const std::vector<stk::mesh::Entity> & entities,
327  std::vector<std::vector<stk::mesh::Entity> > & subcells);
328 
329 }
330 }
331 
333 
334 #endif
void getIdsAndVertices(const panzer_stk::STK_Interface &mesh, std::string blockId, std::vector< std::size_t > &localIds, ArrayT &vertices)
void getSubcellEntities(const panzer_stk::STK_Interface &mesh, const std::vector< stk::mesh::Entity > &entities, std::vector< std::vector< stk::mesh::Entity > > &subcells)
Teuchos::RCP< std::vector< panzer::Workset > > buildWorksets(const panzer_stk::STK_Interface &mesh, const std::string &eBlock, const panzer::WorksetNeeds &needs)
void getIdsAndNodes(const panzer_stk::STK_Interface &mesh, std::string blockId, std::vector< std::size_t > &localIds, ArrayT &nodes)
void getSubcellElements(const panzer_stk::STK_Interface &mesh, const std::string &blockId, const std::vector< stk::mesh::Entity > &entities, std::vector< std::size_t > &localEntityIds, std::vector< stk::mesh::Entity > &elements)
Teuchos::RCP< std::map< unsigned, panzer::Workset > > buildBCWorksets(const panzer_stk::STK_Interface &mesh, const panzer::WorksetNeeds &needs_a, const std::string &blockid_a, const panzer::WorksetNeeds &needs_b, const std::string &blockid_b, const std::string &sideset)
void getSideElements(const panzer_stk::STK_Interface &mesh, const std::string &blockId, const std::vector< stk::mesh::Entity > &sides, std::vector< std::size_t > &localSideIds, std::vector< stk::mesh::Entity > &elements)
void getUniversalSubcellElements(const panzer_stk::STK_Interface &mesh, const std::string &blockId, const std::vector< stk::mesh::Entity > &entities, std::vector< std::size_t > &localEntityIds, std::vector< stk::mesh::Entity > &elements, std::vector< std::size_t > &missingElementIndices)
void getSideElementCascade(const panzer_stk::STK_Interface &mesh, const std::string &blockId, const std::vector< stk::mesh::Entity > &sides, std::vector< std::size_t > &localSubcellDim, std::vector< std::size_t > &localSubcellIds, std::vector< stk::mesh::Entity > &elements)
void getNodeElements(const panzer_stk::STK_Interface &mesh, const std::string &blockId, const std::vector< stk::mesh::Entity > &nodes, std::vector< std::size_t > &localNodeIds, std::vector< stk::mesh::Entity > &elements)