ITK  4.0.0
Insight Segmentation and Registration Toolkit
Public Types | Public Member Functions | Private Attributes
itk::fem::LinearSystemWrapperVNL Class Reference

LinearSystemWrapper class that uses VNL numeric library functions to define a sparse linear system of equations. More...

#include <itkFEMLinearSystemWrapperVNL.h>

Inheritance diagram for itk::fem::LinearSystemWrapperVNL:
Collaboration diagram for itk::fem::LinearSystemWrapperVNL:

List of all members.

Public Types

typedef LinearSystemWrapper::Float Float
typedef std::vector
< MatrixRepresentation * > 
MatrixHolder
typedef vnl_sparse_matrix< FloatMatrixRepresentation
typedef LinearSystemWrapper SuperClass

Public Member Functions

virtual void AddMatrixValue (unsigned int i, unsigned int j, Float value, unsigned int matrixIndex)
virtual void AddSolutionValue (unsigned int i, Float value, unsigned int solutionIndex)
virtual void AddVectorValue (unsigned int i, Float value, unsigned int vectorIndex)
virtual void CopySolution2Vector (unsigned solutionIndex, unsigned int vectorIndex)
virtual void CopyVector2Solution (unsigned int vectorIndex, unsigned int solutionIndex)
virtual void DestroyMatrix (unsigned int matrixIndex)
virtual void DestroySolution (unsigned int solutionIndex)
virtual void DestroyVector (unsigned int vectorIndex)
virtual Float GetMatrixValue (unsigned int i, unsigned int j, unsigned int matrixIndex) const
virtual Float GetSolutionValue (unsigned int i, unsigned int solutionIndex) const
virtual Float GetVectorValue (unsigned int i, unsigned int vectorIndex) const
virtual void InitializeMatrix (unsigned int matrixIndex)
virtual void InitializeSolution (unsigned int solutionIndex)
virtual void InitializeVector (unsigned int vectorIndex)
virtual bool IsMatrixInitialized (unsigned int matrixIndex)
virtual bool IsSolutionInitialized (unsigned int solutionIndex)
virtual bool IsVectorInitialized (unsigned int vectorIndex)
 LinearSystemWrapperVNL ()
virtual void MultiplyMatrixMatrix (unsigned int resultMatrixIndex, unsigned int leftMatrixIndex, unsigned int rightMatrixIndex)
virtual void MultiplyMatrixVector (unsigned int resultVectorIndex, unsigned int matrixIndex, unsigned int vectorIndex)
virtual void ScaleMatrix (Float scale, unsigned int matrixIndex)
virtual void SetMatrixValue (unsigned int i, unsigned int j, Float value, unsigned int matrixIndex)
virtual void SetMaximumNonZeroValuesInMatrix (unsigned int, unsigned int)
virtual void SetSolutionValue (unsigned int i, Float value, unsigned int solutionIndex)
virtual void SetVectorValue (unsigned int i, Float value, unsigned int vectorIndex)
virtual void Solve (void)
virtual void SwapMatrices (unsigned int matrixIndex1, unsigned int matrixIndex2)
virtual void SwapSolutions (unsigned int solutionIndex1, unsigned int solutionIndex2)
virtual void SwapVectors (unsigned int vectorIndex1, unsigned int vectorIndex2)
virtual ~LinearSystemWrapperVNL ()

Private Attributes

MatrixHolderm_Matrices
std::vector< vnl_vector< Float > * > * m_Solutions
std::vector< vnl_vector< Float > * > * m_Vectors

Detailed Description

LinearSystemWrapper class that uses VNL numeric library functions to define a sparse linear system of equations.

See also:
LinearSystemWrapper

Definition at line 39 of file itkFEMLinearSystemWrapperVNL.h.


Member Typedef Documentation

Floating point storage type used within a class

Reimplemented from itk::fem::Solution.

Definition at line 44 of file itkFEMLinearSystemWrapperVNL.h.

Definition at line 53 of file itkFEMLinearSystemWrapperVNL.h.

Definition at line 50 of file itkFEMLinearSystemWrapperVNL.h.

Definition at line 47 of file itkFEMLinearSystemWrapperVNL.h.


Constructor & Destructor Documentation

itk::fem::LinearSystemWrapperVNL::LinearSystemWrapperVNL ( ) [inline]

Definition at line 56 of file itkFEMLinearSystemWrapperVNL.h.

