const Node* Element::getNode(unsigned i) const { if (i < getNNodes()) return _nodes[i]; std::cerr << "Error in MeshLib::Element::getNode() - Index " << i << " in " << MshElemType2String(getGeoType()) << " does not exist." << std::endl; return NULL; }
void MeshQualityChecker::errorMsg (const Element* elem, size_t idx) const { ERR ("Error in MeshQualityChecker::check() - Calculated value of element is below double precision minimum."); ERR ("Points of %s-Element %d: ", MshElemType2String(elem->getType()).c_str(), idx); for (size_t i(0); i < elem->getNNodes(); i++) { const double* coords = elem->getNode(i)->getCoords(); ERR ("\t Node %d: (%f, %f, %f)", i, coords[0], coords[1], coords[2]); } }
void MeshQualityShortestLongestRatio::check() { // get all elements of mesh const std::vector<MeshLib::Element*>& elements(_mesh->getElements()); const size_t nElements (_mesh->getNElements()); for (size_t k(0); k < nElements; k++) { const Element* elem (elements[k]); switch (elem->getType()) { case MshElemType::EDGE: _mesh_quality_measure[k] = 1.0; break; case MshElemType::TRIANGLE: { _mesh_quality_measure[k] = checkTriangle(elem->getNode(0), elem->getNode(1), elem->getNode(2)); break; } case MshElemType::QUAD: { _mesh_quality_measure[k] = checkQuad(elem->getNode(0), elem->getNode(1), elem->getNode(2), elem->getNode(3)); break; } case MshElemType::TETRAHEDRON: { _mesh_quality_measure[k] = checkTetrahedron(elem->getNode(0), elem->getNode(1), elem->getNode(2), elem->getNode(3)); break; } case MshElemType::PRISM: { std::vector<const GeoLib::Point*> pnts; for (size_t j(0); j < 6; j++) pnts.push_back(elem->getNode(j)); _mesh_quality_measure[k] = checkPrism(pnts); break; } case MshElemType::HEXAHEDRON: { std::vector<const GeoLib::Point*> pnts; for (size_t j(0); j < 8; j++) pnts.push_back(elem->getNode(j)); _mesh_quality_measure[k] = checkHexahedron(pnts); break; } default: std::cout << "MeshQualityShortestLongestRatio::check () check for element type " << MshElemType2String(elem->getType()) << " not implemented" << std::endl; } } }
void ElementTreeModel::setElement(const MeshLib::Mesh* grid, const size_t elem_index) { this->clearView(); const MeshLib::Element* elem = grid->getElement(elem_index); QList<QVariant> elemData; elemData << "Element " + QString::number(elem_index) << "" << "" << ""; TreeItem* elemItem = new TreeItem(elemData, _rootItem); _rootItem->appendChild(elemItem); QList<QVariant> typeData; typeData << "Element Type: " << QString::fromStdString(MshElemType2String(elem->getGeoType())); TreeItem* typeItem = new TreeItem(typeData, elemItem); elemItem->appendChild(typeItem); QList<QVariant> materialData; materialData << "MaterialID: " << QString::number(elem->getValue()); TreeItem* matItem = new TreeItem(materialData, elemItem); elemItem->appendChild(matItem); QList<QVariant> volData; volData << "Area/Volume: " << QString::number(grid->getElement(elem_index)->getContent()); TreeItem* volItem = new TreeItem(volData, elemItem); elemItem->appendChild(volItem); QList<QVariant> nodeListData; nodeListData << "Nodes" << "" << "" << ""; TreeItem* nodeListItem = new TreeItem(nodeListData, elemItem); elemItem->appendChild(nodeListItem); //const std::vector<MeshLib::Node*> nodes_vec = grid->getNodes(); size_t nElemNodes = elem->getNNodes(); for (size_t i = 0; i < nElemNodes; i++) { const MeshLib::Node* node = elem->getNode(i); QList<QVariant> nodeData; nodeData << "Node " + QString::number(node->getID()) << QString::number((*node)[0]) << QString::number((*node)[1]) << QString::number((*node)[2]); TreeItem* nodeItem = new TreeItem(nodeData, nodeListItem); nodeListItem->appendChild(nodeItem); } reset(); }
/************************************************************************** MSHLib-Method: Task: Programing: 06/2005 WW Implementation 11/2010 KR moved to MSHEnums.h **************************************************************************/ std::string CElem::GetName() const { return MshElemType2String(geo_type); }