24 January 2019 at 13 h 51 min #12878
I have a simple case of an interaction between soft body and a rigid body. I give a displacement to the rigid and it presses a region of a soft body locally. I would like to ask why when this pressure increases, the speed of the simulation decreases?
Harris24 January 2019 at 16 h 51 min #12880
How are you solving the constraint?
Using penalty or using Lagrange approach?
Hugo24 January 2019 at 22 h 50 min #12897
I use Lagrange multipliers approach.
Harris25 January 2019 at 10 h 17 min #12902
Good, that’s what I assumed.
When constraints (like contacts) based on the Lagrange multipliers appears in the simulation, a new term appears in the linear system : the H matrix, which includes the constraint directions. When the pressure applied on your soft body increases, the constraints becomes harder to respect. And the solver requires more iterations to converge and find a proper solution, respecting the constraints. This is why the frame rate decreases, while the number of constraints (contacts) remains the same.
With penalty methods, you would not have a significant decrease in performance but it would be way less stable, and the constraints might not be well respected.
Hugo25 January 2019 at 14 h 18 min #12906
When you say “solver requires more iterations” do you mean Gauss Seidel algorithm needs more iterations to converge?
Thank you for your reply
Harris25 January 2019 at 16 h 49 min #12907
That’s exactly my point, the GS requires more iterations to converge.
Hugo25 January 2019 at 18 h 25 min #12909
Thanks a lot for your help.
I would like to ask you something more. I want to meassure the stress or strain in an element and I am using Co-rotationalFEM component. When I compute strain by: Strain=StrainDisplacement*Displacement I meassure very smaller strains than the FEBIO software computes. Is this because I compute local strain and FEBIO computes global strain?
Thank you for your time,
Harris26 January 2019 at 4 h 01 min #1291028 January 2019 at 14 h 21 min #12913
To answer you first, it is strange indeed to get way smaller strain than FeBIO.
I know @Igorp and @Eleonora are discussing about such comparison and validation on another forum topic. Igor, Eleonora, any advice / info about Harris’ remark ?
Dear @outtt, you can find an example based on constraint solved with Penalty method in the repository examples/Components/collision:
But notice that – as stated above – even if penalty method would not suffer from a decrease in performance due to increasing nb of contacts, but it would be way less stable, and the constraints might not be well respected. If you have specific questions regarding penalty methods, please open a dedicated topic.
Hugo1 February 2019 at 10 h 03 min #12973EleonoraParticipant
- University of Verona
I did some work on the comparison between FEBio and SOFA, in particular related to nonlinear constitutive laws (StVenant-Kirchhoff and Neo-Hookean). Based on my experience, it’s worth checking that you are using the same integration rule in SOFA and FEBio. Indeed, while SOFA always uses 1-point Gauss integration rule (to my knowledge), in FEBio you can specify also other rules, that can lead to quite different results (check this link, Section 3.5.1). In particular, with 1-point Gauss you might underestimate the displacements.
Apart from that, I did not investigate too much the corotational implementation in SOFA. However, it happened both to me and to other users to notice a weird response of that material, especially in static simulations. I do not know if @igorp and @jnbrunet have figured out something new about that.
Eleonora19 March 2019 at 17 h 47 min #13216
- You must be logged in to reply to this topic.