67 #ifndef UmfpackSparseSolutionManager_hh
68 #define UmfpackSparseSolutionManager_hh
92 SCALE_NONE = UMFPACK_SCALE_NONE,
93 SCALE_MAX = UMFPACK_SCALE_MAX,
94 SCALE_SUM = UMFPACK_SCALE_SUM,
108 mutable void *Numeric;
111 bool bPrepareSymbolic(
void);
114 void Solve(
bool bTranspose)
const;
117 UmfpackSolver(
const integer &size,
120 const unsigned blockSize,
121 Scale scale = SCALE_UNDEF,
123 ~UmfpackSolver(
void);
126 void Solve(
void)
const;
130 std::vector<doublereal>& Ax,
131 std::vector<integer>& Ar,
132 std::vector<integer>& Ac,
133 std::vector<integer>& Ap)
const;
146 std::vector<doublereal> x;
147 std::vector<doublereal> b;
154 std::vector<doublereal> Ax;
155 std::vector<integer> Ai;
156 std::vector<integer> Adummy;
157 std::vector<integer> Ap;
161 virtual void MakeCompressedColumnForm(
void);
163 template <
typename MH>
164 void ScaleMatrixAndRightHandSide(MH &mh);
166 template <
typename MH>
169 void ScaleSolution(
void);
175 UmfpackSparseSolutionManager(
integer Dim,
178 const unsigned blockSize = 0,
179 const ScaleOpt& scale = ScaleOpt(),
181 virtual ~UmfpackSparseSolutionManager(
void);
183 virtual void IsValid(
void)
const {
192 virtual void Solve(
void);
193 virtual void SolveT(
void);
210 class UmfpackSparseCCSolutionManager:
public UmfpackSparseSolutionManager {
215 virtual void MatrReset(
void);
216 virtual void MakeCompressedColumnForm(
void);
219 UmfpackSparseCCSolutionManager(
integer Dim,
222 const unsigned& blockSize = 0,
223 const ScaleOpt& scale = ScaleOpt(),
225 virtual ~UmfpackSparseCCSolutionManager(
void);
228 virtual void MatrInitialize(
void);
virtual VectorHandler * pResHdl(void) const =0
virtual void SolveT(void) const
virtual bool bGetConditionNumber(doublereal &dCond)
virtual void SolveT(void)
virtual MatrixHandler * pMatHdl(void) const =0
virtual void MatrReset(void)=0
virtual void Solve(void)=0
virtual void Solve(void) const =0
virtual VectorHandler * pSolHdl(void) const =0
virtual void MakeCompactForm(SparseMatrixHandler &mh, std::vector< doublereal > &Ax, std::vector< integer > &Ar, std::vector< integer > &Ac, std::vector< integer > &Ap) const