63 mat =
dynamic_cast< CompCol *
>(& A);
65 OOFEM_ERROR(
"CompCol matrix needed for Pardiso solver");
84 for (
int i = 0; i < n + 1; i++ ) {
88 for (
int i = 0; i < nnz; i++ ) {
109 int maxfct, mnum, phase, error, msglvl;
120 OOFEM_WARNING(
"Error during pardiso init, error code: %d", error);
130 iparm [ 12 - 1 ] = 2;
131 iparm [ 35 - 1 ] = 1;
146 pardiso( pt, & maxfct, & mnum, & mtype, & phase, & neqs,
147 a, (
int * ) ia, (
int * ) ja,
151 OOFEM_WARNING(
"Error during symbolic factorization: %d", error);
154 OOFEM_LOG_DEBUG(
"Reordering completed: %d nonzero factors, %d factorization MFLOPS\n", iparm [ 17 - 1 ], iparm [ 18 - 1 ]);
161 pardiso( pt, & maxfct, & mnum, & mtype, & phase, & neqs,
162 a, (
int * ) ia, (
int * ) ja,
166 OOFEM_WARNING(
"ERROR during numerical factorization: %d", error);
176 pardiso( pt, & maxfct, & mnum, & mtype, & phase, & neqs,
177 a, (
int * ) ia, (
int * ) ja,
180 printf(
"iparm(20) = %d\n", iparm [ 20 ]);
182 OOFEM_WARNING(
"ERROR during solution: %d, iparm(20) = %d", error, iparm [ 20 - 1 ]);
192 for (
int i = 0; i < n + 1; i++ ) {
195 for (
int i = 0; i < nnz; i++ ) {
207 pardiso( pt, & maxfct, & mnum, & mtype, & phase,
208 & neqs, & ddum, & idum, & idum, & idum, & nrhs,
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.
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()
#define NM_NoSuccess
Numerical method failed to solve problem.
int giveNumberOfRows() const
Returns number of rows of receiver.
#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.
virtual NM_Status solve(SparseMtrx &A, FloatArray &b, FloatArray &x)
Solves the given sparse linear system of equations .
PardisoProjectOrgSolver(Domain *d, EngngModel *m)
Constructor.
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.
double getUtime()
Returns total user time elapsed in seconds.
#define OOFEM_WARNING(...)
virtual ~PardisoProjectOrgSolver()
void resize(int s)
Resizes receiver towards requested size.