19 #ifndef itkFEMLinearSystemWrapperItpack_h
20 #define itkFEMLinearSystemWrapperItpack_h
25 #include "ITKFEMExport.h"
37 integer *, doublereal *,
38 integer *, doublereal *, integer *);
558 m_MaximumNonZeroValues =
562 virtual void ScaleMatrix(Float scale,
unsigned int matrixIndex) ITK_OVERRIDE;
582 virtual void InitializeMatrix(
unsigned int matrixIndex) ITK_OVERRIDE;
584 virtual bool IsMatrixInitialized(
unsigned int matrixIndex) ITK_OVERRIDE;
586 virtual void DestroyMatrix(
unsigned int matrixIndex) ITK_OVERRIDE;
588 virtual void InitializeVector(
unsigned int vectorIndex) ITK_OVERRIDE;
590 virtual bool IsVectorInitialized(
unsigned int vectorIndex) ITK_OVERRIDE;
592 virtual void DestroyVector(
unsigned int vectorIndex) ITK_OVERRIDE;
594 virtual void InitializeSolution(
unsigned int solutionIndex) ITK_OVERRIDE;
596 virtual bool IsSolutionInitialized(
unsigned int solutionIndex) ITK_OVERRIDE;
598 virtual void DestroySolution(
unsigned int solutionIndex) ITK_OVERRIDE;
601 virtual Float GetMatrixValue(
unsigned int i,
unsigned int j,
unsigned int matrixIndex)
const ITK_OVERRIDE;
603 virtual void SetMatrixValue(
unsigned int i,
unsigned int j, Float value,
unsigned int matrixIndex) ITK_OVERRIDE;
605 virtual void AddMatrixValue(
unsigned int i,
unsigned int j, Float value,
unsigned int matrixIndex) ITK_OVERRIDE;
607 virtual void GetColumnsOfNonZeroMatrixElementsInRow(
unsigned int row, ColumnArray & cols,
unsigned int matrixIndex) ITK_OVERRIDE;
609 virtual Float GetVectorValue(
unsigned int i,
unsigned int vectorIndex)
const ITK_OVERRIDE;
611 virtual void SetVectorValue(
unsigned int i, Float value,
unsigned int vectorIndex) ITK_OVERRIDE;
613 virtual void AddVectorValue(
unsigned int i, Float value,
unsigned int vectorIndex) ITK_OVERRIDE;
615 virtual Float GetSolutionValue(
unsigned int i,
unsigned int solutionIndex)
const ITK_OVERRIDE;
617 virtual void SetSolutionValue(
unsigned int i, Float value,
unsigned int solutionIndex) ITK_OVERRIDE;
619 virtual void AddSolutionValue(
unsigned int i, Float value,
unsigned int solutionIndex) ITK_OVERRIDE;
621 virtual void Solve(
void) ITK_OVERRIDE;
624 virtual
void SwapMatrices(
unsigned int matrixIndex1,
unsigned int matrixIndex2) ITK_OVERRIDE;
626 virtual
void SwapVectors(
unsigned int vectorIndex1,
unsigned int vectorIndex2) ITK_OVERRIDE;
628 virtual
void SwapSolutions(
unsigned int solutionIndex1,
unsigned int solutionIndex2) ITK_OVERRIDE;
630 virtual
void CopySolution2Vector(
unsigned solutionIndex,
unsigned int vectorIndex) ITK_OVERRIDE;
632 virtual
void CopyVector2Solution(
unsigned int vectorIndex,
unsigned int solutionIndex) ITK_OVERRIDE;
634 virtual
void MultiplyMatrixMatrix(
unsigned int resultMatrixIndex,
unsigned int leftMatrixIndex,
635 unsigned int rightMatrixIndex) ITK_OVERRIDE;
637 virtual
void MultiplyMatrixVector(
unsigned int resultVectorIndex,
unsigned int matrixIndex,
unsigned int vectorIndex) ITK_OVERRIDE;
645 virtual
void MultiplyMatrixSolution(
unsigned int resultVectorIndex,
unsigned int matrixIndex,
unsigned int solutionIndex) ITK_OVERRIDE;
661 unsigned int m_MaximumNonZeroValues;
708 #endif // #ifndef itkFEMLinearSystemWrapperItpack_h
int GetErrorAnalysisSwitch() const
double GetDigitsInResidual() const
int GetSymmetricMatrixFlag()
double GetSmallestJacobiEigenvalueEstimate()
int(* ItkItpackSolverFunction)(integer *, integer *, integer *, doublereal *, doublereal *, doublereal *, integer *, integer *, doublereal *, integer *, doublereal *, integer *)
double GetAccuracy() const
void SetRemoveSwitch(int i)
void SetSymmetricMatrixFlag(int i)
void SetTolerance(double i)
handles errors that occur in itpack solving routines
int GetOutputNumber() const
int GetAdaptiveSwitch() const
double * VectorRepresentation
void SetSmallestJacobiEigenvalueEstimate(double i)
std::vector< MatrixRepresentation > MatrixHolder
void SetEstimatedSpectralRadiusLU(double i)
int GetCommunicationSwitch() const
void SetErrorAnalysisSwitch(int i)
void SetDampingFactor(double i)
void SetEstimatedSpectralRadiusSSOR(double i)
void ReducedSystemSemiIteration()
void SetTimingSwitch(int i)
a compressed row sparse matrix representation that makes use of itpack to dynamically assemble the ma...
double GetOverrelaxationParameter()
void SuccessiveOverrelaxation()
void SetTimeForCall(double i)
int GetRedBlackOrderingSwitch()
void JacobianSemiIterative()
std::vector< VectorRepresentation > VectorHolder
void SetMaximumNumberIterations(int i)
void JacobianConjugateGradient()
void SetAccuracy(double i)
int GetAdaptiveCaseSwitch() const
virtual ~FEMExceptionItpackSolver() noexcept
void SetDigitsInResidual(double i)
Defines all functions required by Solver class to allocate, assemble and solve a linear system of equ...
double GetEstimatedSpectralRadiusLU() const
void SetAdaptiveCaseSwitch(int i)
int GetErrorReportingLevel() const
int GetMaximumNumberIterations() const
void SetRedBlackOrderingSwitch(int i)
double GetEstimatedSpectralRadiusSSOR() const
void SetDigitsInError(double i)
LinearSystemWrapperItpack Self
double GetDampingFactor() const
double GetTimeToConvergence()
void SetAdaptiveSwitch(int i)
void SymmetricSuccessiveOverrelaxationConjugateGradient()
double GetLargestJacobiEigenvalueEstimate() const
void SetTimeToConvergence(double i)
ItpackSparseMatrix MatrixRepresentation
void SetCommunicationSwitch(int i)
LinearSystemWrapper class that uses Itpack numeric library functions to define and solve a sparse lin...
Base class for all exception's that can occur within FEM classes.
double GetDigitsInError() const
LinearSystemWrapper Superclass
void SymmetricSuccessiveOverrelaxationSuccessiveOverrelaxation()
void SetLargestJacobiEigenvalueEstimate(double i)
void SetOverrelaxationParameter(double i)
virtual void SetMaximumNonZeroValuesInMatrix(unsigned int maxNonZeroValues)
void SetWorkspaceUsed(int i)
void ReducedSystemConjugateGradient()