Why does the StaticSolver not reach the equilibrium configuration at 1st time step? #2985
-
Hello everyone, I use SOFA to plan deformation of flexible parts manipulated by robots. In this process, I need to perform many simulation steps to estimate numerically an inverse model. To speed up the computation, I am interested in the component StaticSolver. I tried the demo of the component: examples/Components/solver/StaticSolver.scn So here are my questions:
Best, |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
Hey @adkoessler New post, new interesting question 👍 I am sorry, again to your questions, I reply with other questions (to better understand your use and provide the appropriate reply): what material law are you defining on your object ? what forces are acting on it ?
To get information messaging, you can activate the Best, Hugo |
Beta Was this translation helpful? Give feedback.
-
Hi @adkoessler Actually the number of iterations in the ConjugateGradient (CG) linear solver impacts quite significantly the simulation accuracy. Moreover, in static analysis, external forces are usually applied gradually (incremental loading) which is not done here. Let me know whether this clarifies things. |
Beta Was this translation helpful? Give feedback.
-
After discussing it with @hugtalbot, it seems that I looked for a solution around the linear solver, but it was the integration scheme that needed to be set up correctly. Moreover, as suggested above, the |
Beta Was this translation helpful? Give feedback.
After discussing it with @hugtalbot, it seems that I looked for a solution around the linear solver, but it was the integration scheme that needed to be set up correctly.
One can see the parameters of the StaticSolver here: https://www.sofa-framework.org/community/doc/components/integrationschemes/staticsolver/
The trap I fell into is that the default value for
newton_iterations
is equal to 1. However, it's unlikely that a nonlinear problem converges to equilibrium in just one Newton step. Therefore, it is needed to set this parameter to a greater value when instantiating this component in a scene.Moreover, as suggested above, the
printLog
data of the StaticSolver shows which termination…