Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6875 Discussions

## How to solve this symmetric indefinite matrix with pardiso?

Beginner
376 Views

Hello,

Greetings! I would like to know how to effectively solve this(attached file) symmetric indefinite system using PARDISO. This particular matrix has super diagonal dominancy and almost zero and negative offdiagonal terms. I tried with differente pardiso parameters, could not get the solution promised by other softwares. Please suggest and list pardiso parameters/options for solving this matrix. The expected(promised) solution is ~0.7 all.

Thank you

Stoka

5 Replies
Black Belt
376 Views

Included among the MKL source code examples are source files (in C, Fortran) to solve symmetric indefinite systems. Adapt one of them to read your problem data and run the program.

Beginner
376 Views

Yes, I shall explain more, the matrix given in the text file is generated by a finite element program (ANSYS).The finite element program gives output as ~0.70 (promised solution) for all which is correct practically. When I use the same matrix  and solve it through MKL PARDISO it gives values ranging from ~0.6 to ~2.0 which is not practical. I just used phase 11,22,33 to solve this matrix. As I explained earlier, the matrix is super dominant along diagonal but have very less values offdiagonal (zero and negative). I would like to know different parameter tweaks in MKL PARDISO to get result similar to the finite element program.

Any help in this direction is greately appreciated.

Black Belt
376 Views

The example code pardiso_sym_f90.f90 that is distributed with MKL, when run on your data, gives a solution vector whose components range from 0.700 to 0.703. No changes to the algorithmic parameters (IPARM array) were needed other than those already present in the example code.

Rather than asking for tweaks, you should pay attention to providing your data correctly to MKL-Pardiso.

Employee
376 Views

How do you set PARDISO parameters? Do you just use the default settings? There are a few settings in iparm you can try to tweak to get better results (assuming mtype = -2):

iparm[9] - Pivort perturbation

iparm[10] - Scaling

iparm[12] - Maximum weighted matching

See here for detailed discussions on how to set these parameters.

See the code example \$MKLROOT/examples/solverc/source/pardiso_sym_getdiag_c.c for hints on how to handle symmetric indefinie matrix.

Beginner
376 Views

Thank you for both of your help. Sorted it by tweaking iparm values as indicated above.