version 3.9.0
Loading...
Searching...
No Matches
intersectingentities.hh File Reference

Algorithms that finds which geometric entities intersect.

#include <cmath>
#include <type_traits>
#include <vector>
#include <algorithm>
#include <limits>
#include <dune/common/fvector.hh>
#include <dumux/common/math.hh>
#include <dumux/geometry/boundingboxtree.hh>
#include <dumux/geometry/intersectspointgeometry.hh>
#include <dumux/geometry/geometryintersection.hh>
#include <dumux/geometry/triangulation.hh>

Go to the source code of this file.

Classes

class  Dumux::IntersectionInfo< dimworld, CoordTypeA, CoordTypeB >
 An intersection object resulting from the intersection of two primitives in an entity set. More...
 

Namespaces

namespace  Dumux
 

Functions

template<class EntitySet , class ctype , int dimworld>
std::vector< std::size_t > Dumux::intersectingEntities (const Dune::FieldVector< ctype, dimworld > &point, const BoundingBoxTree< EntitySet > &tree, bool isCartesianGrid=false)
 Compute all intersections between entities and a point.
 
template<class EntitySet , class ctype , int dimworld>
void Dumux::intersectingEntities (const Dune::FieldVector< ctype, dimworld > &point, const BoundingBoxTree< EntitySet > &tree, std::size_t node, std::vector< std::size_t > &entities, bool isCartesianGrid=false)
 Compute intersections with point for all nodes of the bounding box tree recursively.
 
template<class Geometry , class EntitySet >
std::vector< IntersectionInfo< Geometry::coorddimension, typename Geometry::ctype, typename EntitySet::ctype > > Dumux::intersectingEntities (const Geometry &geometry, const BoundingBoxTree< EntitySet > &tree)
 Compute all intersections between a geometry and a bounding box tree.
 
template<class Geometry , class EntitySet , class IntersectionPolicy >
std::vector< IntersectionInfo< Geometry::coorddimension, typename Geometry::ctype, typename EntitySet::ctype > > Dumux::intersectingEntities (const Geometry &geometry, const BoundingBoxTree< EntitySet > &tree, IntersectionPolicy intersectionPolicy)
 Compute all intersections between a geometry and a bounding box tree.
 
template<class Geometry , class EntitySet >
void Dumux::intersectingEntities (const Geometry &geometry, const BoundingBoxTree< EntitySet > &tree, const std::array< typename Geometry::ctype, 2 *Geometry::coorddimension > &bBox, std::size_t nodeIdx, std::vector< IntersectionInfo< Geometry::coorddimension, typename Geometry::ctype, typename EntitySet::ctype > > &intersections)
 Compute intersections with point for all nodes of the bounding box tree recursively.
 
template<class Geometry , class EntitySet , class IntersectionPolicy >
void Dumux::intersectingEntities (const Geometry &geometry, const BoundingBoxTree< EntitySet > &tree, const std::array< typename Geometry::ctype, 2 *Geometry::coorddimension > &bBox, std::size_t nodeIdx, std::vector< IntersectionInfo< Geometry::coorddimension, typename Geometry::ctype, typename EntitySet::ctype > > &intersections, IntersectionPolicy intersectionPolicy)
 Compute intersections with point for all nodes of the bounding box tree recursively.
 
template<class EntitySet0 , class EntitySet1 >
std::vector< IntersectionInfo< EntitySet0::dimensionworld, typename EntitySet0::ctype, typename EntitySet1::ctype > > Dumux::intersectingEntities (const BoundingBoxTree< EntitySet0 > &treeA, const BoundingBoxTree< EntitySet1 > &treeB)
 Compute all intersections between two bounding box trees.
 
template<class EntitySet0 , class EntitySet1 , class IntersectionPolicy >
std::vector< IntersectionInfo< EntitySet0::dimensionworld, typename EntitySet0::ctype, typename EntitySet1::ctype > > Dumux::intersectingEntities (const BoundingBoxTree< EntitySet0 > &treeA, const BoundingBoxTree< EntitySet1 > &treeB, IntersectionPolicy intersectionPolicy)
 Compute all intersections between two bounding box trees.
 
template<class EntitySet0 , class EntitySet1 >
void Dumux::intersectingEntities (const BoundingBoxTree< EntitySet0 > &treeA, const BoundingBoxTree< EntitySet1 > &treeB, std::size_t nodeA, std::size_t nodeB, std::vector< IntersectionInfo< EntitySet0::dimensionworld, typename EntitySet0::ctype, typename EntitySet1::ctype > > &intersections)
 Compute all intersections between two all bounding box tree nodes recursively.
 
template<class EntitySet0 , class EntitySet1 , class IntersectionPolicy >
void Dumux::intersectingEntities (const BoundingBoxTree< EntitySet0 > &treeA, const BoundingBoxTree< EntitySet1 > &treeB, std::size_t nodeA, std::size_t nodeB, std::vector< IntersectionInfo< EntitySet0::dimensionworld, typename EntitySet0::ctype, typename EntitySet1::ctype > > &intersections, IntersectionPolicy intersectionPolicy)
 Compute all intersections between two all bounding box tree nodes recursively.
 
template<class ctype , int dimworld>
std::size_t Dumux::intersectingEntityCartesianGrid (const Dune::FieldVector< ctype, dimworld > &point, const Dune::FieldVector< ctype, dimworld > &min, const Dune::FieldVector< ctype, dimworld > &max, const std::array< int, std::size_t(dimworld)> &cells)
 Compute the index of the intersecting element of a Cartesian grid with a point The grid is given by the lower left corner (min), the upper right corner (max) and the number of cells in each direction (cells).