| Safe Haskell | None |
|---|---|
| Language | GHC2024 |
Circuit.Diff.Curvature
Description
Riemann curvature from a Levi-Civita connection.
Following the classical identity (Albert arXiv:2312.02664 Def. 6)
R^ρ_{σμν} = ∂_μ Γ^ρ_{νσ} − ∂_ν Γ^ρ_{μσ} + Γ^ρ_{μλ} Γ^λ_{νσ} − Γ^ρ_{νλ} Γ^λ_{μσ}built on christoffel2D for 2-D coordinate metrics, plus a diagonal-metric
path for the 4-D Schwarzschild vacuum oracle.
Synopsis
- type Gamma2D a = (a, a, a, a, a, a, a, a)
- gamma2DAt :: Field a => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Gamma2D a
- riemann2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Int -> Int -> Int -> Int -> a
- ricci2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Int -> Int -> a
- ricciScalar2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> a
- sphereMetricLower :: TrigField a => Diff' ((a, a), (a, a)) (a, a)
- sphereMetricRaise :: TrigField a => Diff' ((a, a), (a, a)) (a, a)
- data DiagonalMetric a = DiagonalMetric {}
- schwarzschildMetric :: TrigField a => a -> DiagonalMetric a
- gammaDiagonal :: Field a => DiagonalMetric a -> [a] -> Int -> Int -> Int -> a
- riemannDiagonal :: (Field a, FromInteger a) => DiagonalMetric a -> [a] -> Int -> Int -> Int -> Int -> a
- ricciDiagonal :: (Field a, FromInteger a) => DiagonalMetric a -> [a] -> Int -> Int -> a
2-D Riemann / Ricci
type Gamma2D a = (a, a, a, a, a, a, a, a) Source #
Packed Christoffel symbols Γ^c_{ab} for a 2-D chart (c,a,b ∈ {0,1}).
gamma2DAt :: Field a => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Gamma2D a Source #
riemann2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Int -> Int -> Int -> Int -> a Source #
Riemann component R^ρ_{σμν} at a point (2-D).
R^ρ_{σμν} = ∂_μ Γ^ρ_{νσ} − ∂_ν Γ^ρ_{μσ}
+ Γ^ρ_{μλ} Γ^λ_{νσ} − Γ^ρ_{νλ} Γ^λ_{μσ}ricci2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> Int -> Int -> a Source #
Ricci R_{σν} = R^ρ_{σρν} (sum on ρ).
ricciScalar2D :: (Field a, FromInteger a) => Diff' ((a, a), (a, a)) (a, a) -> Diff' ((a, a), (a, a)) (a, a) -> (a, a) -> a Source #
Ricci scalar R = g^{σν} R_{σν}.
2-D metrics
sphereMetricLower :: TrigField a => Diff' ((a, a), (a, a)) (a, a) Source #
Unit 2-sphere metric in spherical coordinates (θ, φ).
ds² = dθ² + sin²θ dφ². Analytic Ricci scalar is 2.
sphereMetricRaise :: TrigField a => Diff' ((a, a), (a, a)) (a, a) Source #
Diagonal n-D (Schwarzschild)
data DiagonalMetric a Source #
A diagonal metric given by its diagonal components g_ii(x) and their
first partials ∂_j g_ii(x) (no sum).
schwarzschildMetric :: TrigField a => a -> DiagonalMetric a Source #
Schwarzschild metric outside the horizon (r > 2M).
Coordinates (t, r, θ, φ); rs = 2M is the Schwarzschild radius.
g = diag( −(1−rs/r), 1/(1−rs/r), r², r² sin²θ )
gammaDiagonal :: Field a => DiagonalMetric a -> [a] -> Int -> Int -> Int -> a Source #
Christoffel Γ^c_{ab} for a diagonal metric.
Γ^c_{ab} = ½ g^{cc} (∂_a g_{bc} + ∂_b g_{ac} − ∂_c g_{ab}) (no sum on c)riemannDiagonal :: (Field a, FromInteger a) => DiagonalMetric a -> [a] -> Int -> Int -> Int -> Int -> a Source #
Riemann R^ρ_{σμν} for a diagonal metric.
ricciDiagonal :: (Field a, FromInteger a) => DiagonalMetric a -> [a] -> Int -> Int -> a Source #
Ricci R_{σν} = R^ρ_{σρν}.