- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

Hi All,

I have many linear equations derived from flow problem at different time steps. These equations have the same structure (same non-zero entries) but different stiffness matrices and right-hand-sides. The condition number for these matrices are around 4E15, close to ill-conditioned. There seems something wrong with the Pardiso that only the result of the first equation is correct. I have successfully solved these equations by PETSc and exported the results so as to compare.

The parameters used in Pardiso are as follows:

iparm = 0

iparm(1) = 1 ! no solver default

iparm(2) = 2 ! fill-in reordering from METIS

iparm(3) = 0 ! numbers of processors

iparm(4) = 0 ! no iterative-direct algorithm

iparm(5) = 0 ! 0 no user fill-in reducing permutation

iparm(6) = 0 ! =0 solution on the first n compoments of x

iparm(7) = 0 ! not in use

iparm(8) = 9 ! numbers of iterative refinement steps

iparm(9) = 0 ! not in use

iparm(10) = 13 ! perturbe the pivot elements with 1E-13

iparm(11) = 1 ! use nonsymmetric permutation and scaling MPS

iparm(12) = 0 ! not in use

iparm(13) = 1 ! maximum weighted matching algorithm is switched-on (default for non-symmetric)

iparm(14) = 0 ! Output: number of perturbed pivots

iparm(15) = 0 ! not in use

iparm(16) = 0 ! not in use

iparm(17) = 0 ! not in use

iparm(18) = -1 ! Output: number of nonzeros in the factor LU

iparm(19) = -1 ! Output: Mflops for LU factorization

iparm(20) = 0 ! Output: Numbers of CG Iterations

iparm(27) = 0 ! 1: check matrix error

error = 0 ! initialize error flag

msglvl = 0 ! print statistical information

mtype = 11 ! real unsymmetric

For the source codes, data and results, please look into the attached file.

Thanks and Regards,

Daniel

Link Copied

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

With a condition number of 4E15, and the 15.95 decimal digits that 64-bit reals provide, you have **less than one** reliable digit in your solution. How, then, do you conclude that "the result of the first equation is correct"?

To proceed further, we need to know more data on a case where you judge the results to be wrong -- for example, you may provide a file containing the Pardiso solutions and another containing the "correct" solutions from another solver (please specify its identity completely).

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content

mecej4 wrote:

With a condition number of 4E15, and the 15.95 decimal digits that 64-bit reals provide, you have

less than onereliable digit in your solution. How, then, do you conclude that "the result of the first equation is correct"?To proceed further, we need to know more data on a case where you judge the results to be wrong -- for example, you may provide a file containing the Pardiso solutions and another containing the "correct" solutions from another (please specify its identity completely).

I have compared the solution with other two solvers, the origional sequential solver that use ILU precondition and PETSc. The latter two solver can generate close results while Pardiso cannot. More important, this is from a flow problem, we check the results with theoretical analysis and we are sure the results by the other two solvers are correct, at least, resonable.

One question is that Pardiso can solve one equation correctly, seems that for matrices with high condition number, Pardiso may solve it by chance.

Please find the results compare in the attached file (some of them have also been included in the previous attachment), where x_pardiso_i.txt is the result of pardiso, x_PETSc_i.txt is the result of PETSc and x_i.txt is the result of origional sequential solver, i is the ith linear equation.

Thanks,

Daniel

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page