Class SparseSymmetricCGMultipleRHS
[RMS] this is a variant of SparseSymmetricCG that supports multiple right-hand-sides.
Makes quite a big difference as matrix gets bigger, because MultiplyF can
unroll inner loops (as long as you actually do that)
However, if this is done then it is not really possible to do different numbers
of iterations for different RHS's. We will not update that RHS once it has
converged, however we still have to do the multiplies!
Inheritance
SparseSymmetricCGMultipleRHS
Namespace: g3
Assembly: cs.temp.dll.dll
Syntax
public class SparseSymmetricCGMultipleRHS
Fields
B
Declaration
Field Value
ConvergeTolerance
Declaration
public double ConvergeTolerance
Field Value
Iterations
Declaration
Field Value
MaxIterations
Declaration
Field Value
MultiplyF
Declaration
public Action<double[][], double[][]> MultiplyF
Field Value
PreconditionMultiplyF
Declaration
public Action<double[][], double[][]> PreconditionMultiplyF
Field Value
UseXAsInitialGuess
Declaration
public bool UseXAsInitialGuess
Field Value
X
Declaration
Field Value
Methods
Solve()
Declaration
Returns
SolvePreconditioned()
Preconditioned variant
Similar to non-preconditioned version, this can suffer if one solution converges
much slower than others, as we can't skip matrix multiplies in that case.
Declaration
public bool SolvePreconditioned()
Returns