On Wed, Jan 20, 2016 at 11:35 AM, Salazar De Troya, Miguel < [email protected]> wrote:
> Hello > > I am trying to speed up a two dimensional linear elasticity problem with > isotropic and heterogeneous properties. It is a topology optimization > problem, therefore some regions have an almost zero stiffness whereas other > regions have a higher value, making the matrix ill-conditioned. So far, > from having searched mail lists on similar problems, I have come up with > the following CL options to pass to the petsc solver (two dimensional > problem): > > -ksp_type cg -pc_type fieldsplit -pc_fieldsplit_block_size 2 > -fieldsplit_pc_type hypre -fieldsplit_pc_hypre_type boomeramg > -fieldsplit_pc_hypre_boomeramg_strong_threshold 0.7 -pc_fieldsplit_0 0,1 > -pc_fieldsplit_type symmetric_multiplicative -ksp_atol 1e-10 > > It works reasonably well and shows similar number of iterations for > different levels of refinement. However, it does not converge when I use > the same options for KSPSolveTranspose(). I obtain DIVERGED_INDEFINITE_PC > after three iterations. I believe this has to do with the field split, > but I do not where to start. I am using libMesh which interfaces with petsc > through the file petsc_linear solver.C ( > http://libmesh.github.io/doxygen/classlibMesh_1_1PetscLinearSolver.html#a4e66cc138b52e80e93a75e55315245ee) > The KSPSolveTranspose() is called in adjoint_solve(). Changing that to > KSPSolve() solves the issue and to me it is not a problem because my matrix > is symmetric, but I don’t want to have to change it in the libMesh source > code. So the question is, why do those CL options not work for the > KSPSolveTranspose() despite having a symmetric matrix? > 1) Are you sure the matrix itself is symmetric? It could have boundary conditions that break this symmetry. 2) This sounds like a bug in PCApplyTranspose_FieldSplit() since I am almost certain it is not tested. 3) Can you send the matrix and rhs? This should be easy by using MatView() for a binary viewer. Thanks, Matt > Thanks > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
