Mercurial > repos > public > sbplib_julia
annotate docs/src/manifolds_charts_atlases.md @ 2030:fecc92392156 workspaces
Use Pkg's workspace feature
| author | Jonatan Werpers <jonatan@werpers.com> |
|---|---|
| date | Wed, 28 Jan 2026 11:08:17 +0100 |
| parents | d89f7a1a6f37 |
| children |
| 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 ``` |
