pub struct IterativeSchurSolver { /* private fields */ }Expand description
Iterative Schur complement solver using Preconditioned Conjugate Gradients
Implementations§
Source§impl IterativeSchurSolver
impl IterativeSchurSolver
Sourcepub fn new() -> Self
pub fn new() -> Self
Create a new iterative Schur solver with default parameters Default: Schur-Jacobi preconditioner, 500 max iterations, 1e-9 relative tolerance These tighter settings match Ceres Solver behavior for accurate step computation.
Sourcepub fn with_cg_params(max_iterations: usize, tolerance: f64) -> Self
pub fn with_cg_params(max_iterations: usize, tolerance: f64) -> Self
Create solver with custom CG parameters
Sourcepub fn with_config(
max_iterations: usize,
tolerance: f64,
preconditioner: SchurPreconditioner,
) -> Self
pub fn with_config( max_iterations: usize, tolerance: f64, preconditioner: SchurPreconditioner, ) -> Self
Create solver with full configuration
Trait Implementations§
Source§impl Clone for IterativeSchurSolver
impl Clone for IterativeSchurSolver
Source§fn clone(&self) -> IterativeSchurSolver
fn clone(&self) -> IterativeSchurSolver
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 moreSource§impl Debug for IterativeSchurSolver
impl Debug for IterativeSchurSolver
Source§impl Default for IterativeSchurSolver
impl Default for IterativeSchurSolver
Source§impl StructuredSparseLinearSolver for IterativeSchurSolver
impl StructuredSparseLinearSolver for IterativeSchurSolver
Source§fn initialize_structure(
&mut self,
variables: &HashMap<String, VariableEnum>,
variable_index_map: &HashMap<String, usize>,
) -> LinAlgResult<()>
fn initialize_structure( &mut self, variables: &HashMap<String, VariableEnum>, variable_index_map: &HashMap<String, usize>, ) -> LinAlgResult<()>
Initialize the solver’s block structure from problem variables. Read more
Source§fn solve_normal_equation(
&mut self,
residuals: &Mat<f64>,
jacobian: &SparseColMat<usize, f64>,
) -> LinAlgResult<Mat<f64>>
fn solve_normal_equation( &mut self, residuals: &Mat<f64>, jacobian: &SparseColMat<usize, f64>, ) -> LinAlgResult<Mat<f64>>
Solve the normal equation: (J^T * J) * dx = -J^T * r
Source§fn solve_augmented_equation(
&mut self,
residuals: &Mat<f64>,
jacobian: &SparseColMat<usize, f64>,
lambda: f64,
) -> LinAlgResult<Mat<f64>>
fn solve_augmented_equation( &mut self, residuals: &Mat<f64>, jacobian: &SparseColMat<usize, f64>, lambda: f64, ) -> LinAlgResult<Mat<f64>>
Solve the augmented equation: (J^T * J + λI) * dx = -J^T * r
Source§fn get_hessian(&self) -> Option<&SparseColMat<usize, f64>>
fn get_hessian(&self) -> Option<&SparseColMat<usize, f64>>
Get the cached Hessian matrix
Auto Trait Implementations§
impl Freeze for IterativeSchurSolver
impl RefUnwindSafe for IterativeSchurSolver
impl Send for IterativeSchurSolver
impl Sync for IterativeSchurSolver
impl Unpin for IterativeSchurSolver
impl UnwindSafe for IterativeSchurSolver
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,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§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).Source§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.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.