3.2-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
Public Types | Static Public Member Functions | List of all members
Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 > Class Template Reference

A class for polyhedron–polygon intersection in 3d space. More...

#include <dumux/common/geometry/geometryintersection.hh>

Description

template<class Geometry1, class Geometry2, class Policy>
class Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >

A class for polyhedron–polygon intersection in 3d space.

Public Types

using ctype = typename Policy::ctype
 
using Point = typename Policy::Point
 
using Intersection = typename Policy::Intersection
 

Static Public Member Functions

template<class P = Policy, std::enable_if_t< P::dimIntersection==2, int > = 0>
static bool intersection (const Geometry1 &geo1, const Geometry2 &geo2, Intersection &intersection)
 Colliding polygon and convex polyhedron. More...
 
template<class P = Policy, std::enable_if_t< P::dimIntersection !=2, int > = 0>
static bool intersection (const Geometry1 &geo1, const Geometry2 &geo2, Intersection &intersection)
 Colliding segment and convex polyhedron. More...
 

Member Typedef Documentation

◆ ctype

template<class Geometry1 , class Geometry2 , class Policy >
using Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >::ctype = typename Policy::ctype

◆ Intersection

template<class Geometry1 , class Geometry2 , class Policy >
using Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >::Intersection = typename Policy::Intersection

◆ Point

template<class Geometry1 , class Geometry2 , class Policy >
using Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >::Point = typename Policy::Point

Member Function Documentation

◆ intersection() [1/2]

template<class Geometry1 , class Geometry2 , class Policy >
template<class P = Policy, std::enable_if_t< P::dimIntersection==2, int > = 0>
static bool Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >::intersection ( const Geometry1 &  geo1,
const Geometry2 &  geo2,
Intersection intersection 
)
inlinestatic

Colliding polygon and convex polyhedron.

Note
First we find the vertex candidates for the intersection region as follows: Add triangle vertices that are inside the tetrahedron Add tetrahedron vertices that are inside the triangle Add all intersection points of tetrahedron edges (codim 2) with the triangle (codim 0) (6*1 tests) Add all intersection points of triangle edges (codim 1) with tetrahedron faces (codim 1) (3*4 tests) Remove duplicate points from the list Compute the convex hull polygon Return a triangulation of that polygon as intersection
Parameters
geo1/geo2The geometries to intersect
intersectionContainer to store the corner points of the polygon (as convex hull)
Note
This overload is used when polygon like intersections are seeked

◆ intersection() [2/2]

template<class Geometry1 , class Geometry2 , class Policy >
template<class P = Policy, std::enable_if_t< P::dimIntersection !=2, int > = 0>
static bool Dumux::GeometryIntersection< Geometry1, Geometry2, Policy, 3, 3, 2 >::intersection ( const Geometry1 &  geo1,
const Geometry2 &  geo2,
Intersection intersection 
)
inlinestatic

Colliding segment and convex polyhedron.

Note
First we find the vertex candidates for the intersection region as follows: Add triangle vertices that are inside the tetrahedron Add tetrahedron vertices that are inside the triangle Add all intersection points of tetrahedron edges (codim 2) with the triangle (codim 0) (6*1 tests) Add all intersection points of triangle edges (codim 1) with tetrahedron faces (codim 1) (3*4 tests) Remove duplicate points from the list Compute the convex hull polygon Return a triangulation of that polygon as intersection
Parameters
geo1/geo2The geometries to intersect
intersectionContainer to store the intersection result
Todo:
implement overloads for segment or point-like intersections

The documentation for this class was generated from the following file: