mod charge;
mod potential;
pub use charge::{
BasisType, ChargeMethod, DampingStrategy, EmbeddedQeqConfig, HybridConfig, LigandChargeConfig,
LigandQeqMethod, NucleicScheme, ProteinScheme, QeqConfig, ResidueSelector, SolverOptions,
WaterScheme,
};
pub use potential::{AnglePotentialType, BondPotentialType, VdwPotentialType};
#[derive(Debug, Clone)]
pub struct ForgeConfig {
pub rules: Option<String>,
pub params: Option<String>,
pub charge_method: ChargeMethod,
pub bond_potential: BondPotentialType,
pub angle_potential: AnglePotentialType,
pub vdw_potential: VdwPotentialType,
}
impl Default for ForgeConfig {
fn default() -> Self {
Self {
rules: None,
params: None,
charge_method: ChargeMethod::None,
bond_potential: BondPotentialType::Harmonic,
angle_potential: AnglePotentialType::Cosine,
vdw_potential: VdwPotentialType::LennardJones,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn default_config_values() {
let config = ForgeConfig::default();
assert!(config.rules.is_none());
assert!(config.params.is_none());
assert!(matches!(config.charge_method, ChargeMethod::None));
assert_eq!(config.bond_potential, BondPotentialType::Harmonic);
assert_eq!(config.angle_potential, AnglePotentialType::Cosine);
assert_eq!(config.vdw_potential, VdwPotentialType::LennardJones);
}
}