Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
polyhedrondistance.hh File Reference

Go to the source code of this file.

Functions

template<class Coordinate , class Matrix >
void populateMatrix (ConvexPolyhedron< Coordinate > const &segment, Matrix &matrix)
 
template<class Coordinate >
void approximate (Coordinate const &target, Dune::DynamicMatrix< double > const &A, Dune::DynamicVector< double > const &l, ConvexPolyhedron< Coordinate > const &segment, Dune::DynamicVector< double > &sol)
 
template<class Coordinate >
double distance (const Coordinate &target, const ConvexPolyhedron< Coordinate > &segment, double correctionTolerance, size_t maxIterations=1000)
 
template<class Coordinate >
double distance (const ConvexPolyhedron< Coordinate > &s1, const ConvexPolyhedron< Coordinate > &s2, double valueCorrectionTolerance, size_t maxIterations=1000)
 
template<class Geometry >
double distance (typename Geometry::GlobalCoordinate const &point, Geometry const &geo, double valueCorrectionTolerance)
 
template<class Geometry >
double distance (ConvexPolyhedron< typename Geometry::GlobalCoordinate > const &p1, Geometry const &geo, double valueCorrectionTolerance, size_t maxIterations=1000)
 

Function Documentation

◆ approximate()

template<class Coordinate >
void approximate ( Coordinate const &  target,
Dune::DynamicMatrix< double > const &  A,
Dune::DynamicVector< double > const &  l,
ConvexPolyhedron< Coordinate > const &  segment,
Dune::DynamicVector< double > &  sol 
)

The functional to be minimized is

\[ 0.5*|\sum_i \lambda_i corner_i - target|^2 \]

where \(\lambda_i\) are barycentric coordinates, i.e.

\[ 0 \le \lambda_i \le 1 \text{ and }\sum_i \lambda_i=1 \]

The resulting quadratic minimization problem is given by

\[ 0.5 \lambda^T*A*\lambda - l^T*\lambda \]

with \(A_ij = (corner_i,corner_j)\) and \(l_i = (corner_i, target)\).

◆ distance() [1/4]

template<class Coordinate >
double distance ( const ConvexPolyhedron< Coordinate > &  s1,
const ConvexPolyhedron< Coordinate > &  s2,
double  valueCorrectionTolerance,
size_t  maxIterations = 1000 
)

◆ distance() [2/4]

template<class Coordinate >
double distance ( const Coordinate &  target,
const ConvexPolyhedron< Coordinate > &  segment,
double  correctionTolerance,
size_t  maxIterations = 1000 
)

◆ distance() [3/4]

template<class Geometry >
double distance ( ConvexPolyhedron< typename Geometry::GlobalCoordinate > const &  p1,
Geometry const &  geo,
double  valueCorrectionTolerance,
size_t  maxIterations = 1000 
)

◆ distance() [4/4]

template<class Geometry >
double distance ( typename Geometry::GlobalCoordinate const &  point,
Geometry const &  geo,
double  valueCorrectionTolerance 
)

◆ populateMatrix()

template<class Coordinate , class Matrix >
void populateMatrix ( ConvexPolyhedron< Coordinate > const &  segment,
Matrix &  matrix 
)