40inline constexpr int DIM = 4;
57 std::array<std::array<double, DIM>,
DIM>
g{};
64 [[nodiscard]]
bool is_valid() const noexcept;
89 [[nodiscard]]
bool is_finite() const noexcept;
108 return lambda *
DIM *
DIM + mu *
DIM + nu;
139 [[nodiscard]] std::optional<
Regime>
160 [[nodiscard]] std::array<
double, NUM_CHRISTOFFEL>
161 christoffelSymbols(const
MetricTensor& metric) const noexcept;
SpacetimeManifold() noexcept=default
Regime
Market relativistic regime classification.
@ Subluminal
Catch-all: |β| ≥ 0 and < BETA_MAX_SAFE.
@ Newtonian
|β| < 0.1 — classical approximation valid
@ Relativistic
0.1 ≤ |β| < 0.9 — corrections needed
@ HighGamma
0.9 ≤ |β| < 0.9999 — extreme Lorentz contraction
constexpr int NUM_CHRISTOFFEL
Total Christoffel symbols: DIM³ = 64.
constexpr int DIM
Number of spacetime dimensions.
constexpr int christoffel_index(int lambda, int mu, int nu) noexcept
Pack (λ, μ, ν) into flat index in [0, 64).
Symmetric 4×4 spacetime metric tensor g_{μν}.
std::array< std::array< double, DIM >, DIM > g
std::optional< MetricTensor > inverse_diagonal() const noexcept
bool is_valid() const noexcept
static MetricTensor minkowski() noexcept
Construct the flat Minkowski metric η = diag(−1,+1,+1,+1).
A point in 4D spacetime (t, x, y, z).