Hi, i am solving a system for which is interfaced both with petsc and hypre. I.e. i have some data and build the matrix up either via petsc or hypre (for hypre i use the sstruct interface). The output of the system after several hundred timestep is only different on the order of 1e-04 for a non-linear system. So in terms of accuracy things agree pretty well such that i think i can rule out that the issue is related to the matrix itself.
Anyway, for both interfaces i am using the Euclid/BiCGSTAB combination (rel.tol. 1e-08). I would expect similar results in terms of performance which i do not get. For PETSC:HYPRE_EUCLID:BICGSTAB for the first 10 timesteps i get 12 iterations per timestep. Using HYPRE directly i get convergence after 3 iterations. At first the it seems like the tolerance is the issue. I get the residuals and iterations as follows: 1) HYPRE: HYPRE_SStructBiCGSTABGetNumIterations(m_SStruct->ssSolver, &a_iterations); HYPRE_SStructBiCGSTABGetFinalRelativeResidualNorm(m_SStruct->ssSolver, &a_relres); 2) PETSC: m_ierr = KSPGetIterationNumber(m_ksp, &a_iterations_solver); m_ierr = KSPGetResidualNorm(m_ksp, &a_relres_solver); Other than that i do change the type of norm or anything. The residual using HYPRE is on the order of 1e-09 The residual using PETSC is on the order of 1e-04 So not only dies HYPRE use less iterations, it also gives the smaller residual. I think this is a user error as i cannot really explain why there would be such a vast difference. I was just wondering if anyone has any insight as to what else i could try or an attempt at some explanation as to what i am seeing. thanks matt -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20111112/3f330e3c/attachment.htm>
