pub struct ConvergenceStatus {
pub de_converged: bool,
pub rms_grad_converged: bool,
pub max_grad_converged: bool,
pub rms_disp_converged: bool,
pub max_disp_converged: bool,
}Expand description
Tracks convergence status for each optimization criterion.
OpenMECP uses five independent convergence criteria, all of which must be satisfied for the optimization to converge. This follows the same standard used by Gaussian and other quantum chemistry programs.
§Convergence Criteria
- Energy Difference (ΔE): |E1 - E2| < threshold
- RMS Gradient: ||g||_rms < threshold
- Maximum Gradient: max(|g_i|) < threshold
- RMS Displacement: ||Δx||_rms < threshold
- Maximum Displacement: max(|Δx_i|) < threshold
Fields§
§de_converged: boolEnergy difference convergence status
rms_grad_converged: boolRMS gradient convergence status
max_grad_converged: boolMaximum gradient convergence status
rms_disp_converged: boolRMS displacement convergence status
max_disp_converged: boolMaximum displacement convergence status
Implementations§
Source§impl ConvergenceStatus
impl ConvergenceStatus
Sourcepub fn is_converged(&self) -> bool
pub fn is_converged(&self) -> bool
Checks if all convergence criteria are satisfied.
Returns true only when ALL five criteria are met. This is the standard
“AND” logic used in quantum chemistry optimizations.
§Returns
Returns true if optimization has converged, false otherwise.
§Examples
let status = ConvergenceStatus {
de_converged: true,
rms_grad_converged: true,
max_grad_converged: true,
rms_disp_converged: true,
max_disp_converged: true,
};
assert!(status.is_converged());Trait Implementations§
Source§impl Clone for ConvergenceStatus
impl Clone for ConvergenceStatus
Source§fn clone(&self) -> ConvergenceStatus
fn clone(&self) -> ConvergenceStatus
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for ConvergenceStatus
impl RefUnwindSafe for ConvergenceStatus
impl Send for ConvergenceStatus
impl Sync for ConvergenceStatus
impl Unpin for ConvergenceStatus
impl UnsafeUnpin for ConvergenceStatus
impl UnwindSafe for ConvergenceStatus
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.