A Python implementation of the Force Density Method (FDM), introduced by Schek (1974).
- FDM is an algebraic approach for finding the shape (geometry) of structures under equilibrium of forces.
- The FDM methods requires a connectivity graph (a given topology with fixed and free nodes), external loadings on the nodes (Vectors in 3 dimensions) and force densities on the edges as the main inputs.
- The solver then simply solves a system of linear equations and provides the 3-dimensional coordinates of the nodes under equilibrium.
Implemented by: Vahid Moosavi
-
Implementation is the same as described in Schek (1974).
-
Schek, H. J. (1974). The force density method for form finding and computation of general networks. Computer methods in applied mechanics and engineering, 3(1), 115-134.
-
Works easily with mesh-based structures or graphs (in Networkx format)
-
As shown in examples, can be mixed with any machine learning algorithms, optimization methods (either gradient based or evolutionary strategies.)
-
Look at the examples here
-
Some sample results:
- Integrating the FDM solver with an auto-differentiation framework such as JAX or Tensorflow.
- Integrating the FDM solver with rule based subdivision systems and parametric topologies in addition to parametric force densities.
- Integrating the FDM solver into an agent-based framework and Reinforcement Learning (RL) set up, where the agent will explore the design space toward a given goal. The goal could be any from optimization concepts or based on other aspects such as maximizing the chance of finding unseen geometries!