[petsc-users] Preconditioners for KSPSolveTranspose() in linear elasticity

Salazar De Troya, Miguel salazardetro1 at llnl.gov
Wed Jan 20 12:22:19 CST 2016


I am not 100% confident because I am not sure how libMesh handles the Dirichlet boundary conditions, I checked it with MatIsSymmetric() and obtained 1 as the response. Please find attached the binary files (I set up the viewer with PetscViewerSetFormat(viewer, PETSC_VIEWER_DEFAULT); hope that’s the right way)

Thanks

From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Date: Wednesday, January 20, 2016 at 9:47 AM
To: Miguel Salazar <salazardetro1 at llnl.gov<mailto:salazardetro1 at llnl.gov>>
Cc: "petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>" <petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>>
Subject: Re: [petsc-users] Preconditioners for KSPSolveTranspose() in linear elasticity

On Wed, Jan 20, 2016 at 11:35 AM, Salazar De Troya, Miguel <salazardetro1 at llnl.gov<mailto:salazardetro1 at llnl.gov>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160120/e3d8c0e6/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rhs_vector
Type: application/octet-stream
Size: 105624 bytes
Desc: rhs_vector
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160120/e3d8c0e6/attachment-0004.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: rhs_vector.info
Type: application/octet-stream
Size: 22 bytes
Desc: rhs_vector.info
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160120/e3d8c0e6/attachment-0005.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stiffness_matrix
Type: application/octet-stream
Size: 2846472 bytes
Desc: stiffness_matrix
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160120/e3d8c0e6/attachment-0006.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: stiffness_matrix.info
Type: application/octet-stream
Size: 22 bytes
Desc: stiffness_matrix.info
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160120/e3d8c0e6/attachment-0007.obj>


More information about the petsc-users mailing list