CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   conjugate gradient squared method (https://www.cfd-online.com/Forums/main/115790-conjugate-gradient-squared-method.html)

mb.pejvak April 7, 2013 03:45

conjugate gradient squared method
 
Hi friends;

I plan to implement a non-stationary relaxation method on the code I developed (modeling transition by Gamma-Retheta transition model).
did anyone work with this method?
can it be useful for this equations?
how much can it increase the speed of convergence?

thanks in advance

mb.pejvak April 9, 2013 23:25

I found that BICGSTAB is better choice, but I face a problem in implementing it in navier-stocks equation. due to coefficient matrix [A] depends on the velocity (unknown matrix [x]) in each iteration [A] should be amended. in BICGSTAB method applying, whether after each iteration in the method, [A] should be amended or number of iterations in the method should be considered?

rmh26 April 10, 2013 09:57

BiCGSTAB is probably better than CGS in terms of stability. CGS tends to have irregular convergence. Both algorithms involve the same operations ( Matrix vectors, dot product, vector updates) so it shouldn't be hard to switch from one to the other.

I would not try updating the coefficient matrix in the BiCGSTAB algorithm. All of the Krylov subspace methods involve searching for solutions to a linear system in a vector space based on the coefficient matrix. They work by progressively minimizing the error in this space. If you change your matrix because you are trying to solve a non linear problem you will be modifying this space and your iteration will be break down. It seems like you are describing a Picard or fixed point type iteration scheme. You are linearizing the equations, solving them, and then updating your linearization. It it important that you restart the BiCG solver after each new linearization. So it would look more like 10 sets of 10 iterations rather than 100 iterations in a row with a varying coefficient matrix.

mb.pejvak April 10, 2013 22:00

Quote:

Originally Posted by rmh26 (Post 419650)
BiCGSTAB is probably better than CGS in terms of stability. CGS tends to have irregular convergence. Both algorithms involve the same operations ( Matrix vectors, dot product, vector updates) so it shouldn't be hard to switch from one to the other.

I would not try updating the coefficient matrix in the BiCGSTAB algorithm. All of the Krylov subspace methods involve searching for solutions to a linear system in a vector space based on the coefficient matrix. They work by progressively minimizing the error in this space. If you change your matrix because you are trying to solve a non linear problem you will be modifying this space and your iteration will be break down. It seems like you are describing a Picard or fixed point type iteration scheme. You are linearizing the equations, solving them, and then updating your linearization. It it important that you restart the BiCG solver after each new linearization. So it would look more like 10 sets of 10 iterations rather than 100 iterations in a row with a varying coefficient matrix.

Dear rmh26;
Thank you so much. I plan to do it in a way that you recommended, but I am not sure about this remedy. I want to amend coefficient matrix after 10 BICGSTAB iterations based on the value of variables (U,V,P, ...), calculate [A] and [b] with Naveir-Stocks, turbulent and transition models and then use them in BICGSTAB algorithm, and do it until it converge.
I also have another question about preconditioner. in "Iterative Methods for Sparse Linear Systems", it is said that choosing appropriate preconditioner is more effective tha using relaxation method ("In general, the reliability of iterative techniques, when dealing with various applications, depends much more on the quality of the preconditioner than on the particular Krylov subspace accelerators used.") so what your idea about the preconditioner methods? can it be said that one of the better than another or their robustness and accuracy are determined in specific applications?

rmh26 April 12, 2013 11:27

Incomplete lower upper factorizations worked well for me. I am working on a multigrid preconditioner in my spare time. It should increase the speed up but will require a little more work. Besides making the solver run faster than main benefit of preconditioning is that the iteration procedure can break down for the CGS or BiCG style methods. When using a preconditioner they tend to be much more robust. It won't affect the accuracy of the solution. For a convection dominated problem I would think that ILU would work well. The ordering of your matrix will have a large effect on the rate. If your lucky and the flow is mostly in one direction then you decomposition should be in that direction as well.

mb.pejvak April 15, 2013 23:42

another thing that I faced is BICGSTAB weak point in some cases in which A has imaginary eigenvalue, and it causes the method to break down (BICGSTAB(L) FOR LINEAR EQUATIONS INVOLVING UNSYMMETRIC MATRICES WITH COMPLEX SPECTRUM; by GERARD L.G. SLEIJPENy AND DIEDERIK R. FOKKEMA) in that case BICGSTAB(l) is recommended by them. particularly in an example (No.1) in this paper, it was mentioned that if the equation is advection-dominated problem, BICGSTAB has worse results than BICG.
now, my question is regarding my problem which is low-Reynolds-number flow and NS, SST K-omega, and Gamma-Retheta models should be solved, do you think using BICGSTAB can be effective or I should select BICGSTAB(l) for better results?

mb.pejvak April 20, 2013 01:50

Dear Friends;
I select BICGSTAB(l) for the code that I have developed (NS, SST K-Omega turbulence model, Gamma-Retheta transition model equations) to increase the speed of convergence in this code. I wrote subroutine of this method. I want to evaluate it before adding to my main code with a small matrices, but I can not find a real problem. does any one have this kind of example for evaluating this code?

mb.pejvak May 30, 2013 21:47

I implemented BICGSTAB(l) in NS equations, but unfortunately it does not work well. after only one iteration in SIMPLER algorithm, it diverges. I don't know why? I check the code and make necessary changes in [A] and [B] matrix.
I should say I apply BICGSTAB(l) without preconditioner. does anyone know what should I do or what steps are necessary in implementing this method in NS equation with SIMPLER algorithm? or relaxation method does not depend on descritizing algorithms (SIMPLE or ...).
In addition, is it necessary to apply preconditioner in BICGSTAB(l) since it may diverge?


All times are GMT -4. The time now is 12:05.