Closed zjwegert closed 8 months ago
The elasticity solver is for elasticity, as the name indicates. I don't know if the kernel of the hyperelasticity operator is the same as the one of the elasticity one, but it does seem like it isn't.
Sure I hadn't looked into it much but was under the impression that there was some correspondence under linearisation.
It is worth mentioning that for small displacements the solver actually seems to work fairly well.
Edit: There is something similar in the PETSc examples (link), also related to this paper (link). Unfortunately, we run into the problem with cache.op !=== op
again. Alternatively, do you have any thoughts on just the inner linear solver?
Given we have the 2d serial version, the 3d problem can just have a disclaimer regarding large deformations and saying that more work is required for solver that can handle large deformations. Worth thinking about it though.
I tested this with MUMPS and it helps up to a point but at some values of BCs there are issues with divergence of the Newton method - another thing to be expected with this kind of problem at large displacements. We could utilise the nonlinear solvers in PETSc but this requires some work with GridapPETSc
as we have discussed previously.
I think this can be labelled as future work.
Unfortunately, we run into the problem with cache.op !=== op again
That problem is easily fixable. It's a documented issue/caveat in GridapPETSc. We just need to overwrite a function, and everything should work (as long as the sparsity pattern of the matrix does not change).
Great. That might be the go then and will allow us to utilise both linear and nonlinear solvers in PETSc here.
Hey @JordiManyer, I might have a look into this at some point - can you point me to the function that we need to overwrite?
The
ElasticitySolver
implemented for linear elasticity does not converge for the linear solve in hyper-elastic problems (e.g., Saint Venant-Kirchhoff or Neo-hookean, the latter is the dev Gridap tutorial) even with relatively small strains.For the final case which corresponds to 5% strain the output looks like
This may be because of asymmetry or max/min eigenvalues of resulting Jacobian? I messed around with PETSc settings etc and wasn't able to improve the situation.
@JordiManyer