pub trait LinearOperator<T>: Send + Syncwhere
T: ComplexField,{
// Required methods
fn num_rows(&self) -> usize;
fn num_cols(&self) -> usize;
fn apply(
&self,
x: &ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>,
) -> ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>;
fn apply_transpose(
&self,
x: &ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>,
) -> ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>;
// Provided methods
fn apply_hermitian(
&self,
x: &ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>>,
) -> ArrayBase<OwnedRepr<T>, Dim<[usize; 1]>> { ... }
fn is_square(&self) -> bool { ... }
}Expand description
Trait for linear operators (matrices) that can perform matrix-vector products.
This abstraction allows solvers to work with dense matrices, sparse matrices, and matrix-free operators (e.g., FMM) interchangeably.
Required Methods§
Provided Methods§
Implementors§
impl LinearOperator<Complex<f64>> for SlfmmSystem
impl LinearOperator<Complex<f64>> for CsrOperator
impl LinearOperator<Complex<f64>> for DenseOperator
impl LinearOperator<Complex<f64>> for DiagonalPreconditioner
impl LinearOperator<Complex<f64>> for MlfmmOperator
impl LinearOperator<Complex<f64>> for SlfmmOperator
Available on crate features
native or wasm only.