OGS
RadiusEdgeRatioMetric.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
5
7#include "MeshLib/Node.h"
8
9namespace MeshToolsLib
10{
12{
13 std::vector<MeshLib::Element*> const& elements(_mesh.getElements());
14 std::size_t const nElements(_mesh.getNumberOfElements());
15 for (std::size_t k(0); k < nElements; k++)
16 {
17 MeshLib::Element const& elem(*elements[k]);
18 std::size_t const n_nodes(elem.getNumberOfBaseNodes());
19 std::vector<MathLib::Point3d*> pnts(n_nodes);
20 std::copy_n(elem.getNodes(), n_nodes, pnts.begin());
22 auto const& [min, max] = computeSqrEdgeLengthRange(elem);
23 _element_quality_metric[k] = std::sqrt(min) / (2 * s.getRadius());
24 }
25}
26
27} // namespace MeshToolsLib
double getRadius() const
Returns the radius of the sphere.
virtual unsigned getNumberOfBaseNodes() const =0
virtual Node *const * getNodes() const =0
Get array of element nodes.
std::vector< double > _element_quality_metric
void calculateQuality() override
Calculates the quality metric for each element of the mesh.