Fast algorithm for dynamically updating tetrahedral mesh

9 views (last 30 days)
I have a tetrahedral mesh defined by the matrices X and T, where X is N-by-3 and each row represents the (x,y,z)-coordinates of a given vertex (N is the total number of vertices). Moreover, T is M-by-4 and each row represents the row indices of the 4 vertices defining a given tetrahedron. M is the total number of tetrahedrons in the mesh.
I'm trying to build a deformation solver based on a mass-spring model. At each iteration in time, spring forces on each vertex is calculated and through a numerical scheme for Newton's second law, the program calculates the new positions for the vertices that are being displaced due to said forces.
The issue is to update the mesh according to these new positions for the vertices. Triangulating the entire mesh from scratch at each iteration is prohibitively expensive, so Ideally I only want to update the vertices that are actually moving. There's also the issue of badly shaped triangles, edges being removed and added etc. I realize that dynamically updating a mesh during runtime is still an active field of research in computational geometry, however I would greatly appreciate if anyone can point me to some fast algorithms that does this, perhaps by only re-triangulating the mesh locally around the vertices that actually move.
  4 Comments
J. Alex Lee
J. Alex Lee on 9 Sep 2020
Edited: J. Alex Lee on 9 Sep 2020
What kinds of mass/spring? If you are using really simple (something like Hookean), then don't even worry about large deformations because your results would be physically invalid anyway.
Put another way, if you are suffering from large deformations, maybe you can mitigate to some extent by constraining your spring behavior to be have limits of extensibility.
Less to the point of your problem, but potentially farther upstream problems:
Your description of your strategy seems to imply that you ultimately want to model a deformable solid (like rubber block) as a network of mass-springs, but this is a bad model because it won't describe solid properties or correctly capture behavior.
If your intent is to actually capture the dynamics of a network of mass-springs, then the concept of re-triangulating (and altering T matrix) will mean that you alter the system itself, so upon re-meshing you're essentially solving a "different" problem.

Sign in to comment.

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!