ITK
4.13.0
Insight Segmentation and Registration Toolkit
|
#include <itkFEMLinearSystemWrapperItpack.h>
LinearSystemWrapper class that uses Itpack numeric library functions to define and solve a sparse linear system of equations.
Definition at line 52 of file itkFEMLinearSystemWrapperItpack.h.
Public Types | |
typedef std::vector < MatrixRepresentation > | MatrixHolder |
typedef ItpackSparseMatrix | MatrixRepresentation |
typedef LinearSystemWrapperItpack | Self |
typedef LinearSystemWrapper | Superclass |
typedef std::vector < VectorRepresentation > | VectorHolder |
typedef double * | VectorRepresentation |
Public Types inherited from itk::fem::LinearSystemWrapper | |
typedef std::vector< unsigned int > | ColumnArray |
typedef const Self * | ConstPointer |
typedef Self * | Pointer |
typedef LinearSystemWrapper | Self |
typedef Solution | Superclass |
Public Types inherited from itk::fem::Solution | |
typedef const Self * | ConstPointer |
typedef double | Float |
typedef Self * | Pointer |
typedef Solution | Self |
typedef Solution | Superclass |
Public Member Functions | |
virtual void | AddMatrixValue (unsigned int i, unsigned int j, Float value, unsigned int matrixIndex) override |
virtual void | AddSolutionValue (unsigned int i, Float value, unsigned int solutionIndex) override |
virtual void | AddVectorValue (unsigned int i, Float value, unsigned int vectorIndex) override |
virtual void | CopySolution2Vector (unsigned solutionIndex, unsigned int vectorIndex) override |
virtual void | CopyVector2Solution (unsigned int vectorIndex, unsigned int solutionIndex) override |
virtual void | DestroyMatrix (unsigned int matrixIndex) override |
virtual void | DestroySolution (unsigned int solutionIndex) override |
virtual void | DestroyVector (unsigned int vectorIndex) override |
double | GetAccuracy () const |
int | GetAdaptiveCaseSwitch () const |
int | GetAdaptiveSwitch () const |
virtual void | GetColumnsOfNonZeroMatrixElementsInRow (unsigned int row, ColumnArray &cols, unsigned int matrixIndex) override |
int | GetCommunicationSwitch () const |
double | GetDampingFactor () const |
double | GetDigitsInError () const |
double | GetDigitsInResidual () const |
int | GetErrorAnalysisSwitch () const |
int | GetErrorReportingLevel () const |
double | GetEstimatedSpectralRadiusLU () const |
double | GetEstimatedSpectralRadiusSSOR () const |
double | GetLargestJacobiEigenvalueEstimate () const |
virtual Float | GetMatrixValue (unsigned int i, unsigned int j, unsigned int matrixIndex) const override |
int | GetMaximumNumberIterations () const |
int | GetOutputNumber () const |
double | GetOverrelaxationParameter () |
int | GetRedBlackOrderingSwitch () |
int | GetRemoveSwitch () |
double | GetSmallestJacobiEigenvalueEstimate () |
virtual Float | GetSolutionValue (unsigned int i, unsigned int solutionIndex) const override |
int | GetSymmetricMatrixFlag () |
double | GetTimeForCall () |
double | GetTimeToConvergence () |
int | GetTimingSwitch () |
double | GetTolerance () |
virtual Float | GetVectorValue (unsigned int i, unsigned int vectorIndex) const override |
int | GetWorkspaceUsed () |
virtual void | InitializeMatrix (unsigned int matrixIndex) override |
virtual void | InitializeSolution (unsigned int solutionIndex) override |
virtual void | InitializeVector (unsigned int vectorIndex) override |
virtual bool | IsMatrixInitialized (unsigned int matrixIndex) override |
virtual bool | IsSolutionInitialized (unsigned int solutionIndex) override |
virtual bool | IsVectorInitialized (unsigned int vectorIndex) override |
void | JacobianConjugateGradient () |
void | JacobianSemiIterative () |
LinearSystemWrapperItpack () | |
virtual void | MultiplyMatrixMatrix (unsigned int resultMatrixIndex, unsigned int leftMatrixIndex, unsigned int rightMatrixIndex) override |
virtual void | MultiplyMatrixSolution (unsigned int resultVectorIndex, unsigned int matrixIndex, unsigned int solutionIndex) override |
virtual void | MultiplyMatrixVector (unsigned int resultVectorIndex, unsigned int matrixIndex, unsigned int vectorIndex) override |
void | ReducedSystemConjugateGradient () |
void | ReducedSystemSemiIteration () |
virtual void | ScaleMatrix (Float scale, unsigned int matrixIndex) override |
void | SetAccuracy (double i) |
void | SetAdaptiveCaseSwitch (int i) |
void | SetAdaptiveSwitch (int i) |
void | SetCommunicationSwitch (int i) |
void | SetDampingFactor (double i) |
void | SetDigitsInError (double i) |
void | SetDigitsInResidual (double i) |
void | SetErrorAnalysisSwitch (int i) |
void | SetEstimatedSpectralRadiusLU (double i) |
void | SetEstimatedSpectralRadiusSSOR (double i) |
void | SetLargestJacobiEigenvalueEstimate (double i) |
virtual void | SetMatrixValue (unsigned int i, unsigned int j, Float value, unsigned int matrixIndex) override |
virtual void | SetMaximumNonZeroValuesInMatrix (unsigned int maxNonZeroValues) |
void | SetMaximumNumberIterations (int i) |
void | SetOverrelaxationParameter (double i) |
void | SetRedBlackOrderingSwitch (int i) |
void | SetRemoveSwitch (int i) |
void | SetSmallestJacobiEigenvalueEstimate (double i) |
virtual void | SetSolutionValue (unsigned int i, Float value, unsigned int solutionIndex) override |
void | SetSymmetricMatrixFlag (int i) |
void | SetTimeForCall (double i) |
void | SetTimeToConvergence (double i) |
void | SetTimingSwitch (int i) |
void | SetTolerance (double i) |
virtual void | SetVectorValue (unsigned int i, Float value, unsigned int vectorIndex) override |
void | SetWorkspaceUsed (int i) |
virtual void | Solve (void) override |
void | SuccessiveOverrelaxation () |
virtual void | SwapMatrices (unsigned int matrixIndex1, unsigned int matrixIndex2) override |
virtual void | SwapSolutions (unsigned int solutionIndex1, unsigned int solutionIndex2) override |
virtual void | SwapVectors (unsigned int vectorIndex1, unsigned int vectorIndex2) override |
void | SymmetricSuccessiveOverrelaxationConjugateGradient () |
void | SymmetricSuccessiveOverrelaxationSuccessiveOverrelaxation () |
~LinearSystemWrapperItpack () override | |
Public Member Functions inherited from itk::fem::LinearSystemWrapper | |
virtual void | AddMatrixMatrix (unsigned int matrixIndex1, unsigned int matrixIndex2) |
virtual void | AddVectorVector (unsigned int vectorIndex1, unsigned int vectorIndex2) |
virtual void | Clean () |
virtual void | CopyMatrix (unsigned int matrixIndex1, unsigned int matrixIndex2) |
virtual void | CopySolution2Vector (unsigned int solutionIndex, unsigned int vectorIndex)=0 |
virtual void | CopyVector (unsigned int vectorSource, unsigned int vectorDestination) |
unsigned int | GetNumberOfMatrices () const |
unsigned int | GetNumberOfSolutions () const |
unsigned int | GetNumberOfVectors () const |
unsigned int | GetSystemOrder () const |
virtual void | OptimizeMatrixStorage (unsigned int matrixIndex, unsigned int tempMatrixIndex) |
virtual void | ReverseCuthillMckeeOrdering (ColumnArray &newNumbering, unsigned int matrixIndex=0) |
void | ScaleSolution (Float scale, unsigned int solutionIndex=0) |
void | ScaleVector (Float scale, unsigned int vectorIndex=0) |
void | SetNumberOfMatrices (unsigned int nMatrices) |
void | SetNumberOfSolutions (unsigned int nSolutions) |
void | SetNumberOfVectors (unsigned int nVectors) |
void | SetSystemOrder (unsigned int N) |
virtual | ~LinearSystemWrapper () |
LinearSystemWrapper () | |
Public Member Functions inherited from itk::fem::Solution | |
virtual | ~Solution () |
Private Attributes | |
integer | m_IPARM [12] |
MatrixHolder * | m_Matrices |
unsigned int | m_MaximumNonZeroValues |
integer | m_Method |
ItkItpackSolverFunction | m_Methods [7] |
doublereal | m_RPARM [12] |
VectorHolder * | m_Solutions |
VectorHolder * | m_Vectors |
Additional Inherited Members | |
Protected Attributes inherited from itk::fem::LinearSystemWrapper | |
unsigned int | m_NumberOfMatrices |
unsigned int | m_NumberOfSolutions |
unsigned int | m_NumberOfVectors |
unsigned int | m_Order |
typedef std::vector<MatrixRepresentation> itk::fem::LinearSystemWrapperItpack::MatrixHolder |
vector of matrices typedef
Definition at line 66 of file itkFEMLinearSystemWrapperItpack.h.
matrix representatin typedef
Definition at line 63 of file itkFEMLinearSystemWrapperItpack.h.
Standard "Self" typedef.
Definition at line 57 of file itkFEMLinearSystemWrapperItpack.h.
Standard "Superclass" typedef.
Definition at line 60 of file itkFEMLinearSystemWrapperItpack.h.
typedef std::vector<VectorRepresentation> itk::fem::LinearSystemWrapperItpack::VectorHolder |
vector of vector typedef
Definition at line 76 of file itkFEMLinearSystemWrapperItpack.h.
typedef double* itk::fem::LinearSystemWrapperItpack::VectorRepresentation |
vector representation typedef
Definition at line 73 of file itkFEMLinearSystemWrapperItpack.h.
itk::fem::LinearSystemWrapperItpack::LinearSystemWrapperItpack | ( | ) |
|
override |
destructor
|
overridevirtual |
Virtual function to add a value to a specific element of the A matrix.
i | row of the element |
j | column of the element |
value | value to add to the existing element |
matrixIndex | index of matrix to add value to |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Virtual function to add a value of specific element of the solution vector.
i | element Index in solution vector |
value | new value of the element |
solutionIndex | index of solution vector to add value to |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Virtual function to add a value to a specific element of the B vector.
i | row of the element |
value | value to add to the existing element |
vectorIndex | index of vector to add value to |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
|
overridevirtual |
Copy a vector to a solution vector
vectorIndex | index of a vector to copy |
solutionIndex | index of a solution to copy the solution to |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Free the memory from a matrix
matrixIndex | index of matrix to destroy |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Free the memory from a solution vector
solutionIndex | index of solution vector to destroy |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Free the memory from a vector
vectorIndex | index of vector to destroy |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Get the level of accuracy
Definition at line 295 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get flag indicating ??
Definition at line 191 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get flag indicating ??
Definition at line 174 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Returns the column index (zero based) of the i-th non zero (non allocated)element in a given row of A matrix. This function is useful for optimizations when sparse matrices are used. Note that the value of an element with returned column index may actually be equal zero.
row | Row number |
cols | Which element in that row. Can range from 0 to number of elements allocated in a row. If this is out of range, the function returns -1. |
matrixIndex | Index of matrix (defaults to 0) |
Reimplemented from itk::fem::LinearSystemWrapper.
|
inline |
Get the communication flag - meaningless in this implementation
Definition at line 130 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the damping factor used by ??
Definition at line 346 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the number of digits in the error
Definition at line 465 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the number of digits in the residual
Definition at line 482 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the flag for level of error reporting - meaningless in this implementation
Definition at line 278 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get a flag indicating the type of error reporting
Definition at line 113 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the ??
Definition at line 397 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the ??
Definition at line 380 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get ??
Definition at line 312 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Virtual function to get a value of a specific element of a matrix.
i | row of the element |
j | column of the element |
matrixIndex | index of matrix to get value from |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Get the maximum number iterations that may be performed
Definition at line 103 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the output number - meaningless in this implementation
Definition at line 140 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the over-relaxation parameter ??
Definition at line 363 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the flag indicating use of red black ordering
Definition at line 227 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get flag indicating ??
Definition at line 244 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get ??
Definition at line 329 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Returns value of i-th element in a solution vector. This value is calculated generalized displacement of the i-th degree of freedom in a FEM problem. Note that in general there may be several solution vectors. You can select which one do you want by passing the second parameter.
i | element index in solution vector |
solutionIndex | index of solution vector to get value from |
Implements itk::fem::Solution.
|
inline |
Get flag indicating use of symmetric matrix (1=symmetric, 0=non-symmetric)
Definition at line 157 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the time for call
Definition at line 448 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the time to convergence
Definition at line 431 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the flag indicating use of the timer routines - meaningless in this implementation
Definition at line 261 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Get the tolerance level
Definition at line 414 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Virtual function to get a value of a specific element of the B vector.
i | row of the element |
vectorIndex | index of vector to get value from |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Get the size of the workspace used by solver
Definition at line 210 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Initialization of the A matrix. First any existing data for matrix A must be be destroyed, and then a new matrix is created in the memory. All elements in A must be set to zero.
matrixIndex | index of matrix to initialize |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Initialization of a solution vector. Existing memory must be destroyed and the new solution vector is created in memory. All values should be set to zero.
solutionIndex | index of solution vector to initialize |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Initialization of the a vector. First any existing data for vector B must be destroyed, then new vector is created in the memory. All elements in B must be set to zero.
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Check to see if matrix is initialized
matrixIndex | index of matrix to examine |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Check to see if solution vector is initialized
solutionIndex | index of solution vector to examine |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Check to see if vector is initialized
vectorIndex | vector of index to examine |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Set numerical solving method to jacobian conjugate gradient
Definition at line 490 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set numerical solving method to jacobian semi iterative
Definition at line 498 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Perform a matrix*matrix operation and store the result in the linear system
leftMatrixIndex | index of left matrix |
rightMatrixIndex | index of right matrix |
resultMatrixIndex | index of matrix where solution is stored |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Perform a matrix*solution operation and store the result in the linear system
matrixIndex | index of matrix to multiply |
solutionIndex | index of solution to multiply |
resultVectorIndex | index of vector where result is store |
Reimplemented from itk::fem::LinearSystemWrapper.
|
overridevirtual |
Perform a matrix*vector operation and store the result in the linear system
matrixIndex | index of matrix to multiply |
vectorIndex | index of vector to multiply |
resultVectorIndex | index of vector where result is store |
Reimplemented from itk::fem::LinearSystemWrapper.
|
inline |
Set numerical solving method to reduced system conjugate gradient
Definition at line 532 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set numerical solving method to reduced system semi-iteration
Definition at line 539 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Multiplies all elements of a matrix by a scalar
scale | scalar to multiply all matrix values by |
matrixIndex | index of matrix to modify |
Reimplemented from itk::fem::LinearSystemWrapper.
|
inline |
Set the level of accuracy for an acceptable solution
i | accuracy desired |
Definition at line 287 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
|
inline |
|
inline |
Set the communication switch - meaningless in this implementation
i | flag value |
Definition at line 122 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the damping factor used by ??
i | damping factor |
Definition at line 338 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set digits in error
i | number of digits in error |
Definition at line 457 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the number of digits in the residual
i | number of digits in the residual |
Definition at line 474 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the flag for level of error reporting - meaningless in this implementation
i | flag for level of error analysis |
Definition at line 270 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
|
inline |
|
inline |
Set ??
i | larges jacobian eigenvalue estimate |
Definition at line 304 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Virtual function to set a value of a specific element of the A matrix.
i | row of the element |
j | column of the element |
value | new value of the element |
matrixIndex | index of matrix to set value in |
Implements itk::fem::LinearSystemWrapper.
|
inlinevirtual |
Redefine methods defined in LinearSystemWrapper
set maximum number of entires in a matrix
maxNonZeroValues | maximum number of entries allowed in matrix |
Definition at line 556 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the maximum number of iterations
i | maximum number of iterations that may be performed |
Definition at line 95 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the over-relaxation parameter ??
i | parameter |
Definition at line 355 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set flag indicating use of red black ordering
i | 1=red black ordering used, 0=not |
Definition at line 219 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set flag indicating ??
i | ?? |
Definition at line 236 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set ??
i | smalles jacobian eigenvalue estimate |
Definition at line 321 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Virtual function to set a value of specific element of the solution vector.
i | element Index in solution vector |
value | new value of the element |
solutionIndex | index of solution vector to set value in |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Set flag indicating symmetric matrix is being used
i | 1=symmetric, 0=non-symmetric |
Definition at line 149 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the time for call
i | ?? |
Definition at line 440 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the time to convergence
i | ?? |
Definition at line 423 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the flag indicating use of timer routines - meaningless in this implementation
i | flag |
Definition at line 253 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set the tolerance level
i | tolerance |
Definition at line 406 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Virtual function to set a value of a specific element of the B vector.
i | row of the element |
value | new value of the element |
vectorIndex | index of vector to set value in |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Set size of workspace used by solver
i | size of the workspace vector |
Definition at line 201 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Solves the linear system and creates the solution vector, which can later be accessed via GetSolutionValue(i,SolutionIndex) member function. Here all the major processing is done with calls to external numeric library.
Implements itk::fem::LinearSystemWrapper.
|
inline |
Set numerical solving method to successive over-relaxation
Definition at line 506 of file itkFEMLinearSystemWrapperItpack.h.
|
overridevirtual |
Swaps access indices of any 2 matrices in the linear system
matrixIndex1 | index of a matrix to swap |
matrixIndex2 | index of matrix to swap with |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Swaps access indices of any 2 solution vectors in the linear system
solutionIndex1 | index of a solution vector to swap |
solutionIndex2 | index of solution vector to swap with |
Implements itk::fem::LinearSystemWrapper.
|
overridevirtual |
Swaps access indices of any 2 vectors in the linear system
vectorIndex1 | index of a vector to swap |
vectorIndex2 | index of vector to swap with |
Implements itk::fem::LinearSystemWrapper.
|
inline |
Set numerical solving method to symmetric successive over-relaxation conjugate gradient
Definition at line 515 of file itkFEMLinearSystemWrapperItpack.h.
|
inline |
Set numerical solving method to symmetric successive over-relaxation successive over-relaxation
Definition at line 524 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
vector of length 12 used to initialize various parameters on input
Definition at line 670 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
pointer to vector of matrices
Definition at line 650 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
pointer to array of unsigned int's indicating max number of entries in each matrix
Definition at line 661 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
flag indicating which solver function should be used
Definition at line 667 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
Array of pointers to available solver functions
Definition at line 664 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
vector of length 12 used to initialize various parameters on input
Definition at line 673 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
pointer to vector of solution arrays
Definition at line 656 of file itkFEMLinearSystemWrapperItpack.h.
|
private |
pointer to vector of force arrays
Definition at line 653 of file itkFEMLinearSystemWrapperItpack.h.