Skip to main content

Crate causal_triangulations

Crate causal_triangulations 

Source
Expand description

Causal Dynamical Triangulations library for quantum gravity simulations.

This library implements Causal Dynamical Triangulations (CDT) in 2D, providing the necessary tools for Monte Carlo simulations of discrete spacetime geometries.

§Key Features

  • Integration with delaunay crate for proper Delaunay triangulations
  • 2D Regge Action calculation for CDT
  • Foliated 2D triangulation construction and validation
  • Foliation-aware 2D ergodic moves backed by bistellar flips
  • Metropolis-Hastings sampling over foliation-aware 2D ergodic moves
  • Volume-profile, Hausdorff-dimension, and spectral-dimension observables for CDT analysis
  • Trace CSV/JSON simulation output and resumable serde-backed CDT/MCMC checkpoints

The crate root re-exports the most common construction, simulation, observable, and error types. Focused preludes under prelude provide smaller import surfaces for documentation, examples, integration tests, and benchmarks.

§Checkpointing

CDT triangulations backed by geometry::DelaunayBackend2D serialize their stable geometry, metadata, foliation, and simulation history while rebuilding transient caches and timestamps on load.

use causal_triangulations::{CheckpointOperation, CdtError};
use causal_triangulations::prelude::triangulation::*;
use serde_json::{from_str, to_string};

fn main() -> CdtResult<()> {
    let tri = CdtTriangulation::from_cdt_strip(4, 3)?;
    let json = to_string(&tri).map_err(|err| CdtError::CheckpointSerializationFailed {
        operation: CheckpointOperation::Serialize,
        target: "triangulation".to_string(),
        detail: err.to_string(),
    })?;
    let restored: CdtTriangulation2D =
        from_str(&json).map_err(|err| CdtError::CheckpointSerializationFailed {
            operation: CheckpointOperation::Deserialize,
            target: "triangulation".to_string(),
            detail: err.to_string(),
        })?;
    restored.validate_topology()?;
    restored.validate_foliation()?;
    restored.validate_causality()?;
    restored.validate_simplex_classification()?;
    assert_eq!(restored.slice_sizes(), &[4, 4, 4]);
    Ok(())
}

§Example

use causal_triangulations::prelude::triangulation::CdtTriangulation;
use causal_triangulations::prelude::errors::CdtResult;

fn main() -> CdtResult<()> {
    let tri = CdtTriangulation::from_toroidal_cdt(4, 3)?;
    assert_eq!(tri.vertex_count(), 12);
    assert!(tri.validate_topology().is_ok());
    assert!(tri.validate_foliation().is_ok());
    Ok(())
}

Re-exports§

pub use cdt::action::ActionConfig;
pub use cdt::action::CDT_1P1_CRITICAL_TRIANGLE_COSMOLOGICAL_CONSTANT;
pub use cdt::action::DEFAULT_CDT_1P1_EDGE_COSMOLOGICAL_CONSTANT;
pub use cdt::action::compute_regge_action;
pub use cdt::ergodic_moves::ErgodicsSystem;
pub use cdt::ergodic_moves::MoveResult;
pub use cdt::ergodic_moves::MoveStatistics;
pub use cdt::ergodic_moves::MoveType;
pub use cdt::foliation::EdgeType;
pub use cdt::foliation::Foliation;
pub use cdt::foliation::FoliationError;
pub use cdt::foliation::SimplexType;
pub use cdt::metropolis::AcceptedStepTelemetry;
pub use cdt::metropolis::CdtMcmcCheckpoint;
pub use cdt::metropolis::CdtProposal;
pub use cdt::metropolis::CdtProposalError;
pub use cdt::metropolis::CdtProposalInfo;
pub use cdt::metropolis::CdtProposalPlan;
pub use cdt::metropolis::CdtTarget;
pub use cdt::metropolis::MetropolisAlgorithm;
pub use cdt::metropolis::MetropolisConfig;
pub use cdt::metropolis::MonteCarloStep;
pub use cdt::metropolis::MonteCarloStepOutcome;
pub use cdt::metropolis::ProposalStatistics;
pub use cdt::metropolis::RejectedProposalStepTelemetry;
pub use cdt::observables::estimate_hausdorff_dimension;
pub use cdt::observables::estimate_spectral_dimension;
pub use cdt::results::Measurement;
pub use cdt::results::SimulationResultsBackend;
pub use cdt::triangulation::CdtSimplexCounts;
pub use cdt::triangulation::CdtTriangulation;
pub use cdt::triangulation::SimulationEvent;
pub use config::CdtConfig;
pub use config::CdtConfigOverrides;
pub use config::CdtTopology;
pub use config::DimensionOverride;
pub use config::TestConfig;
pub use config::ValidatedCdtConfig;
pub use config::ValidatedInitialVolume;
pub use errors::BackendMutationOperation;
pub use errors::CdtError;
pub use errors::CdtResult;
pub use errors::CdtValidationCheck;
pub use errors::CdtValidationFailure;
pub use errors::CheckpointMoveCounter;
pub use errors::CheckpointOperation;
pub use errors::CheckpointResumeFailure;
pub use errors::ConfigurationSetting;
pub use errors::DelaunayValidationLevel;
pub use errors::GenerationParameterIssue;
pub use errors::MeasurementCountField;
pub use errors::MetropolisMoveApplicationFailure;
pub use errors::OutputFormat;
pub use errors::ProposalTelemetryCounter;
pub use errors::ScalarTraceField;
pub use errors::SimplexCountField;
pub use errors::TriangulationMetadataField;
pub use geometry::traits::TriangulationQuery;

Modules§

cdt
Causal Dynamical Triangulations implementation modules.
config
Configuration management for CDT simulations. Configuration management for CDT simulations.
errors
Error types for the CDT library. Error types for the CDT library.
geometry
Geometry abstraction layer for CDT simulations.
prelude
Prelude module for convenient imports.
util
Utility functions for random number generation and mathematical operations. Utility functions for random number generation and mathematical operations.

Enums§

StepOutcome
Outcome of a completed Metropolis-Hastings step.

Functions§

run_simulation
Runs a CDT simulation with an already validated configuration.