Copyright | (c) Justus Sagemüller 2016 |
---|---|
License | GPL v3 |
Maintainer | (@) sagemueller $ geo.uni-koeln.de |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
- data PointsWeb :: * -> * -> *
- fromWebNodes :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => MetricChoice x -> [(x, y)] -> PointsWeb x y
- fromShadeTree_auto :: forall x. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => ShadeTree x -> PointsWeb x ()
- fromShadeTree :: forall x. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => (Shade x -> Metric x) -> ShadeTree x -> PointsWeb x ()
- fromShaded :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => MetricChoice x -> (x `Shaded` y) -> PointsWeb x y
- nearestNeighbour :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> x -> Maybe (x, y)
- indexWeb :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> WebNodeId -> Maybe (x, y)
- webEdges :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> [((x, y), (x, y))]
- toGraph :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> (Graph, Vertex -> (x, y))
- sliceWeb_lin :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x), Geodesic x, Geodesic y) => PointsWeb x y -> Cutplane x -> [(x, y)]
- sampleWeb_2Dcartesian_lin :: (x ~ ℝ, y ~ ℝ, Geodesic z) => PointsWeb (x, y) z -> ((x, x), Int) -> ((y, y), Int) -> [(y, [(x, Maybe z)])]
- sampleEntireWeb_2Dcartesian_lin :: (x ~ ℝ, y ~ ℝ, Geodesic z) => PointsWeb (x, y) z -> Int -> Int -> [(y, [(x, Maybe z)])]
- localFocusWeb :: WithField ℝ Manifold x => PointsWeb x y -> PointsWeb x ((x, y), [(Needle x, y)])
- differentiateUncertainWebFunction :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ Manifold y, SimpleSpace (Needle y), Refinable y) => PointsWeb x (Shade' y) -> PointsWeb x (Shade' (LocalLinear x y))
- filterDEqnSolution_static :: forall x y m. (WithField ℝ Manifold x, SimpleSpace (Needle x), Refinable y, Geodesic (Interior y)) => InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> PointsWeb x (Shade' y) -> m (PointsWeb x (Shade' y))
- iterateFilterDEqn_static :: (WithField ℝ Manifold x, SimpleSpace (Needle x), Refinable y, Geodesic (Interior y), Applicative m) => InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> PointsWeb x (Shade' y) -> [PointsWeb x (Shade' y)]
- filterDEqnSolutions_adaptive :: forall x y badness m. (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, badness ~ ℝ, Monad m) => MetricChoice x -> InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> (x -> Shade' y -> badness) -> PointsWeb x (SolverNodeState x y) -> m (PointsWeb x (SolverNodeState x y))
- iterateFilterDEqn_adaptive :: (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, Monad m) => MetricChoice x -> InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> (x -> Shade' y -> ℝ) -> PointsWeb x (Shade' y) -> [PointsWeb x (Shade' y)]
- data InconsistencyStrategy m x y where
- data ConvexSet x
- = EmptyConvex
- | ConvexSet {
- convexSetHull :: Shade' x
- convexSetIntersectors :: [Shade' x]
- ellipsoid :: Shade' x -> ConvexSet x
- coerceWebDomain :: forall a b y. (Manifold a, Manifold b, LocallyCoercible a b) => PointsWeb a y -> PointsWeb b y
The web data type
data PointsWeb :: * -> * -> * Source
A PointsWeb
is almost, but not quite a mesh. It is a stongly connected†
directed graph, backed by a tree for fast nearest-neighbour lookup of points.
†In general, there can be disconnected components, but every connected component is strongly connected.
Functor (PointsWeb a) Source | |
Foldable (PointsWeb a) Source | |
Traversable (PointsWeb a) Source | |
Foldable (PointsWeb x) (->) (->) Source | |
Traversable (PointsWeb x) (PointsWeb x) (->) (->) Source | |
Generic (PointsWeb a b) Source | |
(NFData x, NFData (Metric x), NFData (Needle' x), NFData y) => NFData (PointsWeb x y) Source | |
type TraversalObject (->) (PointsWeb x) b = () | |
type Rep (PointsWeb a b) Source |
Construction
fromWebNodes :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => MetricChoice x -> [(x, y)] -> PointsWeb x y Source
fromShadeTree_auto :: forall x. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => ShadeTree x -> PointsWeb x () Source
fromShadeTree :: forall x. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => (Shade x -> Metric x) -> ShadeTree x -> PointsWeb x () Source
:: (WithField ℝ Manifold x, SimpleSpace (Needle x)) | |
=> MetricChoice x | Local scalar-product generator. You can always
use |
-> (x `Shaded` y) | Source tree. |
-> PointsWeb x y |
Lookup
nearestNeighbour :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> x -> Maybe (x, y) Source
indexWeb :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> WebNodeId -> Maybe (x, y) Source
webEdges :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> [((x, y), (x, y))] Source
toGraph :: (WithField ℝ Manifold x, SimpleSpace (Needle x)) => PointsWeb x y -> (Graph, Vertex -> (x, y)) Source
Decomposition
sliceWeb_lin :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x), Geodesic x, Geodesic y) => PointsWeb x y -> Cutplane x -> [(x, y)] Source
Fetch a point between any two neighbouring web nodes on opposite sides of the plane, and linearly interpolate the values onto the cut plane.
sampleWeb_2Dcartesian_lin :: (x ~ ℝ, y ~ ℝ, Geodesic z) => PointsWeb (x, y) z -> ((x, x), Int) -> ((y, y), Int) -> [(y, [(x, Maybe z)])] Source
sampleEntireWeb_2Dcartesian_lin :: (x ~ ℝ, y ~ ℝ, Geodesic z) => PointsWeb (x, y) z -> Int -> Int -> [(y, [(x, Maybe z)])] Source
Local environments
localFocusWeb :: WithField ℝ Manifold x => PointsWeb x y -> PointsWeb x ((x, y), [(Needle x, y)]) Source
Uncertain functions
differentiateUncertainWebFunction :: forall x y. (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ Manifold y, SimpleSpace (Needle y), Refinable y) => PointsWeb x (Shade' y) -> PointsWeb x (Shade' (LocalLinear x y)) Source
Differential equations
Fixed resolution
filterDEqnSolution_static :: forall x y m. (WithField ℝ Manifold x, SimpleSpace (Needle x), Refinable y, Geodesic (Interior y)) => InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> PointsWeb x (Shade' y) -> m (PointsWeb x (Shade' y)) Source
iterateFilterDEqn_static :: (WithField ℝ Manifold x, SimpleSpace (Needle x), Refinable y, Geodesic (Interior y), Applicative m) => InconsistencyStrategy m x (Shade' y) -> DifferentialEqn x y -> PointsWeb x (Shade' y) -> [PointsWeb x (Shade' y)] Source
Automatic resolution
filterDEqnSolutions_adaptive Source
:: (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, badness ~ ℝ, Monad m) | |
=> MetricChoice x | Scalar product on the domain, for regularising the web. |
-> InconsistencyStrategy m x (Shade' y) | |
-> DifferentialEqn x y | |
-> (x -> Shade' y -> badness) | |
-> PointsWeb x (SolverNodeState x y) | |
-> m (PointsWeb x (SolverNodeState x y)) |
iterateFilterDEqn_adaptive Source
:: (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, Monad m) | |
=> MetricChoice x | Scalar product on the domain, for regularising the web. |
-> InconsistencyStrategy m x (Shade' y) | |
-> DifferentialEqn x y | |
-> (x -> Shade' y -> ℝ) | Badness function for local results. |
-> PointsWeb x (Shade' y) | |
-> [PointsWeb x (Shade' y)] |
Configuration
data InconsistencyStrategy m x y where Source
Misc
EmptyConvex | |
ConvexSet | |
|
coerceWebDomain :: forall a b y. (Manifold a, Manifold b, LocallyCoercible a b) => PointsWeb a y -> PointsWeb b y Source