Class xlifepp::UmfPackSolver#

class UmfPackSolver#

Collaboration diagram for xlifepp::UmfPackSolver:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::UmfPackSolver" tooltip="xlifepp::UmfPackSolver" fillcolor="#BFBFBF"] }

This class solve AX=B with Umfpack library and it provides a same interface as iterative solvers User can invoke this solver with the operator()

Public Functions

inline UmfPackSolver(void)#

default constructor

inline ~UmfPackSolver()#

destructor

template<class Mat, class VecB, class VecX>
inline double operator()(const Mat &matA, const std::vector<VecB*> &bs, std::vector<VecX*> &xs, bool stopOnAbnormal = true)#

multiple right hand sides

template<class Mat, class VecB, class VecX>
inline double operator()(const Mat &matA, const VecB &vecB, VecX &vecX, bool stopOnAbnormal = true)#

Solve AX=B with UmfPack.

Parameters:
  • matA[in] matrix A (matrix A should be largeMatrix and its storage can be overwritten)

  • vecB[in] vector B (vector B should be std::vector)

  • vecX[in] vector X (vector X should be std::vector)

  • stopOnAbnormal[in] boolean needed by the solIntern::solve call return the reciprocal condition number rcond = 1/||A||*||inv(A)|| in norm 1

template<class ScalarTypeMat, class VecB, class VecX>
inline double operator()(int_t size, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const VecB &vecB, VecX &vecX, UmfPackComputationMode sys = _A, bool stopOnAbnormal = true)#

Solve AX=B with UmfPack.

Parameters:
  • size[in] matrix size

  • colPointer[in] column pointer of CSC-like Umfpack format (after calling function extract2UmfPack of largeMatrix)

  • rowIdx[in] row index of CSC-like Umfpack format (after calling function extract2UmfPack of largeMatrix)

  • values[in] values of CSC-like Umfpack format (after calling function extract2UmfPack of largeMatrix)

  • vecB[in] vector B (vector B should be std::vector)

  • vecX[in] vector X (vector X should be std::vector)

  • sys[in] computation mode for UmfPack

  • stopOnAbnormal[in] bollean needed by the solIntern::solve call return the reciprocal condition number rcond = 1/||A||*||inv(A)|| in norm 1