Skip to main content

quantrs2_sim/quantum_gravity_simulation/
quantumgravitysimulator_connections.rs

1//! # QuantumGravitySimulator - connections Methods
2//!
3//! This module contains method implementations for `QuantumGravitySimulator`.
4//!
5//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
6
7use crate::error::{Result, SimulatorError};
8use scirs2_core::random::prelude::*;
9
10use super::types::SpacetimeVertex;
11
12use super::quantumgravitysimulator_type::QuantumGravitySimulator;
13
14impl QuantumGravitySimulator {
15    /// Check if two vertices are causally connected
16    pub(super) fn is_causally_connected(
17        &self,
18        v1: &SpacetimeVertex,
19        v2: &SpacetimeVertex,
20    ) -> Result<bool> {
21        let time_diff = v2.time - v1.time;
22        if time_diff <= 0.0 {
23            return Ok(false);
24        }
25        let spatial_distance_sq: f64 = v1.coordinates[1..]
26            .iter()
27            .zip(&v2.coordinates[1..])
28            .map(|(a, b)| (a - b).powi(2))
29            .sum();
30        let spatial_distance = spatial_distance_sq.sqrt();
31        let light_travel_time = spatial_distance / self.config.speed_of_light;
32        Ok(time_diff >= light_travel_time)
33    }
34}