Force Density Method


Root  Previous item  Next item

The Force Density Method is one of the simplest algorithms developed for form-finding. It is based on the assumption that in a finite element mesh every node is affected only by its direct neighbours. Every neighbour applies a force vector to the node and the sum of all these vectors is the resultant force on that particular node:
TotalSurfaceRelaxation
Every interior node in a rectangular patch has 4 neighbours. Every edge node has 3 neighbours and every corner node has only two neighbours. When it comes to form-finding tensile structures, the forces between nodes are always based on contraction, like elastic. The surface wants to collapse in on itself because form-finding is a surface energy minimization process. We can prevent collapsing surfaces by fixing some points in space. The surface in the image has been fixed in four places. The corners are not allowed to move during relaxation. In addition to this the tension in the node-connections along the edges is a factor 10 higher than the tension in the u- and v-directions. These are more or less standard properties for tensile fabrics.
Once all neighbouring forces are collected the resultant, or 'sum', vector can be calculated. This new vector indicates the direction and distance by which the node will move.
FDM_node_vectors

In the above example the forces are pretty much in balance. The u-direction of the surface is trying to pull the node upwards and the v-direction is neatly countering this by an opposite vector. But you can imagine that a non-relaxed mesh will not have such balanced vectors. Then the u-direction pull might be much bigger than v or -if the surface has a synclastic shape- u and v may even pull the node into the same direction.

The issue with the FDM algorithm as it was applied in this case is, that it tends to become unstable. After every iteration the mesh nodes would be on average further away from the ideal position than before. If tension factors would be numbers lower than 1.0 this would not happen, but in 'the industry' tension values are usually given between 50 and 5000.
The simplest way to prevent this increasing vibration, is by limiting or damping the motion of each mesh node.
·'Damping' means; reducing the length of the sum-vector by a certain factor. The upside of damping is that the force ratios are kept intact. The downside is that one node can affect the behaviour of others by having a exceptionally large sumvector.  
·'Limiting' means; clipping mesh-node translation to a certain region. ie. nodes are allowed to move only 55mm or less. The upside is that nodes can be treated separately. Within very few steps even the worst possible scenario is *on average* a correct solution. The downside is that limiting is scale-sensitive. Limiting the motion of nodes to 5cm on a 2m×3m fabric has a totally different effect than limiting nodes on a 10m×25m fabric by the same amount. When motion limitations are to be used properly one must consider the total size of the fabric (bounding box dimensions) and the density of mesh-nodes on this fabric. Basically one has to calculate the average distance of every mesh node to it's nearest neighbours. This is a very expensive calculation and will slow down the algorithm substantially.  

However a combination of both reduction algorithms can yield a very fast result. By splitting the relaxation process into 2 separate loops we can perform a pre-flight relaxation using only limitations on node translation. Then once we've determined the surface is *on average* correct, we can start by damping the forces. The problem now, of course, becomes detecting when an average correct solution has been reached. In theory the surface is completely relaxed when the sum of all unlimited node-translations equals zero. This will never happen since relaxation is an inverse exponential process, so we have to set some accuracy threshold. Basically we can state that an architectural fabric is properly relaxed once the biggest translation in the entire mesh is smaller than 1mm.
However the average correct solution is a property not of individual mesh nodes, but of the mesh as a whole. If all nodes in the mesh vibrate around a stationary point in space, then the surface as a whole has no translation. It is now merely vibrating around the totally relaxed state.
Another way to approach the problem is by measuring the angles of the paths individual mesh-nodes follow. A mesh-node will move in space on every iteration, so after three iterations it becomes possible to determine the angle of the polyline path between all recorded node locations. The below graphs are recordings of these angles.
The green line represents the average angle of all nodes in the mesh.
The red line represents the smallest angle in the set.
The blue line represents the largest angle in the set.
(The y-axis angle values are only correct for the red curves. The other curves have been scaled to match the graph rectangle.)

Blue and green are hardly interesting because they show no sudden change that might indicate an average solution has been reached. Appearantly there are always some nodes vibrating no matter what the initial surface shape was. The red line does give us useful information. Basically if the red values are low (< 20°), there are still some nodes in the mesh that are moving towards their average solution. Once the red line starts to rise all the nodes in the mesh have started to vibrate around stationary coordinates.

This is clearly visible in the top-most graph. After this discovery was made, the algorithm was adjusted to act as soon as the minimum angle changed. Once the smallest angle exceeded the 5° mark, damping was applied to ease out the solution. This point in time can be seen in the graphs by a sudden decline of the green curve.

01
02
03
04
05


Later on the values and thresholds were more finely tuned and the number of iterations required for a completely relaxed surface within tolerance was reduced from >60 to <30 as can be seen below.

06
07
08
09
10
11

However this damping behaviour was optimized for specific surfaces (fixed complexity). For an almost completely water-tight solution, one needs to iterate through the relaxation process at least a hundred times. And even then, if the initial shape of the surface is very distorted, it may not be enough to reach a proper form. The process of Average Node Sum Translation appears to be necessary for optimal use of the algorithm.


 


For additional information.