pub struct AmgConfig {Show 13 fields
pub coarsening: AmgCoarsening,
pub interpolation: AmgInterpolation,
pub smoother: AmgSmoother,
pub cycle: AmgCycle,
pub strong_threshold: f64,
pub max_levels: usize,
pub coarse_size: usize,
pub num_pre_smooth: usize,
pub num_post_smooth: usize,
pub jacobi_weight: f64,
pub trunc_factor: f64,
pub max_interp_elements: usize,
pub aggressive_coarsening_levels: usize,
}Expand description
Configuration for AMG preconditioner
Fields§
§coarsening: AmgCoarseningCoarsening algorithm
interpolation: AmgInterpolationInterpolation operator type
smoother: AmgSmootherSmoother for pre- and post-relaxation
cycle: AmgCycleCycle type (V, W, or F)
strong_threshold: f64Strong connection threshold (default: 0.25) Connections with |a_ij| >= θ * max_k |a_ik| are considered strong
max_levels: usizeMaximum number of levels in the hierarchy
coarse_size: usizeCoarsest level size - switch to direct solve below this
num_pre_smooth: usizeNumber of pre-smoothing sweeps (ν₁)
num_post_smooth: usizeNumber of post-smoothing sweeps (ν₂)
jacobi_weight: f64Jacobi damping parameter (ω)
trunc_factor: f64Truncation factor for interpolation (drop small weights)
max_interp_elements: usizeMaximum interpolation stencil size per row
aggressive_coarsening_levels: usizeEnable aggressive coarsening on first few levels
Implementations§
Source§impl AmgConfig
impl AmgConfig
Sourcepub fn for_bem() -> AmgConfig
pub fn for_bem() -> AmgConfig
Configuration optimized for BEM systems
BEM matrices are typically denser and less sparse than FEM, requiring adjusted thresholds.
Sourcepub fn for_parallel() -> AmgConfig
pub fn for_parallel() -> AmgConfig
Configuration optimized for maximum parallel scalability
Sourcepub fn for_difficult_problems() -> AmgConfig
pub fn for_difficult_problems() -> AmgConfig
Configuration for difficult/ill-conditioned problems
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AmgConfig
impl RefUnwindSafe for AmgConfig
impl Send for AmgConfig
impl Sync for AmgConfig
impl Unpin for AmgConfig
impl UnwindSafe for AmgConfig
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> 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