Latest commit – 12/03/25

Big one this one. Bugs galore no doubt.

Kivy has been dropped as a dependency, and all progress/status windows are now using PySide6, as that was already a dependency required for Matplotlib.

The other big change is that FloVi no longer uses STL geometry to define CFD geometry, but now uses Step files. Yes, Blender can write to step solid geometry with a bit of help from Netgen’s newish OpenCascade libraries. This means that CFD geometry will automatically be removed from the CFD domain even if there is an overlap, and mesh refinements are applied to entire faces rather that just their edges.

As a famous uncle once said however, “With great power, comes great responsibility” and the responsibility here is that Blender geometry must be dealt with very precisely e.g. if there is even the tiniest gap between two geometry objects, or between a geometry object and the edge of the domain, Netgen will try and mesh it and likely fail.

As we are now using a newer version of Netgen, a reinstall of the VI-Suite will be required, but older Blender files should load fine. I have also taken this opportunity to update the OpenFOAM requirement to 12.  The Dicehub OpenFOAM docker image can still be used but you will need to download tag 12, as in the image below.

Docker OpenFOAM 12

Docker OpenFOAM 12

I don’t have time for a full tutorial video on the new changes at the moment, but hopefully I will soon. Below is a short video on installing OpenFOAM in Docker Desktop.

 

VI-Suite v0.6 – Basic OpenFOAM analysis

Hello again.

I’ve just uploaded a video on how to use the FloVi component of the VI-Suite to conduct an air-flow simulation with OpenFOAM. The FloVi component only currently works on Linux, and I have only tested it on Arch Linux, but it should work on other Linux distributions.

A FloVi analysis requires as a minimum a manifold mesh object to act as a CFD domain. Additional manifold mesh objects can be added within the domain but geometries cannot overlap as this is not supported by Netgen.

There was a bug in the symmetry boundary specification which I fixed a few days ago so make sure you have a recent version of the VI-Suite v0.6 from github.

The example I show in the video is of a domain with ground terrain making up one of the boundary surfaces. If a building is to be modelled that touches the ground plane then one way is to extrude the shape up from the ground boundary. This way the skin of the building becomes a continuation of the domain boundary.

Extrusion

Extrusion from the ground plane

Another way is to add the building geometry as CFD geometry, but as said earlier this cannot overlap with the domain boundary. One way to get round this is to remove the ground plane that the building sits on, and then fill the edges between the bottom of the walls and the bottom edges of the domain.

A third way is to do a boolean difference between the CFD domain and the building geometry. The example below shows a boolean difference operation between the domain and an overlapping torus, which leaves the torus shape as a perturbation to the ground plane.

Boolean difference

Generating boundary geometry with a boolean difference

FloVi is experimental and generally works for me, but is not meant to intelligently apply boundary conditions for you. That is a manual process, and you should know what boundary conditions are appropriate for the simulation context you have. If the interface does not write out the correct boundary information based on your input then file a bug report at the github page and if there are additional boundary conditions you want added to the interface then post a request on the Google Group.

The default OpenFOAM solver I use in the video is simpleFOAM, and this is the one I’ve got working fairly reliably.

Finally, although the VI-Suite itself cannot visualise OpenFOAM results there is another another Blender node-based addon called BVTKNodes that can open OpenFOAM meshes and results and I have had some joy visualising results with it, so check it out if you want a complete Blender workflow.

That’s it I think. As ever, video below.