11#ifndef Panzer_STK_ExodusReaderFactory_hpp__
12#define Panzer_STK_ExodusReaderFactory_hpp__
16#include "PanzerAdaptersSTK_config.hpp"
19#ifdef PANZER_HAVE_IOSS
21#include <stk_io/StkMeshIoBroker.hpp>
40 int getMeshDimension(
const std::string & meshStr,stk::ParallelMachine parallelMach,
const std::string & typeStr =
"Exodus");
43 std::string fileTypeToIOSSType(
const std::string & fileType);
55class STK_ExodusReaderFactory :
public STK_MeshFactory {
59 STK_ExodusReaderFactory();
67 STK_ExodusReaderFactory(
const std::string & fileName,
const int restartIndex=0);
77 virtual Teuchos::RCP<STK_Interface> buildMesh(stk::ParallelMachine parallelMach)
const;
83 virtual Teuchos::RCP<STK_Interface> buildUncommitedMesh(stk::ParallelMachine parallelMach)
const;
87 virtual void completeMeshConstruction(STK_Interface & mesh,stk::ParallelMachine parallelMach)
const;
90 void setParameterList(
const Teuchos::RCP<Teuchos::ParameterList> & paramList);
93 Teuchos::RCP<const Teuchos::ParameterList> getValidParameters()
const;
96 const std::string & getFileName()
const
101 void registerElementBlocks(STK_Interface & mesh,stk::io::StkMeshIoBroker & meshData)
const;
102 void registerSidesets(STK_Interface & mesh)
const;
103 void registerNodesets(STK_Interface & mesh)
const;
104 void registerEdgeBlocks(STK_Interface & mesh,stk::io::StkMeshIoBroker & meshData)
const;
105 void registerFaceBlocks(STK_Interface & mesh,stk::io::StkMeshIoBroker & meshData)
const;
107 void addEdgeBlocks(STK_Interface & mesh)
const;
108 void addFaceBlocks(STK_Interface & mesh)
const;
110 std::string mkBlockName(std::string base, std::string topo_name)
const;
111 void createUniqueEdgeTopologyMap(STK_Interface & mesh,
const stk::mesh::Part *elemBlockPart)
const;
112 void createUniqueFaceTopologyMap(STK_Interface & mesh,
const stk::mesh::Part *elemBlockPart)
const;
114 void buildMetaData(stk::ParallelMachine parallelMach, STK_Interface & mesh)
const;
116 bool doPerceptRefinement()
const;
118 std::string fileName_;
119 std::string fileType_;
130 mutable std::map<std::string,std::vector<stk::topology>> elemBlockUniqueEdgeTopologies_;
131 mutable std::map<std::string,std::vector<stk::topology>> elemBlockUniqueFaceTopologies_;
136 bool userMeshScaling_;
139 bool keepPerceptData_;
142 bool keepPerceptParentElements_;
145 std::string rebalancing_;
148 double meshScaleFactor_;
151 int levelsOfRefinement_;
154 bool createEdgeBlocks_;
157 bool createFaceBlocks_;
159 std::string geometryName_;