Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
		}
	}
}
Esempio n. 4
0
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();
}
Esempio n. 5
0
/**************************************************************************
   MSHLib-Method:
   Task:
   Programing:
   06/2005 WW Implementation
   11/2010 KR moved to MSHEnums.h
**************************************************************************/
std::string CElem::GetName() const
{
	return MshElemType2String(geo_type);
}