Why isn’t open source CFD solution for everyone?

gnu-headWhen open source CFD solution is talked, two familiar statements are often heard:

  1.  Open source CFD solution is cheap because nothing can be cheaper than free.

  2.  Open source CFD solution is inferior, otherwise, why is it free?

Both of them are wrong.

Open source CFD solution is not cheap, although licensing is free

Most open source CFD packages are licensed under GNU General Public License (GPL) or BSD license or MIT license.  Under such licenses, anyone can use the software (including source code) for free. There is no limitation on the usage (it means it can be used in commercial project). The only restriction is on the re-distribution of the software or its derivatives: you must release the source code if you want to sell or re-distribute it.

So, licensing the software has no cost. You can get it from the internet. Of course, you can pay nominal fees to get it on a DVD delivered to your doorstep.

But software is only part of a CFD solution.  Human resources and hardware are also in the equation of cost. In most organizations, these two usually cost more, especially the staff cost.

The argument some may have is that this cost is common no matter proprietary or open source solution is adopted. The difference is that the human cost is always more expensive for open source solutions because of the requirement of additional skill sets.

To benefit from open source solutions, using the software is not sufficient; the user also needs to know how to modify the code and compile it. And most of the time, this happens on Linux, although it is possible on Windows.

For proprietary solution adopters, it is easy to recruit staffs. Most fresh graduates can operate the software and generate reasonable results after one or two weeks of training. After one or two months, they can do some projects.

But for open source solutions, the recruiting process will be several times longer, and you will find out most candidates simply cannot fit into the position at all.

If you are looking for an “experienced” (sometimes just self-claimed) analyst for proprietary CFD solutions, you have a lot of options.  But for open source CFD solutions, you probably have to pray unless you have extensive connections in this almost isolated circle.

So, the cost associated with open source CFD is not always cheaper. The extra time needed to recruit and to train eligible engineer is not marginal.  Most time, this cost is significant.

If saving licensing cost is the primary reason for choosing open source CFD solutions, your choice is wrong. 

Open source CFD solvers are not inferior (if not superior) on accuracy and efficiency

Another misconception on open source CFD solutions is that they are less accurate and less efficient, therefore inferior, compared to proprietary solutions.  It is not uncommon that most CFD software sales engineers from different vendors will tell you this again and again.

Unarguably, not all open source CFD solvers are created equal. There are some ghost open source projects.  Insufficient volunteer developers or insufficient funding support may bury the project in the dust, although the project is very promising.

Luckily, there are some open source CFD projects getting  strong community support, or continuing funding from different sources (some directly from commercial entities whose business is built upon services, not licensing). So, for open source solution adopters, there are actually more options. For example, if you are looking for a general-purpose solver, OpenFOAM may be an option; if you need a lattice Boltzmann method based CFD solver, Palabos can be a good option; if you need  a solver with full discrete element method (DEM) capability, LIGGGHTS  is already there for you. If you need additional technical support, there are a lot of companies providing decent services on all aspects.

If you are looking for CFD solver for some specific problems, you may have even more options. For example, SU2 is well respected for aerodynamics; FDS (public domain code, not GPLed) is the de facto standard for fire simulation; Gerris is an option for open channel flow.

In the market, probably no CFD vendor can provide a solution with such breadth.

Now, back to accuracy and efficiency.

For CFD solvers, there are almost no secret recipes.  Almost all algorithms, numerics, and models are publicly available. The accuracy is simply dependent on mesh resolution and quality, numerical schemes, and physical model used. Eventually, the accuracy is in the hands of users; solver simply provides possible options. Most inaccurate results are caused by the user (inappropriate settings or models, insufficient mesh) rather than the solver itself.

What makes CFD solver different in speed (efficiency) is polishing and optimization of the code.  For commercial code, only limited systems (usually named as “certified systems”) are officially supported, so, it is easy to optimize the code very aggressively for such specific systems, and therefore it gives the impression they are fast (aka efficient). Open source code has to be more or less generic so that users can compile the code on most platforms.  If the user uses the default compiling settings or use pre-compiled binaries (probably more than 90% users fall into this category), the efficiency is not optimized.

