circuits-diff
Safe HaskellNone
LanguageGHC2024

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

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).

Constructors

DiagonalMetric 

Fields

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^ρ_{σρν}.