#![allow(dead_code)]
use super::IsotropicTwobodyEnergy;
use crate::Cutoff;
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(
feature = "serde",
derive(Deserialize, Serialize),
serde(deny_unknown_fields)
)]
pub struct Morse {
#[cfg_attr(feature = "serde", serde(rename = "req"))]
equilibrium_distance: f64,
#[cfg_attr(feature = "serde", serde(rename = "d"))]
well_depth: f64,
#[cfg_attr(feature = "serde", serde(rename = "k"))]
force_constant: f64,
}
impl Morse {
pub const fn new(equilibrium_distance: f64, well_depth: f64, force_constant: f64) -> Self {
Self {
equilibrium_distance,
well_depth,
force_constant,
}
}
}
impl IsotropicTwobodyEnergy for Morse {
#[inline(always)]
fn isotropic_twobody_energy(&self, _distance_squared: f64) -> f64 {
todo!("Morse potential is not yet implemented");
}
}
impl Cutoff for Morse {
fn cutoff(&self) -> f64 {
f64::INFINITY
}
}