43 #ifndef PARSUPERLUWRAP_H
44 #define PARSUPERLUWRAP_H
49 #include "ac/pthread.h"
67 struct ParSuperLUSolverData;
81 mutable bool bFirstSol;
82 mutable bool bRegenerateMatrix;
84 ParSuperLUSolverData *sld;
93 struct thread_data_t {
95 ParSuperLUSolver *pSLUS;
96 unsigned threadNumber;
98 void *pdgstrf_threadarg;
102 unsigned thread_count;
103 pthread_mutex_t thread_mutex;
104 pthread_cond_t thread_cond;
107 static void *thread_op(
void *arg);
119 ~ParSuperLUSolver(
void);
122 void IsValid(
void)
const;
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;
150 std::vector<integer> Ai;
152 std::vector<integer> Adummy;
153 std::vector<integer> Ap;
155 std::vector<doublereal> Ax;
156 std::vector<doublereal> xb;
167 void IsValid(
void)
const;
170 virtual void MakeCompressedColumnForm(
void);
173 ParSuperLUSparseSolutionManager(
unsigned nt,
integer iSize,
177 ~ParSuperLUSparseSolutionManager(
void);
212 class ParSuperLUSparseCCSolutionManager:
public ParSuperLUSparseSolutionManager {
217 virtual void MatrReset(
void);
218 virtual void MakeCompressedColumnForm(
void);
221 ParSuperLUSparseCCSolutionManager(
unsigned nt,
integer Dim,
223 virtual ~ParSuperLUSparseCCSolutionManager(
void);
226 virtual void MatrInitialize(
void);
virtual VectorHandler * pResHdl(void) const =0
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