pub struct DmrgStepRecord<R> {
pub sweep: usize,
pub direction: SweepDirection,
pub site: usize,
pub eigenvalue: R,
pub residual: R,
pub trunc_err: R,
pub bond_dim: usize,
pub eigensolver_iters: usize,
pub eigensolver_converged: bool,
}Expand description
Per-step diagnostics record.
Fields§
§sweep: usizeIndex of the sweep cycle this step belongs to.
direction: SweepDirectionDirection of the half-sweep (L→R or R→L).
site: usizeLeft site of the optimized two-site block.
eigenvalue: RSmallest eigenvalue of H_eff at this step (pre-truncation
local-block variational minimum). May lie below the
post-truncation sweep energy.
residual: RLocal-eigensolver true residual ‖H v − λ v‖₂.
trunc_err: RFrobenius norm of singular values discarded by this step’s truncated SVD.
bond_dim: usizeNew bond dimension between site and site + 1 after the
truncated split.
eigensolver_iters: usizeNumber of iterations the local eigensolver ran for this step.
For Lanczos this is the inner loop count; for ARPACK it is
the restart-iteration count returned in iparam[2].
eigensolver_converged: booltrue iff the local eigensolver succeeded — Lanczos by its
absolute true-residual test against LanczosParams::tol,
ARPACK by its relative-tol stopping criterion (i.e. Ok
return from arpack_smallest). The two arms intentionally
disagree on what they call “converged”: Lanczos uses the
absolute residual; ARPACK uses residual <= tol * |lambda|.
See super::heff::TwoSiteStepResult::converged for the
upstream contract this field forwards from.
Trait Implementations§
Source§impl<R: Clone> Clone for DmrgStepRecord<R>
impl<R: Clone> Clone for DmrgStepRecord<R>
Source§fn clone(&self) -> DmrgStepRecord<R>
fn clone(&self) -> DmrgStepRecord<R>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl<R> Freeze for DmrgStepRecord<R>where
R: Freeze,
impl<R> RefUnwindSafe for DmrgStepRecord<R>where
R: RefUnwindSafe,
impl<R> Send for DmrgStepRecord<R>where
R: Send,
impl<R> Sync for DmrgStepRecord<R>where
R: Sync,
impl<R> Unpin for DmrgStepRecord<R>where
R: Unpin,
impl<R> UnsafeUnpin for DmrgStepRecord<R>where
R: UnsafeUnpin,
impl<R> UnwindSafe for DmrgStepRecord<R>where
R: UnwindSafe,
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,
impl<T, U> Imply<T> for U
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 more