77 extern void wgsmp_(
int *N,
87 extern void wsetmaxthrds_(
int *);
88 extern void wsmp_clear_();
95 const unsigned blockSize,
const unsigned nt)
112 wgsmp_(&iSize, 0, 0, 0, 0, &ldb, &nrhs, rmisc, iparm, dparm);
120 if (dPivot != -1. && (dPivot >= 0. && dPivot <= 1.)) {
132 iparm[31] = blockSize;
136 WsmpSolver::~WsmpSolver(
void)
144 bHasBeenReset =
true;
148 WsmpSolver::Solve(
void)
const
151 const_cast<WsmpSolver *
>(
this)->
Factor();
152 bHasBeenReset =
false;
171 silent_cerr(
"Wsmp back substitution failed" << std::endl);
187 silent_cerr(
"Wsmp iterative refinement failed" << std::endl);
198 WsmpSolver::Factor(
void)
206 if (!Symbolic && !bPrepareSymbolic()) {
220 silent_cerr(
"Wsmp factorization failed" << std::endl);
231 std::vector<doublereal>& Ax,
232 std::vector<integer>& Ai,
233 std::vector<integer>& Ac,
234 std::vector<integer>& Ap)
const
236 if (!bHasBeenReset) {
248 WsmpSolver::bPrepareSymbolic(
void)
262 silent_cerr(
"Wsmp factorization failed" << std::endl);
279 WsmpSparseSolutionManager::WsmpSparseSolutionManager(
integer Dim,
281 const unsigned blockSize,
288 WsmpSolver(Dim, dPivot, blockSize, nt));
290 (void)pLS->pdSetResVec(&xb[0]);
291 (void)pLS->pdSetSolVec(&xb[0]);
292 pLS->SetSolutionManager(
this);
295 WsmpSparseSolutionManager::~WsmpSparseSolutionManager(
void)
301 WsmpSparseSolutionManager::MatrReset(
void)
307 WsmpSparseSolutionManager::MakeCompressedColumnForm(
void)
309 pLS->MakeCompactForm(A, Ax, Ai, Adummy, Ap);
314 WsmpSparseSolutionManager::Solve(
void)
316 MakeCompressedColumnForm();
322 WsmpSparseSolutionManager::pMatHdl(
void)
const
329 WsmpSparseSolutionManager::pResHdl(
void)
const
336 WsmpSparseSolutionManager::pSolHdl(
void)
const
344 WsmpSparseCCSolutionManager<CC>::WsmpSparseCCSolutionManager(
integer Dim,
346 const unsigned& blockSize,
348 : WsmpSparseSolutionManager(Dim, dPivot, blockSize, nt),
356 WsmpSparseCCSolutionManager<CC>::~WsmpSparseCCSolutionManager(
void)
365 WsmpSparseCCSolutionManager<CC>::MatrReset(
void)
372 WsmpSparseCCSolutionManager<CC>::MakeCompressedColumnForm(
void)
375 pLS->MakeCompactForm(A, Ax, Ai, Adummy, Ap);
388 WsmpSparseCCSolutionManager<CC>::MatrInitialize()
398 WsmpSparseCCSolutionManager<CC>::pMatHdl(
void)
const
408 template class WsmpSparseCCSolutionManager<CColMatrixHandler<0> >;
409 template class WsmpSparseCCSolutionManager<DirCColMatrixHandler<0> >;
virtual integer MakeCompressedColumnForm(doublereal *const Ax, integer *const Ai, integer *const Ap, int offset=0) const =0
#define MBDYN_EXCEPT_ARGS
void Reset(scalar_func_type &d)
#define ASSERT(expression)
#define SAFENEWWITHCONSTRUCTOR(pnt, item, constructor)