quantrs2_device/quantum_network/
entanglement.rs

1//! Entanglement distribution and management protocols
2
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::Duration;
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
8pub struct EntanglementGenerationConfig {
9    pub source_type: String,
10    pub generation_rate: f64,
11    pub fidelity_target: f64,
12    pub entanglement_type: String,
13}
14
15impl Default for EntanglementGenerationConfig {
16    fn default() -> Self {
17        Self {
18            source_type: "SPDC".to_string(),
19            generation_rate: 1000.0,
20            fidelity_target: 0.95,
21            entanglement_type: "Bell_state".to_string(),
22        }
23    }
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
27pub struct EntanglementPurificationConfig {
28    pub purification_protocol: String,
29    pub fidelity_target: f64,
30    pub maximum_rounds: u32,
31    pub resource_efficiency: f64,
32}
33
34impl Default for EntanglementPurificationConfig {
35    fn default() -> Self {
36        Self {
37            purification_protocol: "DEJMPS".to_string(),
38            fidelity_target: 0.99,
39            maximum_rounds: 5,
40            resource_efficiency: 0.8,
41        }
42    }
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
46pub struct EntanglementSwappingConfig {
47    pub swapping_protocol: String,
48    pub fidelity_preservation: f64,
49    pub network_topology_aware: bool,
50}
51
52impl Default for EntanglementSwappingConfig {
53    fn default() -> Self {
54        Self {
55            swapping_protocol: "standard".to_string(),
56            fidelity_preservation: 0.95,
57            network_topology_aware: true,
58        }
59    }
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
63pub struct EntanglementStorageConfig {
64    pub storage_method: String,
65    pub storage_time: Duration,
66    pub retrieval_efficiency: f64,
67}
68
69impl Default for EntanglementStorageConfig {
70    fn default() -> Self {
71        Self {
72            storage_method: "quantum_memory".to_string(),
73            storage_time: Duration::from_millis(100),
74            retrieval_efficiency: 0.9,
75        }
76    }
77}
78
79#[derive(Debug, Clone, Serialize, Deserialize)]
80pub struct EntanglementQualityConfig {
81    pub fidelity_threshold: f64,
82    pub entanglement_verification: String,
83    pub quality_monitoring_interval: Duration,
84}
85
86impl Default for EntanglementQualityConfig {
87    fn default() -> Self {
88        Self {
89            fidelity_threshold: 0.9,
90            entanglement_verification: "process_tomography".to_string(),
91            quality_monitoring_interval: Duration::from_secs(1),
92        }
93    }
94}