#[derive(Debug, Clone, PartialEq)]
pub enum DmdwInput {
Disabled,
Enabled(DmdwCalculation),
}
#[derive(Debug, Clone, PartialEq)]
pub struct DmdwCalculation {
pub run: i32,
pub order: i32,
pub temperature_flag: i32,
pub temperature: f64,
pub temperature_max: Option<f64>,
pub calculation_type: i32,
pub self_energy_options: Option<DmdwSelfEnergyOptions>,
pub pdos_options: Option<DmdwPdosOptions>,
pub dym_file: String,
pub path_count: usize,
pub paths: Vec<DmdwPath>,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DmdwSelfEnergyOptions {
pub displacement_option: i32,
pub energy_option: i32,
pub electron_energy: f64,
pub pds_file: String,
pub a2f_file: String,
}
#[derive(Debug, Clone, PartialEq)]
pub struct DmdwPdosOptions {
pub format: i32,
pub write_partial: bool,
pub drop_left_edges: bool,
pub gaussian_broadening_thz: f64,
pub gaussian_resolution_thz: f64,
}
impl Default for DmdwPdosOptions {
fn default() -> Self {
Self {
format: 0,
write_partial: false,
drop_left_edges: false,
gaussian_broadening_thz: 0.500,
gaussian_resolution_thz: 0.001,
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub struct DmdwPath {
pub leg_count: i32,
pub absorber_selector: i32,
pub potentials: Vec<i32>,
pub max_distance: f64,
}