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))
- differentiate²UncertainWebFunction :: forall x y. (WithField ℝ Manifold x, FlatSpace (Needle x), WithField ℝ Refinable y, Geodesic y, FlatSpace (Needle y)) => PointsWeb x (Shade' y) -> PointsWeb x (Shade' (Needle x `⊗〃+>` Needle y))
- iterateFilterDEqn_static :: (WithField ℝ Manifold x, FlatSpace (Needle x), Refinable y, Geodesic y, FlatSpace (Needle y), WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð), MonadPlus m) => InformationMergeStrategy [] m (x, Shade' y) iy -> Embedding (->) (Shade' y) iy -> DifferentialEqn x ð y -> PointsWeb x (Shade' y) -> Cofree m (PointsWeb x (Shade' y))
- filterDEqnSolutions_adaptive :: forall x y ð badness m. (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð), 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, WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð)) => 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
- newtype InformationMergeStrategy n m y' y = InformationMergeStrategy {
- mergeInformation :: y -> n y' -> m y
- naïve :: (NonEmpty y -> y) -> InformationMergeStrategy [] Identity (x, y) y
- inconsistencyAware :: (NonEmpty y -> m y) -> InformationMergeStrategy [] m (x, y) y
- indicateInconsistencies :: (NonEmpty υ -> Maybe υ) -> InformationMergeStrategy [] (Except (PropagationInconsistency x υ)) (x, υ) υ
- data PropagationInconsistency x υ
- = PropagationInconsistency {
- _inconsistentPropagatedData :: [(x, υ)]
- _inconsistentAPrioriData :: υ
- | PropagationInconsistencies [PropagationInconsistency x υ]
- = PropagationInconsistency {
- data ConvexSet x
- = EmptyConvex
- | ConvexSet {
- convexSetHull :: Shade' x
- convexSetIntersectors :: [Shade' x]
- ellipsoid :: Shade' x -> ConvexSet x
- ellipsoidSet :: Embedding (->) (Maybe (Shade' x)) (ConvexSet x)
- coerceWebDomain :: forall a b y. (Manifold a, Manifold b, LocallyCoercible a b) => PointsWeb a y -> PointsWeb b y
- rescanPDEOnWeb :: (WithField ℝ Manifold x, FlatSpace (Needle x), WithField ℝ Refinable y, Geodesic y, FlatSpace (Needle y), Applicative m) => InconsistencyStrategy m x (Shade' y, Shade' ð) -> DifferentialEqn x ð y -> PointsWeb x (Shade' y) -> m (PointsWeb x (Shade' y, Shade' ð))
- rescanPDELocally :: forall x y ð. (WithField ℝ Manifold x, FlatSpace (Needle x), WithField ℝ Refinable y, Geodesic y, FlatSpace (Needle y)) => DifferentialEqn x ð y -> WebLocally x (Shade' y) -> (Maybe (Shade' y), Maybe (Shade' ð))
- webOnions :: forall x y. WithField ℝ Manifold x => PointsWeb x y -> PointsWeb x [[(x, 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
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
differentiate²UncertainWebFunction :: forall x y. (WithField ℝ Manifold x, FlatSpace (Needle x), WithField ℝ Refinable y, Geodesic y, FlatSpace (Needle y)) => PointsWeb x (Shade' y) -> PointsWeb x (Shade' (Needle x `⊗〃+>` Needle y)) Source
Differential equations
Fixed resolution
iterateFilterDEqn_static :: (WithField ℝ Manifold x, FlatSpace (Needle x), Refinable y, Geodesic y, FlatSpace (Needle y), WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð), MonadPlus m) => InformationMergeStrategy [] m (x, Shade' y) iy -> Embedding (->) (Shade' y) iy -> DifferentialEqn x ð y -> PointsWeb x (Shade' y) -> Cofree m (PointsWeb x (Shade' y)) Source
Automatic resolution
filterDEqnSolutions_adaptive Source
:: (WithField ℝ Manifold x, SimpleSpace (Needle x), WithField ℝ AffineManifold y, Refinable y, Geodesic y, WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð), 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, WithField ℝ AffineManifold ð, Geodesic ð, SimpleSpace (Needle ð)) | |
=> 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
newtype InformationMergeStrategy n m y' y Source
InformationMergeStrategy | |
|
naïve :: (NonEmpty y -> y) -> InformationMergeStrategy [] Identity (x, y) y Source
inconsistencyAware :: (NonEmpty y -> m y) -> InformationMergeStrategy [] m (x, y) y Source
indicateInconsistencies :: (NonEmpty υ -> Maybe υ) -> InformationMergeStrategy [] (Except (PropagationInconsistency x υ)) (x, υ) υ Source
data PropagationInconsistency x υ Source
PropagationInconsistency | |
| |
PropagationInconsistencies [PropagationInconsistency x υ] |
(Show x, Show υ) => Show (PropagationInconsistency x υ) Source | |
Monoid (PropagationInconsistency x υ) Source |
Misc
EmptyConvex | |
ConvexSet | |
|
ellipsoidSet :: Embedding (->) (Maybe (Shade' x)) (ConvexSet x) Source
coerceWebDomain :: forall a b y. (Manifold a, Manifold b, LocallyCoercible a b) => PointsWeb a y -> PointsWeb b y Source
rescanPDEOnWeb :: (WithField ℝ Manifold x, FlatSpace (Needle x), WithField ℝ Refinable y, Geodesic y, FlatSpace (Needle y), Applicative m) => InconsistencyStrategy m x (Shade' y, Shade' ð) -> DifferentialEqn x ð y -> PointsWeb x (Shade' y) -> m (PointsWeb x (Shade' y, Shade' ð)) Source