pub struct SolverOptions {
pub tolerance: f64,
pub max_iterations: u32,
pub lambda_scale: f64,
pub hydrogen_scf: bool,
pub basis_type: BasisType,
pub damping: DampingStrategy,
}Expand description
Configuration parameters for the charge equilibration solver.
This struct encapsulates the numerical settings that control the iterative solution process in the QEq algorithm. Users can adjust these parameters to balance convergence speed with accuracy for different molecular systems and computational requirements.
Fields§
§tolerance: f64The convergence tolerance for charge equilibration.
The solver iterates until the root-mean-square change in atomic charges between successive iterations falls below this threshold. Smaller values yield more accurate results but require more iterations.
max_iterations: u32The maximum number of iterations allowed.
If convergence is not achieved within this limit, the solver will terminate and return the current best estimate. This prevents infinite loops in difficult cases.
lambda_scale: f64The screening parameter scale factor.
This multiplier adjusts the orbital screening strength in Coulomb integral calculations.
It corresponds to the λ parameter in the Rappe & Goddard paper.
The original paper suggests a value of ~0.4913, often rounded to 0.5.
hydrogen_scf: boolWhether to update hydrogen hardness each iteration (nonlinear SCF term).
When disabled, hydrogen uses a fixed hardness (lossy simplification). Enabled by default.
basis_type: BasisTypeThe type of basis functions to use for Coulomb integrals.
Defaults to BasisType::Sto (Slater-Type Orbitals) for maximum accuracy.
damping: DampingStrategyThe damping strategy for the SCF iteration.
Controls how charge updates are mixed between iterations to ensure convergence.
Trait Implementations§
Source§impl Clone for SolverOptions
impl Clone for SolverOptions
Source§fn clone(&self) -> SolverOptions
fn clone(&self) -> SolverOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SolverOptions
impl Debug for SolverOptions
Source§impl Default for SolverOptions
impl Default for SolverOptions
Source§fn default() -> SolverOptions
fn default() -> SolverOptions
Source§impl PartialEq for SolverOptions
impl PartialEq for SolverOptions
impl Copy for SolverOptions
impl StructuralPartialEq for SolverOptions
Auto Trait Implementations§
impl Freeze for SolverOptions
impl RefUnwindSafe for SolverOptions
impl Send for SolverOptions
impl Sync for SolverOptions
impl Unpin for SolverOptions
impl UnwindSafe for SolverOptions
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.