use super::options::{ConformerAlgorithm, ForceFieldKind};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum StageKind {
Preprocess,
BuildInitial,
CoarseOptimize,
RotorSearch,
FinalOptimize,
StereoCheck,
}
#[derive(Debug, Clone)]
pub struct ConformerStageReport {
pub stage: StageKind,
pub energy_before: Option<f64>,
pub energy_after: Option<f64>,
pub steps: usize,
pub converged: bool,
pub elapsed_ms: u64,
}
#[derive(Debug, Clone)]
pub struct ConformerReport {
pub embed_algorithm_used: ConformerAlgorithm,
pub forcefield_used: ForceFieldKind,
pub stages: Vec<ConformerStageReport>,
pub warnings: Vec<String>,
pub final_energy: Option<f64>,
}
impl ConformerReport {
pub(crate) fn new(
embed_algorithm_used: ConformerAlgorithm,
forcefield_used: ForceFieldKind,
) -> Self {
Self {
embed_algorithm_used,
forcefield_used,
stages: Vec::new(),
warnings: Vec::new(),
final_energy: None,
}
}
}