quantrs2_sim/quantum_gravity_simulation/
quantumgravitysimulator_connections.rs1use crate::error::{Result, SimulatorError};
8use scirs2_core::random::prelude::*;
9
10use super::types::SpacetimeVertex;
11
12use super::quantumgravitysimulator_type::QuantumGravitySimulator;
13
14impl QuantumGravitySimulator {
15 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}