void SquareQuadMeshFactory::buildMetaData(stk::ParallelMachine parallelMach, STK_Interface & mesh) const { typedef shards::Quadrilateral<4> QuadTopo; const CellTopologyData * ctd = shards::getCellTopologyData<QuadTopo>(); const CellTopologyData * side_ctd = shards::CellTopology(ctd).getBaseCellTopologyData(1,0); // build meta data //mesh.setDimension(2); for(int bx=0;bx<xBlocks_;bx++) { for(int by=0;by<yBlocks_;by++) { // add this element block { std::stringstream ebPostfix; ebPostfix << "-" << bx << "_" << by; // add element blocks mesh.addElementBlock("eblock"+ebPostfix.str(),ctd); } } } // add sidesets #ifndef ENABLE_UNIFORM mesh.addSideset("left",side_ctd); mesh.addSideset("right",side_ctd); mesh.addSideset("top",side_ctd); mesh.addSideset("bottom",side_ctd); #endif // add nodesets mesh.addNodeset("lower_left"); mesh.addNodeset("origin"); }
void SculptMeshFactory::buildMetaData(stk_classic::ParallelMachine parallelMach, STK_Interface & mesh) const { struct MeshStorageStruct *mss = get_sculpt_mesh(); int nBlocks_ = mss->num_elem_blk; int nSidesets_ = mss->num_side_sets; int nNodesets_ = mss->num_node_sets; typedef shards::Hexahedron<8> HexTopo; const CellTopologyData * ctd = shards::getCellTopologyData<HexTopo>(); const CellTopologyData * side_ctd = shards::CellTopology(ctd).getBaseCellTopologyData(2,0); // build meta data //mesh.setDimension(3); for( int b = 0; b < nBlocks_; b++){ std::stringstream ebPostfix; ebPostfix << "-" << mss->block_id[b]; mesh.addElementBlock("eblock"+ebPostfix.str(),ctd); } // add sidesets int side_set_id; machRank_ = stk_classic::parallel_machine_rank(parallelMach); for(int ict = 0;ict < nSidesets_;ict ++){ std::stringstream sPostfix; sPostfix << "-" << mss->side_set_id[ict]; mesh.addSideset("Sideset"+sPostfix.str(),side_ctd); } // add nodesets for(int nx=0;nx<nNodesets_;nx++) { std::stringstream nPostfix; nPostfix << "-" << nx; mesh.addNodeset("Nodeset"+nPostfix.str()); } }
void STK_ExodusReaderFactory::registerNodesets(STK_Interface & mesh,stk::io::MeshData & meshData) const { using Teuchos::RCP; RCP<stk::mesh::fem::FEMMetaData> metaData = mesh.getMetaData(); const stk::mesh::PartVector & parts = metaData->get_parts(); stk::mesh::PartVector::const_iterator partItr; for(partItr=parts.begin();partItr!=parts.end();++partItr) { const stk::mesh::Part * part = *partItr; const CellTopologyData * ct = metaData->get_cell_topology(*part).getCellTopologyData(); // if a side part ==> this is a sideset: now storage is recursive // on part contains all sub parts with consistent topology if(part->primary_entity_rank()==mesh.getNodeRank() && ct==0) { // only add subset parts that have no topology if(part->name()!=STK_Interface::nodesString) mesh.addNodeset(part->name()); } } }