19 #ifndef __itkFEMLinearSystemWrapperVNL_h
20 #define __itkFEMLinearSystemWrapperVNL_h
22 #include "vnl/vnl_sparse_matrix.h"
23 #include "vnl/vnl_vector.h"
24 #include <vnl/vnl_sparse_matrix_linear_system.h>
25 #include <vnl/algo/vnl_lsqr.h>
86 unsigned int matrixIndex)
const
88 return ( *( ( *
m_Matrices )[matrixIndex] ) )(i, j);
91 unsigned int matrixIndex)
93 ( *( ( *m_Matrices )[matrixIndex] ) )(i, j) = value;
96 unsigned int matrixIndex)
98 ( *( ( *m_Matrices )[matrixIndex] ) )(i, j) += value;
101 unsigned int vectorIndex)
const
103 return ( *( ( *
m_Vectors )[vectorIndex] ) )[i];
106 unsigned int vectorIndex)
108 ( *( ( *m_Vectors )[vectorIndex] ) )(i) = value;
111 unsigned int vectorIndex)
113 ( *( ( *m_Vectors )[vectorIndex] ) )(i) += value;
118 unsigned int solutionIndex)
120 ( *( ( *m_Solutions )[solutionIndex] ) )(i) = value;
123 unsigned int solutionIndex)
125 ( *( ( *m_Solutions )[solutionIndex] ) )(i) += value;
127 virtual void Solve(
void);
132 virtual void SwapMatrices(
unsigned int matrixIndex1,
unsigned int matrixIndex2);
134 virtual void SwapVectors(
unsigned int vectorIndex1,
unsigned int vectorIndex2);
136 virtual void SwapSolutions(
unsigned int solutionIndex1,
unsigned int solutionIndex2);
143 unsigned int rightMatrixIndex);
145 virtual void MultiplyMatrixVector(
unsigned int resultVectorIndex,
unsigned int matrixIndex,
unsigned int vectorIndex);
virtual void InitializeSolution(unsigned int solutionIndex)
virtual void AddVectorValue(unsigned int i, Float value, unsigned int vectorIndex)
virtual void CopySolution2Vector(unsigned solutionIndex, unsigned int vectorIndex)
virtual void InitializeVector(unsigned int vectorIndex)
virtual void CopyVector2Solution(unsigned int vectorIndex, unsigned int solutionIndex)
virtual void ScaleMatrix(Float scale, unsigned int matrixIndex)
LinearSystemWrapper SuperClass
virtual void SwapMatrices(unsigned int matrixIndex1, unsigned int matrixIndex2)
virtual void MultiplyMatrixMatrix(unsigned int resultMatrixIndex, unsigned int leftMatrixIndex, unsigned int rightMatrixIndex)
virtual void DestroyVector(unsigned int vectorIndex)
virtual void SwapSolutions(unsigned int solutionIndex1, unsigned int solutionIndex2)
virtual void InitializeMatrix(unsigned int matrixIndex)
virtual bool IsSolutionInitialized(unsigned int solutionIndex)
std::vector< vnl_vector< Float > * > * m_Solutions
vnl_sparse_matrix< Float > MatrixRepresentation
Defines all functions required by Solver class to allocate, assemble and solve a linear system of equ...
virtual void SetSolutionValue(unsigned int i, Float value, unsigned int solutionIndex)
virtual Float GetMatrixValue(unsigned int i, unsigned int j, unsigned int matrixIndex) const
virtual bool IsMatrixInitialized(unsigned int matrixIndex)
virtual void SetMatrixValue(unsigned int i, unsigned int j, Float value, unsigned int matrixIndex)
virtual void DestroyMatrix(unsigned int matrixIndex)
virtual void SetVectorValue(unsigned int i, Float value, unsigned int vectorIndex)
virtual Float GetVectorValue(unsigned int i, unsigned int vectorIndex) const
virtual void AddSolutionValue(unsigned int i, Float value, unsigned int solutionIndex)
MatrixHolder * m_Matrices
std::vector< vnl_vector< Float > * > * m_Vectors
virtual Float GetSolutionValue(unsigned int i, unsigned int solutionIndex) const
virtual void SetMaximumNonZeroValuesInMatrix(unsigned int, unsigned int)
std::vector< MatrixRepresentation * > MatrixHolder
virtual ~LinearSystemWrapperVNL()
virtual void AddMatrixValue(unsigned int i, unsigned int j, Float value, unsigned int matrixIndex)
virtual void MultiplyMatrixVector(unsigned int resultVectorIndex, unsigned int matrixIndex, unsigned int vectorIndex)
virtual void SwapVectors(unsigned int vectorIndex1, unsigned int vectorIndex2)
LinearSystemWrapper class that uses VNL numeric library functions to define a sparse linear system of...
virtual bool IsVectorInitialized(unsigned int vectorIndex)
LinearSystemWrapper::Float Float
virtual void DestroySolution(unsigned int solutionIndex)