quantrs2_device/quantum_network/
entanglement.rs1use 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}