I use Successive over-relaxation (SOR) for large matrices up to 1E+05 x 1E+05 matrix elements. Does anybody know a good library for that? Currently the determination of the relaxation parameter omega seems to be the central problem. As you may know a good approximation would already be enough.
For a matrix that size you can forget over-relaxation.
What do your equations look like? If they are Laplace or Poisson or single timesteps of a diffusion equation then use alternating-direction-implicit methods.
Thank you very much for your advice. It is for the simulation of blood flow in a vascular system with a subsequent simulation of diffusion. Do you have a reference? A scientific publication would ideal.
Without knowing exactly which equations you want to solve it's difficult to advise. If you want a decent CFD textbook then choose that of Versteeg and Malalasekara.
absolutely that last. When I was doing a lot of matrix stuff, reusing old results saved a TON of time. Matrix math tends to be kind of circular ... you hop in at some point and find out something about the matrix, then that leads to something else... if you already know something you can reuse that and shortcut the next thing you want to know. I don't remember if SOR gets the eigens or uses them or maybe depends on what you are doing... a little rusty .. but it seems like there was a way to make it ultra fast if you already knew something and without it iterates for a bit. I'd have to look and I can't right now ... If I am remembering right it would be obvious when you look at the algorithm.
You need to know the spectral radius (maximum eigenvalue of the matrix) to determine the exact optimal relaxation parameter omega. My original question was basically if somebody had a c++ library that computes this optimal omega, the spectral radius, or a good approximation of any of the two.
Thank you for the link. I am aware of all the information in them. It is just so that it is very challenging to write a library that computes the optimal relaxation parameter for large matrices. That is why I am posting this thread. I am looking for a library that does the job.
Then add "C++ library" to the search. Try different wordings. We are unlikely to know about every library ever developed, but you should be able to google.