- java.lang.Object
-
- org.ojalgo.matrix.task.iterative.IterativeSolverTask
-
- org.ojalgo.matrix.task.iterative.ParallelGaussSeidelSolver
-
- All Implemented Interfaces:
MatrixTask<java.lang.Double>,SolverTask<java.lang.Double>
public final class ParallelGaussSeidelSolver extends IterativeSolverTask
Experimental parallelised stationary iteration based on Gauss–Seidel-style in-place updates.Concurrency and convergence
- Targets systems where diagonal dominance or SPD structure makes Gauss–Seidel-type updates effective.
- Parallel execution may introduce small differences compared to strictly sequential updates.
- Ignores any configured
Preconditioner; use the relaxation factor to influence convergence.
- To utilise multiple cores for simple in-place iterative sweeps.
- As a smoother or pre-relaxation when approximate iterations are acceptable.
- For challenging SPD problems prioritising convergence speed/robustness, Krylov methods are often preferable.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.ojalgo.matrix.task.iterative.IterativeSolverTask
IterativeSolverTask.Configurator
-
Nested classes/interfaces inherited from interface org.ojalgo.matrix.task.SolverTask
SolverTask.Factory<N extends java.lang.Comparable<N>>
-
-
Field Summary
Fields Modifier and Type Field Description private static DivideAndConquer.DividerDIVIDER-
Fields inherited from class org.ojalgo.matrix.task.iterative.IterativeSolverTask
DEFAULT
-
-
Constructor Summary
Constructors Constructor Description ParallelGaussSeidelSolver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static voiddivide(int nbEquations, DivideAndConquer.Conquerer conquerer)doubleresolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> solution)private doubleresolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> solution, double normRHS, java.util.concurrent.atomic.AtomicInteger iterationsCounter, int first, int limit)-
Methods inherited from class org.ojalgo.matrix.task.iterative.IterativeSolverTask
configurator, debug, getAccuracyContext, getIterationsLimit, getPreconditioner, getRelaxationFactor, isDebugPrinterSet, preallocate, resolve, setAccuracyContext, setDebugPrinter, setIterationsLimit, setPreconditioner, setRelaxationFactor, solve, solve, toListOfRows, worker
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.ojalgo.matrix.task.SolverTask
preallocate, solve, toSolutionProvider
-
-
-
-
Field Detail
-
DIVIDER
private static final DivideAndConquer.Divider DIVIDER
-
-
Method Detail
-
divide
private static void divide(int nbEquations, DivideAndConquer.Conquerer conquerer)
-
resolve
public double resolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> solution)
- Specified by:
resolvein classIterativeSolverTask
-
resolve
private double resolve(java.util.List<Equation> equations, PhysicalStore<java.lang.Double> solution, double normRHS, java.util.concurrent.atomic.AtomicInteger iterationsCounter, int first, int limit)
-
-