virtual itk::fem::LinearSystemWrapperVNL::~LinearSystemWrapperVNL ( ) [virtual]

Member Function Documentation

virtual void itk::fem::LinearSystemWrapperVNL::AddMatrixValue ( unsigned int  i,
unsigned int  j,
Float  value,
unsigned int  matrixIndex 
) [inline, virtual]

Virtual function to add a value to a specific element of the A matrix.

Parameters:
irow of the element
jcolumn of the element
valuevalue to add to the existing element
matrixIndexindex of matrix to add value to

Implements itk::fem::LinearSystemWrapper.

Definition at line 95 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::AddSolutionValue ( unsigned int  i,
Float  value,
unsigned int  solutionIndex 
) [inline, virtual]

Virtual function to add a value of specific element of the solution vector.

Parameters:
ielement Index in solution vector
valuenew value of the element
solutionIndexindex of solution vector to add value to

Implements itk::fem::LinearSystemWrapper.

Definition at line 122 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::AddVectorValue ( unsigned int  i,
Float  value,
unsigned int  vectorIndex 
) [inline, virtual]

Virtual function to add a value to a specific element of the B vector.

Parameters:
irow of the element
valuevalue to add to the existing element
vectorIndexindex of vector to add value to

Implements itk::fem::LinearSystemWrapper.

Definition at line 110 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::CopySolution2Vector ( unsigned  solutionIndex,
unsigned int  vectorIndex 
) [virtual]
virtual void itk::fem::LinearSystemWrapperVNL::CopyVector2Solution ( unsigned int  vectorIndex,
unsigned int  solutionIndex 
) [virtual]

Copy a vector to a solution vector

Parameters:
vectorIndexindex of a vector to copy
solutionIndexindex of a solution to copy the solution to

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::DestroyMatrix ( unsigned int  matrixIndex) [virtual]

Free the memory from a matrix

Parameters:
matrixIndexindex of matrix to destroy

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::DestroySolution ( unsigned int  solutionIndex) [virtual]

Free teh mememory from a solution vector

Parameters:
solutionIndexindex of solution vector to destroy

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::DestroyVector ( unsigned int  vectorIndex) [virtual]

Free the memory from a vector

Parameters:
vectorIndexindex of vector to destroy

Implements itk::fem::LinearSystemWrapper.

virtual Float itk::fem::LinearSystemWrapperVNL::GetMatrixValue ( unsigned int  i,
unsigned int  j,
unsigned int  matrixIndex 
) const [inline, virtual]

Virtual function to get a value of a specific element of a matrix.

Parameters:
irow of the element
jcolumn of the element
matrixIndexindex of matrix to get value from

Implements itk::fem::LinearSystemWrapper.

Definition at line 85 of file itkFEMLinearSystemWrapperVNL.h.

References m_Matrices.

virtual Float itk::fem::LinearSystemWrapperVNL::GetSolutionValue ( unsigned int  i,
unsigned int  solutionIndex 
) const [virtual]

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.

Parameters:
ielement index in solution vector
solutionIndexindex of solution vector to get value from
Note:
If the solution vector doesn't exist (problem was not yet solved), or the index i is out of range, the function returns 0.0.

Implements itk::fem::Solution.

virtual Float itk::fem::LinearSystemWrapperVNL::GetVectorValue ( unsigned int  i,
unsigned int  vectorIndex 
) const [inline, virtual]

Virtual function to get a value of a specific element of the B vector.

Parameters:
irow of the element
vectorIndexindex of vector to get value from

Implements itk::fem::LinearSystemWrapper.

Definition at line 100 of file itkFEMLinearSystemWrapperVNL.h.

References m_Vectors.

virtual void itk::fem::LinearSystemWrapperVNL::InitializeMatrix ( unsigned int  matrixIndex) [virtual]

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.

Parameters:
matrixIndexindex of matrix to initialize

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::InitializeSolution ( unsigned int  solutionIndex) [virtual]

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.

Parameters:
solutionIndexindex of solution vector to initialize

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::InitializeVector ( unsigned int  vectorIndex) [virtual]

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.

virtual bool itk::fem::LinearSystemWrapperVNL::IsMatrixInitialized ( unsigned int  matrixIndex) [virtual]

Check to see if matrix is initialized

Parameters:
matrixIndexindex of matrix to examine

Implements itk::fem::LinearSystemWrapper.

virtual bool itk::fem::LinearSystemWrapperVNL::IsSolutionInitialized ( unsigned int  solutionIndex) [virtual]

