Entity & declare_element_side( BulkData & mesh , const stk::mesh::EntityId global_side_id , Entity & elem , const unsigned local_side_id , Part * part ) { verify_declare_element_side(mesh, elem, local_side_id); const CellTopologyData * const elem_top = get_cell_topology_new( elem ).getCellTopologyData(); ThrowErrorMsgIf( elem_top == NULL, "Element[" << elem.identifier() << "] has no defined topology"); const CellTopologyData * const side_top = elem_top->side[ local_side_id ].topology; ThrowErrorMsgIf( side_top == NULL, "Element[" << elem.identifier() << "], local_side_id = " << local_side_id << ", side has no defined topology" ); PartVector empty_parts ; Entity & side = mesh.declare_entity( side_top->dimension , global_side_id, empty_parts ); return declare_element_side( elem, side, local_side_id, part); }
Entity declare_element_side( BulkData & mesh , Entity elem , Entity side , const unsigned local_side_id , stk::mesh::Part* part) { stk::mesh::PartVector parts; if(part!=NULL) { parts.push_back(part); } return declare_element_side(mesh, elem, side, local_side_id, parts); }
Entity declare_element_side( BulkData & mesh, const stk::mesh::EntityId global_side_id, Entity elem, const unsigned local_side_id, const stk::mesh::PartVector& parts) { verify_declare_element_side(mesh, elem, local_side_id); stk::topology elem_top = mesh.bucket(elem).topology(); stk::topology side_top = elem_top.side_topology(local_side_id); PartVector empty_parts; Entity side = mesh.get_entity(side_top.rank(), global_side_id); if(!mesh.is_valid(side)) { side = mesh.declare_entity(side_top.rank(), global_side_id, empty_parts); // It seem like declare_element_side should be called even if the side is valid to make sure it is attached to the element. declare_element_side(mesh, elem, side, local_side_id, parts); } return side; }