Skip to main content

qualia_core_db/specialized_libs/chemistry_modeling/
metrics.rs

1use super::*;
2
3/// Chemistry performance monitor
4pub struct ChemistryPerformanceMonitor {
5    simulation_metrics: SimulationMetrics,
6    quantum_metrics: QuantumMetrics,
7    reaction_metrics: ReactionMetrics,
8    property_metrics: PropertyMetrics,
9}
10
11/// Simulation metrics
12#[derive(Debug, Clone)]
13pub struct SimulationMetrics {
14    pub total_simulations: u64,
15    pub average_simulation_time: f64,
16    pub energy_conservation: f64,
17    pub temperature_stability: f64,
18    pub computational_efficiency: f64,
19}
20
21/// Quantum metrics
22#[derive(Debug, Clone)]
23pub struct QuantumMetrics {
24    pub total_calculations: u64,
25    pub average_convergence_time: f64,
26    pub scf_convergence_rate: f64,
27    pub basis_set_efficiency: f64,
28}
29
30/// Reaction metrics
31#[derive(Debug, Clone)]
32pub struct ReactionMetrics {
33    pub total_reactions: u64,
34    pub average_calculation_time: f64,
35    pub rate_constant_accuracy: f64,
36    pub thermodynamic_accuracy: f64,
37}
38
39/// Property metrics
40#[derive(Debug, Clone)]
41pub struct PropertyMetrics {
42    pub total_predictions: u64,
43    pub average_prediction_time: f64,
44    pub prediction_accuracy: f64,
45    pub model_coverage: f64,
46}
47
48impl ChemistryPerformanceMonitor {
49    pub fn new() -> Self {
50        Self {
51            simulation_metrics: SimulationMetrics::new(),
52            quantum_metrics: QuantumMetrics::new(),
53            reaction_metrics: ReactionMetrics::new(),
54            property_metrics: PropertyMetrics::new(),
55        }
56    }
57
58    pub fn get_metrics(&self) -> ChemistryPerformanceMetrics {
59        ChemistryPerformanceMetrics {
60            simulation_metrics: self.simulation_metrics.clone(),
61            quantum_metrics: self.quantum_metrics.clone(),
62            reaction_metrics: self.reaction_metrics.clone(),
63            property_metrics: self.property_metrics.clone(),
64            total_simulations: self.simulation_metrics.total_simulations,
65            average_computation_time: self.simulation_metrics.average_simulation_time,
66            average_accuracy: self.simulation_metrics.computational_efficiency,
67            convergence_rate: 0.0,
68        }
69    }
70}
71
72impl SimulationMetrics {
73    pub fn new() -> Self {
74        Self {
75            total_simulations: 0,
76            average_simulation_time: 0.0,
77            energy_conservation: 0.99,
78            temperature_stability: 0.95,
79            computational_efficiency: 0.85,
80        }
81    }
82}
83
84impl QuantumMetrics {
85    pub fn new() -> Self {
86        Self {
87            total_calculations: 0,
88            average_convergence_time: 0.0,
89            // not measured (scaffold defaults; no SCF/basis-set statistics are tracked)
90            scf_convergence_rate: 0.0,
91            basis_set_efficiency: 0.0,
92        }
93    }
94}
95
96impl ReactionMetrics {
97    pub fn new() -> Self {
98        Self {
99            total_reactions: 0,
100            average_calculation_time: 0.0,
101            rate_constant_accuracy: 0.0, // not measured (scaffold default; no validation performed)
102            thermodynamic_accuracy: 0.0,
103        }
104    }
105}
106
107impl PropertyMetrics {
108    pub fn new() -> Self {
109        Self {
110            total_predictions: 0,
111            average_prediction_time: 0.0,
112            prediction_accuracy: 0.0, // not measured (scaffold default; no validation performed)
113            model_coverage: 0.75,
114        }
115    }
116}