26 Nov 2014

Caelus: a new direction in open-source CFD

0 Comment

It’s been a busy last couple of months for Applied CCM. In fact, so busy I haven’t been able to write our first meaningful blog post! We’ve been busy with a lot things – customers, projects, conferences, a new website. But the most important activity was the release of our fork of OpenFOAM, called Caelus.

There are many reasons for making Caelus but one of the bigger (technical) reasons was to get a Windows version compiling and running seamlessly. The reality is, the desktop CFD usage is dominated by the Windows OS and those users were missing out on a great thing. Therefore we felt that Windows should not be a second class citizen but treated equal to the other platforms. Furthermore, from the training courses that Applied CCM has conducted it was obvious that Linux was a significant barrier to entry. For example, a 1 hour Linux primer regularly turned into half a day or more. There are enough challenges in learning OpenFOAM already so it made sense to try to remove as many as possible.

I personally use Linux almost exclusively but it was important to put personal preferences aside to enable broader adoption. There has been some confusion in the community as to whether or not GPL software is compatible with a proprietary OS, such as Windows. But that myth is categorically untrue. In fact, GNU even promotes GPL software on Windows (https://www.gnu.org/software/for-windows.html), one of them which is used in Caelus (MingGW).

In addition to Windows support, another big overhaul was the replacement of the wmake build system used in OpenFOAM with Scons (www.scons.org). Aside from the many modern features of Scons, the biggest thing it allows is cross-platform compilation. Plus it’s Python-based so that should make Caelus more compatible with where we would like to take it in the future.

Since the major focus was on making it easier for people to use, only the necessary dependencies are included. We went a step further and packaged it up in an installer. There isn’t a code repository because we’ve found that Git – perhaps the most commonly used version control system for open-source software – was another barrier to using OpenFOAM. So, at least in the mean time, we haven’t set up a Git repository. There may be a repository in the future but we’d like to hear what users have to say and we’ll discuss how to best do so (suggestions are welcome of course). In the mean time, the source code is easily accessible in the installers.

So the take away here is that Caelus is geared to helping the user while also trying to improve the experience for the developer.

Another goal with Caelus was to create a stronger foundation. To achieve this, we wanted only validated solvers and models. This meant removing all but a handful of solvers, all turbulence models, and utilities of limited use. The turbulence models included were written by Applied CCM and correspond to the most common variants published in open literature (see the documentation for more information).

If you’ve seen the Caelus documentation, you may have also noticed a major thrust of the effort was on validation and documentation. To be able to achieve this (it takes A LOT of time to validate and write documentation) only the most important and commonly used solvers from OpenFOAM were left in Caelus. Just because a previously included application is no longer there does not mean it may not return in the future. If/when it does, it will be accompanied with at least a modicum of validation and documentation.

Caelus will not just be a one-time, release-and-forget. There are plans to improve and update it every 6 months (the release numbers reflect that: 4.10 = ’14 October, 5.04 = ’15 April, etc. The ‘1’ was dropped for simplicity). There may also be bug fixes released in between major releases but those won’t include features to maintain inter-release stability.

Clearly there’s some self-serving motivations but ultimately the motivations for releasing are authentic. There is no denying that what OpenFOAM has done for CFD and computational mechanics in general has been nothing short of amazing both from a technical point of view and from a social point of view. However, the reality is there are several short comings that have remained and are preventing it from moving forward. Caelus is developed and released as an attempt to address these deficiencies.

If and when people should want to contribute they will not have to reassign copyright. The authors copyright attribution will be included and remain in all contributed code. OpenCFD copyright is included in all source code that was part of the original code base as well as a few others (e.g. Symscape for some of the Windows portions).

There’s one last issue Caelus addresses – trademark. We have renamed the fork because we want to respect the OpenFOAM trademark. OpenFOAM is not a free-to-use trademark (at least as I understand it), such as “Linux”. And that’s OK. We are simply respecting it’s ownership and usage.

That was pretty long winded but we want to be transparent with our intentions with Caelus. As I mentioned, we all owe a lot of gratitude and have a lot of respect for OpenFOAM and it’s community. We simply wish to take open-source computational mechanics in a different direction and are doing so by something GNU and the GPL openly advocates: forking.

I should close by mentioning that Caelus is not the first fork of OpenFOAM. There are a few of them listed here which exist in a variety of forms and statuses.

We encourage you download and check it out Caelus. If you have questions or feedback regarding Caelus please reply or contact us.

-Chris

Use the buttons below to share
Share on Facebook
Facebook
Tweet about this on Twitter
Twitter
Share on LinkedIn
Linkedin
Email this to someone
email
Print this page
Print
[top]
About the Author


Director and Principal Research Engineer at Applied CCM Canada

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.