About BFlow
BFlow is a library of commands I have created for creating fluid dynamics models in Excel. It can be downloaded here. In this blog entry, I will give some motivation and history for this project.
In the mid 90s I became enamored with the idea of creating a way to do CFD in Excel. I had made simpler tools in Excel and had found it a very useful platform. For instance, I made a tool for predicting the heat up times for silicon wafers under various process conditions. It was a very nice model in that it was both physically accuate and easy to use. Many people at Novellus have used this tool.
My initial CFD effort was an Excel spreadsheet where you could enter geometry information, boundary conditions and so on. You pressed a button on the sheet and the model would run, and generate results. The code worked, and could be used for simple models.

Figure 1. An early CFD code in Microsoft Excel
The code was written in Visual Basic for Applications, which is part of Excel. The Excel spreadsheet was used as a front end or user interface. There was a fundamental problem with this approach. Good GUIs are hard to create. And they are especially hard to create in Excel. And they are even harder to create when you are sure where you are going. Every time I would add a new feature to the VBA code, I would have to update the interface. This meant moving cells around, adding boxes, and colors. It was very tedious. At the same time, another problem cropped up: VBA is darn slow.
At this point, I got an insight. Instead of creating a full CFD implementation in Excel, I could create a library of commands, in a DLL. Then a custom model could be quickly created in Excel, by writing an Excel/VBA routine that called these commands. In this way, CFD models could be quickly put together. I took the VBA code I had written, ported it to PowerBasic, a compiled version of Basic that is very similar to VBA, and created a DLL. Eventually I named this DLL BFlow, for Basic Flow.
The basic concept works, and I have created several models using Excel with BFlow. However, I have not found the process to be nearly as quick or easy as envisioned. For instance, the auto-meshing capability is fragile and takes tweaking to work right. When I need a quick model, if I am at work, I whip it out in Fluent, not BFlow. If that is what the code’s author does, how can I expect anyone else to embrace it?
I have a number of ideas for improving the code. For instance, I want to reduce the coupling between modules so that I can do a full rewrite of one part without having to rewrite the entire thing. I also want to experiment with Immersed Boundaries, as a way to improve the accuracy and robustness of the meshing scheme.
Moving forward, I am continuing to experiment with ideas for fully realizing my goal of an easy to use function library that allows fast creation of CFD models. I will be highlighting many of those experiments in this blog.