I am looking for an algorithm that hopefully exists out there, but maybe I haven’t found the right terms to search for…
I have a kind of “elastic band” in a 3d space, the band is fixed at the start and end point. For every point in space I can calculate an “external force” acting on the band. “Inner forces” act like springs (force in tangential direction). I am looking for an equlibrium condition between inner (contracting) forces and outer (distracting) forces. The problem is that the outer forces are not available in closed form (but they are steady).
Currently I have solved the problem by sampling an initial guess of the band with some number of equidistant points, calculating the forces in every sample point, moving the point in the direction of the resulting force and repeating until no substantial movements occur anymore.
However, I am wondering if there are more efficient solutions to this? What might be a good term to search for publications on this topic?
Thanks for any hints!
Ideas about starting points:
You might want to consider a multiscale algorithm, along the lines of multigrid. The rough idea would be that “coarse-grained” elastic bands can be relaxed quickly, and then used as an approximate solution for the more accurate ones. There are more details, of course.
If the springs between links in the elastic band have force linear in the displacement, then you can almost set up the problem up as a matrix equation for mechanical equilibrium (zero force):
(Coupling matrix) * (Displacement vector) = 0. Element i in the displacement vector represents the displacement between nodes i and i+1. It gets more complicated when you add the constraints on start and end points of the elastic band. Consider using the conjugate gradient method over a vector search space restricted by the constraint. Another possibility is looking into the linear programming literature.If the springs are non-linear, methods like conjugate gradient could still apply, but might not work as well.