annotate docs/src/manifolds_charts_atlases.md @ 1996:d89f7a1a6f37 feature/grids/manifolds

Add some notation to the docs page
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 23 Apr 2025 09:02:20 +0200
parents c4dc1bed0a81
children
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
1996
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
4 by one or more charts. The charts describe a mapping from a logical parameter
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
5 space to the geometry that we are interested in. If there are more than one
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
6 chart for a given geometry this collection of charts and how they are
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
7 connected is described by an atlas.
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
8
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
9 We consider a mapping from the logical coordidinates ``\xi \in \Xi`` to the
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
10 physical coordinates ``x \in \Omega``. A `Chart` describes the mapping by a
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
11 `ParameterSpace` respresenting ``\Xi`` and some mapping object that takes
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
12 arguments ``\xi \in \Xi`` and returns coordinates ``x\in\Omega``. The mapping
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
13 object can either be a function or some other callable object.
1922
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
14
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
15 For the construction of differential and difference operators on a manifold
1996
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
16 with a chart the library needs to know the Jacobian,
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
17 ``\frac{\partial x}{\partial \xi}``, of the mapping as a function of
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
18 coordinates in the logical parameter space. Internally, Diffinitive.jl uses a
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
19 local Jacobian function, `Grids.jacobian(f, ΞΎ)`. For geometry objects provided
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
20 by the library this function should have fast and efficient implementations.
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
21 If you are creating your own mapping functions you must implement
d89f7a1a6f37 Add some notation to the docs page
Jonatan Werpers <jonatan@werpers.com>
parents: 1988
diff changeset
22 `Grids.jacobian` for your function or type, for example
1922
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
23
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
24 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
25 f(x) = 2x
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
26 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
27 ```
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
28
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
29 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
30 struct F end
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
31 (::F)(x) = 2x
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
32 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
33 ```
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 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
36 differentiation packages, for example
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
37
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
38 ```julia
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
39 using ForwardDiff
84e5ab97902d Add sketch of a docs page about manifolds, charts, and atalses
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
40 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
41 ```