Check to see if solution vector is initialized

Parameters:
solutionIndexindex of solution vector to examine

Implements itk::fem::LinearSystemWrapper.

virtual bool itk::fem::LinearSystemWrapperVNL::IsVectorInitialized ( unsigned int  vectorIndex) [virtual]

Check to see if vector is initialized

Parameters:
vectorIndexvector of index to examine

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::MultiplyMatrixMatrix ( unsigned int  resultMatrixIndex,
unsigned int  leftMatrixIndex,
unsigned int  rightMatrixIndex 
) [virtual]

Perform a matrix*matrix operation and store the result in the linear system

Parameters:
leftMatrixIndexindex of left matrix
rightMatrixIndexindex of right matrix
resultMatrixIndexindex of matrix where solution is stored

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::MultiplyMatrixVector ( unsigned int  resultVectorIndex,
unsigned int  matrixIndex,
unsigned int  vectorIndex 
) [virtual]

Perform a matrix*vector operation and store the result in the linear system

Parameters:
matrixIndexindex of matrix to multiply
vectorIndexindex of vector to multiply
resultVectorIndexindex of vector where result is store

Reimplemented from itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::ScaleMatrix ( Float  scale,
unsigned int  matrixIndex 
) [virtual]

Multiplies all elements of a matrix by a scalar

Parameters:
scalescalar to multiply all matrix values by
matrixIndexindex of matrix to modify

Reimplemented from itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::SetMatrixValue ( unsigned int  i,
unsigned int  j,
Float  value,
unsigned int  matrixIndex 
) [inline, virtual]

Virtual function to set a value of a specific element of the A matrix.

Parameters:
irow of the element
jcolumn of the element
valuenew value of the element
matrixIndexindex of matrix to set value in

Implements itk::fem::LinearSystemWrapper.

Definition at line 90 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::SetMaximumNonZeroValuesInMatrix ( unsigned  int,
unsigned  int 
) [inline, virtual]

Definition at line 80 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::SetSolutionValue ( unsigned int  i,
Float  value,
unsigned int  solutionIndex 
) [inline, virtual]

Virtual function to set a value of specific element of the solution vector.

Parameters:
ielement Index in solution vector
valuenew value of the element
solutionIndexindex of solution vector to set value in

Implements itk::fem::LinearSystemWrapper.

Definition at line 117 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::SetVectorValue ( unsigned int  i,
Float  value,
unsigned int  vectorIndex 
) [inline, virtual]

Virtual function to set a value of a specific element of the B vector.

Parameters:
irow of the element
valuenew value of the element
vectorIndexindex of vector to set value in

Implements itk::fem::LinearSystemWrapper.

Definition at line 105 of file itkFEMLinearSystemWrapperVNL.h.

virtual void itk::fem::LinearSystemWrapperVNL::Solve ( void  ) [virtual]

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.

Note:
This function can only be called after the linear system was properly assembled.

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::SwapMatrices ( unsigned int  matrixIndex1,
unsigned int  matrixIndex2 
) [virtual]

Swaps access indices of any 2 matrices in the linear system

Parameters:
matrixIndex1index of a matrix to swap
matrixIndex2index of matrix to swap with

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::SwapSolutions ( unsigned int  solutionIndex1,
unsigned int  solutionIndex2 
) [virtual]

Swaps access indices of any 2 solution vectors in the linear system

Parameters:
solutionIndex1index of a solution vector to swap
solutionIndex2index of solution vector to swap with

Implements itk::fem::LinearSystemWrapper.

virtual void itk::fem::LinearSystemWrapperVNL::SwapVectors ( unsigned int  vectorIndex1,
unsigned int  vectorIndex2 
) [virtual]

Swaps access indices of any 2 vectors in the linear system

Parameters:
vectorIndex1index of a vector to swap
vectorIndex2index of vector to swap with

Implements itk::fem::LinearSystemWrapper.


Member Data Documentation

vector of pointers to VNL sparse matrices

Definition at line 151 of file itkFEMLinearSystemWrapperVNL.h.

Referenced by GetMatrixValue().

vector of pointers to VNL vectors

Definition at line 157 of file itkFEMLinearSystemWrapperVNL.h.

vector of pointers to VNL vectors

Definition at line 154 of file itkFEMLinearSystemWrapperVNL.h.

Referenced by GetVectorValue().


The documentation for this class was generated from the following file: