This is a read only copy of the old FEniCS QA forum. Please visit the new QA forum to ask questions

what is the best solver for linear elasticity in 3D with discontinuous elasticity tensor

+4 votes

I am trying to solve linear elasticity equation in 3D with periodic boundary conditions and very large difference (10e4) in elastic properties in different parts of the domain. I am using local refinement near the jump of the elasticity tensor, KrylovSolver with gmres, pets_amg, and for a domain (0,0.5)\times(0,0.5)\times(0,1) using a mesh with approximately 7x10e7 vertices. However the numerical error I am obtaining to large and I would like to ask if there exists a better solver/pre-conditioner for such problems. Also for a slightly finer grid the solver does not converge anymore.

asked Mar 7, 2016 by mptashnyk FEniCS Novice (300 points)

1 Answer

+1 vote

Try AMG with a tight tolerance and maybe some thresholding (see the elasticity demo). You can use PETScOptions.set(....) to pass a PETSc option for thresholding. Make sure you set the near nullspace.

We have some experimental code for domain decomposition (BDDC), which generally works well for elliptic problems with large parameter variations. It's not in the dev version yet, but should be available before the summer.

answered Mar 18, 2016 by Garth N. Wells FEniCS Expert (35,930 points)

Thanks a lot for the answer. Unfortunately I was not able find the correct syntax for PETScOptions.set(....) for threshold if using petsc_amg Preconditioner (together with germs solver).
Also would it be helpful to add multigrid smoother parameters, i.e.
PETScOptions.set("mg_levels_ksp_type", "chebyshev")
PETScOptions.set("mg_levels_pc_type", "jacobi") ?

PETScOptions.set("pc_gamg_threshold", 0.02)

thanks a lot

...