Some companies who are specialized in open source solutions can tweak the code and compiler settings for your targeted system. Sometimes, you can see significant improvement in calculation speed by adjusting just a few compiler settings.  If you have an in-house HPC expert, it is possible to get better efficiency for a given system than some commercial binaries.

In short, the accuracy is mainly controlled by the users. Inappropriate use, not the solver itself, usually is the No.1 cause of accuracy issues. Both commercial and open source solvers nowadays provide enough controls/options already.  The efficiency issue of open source CFD code is mainly the result of “default” compiling settings, rather than the code itself.

Free is for Freedom

Open source does not mean free.  Even some commercial software may come with source code in the old days when the password was saved in plain text.

GNU GPL licenses (and other similar BSD, MIT licenses)  do allow any people or company to sell copies of the GPL licensed software.  You can charge whatever you want, and keep all the proceeds. The limitations include: 1) source code must be provided; 2) users are free to use, modify, and re-distribute (of course, sell as well); 3) users are free to keep their modifications private unless they want to sell the modifications.

If open source CFD code is used for a project (any project), nobody will ask for royalties or licensing fees.  As mentioned earlier, the saving in licensing cost may be easily offset by increased staff cost, and possible third-party services cost.

So,  “free”  in open source CFD solutions is not for saving cost in acquiring simulation tools.

Free is for freedom.

With open source code, you can easily tailor the code for your problems. While for commercial binary, you have to tailor your problems for the software.  This is what freedom means for users.

For example, you need some particular (maybe simple) functions in the CFD software. Some CFD vendors provide some sorts of customization so that you can hook your code into the software.  The problem is that who can guarantee such customization works in the future releases.  In a worse scenario, the product may be merged with another product, or the vendor may be acquired by another vendor. For the users, you lose the control of how your customization works (if it works) in the future.

You may not worry about this with open source CFD solutions.  It is possible to incorporate any proprietary models, functions and modifications into the code, and maintain it internally and privately forever.  You can always make it work for new versions of the code and in different systems. So, the IP will be better maintained.

Freedom for users means it can be used in any projects in any formats. The modification or improvement can be kept as own IP, and used for any projects. Users are not obliged to release back their modifications unless they are selling such modifications (derived work).

Freedom is also for developers. There is no warranty of the code.  But most commercial CFD software now bears similar items in the license agreement, with which you must agree.

Conclusion: Open Source CFD is not for everyone

The major benefit of open source CFD solution is freedom. But this comes with a cost. Not everyone can justify the cost of the freedom.

The solution may be NOT  for you,  if:

  • you are doing commercial projects, but you feel CFD license is too expensive;
  • nobody in the team has direct (not just self-claimed) experience with programming experience in C/C++/FORTRAN;
  • you are imprisoned  in a Windows-only environment (maybe by your IT dept.)

In academic environment, if you never touch source code, you will never understand  CFD.  The good news is, you probably do not need to understand CFD if you just want to use CFD to finish your final year project or use CFD to generate some colorful pictures for your paper. Commercial software will keep your hands clean.

About shengwei

Dr. Ma Shengwei has spent last 20 years in numerical simulation, including writing CFD solver and applying numerical simulation in solving various real-world problems, including pollutant dispersion, sediment transport, heat transfer, membrane separation, water and waster treatment, centrifugal pump, natural ventilation, and separation systems.

You may get his detailed info on his expertise from Linkedin .


  1. Shyam Sunder says:

    One more thing i would like to add is that in commercial softwares, the latest schemes are not added. Examples can be the
    schemes for the convective part of Navier-Stokes equations. Most commerical have at most second order accurate schemes.
    People in open source CFD codes have implemented upto 9th order accurate ENO and WENO schemes as far as i know. May be in some other research labs still higher order things are going on. Another example is the algorithms for multiphase flows. If any body wants to learn CFD and no really capable guru is available, then open-source codes are like God-send. They have steep learning curves, but then there is no other option. Long live open source community…..

  2. But OpeSource will be cheap everyone. Nowadays users can do simulations on windows enviroment. You can find different integrated softares like SimFlow etc.

  3. Thank you for sharing such a Informative article.

Leave a Reply