![]() |
Dune-Fufem 2.11-git
|
Loading...
Searching...
No Matches
polyhedrondistance.hh File Reference
#include <dune/common/dynvector.hh>#include <dune/common/dynmatrix.hh>#include <dune/fufem/geometry/convexpolyhedron.hh>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 | ||
| ) |
