I wrote a milu(0) preconditioner which is a lot faster than your incomplete LU implementation and can reduce the number of iterations considerably (compared to standard ilu(0)).
Feel free to include it in your project: MILU0-TestProject.rar
Some benchmarks:
The error is conforming to what Matlab does. Though your IncompleteLU works just fine for this matrix, I wonder if it does anything good regarding iteration speed!?
Cheers,
Chris
Feel free to include it in your project: MILU0-TestProject.rar
Some benchmarks:
fidap004.mtx: 1601x1601 (31837 nz)
Milu0 IncompleteLU
Init : * 964ms
Solve: * 312ms
fidap007.mtx: 1633x1633 (46570 nz)
Milu0 IncompleteLU
Init : 5ms 1458ms
Solve: 2ms 322ms
fidap011.mtx: 16614x16614 (1091362 nz)
Milu0 IncompleteLU
Init : 246ms 345174ms
Solve: 48ms 38161ms
utm1700a.mtx: 1700x1700 (21313 nz)
Milu0 IncompleteLU
Init : 1ms 564ms
Solve: 0ms 305ms
utm5940.mtx: 5940x5940 (83842 nz)
Milu0 IncompleteLU
Init : 6ms 7730ms
Solve: 3ms 3825ms
*
= Error: Zero pivot encountered on row 24 during ILU processThe error is conforming to what Matlab does. Though your IncompleteLU works just fine for this matrix, I wonder if it does anything good regarding iteration speed!?
Cheers,
Chris