64 mat =
dynamic_cast< CompCol *
>(&A);
66 OOFEM_ERROR(
"CompCol matrix needed for Pardiso solver");
92 int maxfct, mnum, phase, error, msglvl;
124 pardiso(pt, &maxfct, &mnum, &mtype, &phase, &neqs,
125 (
void*)a, (
int*)ia, (
int*)ja,
126 &idum, &nrhs, iparm.givePointer(), &msglvl, &ddum, &ddum, &error);
129 OOFEM_WARNING(
"Error during symbolic factorization: %d", error);
132 OOFEM_LOG_DEBUG(
"Reordering completed: %d nonzero factors, %d factorization MFLOPS\n", iparm[17-1], iparm[18-1]);
139 pardiso(pt, &maxfct, &mnum, &mtype, &phase, &neqs,
140 (
void*)a, (
int*)ia, (
int*)ja,
141 &idum, &nrhs, iparm.givePointer(), &msglvl, &ddum, &ddum, &error);
144 OOFEM_WARNING(
"ERROR during numerical factorization: %d", error);
154 pardiso(pt, &maxfct, &mnum, &mtype, &phase, &neqs,
155 (
void*)a, (
int*)ia, (
int*)ja,
158 printf(
"iparm(20) = %d\n", iparm[20]);
160 OOFEM_WARNING(
"ERROR during solution: %d, iparm(20) = %d", error, iparm[20-1]);
171 pardiso(pt, &maxfct, &mnum, &mtype, &phase,
172 &neqs, &ddum, &idum, &idum, &idum, &nrhs,
173 iparm.givePointer(), &msglvl, &ddum, &ddum, &error);
IntArray & giveRowIndex()
#define NM_Success
Numerical method exited with success.
void pardisoinit(void *, int *, int *, int *, double *, int *)
Base class for all matrices stored in sparse format.
virtual ~MKLPardisoSolver()
This base class is an abstraction for all numerical methods solving sparse linear system of equations...
const int * givePointer() const
Breaks encapsulation.
unsigned long NM_Status
Mask defining NumMetod Status; which can be asked after finishing computation by Numerical Method...
#define OOFEM_LOG_DEBUG(...)
Class implementing an array of integers.
FloatArray & giveValues()
virtual NM_Status solve(SparseMtrx &A, FloatArray &b, FloatArray &x)
Solves the given sparse linear system of equations .
#define NM_NoSuccess
Numerical method failed to solve problem.
#define OOFEM_LOG_INFO(...)
double computeSquaredNorm() const
Computes the square of the norm.
void pardiso(void *, int *, int *, int *, int *, int *, double *, int *, int *, int *, int *, int *, int *, double *, double *, int *, double *)
Implementation of symmetric sparse matrix stored using compressed column/row storage.
Initializes the variable VERBOSE, in order to get a few intermediate messages on screen: beginning an...
Class representing vector of real numbers.
Implementation of matrix containing floating point numbers.
REGISTER_SparseLinSolver(IMLSolver, ST_IML)
Class implementing single timer, providing wall clock and user time capabilities. ...
const double * givePointer() const
Gives the pointer to the raw data, breaking encapsulation.
Abstract base class representing the "problem" under consideration.
int giveSize() const
Returns the size of receiver.
the oofem namespace is to define a context or scope in which all oofem names are defined.
MKLPardisoSolver(Domain *d, EngngModel *m)
Constructor.
double getUtime()
Returns total user time elapsed in seconds.
#define OOFEM_WARNING(...)
void resize(int s)
Resizes receiver towards requested size.