swh:1:snp:f521c49ab17ef7db6ec70b2430e1ed203f50383f
Raw File
Tip revision: 05163b4a0e3b3f56a2d342490dc5d0836d5dd38c authored by Wenqing Wang on 13 July 2021, 10:23:04 UTC
[Ctest/HM_MFront] Added a simple test
Tip revision: 05163b4
BoundaryElementsAtPoint.h
/**
 * \file
 * \copyright
 * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 */

#pragma once

#include <vector>

namespace GeoLib
{
class Point;
}

namespace MeshLib
{
class Mesh;
class Element;
}

namespace MeshGeoToolsLib
{
class MeshNodeSearcher;

/// This class collects point elements located at a given point elements.
class BoundaryElementsAtPoint final
{
public:
    /// Constructor
    /// \param mesh             a mesh object
    /// \param mshNodeSearcher  a MeshNodeSearcher object which is internally
    /// used to search mesh nodes
    /// \param point            a point object where edges are searched
    /// \param multiple_nodes_allowed Allows to find multiple nodes within the
    /// search radius, the nearest node is returned (as point element). This
    /// enables to specify larger search radius to find possible other
    /// geometries that don't match exactly to the mesh.
    BoundaryElementsAtPoint(MeshLib::Mesh const& mesh,
                            MeshNodeSearcher const& mshNodeSearcher,
                            GeoLib::Point const& point,
                            const bool multiple_nodes_allowed);

    ~BoundaryElementsAtPoint();

    MeshLib::Mesh const& getMesh() const
    {
        return _mesh;
    }

    GeoLib::Point const& getPoint() const
    {
        return _point;
    }

    /// Return the vector of boundary elements (i.e. points).
    std::vector<MeshLib::Element*> const& getBoundaryElements() const
    {
        return _boundary_elements;
    }

private:
    MeshLib::Mesh const& _mesh;
    GeoLib::Point const& _point;
    std::vector<MeshLib::Element*> _boundary_elements;
};

}  // end namespace MeshGeoToolsLib
back to top