annotate docs/src/manifolds_charts_atlases.md @ 1948:dd77b45ee1ac feature/grids/manifolds

Add some docstrings
author Jonatan Werpers <jonatan@werpers.com>
date Fri, 07 Feb 2025 22:37:55 +0100
parents 84e5ab97902d
children 3694f11075c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1922
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
1 # Manifolds, Charts, and Atlases
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
3 To construct grids on more complicated geometries we use manifolds described
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
4 by one or more charts. The charts describe a mapping from some parameter space
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5 to the geometry that we are interested in. If there are more than one chart
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
6 for a given geometry this collection of charts and their connection is
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
7 described by and atlas.
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
8
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
9 For the construction of differential and difference operators on a manifold
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
10 with a chart the library needs to know the Jacobian of the mapping as a
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
11 function of coordinates in the logical parameter space. Internally,
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
12 Diffinitive.jl uses a local Jacobian function, `Grids.jacobian(f, ΞΎ)`. For
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
13 geometry objects provided by the library this function should have fast and
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14 efficient implementations. If you are creating your own mapping functions you
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 can implement `Grids.jacobian` for your function or type, for example
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
16
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
17 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
18 f(x) = 2x
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
19 Grids.jacobian(::typeof(f), x) = fill(2, length(x))
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
20 ```
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
21
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
22 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23 struct F end
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 (::F)(x) = 2x
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 Grids.jacobian(::F, x) = fill(2,length(x))
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 ```
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
27
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28 You can also provide a fallback function using one of the many automatic
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 differentiation packages, for example
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 using ForwardDiff
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
33 Grids.jacobian(f,x) = ForwardDiff.jacobian(f,x)
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
34 ```
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
35
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
36 <!-- What more needs to be said here? --/>