<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Tahoma,Arial,Helvetica,sans-serif'>
<p>Hi all,<br /><br />I've used PETSc to develop my SIMPLE algorithm CFD code. SIMPLE algorithm has its own way to handle non-linearity of Navier-Stokes equation's so I only used PETSc's KSP solvers.<br /><br />In the SIMPLE algorithm, the diagonal coefficient of the matrix is used in the right hand side for implicit calculation of relaxation factor, so it has to be calculated before the RHS. The linear matrix has also to be calculated in each iteration as the algorithm is iterative in nature.<br /><br />I first used the KSPSetComputeOperators and KSPSetComputeRHS to do this and call KSPSetComputeOperators in each iteration so that the operator matrix is calculated but the problem was that PETSc always calculates RHS before the operator matrix.<br /><br />So I had to manually call the functions to fill operator matrix and rhs vector and then use KSPSolve to solve them. <br /><br />Now I want to use multigrid solvers and I guess I have to use KSPSetComputeOperators and KSPSetComputeRHS for this purpose, right? If so, is it possible to set PETSc to compute operators before RHS?<br /><br /></p>
<p>Thanks</p>
</body></html>