Ah, sorry,
On 25 Jun 2019, at 16:22, Simone Puel <spuel@utexas.edu> wrote:
Dear Lawrence,
Thank you so much. Modifying as you suggest, I have the following error:
Traceback (most recent call last): File "Elasticity2D_Firedrake.py", line 166, in <module> "pc_factor_mat_solver_type": "mumps"})
Please also add "mat_type": "aij" to the solver_parameters dictionary.
File "/home/simone/firedrake/src/firedrake/firedrake/solving.py", line 125, in solve _solve_varproblem(*args, **kwargs) File "/home/simone/firedrake/src/firedrake/firedrake/solving.py", line 153, in _solve_varproblem solver.solve() File "/home/simone/firedrake/src/firedrake/firedrake/variational_solver.py", line 264, in solve self.snes.solve(None, work) File "PETSc/SNES.pyx", line 555, in petsc4py.PETSc.SNES.solve petsc4py.PETSc.Error: error code 56 [0] SNESSolve() line 4560 in /tmp/pip-req-build-eqqddqg6/src/snes/interface/snes.c [0] SNESSolve_KSPONLY() line 48 in /tmp/pip-req-build-eqqddqg6/src/snes/impls/ksponly/ksponly.c [0] KSPSolve() line 725 in /tmp/pip-req-build-eqqddqg6/src/ksp/ksp/interface/itfunc.c [0] KSPSetUp() line 391 in /tmp/pip-req-build-eqqddqg6/src/ksp/ksp/interface/itfunc.c [0] PCSetUp() line 932 in /tmp/pip-req-build-eqqddqg6/src/ksp/pc/interface/precon.c [0] PCSetUp_LU() line 88 in /tmp/pip-req-build-eqqddqg6/src/ksp/pc/impls/factor/lu/lu.c [0] MatGetOrdering() line 250 in /tmp/pip-req-build-eqqddqg6/src/mat/order/sorder.c [0] MatGetOrdering_ND() line 17 in /tmp/pip-req-build-eqqddqg6/src/mat/order/spnd.c [0] No support for this operation for this object type [0] Cannot get rows for matrix type nest
Could you explain me in few words which solver it is better to use for my kind of problem (elasticity in mixed formulation), please? I will really appreciate it. Thanks again for your help.
For small (up to a few million dofs in 2D) sparse factorisations are hard to beat. Let's get these working before moving on to the preconditioning. I suspect you will want a block-diagonal preconditioner, for example as developed in this recent paper of Chen and collaborators https://www.ams.org/journals/mcom/2018-87-312/S0025-5718-2017-03285-3/S0025-... If your target domain has a simple geometric structure, then I think we can do the first thing they propose (eq 1.2) using geometric multigrid and overlapping Schwarz smoothers. If you need complicated geometric domains, the proposed auxiliary space approach that uses only algebraic multigrid solvers will likely be better. But I don't know a lot about these problems, so it is likely that a more detailed literature search may provide other ideas. In any case, if you have particular preconditioners in mind, we can certainly help attempting to implement them. Thanks, Lawrence