Projects‎ > ‎

Heat Exchanger Design With Blender

This project is building a parametric design tool for designing and simulating the fluid flow through low-pressure, low-temperature heat exchangers. This tool will be used for designing and testing the manufacturing process that will be used to build evaporator and condensor heat exchangers for OTEC plantships.

The parametric design portion of the tool will extend an open source tool, blender, by adding new primitive mesh operators. The user interface for the operators will prompt for the size,  strength, and fluid flow requirements of a tube and shell heat exchanger. The operator will use design rules to layout a mesh for the tubes in the heat exchanger. The mesh objects will also include meta-data that will be used by other tools in the manufacturing and logistical planning process.

The Blender was originally developed for use in animation. It has since been adapted for use in 3D games. There is an integrated physics engine that can simulate collisions between objects. Blender has a very sophisticated user interface for building 3D meshes. There is also a fluid simulation capability in blender based on particle-based viscoelastic fluid simulation. While this technique is not as accurate as traditional fluid flow simulations, it should be sufficient to perform rough calculations of performance and comparative performance calculations.

Blender has a programming API for building meshes. The programming API includes bindings for the Python language. Python is a very powerful object-oriented, dynamically-typed scripting language. It is possible to add new user interface components to blender using the Python language. Python can also be used to manipulate meshes, add new objects, and perform any other type of calculation to manipulate geometry relationships between objects in a scene. It can be used to set properties, such as material type for the objects system. Blender also allows new arbitrarily named properties to be added to any object. For instance, the price of an assembly could be added to an assembly object.

This project will start by defining a parametric design the user interface and blender operators for building shell and tube heat exchangers. The total fluid flow required and the incoming fluid temperature for the two sides of the heat exchanger will be the controlling inputs. Selection of tube types and tube diameters will also be set. These controlling parameters will then be used to calculate the length of the tubes and the number of tubes required. Each tube would be a separate object with a unique object ID. The parametric design tool would include a button for dumping the materials list required to build the heat exchanger to a build list file. Initially this would be a simple text list that contains the object ID, material type, size, location and price.

The project will need to use the latest developer's version of blender, as of this writing it is  alpha2. It wasn't practical to do this project with blender 2.49 and earlier versions. As of blender 2.50 the API and user interface is now very well suited to adding CAD features to the blender mesh tool. Many people have been trying to adapt blender for use in mechanical CAD. There has been limited success, but design limitations of the earlier version of blender made the work difficult. With blender 2.50 I think it will be relatively easy to build a robust parametric design tool, which in turn will foster the creation of an open source CAD package for designing structures.

There will be some rough spots in using blender alpha2 and the Python libraries used by Ubuntu. The blender distribution includes an embedded version of Python 3.1. The default version of Python found on Ubuntu is Python 2.6.4. The jump from 2.6 to 3.0 of Python created some incompatibilities, so beware when reading the documentation that there are some differences. I expect these problems will be cleaned up in about a year. For now some additional work will be required if part of the software is only available, such as numpy, for Python 2.6. The numpy package is a Python extension for scientific computations. It is very similar to MatLab.

This is an open source project, participants will receive all of the intangible benefits of being on a collaborative project. Since the tasks I've described are non-specific to my business objectives, this will be developed using the project management tools.

We hope to attract other blender-cad developers to help expand the tool. Participants will likely be able to start consulting businesses in which you would customize the software to be used as a domain specific design tool, such as designing alternative parametric design tool for machine designs. Once you see how the animation and game engine portion of blender works, I think you will understand why I think blender has great potential for this type of application. The entire assembly process could easily be animated using blender.