Class xlifepp::UmfPackSolver::SolverIntern#

template<typename ScalarTypeMat, typename VecB, typename VecX>
class SolverIntern#

Collaboration diagram for xlifepp::UmfPackSolver::SolverIntern:

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

Auxiliary internal class to process 4 cases of equation AX = B:

  • A:real, B: real

  • A:real, B:complex

  • A:complex, B: real

  • A:complex, B:complex

Public Types

typedef NumTraits<ScalarTypeMat>::magnitudeType MagType#

useful typedefs for SolverIntern class

Public Functions

inline SolverIntern()#

constructor

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const std::vector<VecB*> &bs, std::vector<VecX*> &xs, Int2Type<0>, bool stopOnAbnormal = true)#

multiple right hand sides. Solve AX=B in case A Real, B Real

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const std::vector<VecB*> &bs, std::vector<VecX*> &xs, Int2Type<1>, bool stopOnAbnormal = true)#

Solve AX=B in case A Real, B Complex.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const std::vector<VecB*> &bs, std::vector<VecX*> &xs, Int2Type<2>, bool stopOnAbnormal = true)#

Solve AX=B in case A Complex, bs Real, xs should be of Complex type.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const std::vector<VecB*> &bs, std::vector<VecX*> &xs, Int2Type<3>, bool stopOnAbnormal = true)#

Solve AX=B in case A Complex, B Complex.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const VecB &vecB, VecX &vecX, Int2Type<0>, bool stopOnAbnormal = true)#

Solve AX=B in case A Real, B Real.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const VecB &vecB, VecX &vecX, Int2Type<1>, bool stopOnAbnormal = true)#

Solve AX=B in case A Real, B Complex.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const VecB &vecB, VecX &vecX, Int2Type<2>, bool stopOnAbnormal = true)#

Solve AX=B in case A Complex, B Real.

inline double solve(int_t sys, int_t nRows, int_t nCols, const std::vector<int_t> &colPointer, const std::vector<int_t> &rowIdx, const ScalarTypeMat *values, const VecB &vecB, VecX &vecX, Int2Type<3>, bool stopOnAbnormal = true)#

Solve AX=B in case A Complex, B Complex.