| name | riemann-normal-coordinates |
| description | Constructs Riemann normal coordinates (RNC) at a point on a Riemannian manifold and transforms geometric objects into them using the local_coordinates JAX library. Use when the user centers a computation at a point, exploits the fact that the metric is the identity with vanishing first derivatives at the origin, or needs Taylor coefficients of the exp/log map in terms of the Riemann tensor. |
Riemann normal coordinates
Use this skill when setting up RNC at a point p. RNC are defined by v(q) = E^{-1} o log_p(q) where E is an orthonormal frame at p.
Properties at the origin
In RNC centered at p, at v = 0:
g_{ij}(0) = delta_{ij}.
d g_{ij} / d v^k | _{v=0} = 0.
Gamma^k_{ij}(0) = 0.
- Geodesics through the origin are straight lines
gamma(t) = t v.
Second-order structure
The metric Taylor expansion is g_{ij}(v) = delta_{ij} + (1/3) R_{kilj}(p) v^k v^l + O(|v|^3), so
d^2 g_{ij} / d v^a d v^b | _{v=0} = (1/3) (R_{aibj}(p) + R_{biaj}(p))
and d^2 log det g / d v^i d v^j | _{v=0} = -(2/3) Ric_{ij}.
Coordinate transformation coefficients
For the map x(v) from RNC back to the original coordinates:
- First order:
dx^i / dv^j = J^i_j where J is the orthonormal frame.
- Second order:
d^2 x^i / d v^j d v^k = - Gamma_bar^i_{ab} J^a_j J^b_k.
- Third order: a symmetrized combination of the gradient of Christoffels and a
Gamma Gamma term. See the reference for the explicit form.
For the full derivation, see references/REFERENCE.md. The script at scripts/sanity_check.py verifies the origin properties and the Taylor coefficient identities.