Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

Ma57Solver Class Reference
[LinearSolvers]

#include <Ma57Solver.h>

Inheritance diagram for Ma57Solver:

DoubleLinearSolver List of all members.

Public Methods

 Ma57Solver (SparseSymMatrix *sgm)
virtual void diagonalChanged (int idiag, int extent)
virtual void matrixChanged ()
virtual void solve (OoqpVector &rhs)
double setTreatAsZero ()
double setThresholdPivoting ()
virtual ~Ma57Solver ()

Protected Methods

virtual void firstCall ()

Protected Attributes

double kThresholdPivoting
double kThresholdPivotingMax
double kThresholdPivotingFactor
double kTreatAsZero
double kPrecision
int * irowM
int * jcolM
double * M
int n
int nnz
int lkeep
int * keep
int lifact
int * ifact
int lfact
double ipessimism
double rpessimism
int freshFactor
SparseStorageHandle mStorage

Detailed Description

implements the linear solver class using the HSL MA57 solver


Constructor & Destructor Documentation

Ma57Solver::Ma57Solver SparseSymMatrix   sgm
 

sets mStorage to refer to the argument sgm

virtual Ma57Solver::~Ma57Solver   [virtual]
 

destructor


Member Function Documentation

virtual void Ma57Solver::diagonalChanged int    idiag,
int    extent
[virtual]
 

called if the diagonal elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.

Parameters:
idiag  index of the first diagonal element that changed
extent  the number of diagonal element that changed.

Implements DoubleLinearSolver.

virtual void Ma57Solver::firstCall   [protected, virtual]
 

called the very first time a matrix is factored. Allocates space for the factorization and performs ordering

virtual void Ma57Solver::matrixChanged   [virtual]
 

called if some elements of the matrix have changed. Triggers a refactorization of the matrix, if necessary.

Implements DoubleLinearSolver.

double Ma57Solver::setThresholdPivoting   [inline]
 

set the Pivoting Threshold parameter in the MA27 data structures to the current value of kThresholdPivoting

double Ma57Solver::setTreatAsZero   [inline]
 

set the Treat As Zero parameter in the MA27 data structures to the current value of kTreatAsZero

virtual void Ma57Solver::solve OoqpVector   rhs [virtual]
 

solves a linear system.

Parameters:
x  on entry the right hand side of the system to be solved. On exit, the solution.

Implements DoubleLinearSolver.


Member Data Documentation

int Ma57Solver::freshFactor [protected]
 

used to indicate when we need a fresh factorization (when iterative refinement has failed to improve the precision of the computed solution satisfactorily

int * Ma57Solver::ifact [protected]
 

temporary storage for the factorization process

double Ma57Solver::ipessimism [protected]
 

amounts by which to increase allocated factorization space when inadequate space is detected. ipessimism is for array "iw", rpessimism is for the array "fact".

int* Ma57Solver::irowM [protected]
 

index array for the factorization

int * Ma57Solver::jcolM [protected]
 

index array for the factorization

int * Ma57Solver::keep [protected]
 

temporary storage

double Ma57Solver::kPrecision [protected]
 

precision we demand from the linear system solver. If it isn't attained on the first solve, we use iterative refinement and possibly refactorization with a higher value of kThresholdPivoting.

double Ma57Solver::kThresholdPivoting [protected]
 

the Threshold Pivoting parameter, stored as U in the ma27dd common block. Takes values in the range [0,1]. Larger values enforce greater stability in the factorization as they insist on larger pivots. Smaller values preserve sparsity at the cost of using smaller pivots.

double Ma57Solver::kThresholdPivotingFactor [protected]
 

the factor in the range (1,inf) by which kThresholdPivoting is increased when it is found to be inadequate.

double Ma57Solver::kThresholdPivotingMax [protected]
 

the Threshold Pivoting parameter may need to be increased during the algorithm if poor precision is obtained from the linear solves. kThresholdPivoting indicates the largest value we are willing to tolerate.

double Ma57Solver::kTreatAsZero [protected]
 

the "Treat As Zero" parameter, stored as pivtol in the common block ma27td. The factorization will not accept a pivot whose absolute value is less than this parameter as a 1x1 pivot or as the off-diagonal in a 2x2 pivot.

int Ma57Solver::lfact [protected]
 

temporary storage for the factorization process

int Ma57Solver::lifact [protected]
 

temporary storage for the factorization process

int Ma57Solver::lkeep [protected]
 

temporary storage

double* Ma57Solver::M [protected]
 

storage for the original matrix

SparseStorageHandle Ma57Solver::mStorage [protected]
 

store as a sparse symmetric matrix

int Ma57Solver::n [protected]
 

dimension of the whole matrix

int Ma57Solver::nnz [protected]
 

number of nonzeros in the matrix

double Ma57Solver::rpessimism [protected]
 

amounts by which to increase allocated factorization space when inadequate space is detected. ipessimism is for array "iw", rpessimism is for the array "fact".


The documentation for this class was generated from the following file:
Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18