Instable collision model leads to bouncing catheter model #5768
Replies: 2 comments 1 reply
-
|
I made some changes to my script and was able to solve the bouncing problem. The simulation is pretty stable, but the vessel model seems rigid. These are the changes:
You can find the new script here: I would be very thankful if someone knows how to make the vessel model deform. The vessel model's template is vec3d and I have tried solving it by changing:
|
Beta Was this translation helpful? Give feedback.
-
|
Hello @hugtalbot, Thank you very much for your feedback. I am looking forward to the SOFA Week, but I can only join online. If there is still an option to discuss this I would be very thankful. After your post I removed the catheter model to investigate why the vessel model does not deform. Furthermore, I reduced the time step to 1e-3 and the Rayleigh damping to 0 as recommended, but even by appling a force >1e15N (using ConstantForceField) or pulling manually, the vessel model remained rigid. Each of the following two changes result in a deformable vessel model:
Going through the documentation for DefaultAnimationLoop, FreeMotionAnimationLoop, LinearSolverConstraintCorrection and GenericConstraintCorrection I could not understand why the vessel model is rigid for the two parameters and deformable for the others. Unfortunately, the DefaultAnimationLoop " does not support constraints solved using Lagrange multipliers." That's why applying a constant force worked, but letting the catheter collide with the vessel model crashes the simulation. Continuing with the secound change I still have the same problem as mentioned in my first post that the catheter model bounces and the end of it is no longer fixed to the origin as shown in the figure above (although the last index should be fixed by BeamMechanics.addObject('FixedProjectiveConstraint', indices=[0], name='FixedConstraint')). It only happens if the vessel model is deformable. If anyone knows how to "completely" fix the catheter in the BeamAdapterPlugin, please let me know. |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello everyone,
I am trying to change the blood vessel model in the example SingleBeamDeploymentCollision.py to a deformable model. For that I have included parts of the example liver.py and changed the parameters to SI units. I am using "SOFA_v24.12.00_Win64". You can find the code here:
DeformableBloodVesselModel.zip
I have encountered several problems and was not able to solve them using the SOFA forum, SOFA documentation or the SOFA tutorials, that's why I appreciate every feedback you have.
My biggest problem is that the catheter model does not deform during a collision instead the whole catheter model bounces back and is no longer attached to its origin as you can see in the figure below.
Furthermore, no forces are applied to any note during the collision unlike it should be referring to "SOFA Training - Introduction Course 2023 (v23.06)" (4:53:28).
During a collision I receive the warning "[WARNING] [EigenSimplicialLDLT(linear_solver)] partial_solve is not implemented yet". Replacing "LinearSolverConstraintCorrection by GenericConstraintCorrection" as it is suggested in #5474 did not work out because the catheter was no longer moving at all. I could also not find a solution in #4173.
My first thought is that I might have not changed all the parameters to SI units. For example I do not know if the parameter "depth" in "rootNode.addObject('CollisionPipeline', draw='0', depth='6', verbose='1')" or "rayleighStiffness" and "rayleighMass" in "AnatomicalModel.addObject('EulerImplicitSolver', name='cg_odesolver', rayleighStiffness=0.1, rayleighMass=0.1)" are dimensionless or not and need to be adjusted.
As mentioned before I am thankful for every support.
Beta Was this translation helpful? Give feedback.
All reactions