Previews of simulations made by Dan Wills made in Houdini with a model focused on the angles.
The past months I have been in contact with MIT postdoc BenoĆ®t Legat a mathematician in numerical geometry, who has converted the 2D DynamicFoam model, developed by an other MIT affiliate Nick Weigert, into a 3D application:
Voro-X
The name stands for Voronoi diagrams (foam) where energetic currents run through the edges of the mesh, and X-ings (junctions) that act like a gates where currents are switched OFF or ON based on the sharpness of the angles. (0/I)
The level of current passing through the edges, has river-like effects where 'sedimentation' makes the cells grow; and 'erosion' makes them shrink. The changes of the cell-size changes the angles, and thus the direction of the currents: currents can switch. This whole interaction model based on a few rules generates a CA type of Dynamic Foam.
Voro-X is build with the programming language Julia and you can download the program here:
http://www.800million.org/Vorox.zip
https://github.com/blegat/VoroX.jl
---
Voro-X compared to Nick's 2D DynamicFoam (see Wiki-page):
---
Installation
The program works on Windows, Mac and Linux,
but you first need to install Julia.
https://julialang.org/downloads/
Next dowload and unzip the Voro-x package/repository:
http://www.800million.org/Vorox.zip
Decompressed the package and rename it to for instance: Desktop/VoroX
Launch Julia and you get the prompt:
julia>
Type ] so that the prompts becomes:
(@v1.7) pkg>
(Note, backspace '<-' will bring back the julia> prompt )
Next activate VoroX.jl by typing:
(@v1.7) pkg> activate ~/Desktop/VoroX
(or via an other directory/name where you have placed the VoroX folder)
Now install its dependencies as follows:
(VoroX) pkg> instantiate
The installation will take a while.
Once this is done, to launch the software in Makie.jl, with K points and N dimensions (K, N), switch back to 'julia' by using 'backspace' and type:
julia> using VoroX
and finally the last command:
julia> foam(10, 3)
(This might take a longer time to load: 5 to 10 min.)
Note that N can only be 2 or 3 (for 2D or 3D)
----
See screenshot for how it looks in the Terminal on my Mac,
all in all it are just 4 input lines in Julia:
(@v1.7) pkg> activate ~/Desktop/VoroX
(Vorox) pkg> instantiate
julia> using VoroX
julia> foam(20, 3)
---
Next up is scaling this system up, to run with millions/billions of cells, get rid of some of the bugs, use optimum shading to visualise the foam and look for emergent pattern, knots!
Have you peeps seen the new FaceBook ‘Meta’ logo?
https://about.fb.com/news/2021/10/facebook-company-is-now-meta/amp/
It is like my 8-knot concept: a U-shape also turning into an 8
I had this already posted 12 years ago on my blog, check also my top banner:
Spiral windmill reference on my 800.000.000 YouTube-blog:
The Forces of the Dynamic Foam model are in line with:
I. Newton's Law of Universal Gravitation where objects attract each other. The difference with the DF model is that the amount of current between the cells regulates the Attraction force.
II. Einstein’s General Relativity calculates how Space is curved. In the DF model it is the amount of current between the cells that determines the Contraction Force.
So Nick’s solution is only a variation of what already exists, check the details:
There were some issues with installing the program on a Linux computer (Ubuntu).
Nick made some changes and the new updated repositories can be downloaded at:
https://github.com/weigert/TinyEngine (The underlying engine)
https://github.com/weigert/DynamicFoam (The actual program)
(Best to open in YouTube at 1080pHD)
New Dynamic Foam simulator made by Nick McDonald.
Github page with the code:
https://github.com/weigert/DynamicFoam
Wiki-page with all the details about the model:
https://github.com/weigert/DynamicFoam/wiki/System-Dynamics
- x : Cell-size / Expansion Factor / Distance
- k : Rate-constant, which scales a "repelling force" proportional to the size of itself. It affects the cell from all directions in the foam, leading in itself to a stable size x. From this we can subtract some function of the flow at a position on the cell edge.
- v : Flow / Current