Home › Forum › SOFA › Using SOFA › Pre-deformed beam
Tagged: 64_bits, beam, SOFA_1906, Windows_10
- This topic has 17 replies, 3 voices, and was last updated 3 years, 2 months ago by Hugo.
-
AuthorPosts
-
1 October 2019 at 10:19 #14323pierreBlocked
Hello everyone,
I would like to know if/how this can be done with SOFA:
I need to consider a straight beam (e.g. as defined in BeamFEMForceField.scn, or with a loaded input mesh and a HexahedronFEMForceField) whose initial deformation would be fully defined by its vertex positions. I want to simulate the behaviour of the beam once released.
Thanks for your help
Pierre1 October 2019 at 10:41 #14324HugoKeymasterHi @pguillon
If I understood correctly, you are looking for loading a pre-loaded (pre-stressed) object. An you would like to compute the motion back to a rest (stress-free) configuration. Is that correct ?
It is possible to load a deformed geometry. But it is far from being trivial to compute back the rest geometry. This is called inverse mechanical modeling. I know it has been already investigated around SOFA. I will try to gather some info/references.
Best,
Hugo
1 October 2019 at 10:55 #14325pierreBlockedHi Hugo,
Thanks for your quick answer.
Yes you understood correctly: this is a pre-loaded beam. In my case the end configuration is actually not stress-free, but this beam will have to find its position into a rigid object (collisions included). But the real rest geometry of the beam is actually known, its is just straight, fully defined by some input obj mesh.
Best regards
Pierre1 October 2019 at 11:01 #14326HugoKeymasterHi @pguillon
I would therefore go for a simulation in two steps: first compute the deformed geometry from your rest position, second release it with the desired collisions. Would this suit your need? Is there a reason you don’t want to simulate the first step ?
Hugo
1 October 2019 at 11:12 #14327pierreBlockedI like this two-step approach. I think it is suitable in my case, I just ignored one could specify a target deformation state defined by vertex-wise positions. Could you please provide a link to an example scn?
Best,
Pierre1 October 2019 at 16:34 #14328pierreBlockedI guess the solution is in the use of FixedTranslationConstraint. I will try to follow this way.
Best,
Pierre1 October 2019 at 17:53 #14330HugoKeymasterHi Pierre,
I have no experience with FixedTranslationConstraint. I just tried it, it seems a bit complicated to use.
What you want to do in step 1 is actually a registration. You can do it by minimizing energy between the two configurations. This idea is shown in the plugin Registration: applications/plugins/Registration/examples/ICPRegistration_MeshSpring.scn
I would go this way.
Let me know how this works for you.Best
Hugo
2 October 2019 at 10:40 #14339pierreBlockedHi Hugo,
Thanks, that’s interesting. I think this could work, but unfortunately the QPL license of the plugin may become a problem at some point.
I am surprised there is no simple way to specify a constraint as a series of target positions for a subset of the input vertices. I find no example with FixedTranslationConstraint.Best regards
Pierre7 October 2019 at 17:55 #14355HugoKeymasterHi @pguillon
Was the approach described in the scene ICPRegistration_MeshSpring.scn fitting your needs though?
You could also have a look at another example: examples/Components/constraint/AffineMovementConstraint.scn
Hugo
9 October 2019 at 16:34 #14365pierreBlockedHi Hugo,
thanks
The deformation is actually such that none of these methods is actually a solution. I need to reconsider the whole problem I guess.Pierre
10 October 2019 at 16:03 #14368pierreBlockedHi Hugo,
I’ve thought about an alternative process but I cannot find the appropriate method:
I would like to load the deformed beam as a mesh (obj), and define a MeshSpringForceField (or something similar) whose initial parameters represent the pre-stress. I guess this could be fully determined by the contraction/elongation values of each edge, which I know. What do you think ?Pierre
10 October 2019 at 22:36 #14369HugoKeymasterHi @pguillon
If I understand correctly, you want to load the two configuration:
– the rest volumetric mesh
– the deformed surface mesh
and use a MeshSpringForceField to fit both and recover the stressed configuration.Is this what you target?
Hugo
11 October 2019 at 10:39 #14374pierreBlockedHi Hugo,
not exactly, sorry it was not clear. I am now considering a problem in one step only.
I would like to load the deformed shape only (volumetric mesh), and define a MeshSpringForceField which would be aware of all the rest edge lengths (those of the beam in its – straight – rest position). Initial forces would be derived from these initial displacements.
So I would not have to load this straight beam (whose connectivity is the same) but just its edge lengths.
I hope it is clearer now.Pierre
11 October 2019 at 19:42 #14396HugoKeymasterHi @pguillon
I think what you want to do is to fill the MechanicalObject with the field
position
containing the deformed positions and the fieldrest_position
with the undeformed positions. However, the internal forces computation might depend from the code you are using. Which FEM constitutive model are you using?Hugo
12 November 2019 at 13:31 #14584pierreBlockedHi Hugo
Thanks, it works. I load a hexahedron gmsh mesh and specify the rest position coordinates in the scn file, then I use either a HexahedronFEMForceField or a TetrahedronFEMForceField.
Unfortunately I cannot figure out how to properly define a collision model for this deformable object. Whatever I tried has caused crashes so far. Is there a good example scene where the collision model is derived/mapped from a parent with hexahedral elements, maybe with some topological mapping in between ?
Best,
Pierre27 November 2019 at 16:33 #14635HugoKeymasterHi @pguillon
Sorry for the delay of my reply, we have been busy with the SOFA Week. You can find out more about this annual community event on SofaFramework’s YouTube account.
To assist you in defining a proper collision model, having your complete scene or a simplified version of it would help. There is several examples in SOFA but it depends on the method you want to use:
– for the detection : discrete intersection, distance maps.
– for the resolution : penalty method, or Lagrange multiplier resolution
Documentation is available on this online:
Projective Constraint
Lagrange ConstraintBest,
Hugo
17 October 2021 at 01:41 #20629HadiBlockedThanks for the helpful discussion.
17 October 2021 at 21:47 #20636 -
AuthorPosts
- You must be logged in to reply to this topic.