CAE, Be Free!
The Case for Open Software in Computer-Aided Engineering
The following is a copy of the speech I presented at the 2004 Melbourne University Young Engineer's Public Speaking Competition, for which I was awarded first prize. Sadly the national competition for 2004 was cancelled, so the speech now lives on only on this website.
Ladies and Gentlemen, I want to tell you a little story. It's a story about an artist; a painter. This painter - and we'll say she's a friend of my, even though strictly speaking she's fictional - has in her head the most glorious idea for a painting. It's a painting of a summer landscape - brilliant blues, dazzling yellow sun, bright green fields. Unfortunately, my friend has a little bit of a problem. She doesn't have any green paint.
You might be thinking: "No problem! She's got blue, she's got yellow, surely she can make a bit of green." Sadly this is not the case. You see, she obtained her yellow and blue paints from two different suppliers, and you just cant mix them together. She even rang up the paint suppliers, but was told that they simply don't support mixing of their product with that of another vendor. So even though she had all the ingredients, my friend has to go out and buy some green paint.
One would think then that her troubles would be over. She settles down to start her masterpiece, and deftly applies the first stroke of green to the canvas. Imagine her shock when it slips straight off the canvas and goes *splat* on her brand new hundred-dollar pair of sneakers. Unfortunately, the canvas she had purchased to receive this glorious painting was not compatible with the new paint she had bought. Instead of a masterpiece, we've ended our story with a disgruntled, green-shoed artist.
You're probably thinking: "Ryan, this is the most ridiculous story I've ever heard!" And you'd be right. It's unthinkable that an artist would be unable to mix their paints, even if they came from two separate suppliers. It's unimaginable that a canvas you bought from one shop would fail to accept the paint you bought at another. And it's utterly inconceivable that an artist would allow themselves to get into this situation in the first place; that an artist would buy completely incompatible tools with which to produce their masterpiece.
But, change the protagonist in the story slightly and it might not sound so ridiculous. Imagine now a different kind of artist - an engineer. Instead of creating a painting the engineer seeks to create a solution to some particularly perplexing problem, but his trade is still creativity - he is an artist nonetheless. And instead of paints and a canvas, we have the modern tools of the engineer's trade - computers, solvers, simulation software. All of a sudden the story is eerily familiar.
The engineer has some product that he wants to produce. He has managed to use Matlab to solve some of the initial equations that he needs to understand by using numerical integration techniques. He has located appropriate materials for his product - some using a material selection program and some using an online materials database such as MatWeb. He has a geometrical model of part of the product that he has produced using ProEngineer, and a model of another part is available from one of his friends thanks to her earlier work using HyperMesh. Now he needs to run some finite element analysis, perhaps using LS-DYNA. Maybe even a fluid-flow analysis with Star-CD or Fluent. It should be easy, right? He's got all the information, he's got all the software, he's got all the ingredients...
If he's lucky, this engineer will be able to find the right combination of file formats, conversion scripts and black magic to make the next step in his design process "just happen". What's more likely is that he will resort to either transferring information between the various programs by hand, or creating his own set of file formats, conversion scripts and black magic to make things happen.
Imagine if engineers worked in the world of the painter. Sure you'd have some basic problems with things like mixing oils and waters, but for the most part we could expect that information obtained from one source or produced by one program could be used by another of our choosing. Imagine the time saved, and more importantly imagine the creative possibilities, the innovation, that this would enable. It's what I mean when I say CAE freedom - the freedom to choose the best tool for any job; the freedom to move information from one program to another at will; the freedom to create without being shackled to the needs of your tools and their incompatibilities with each other. It would be, pardon the hyperbole, a CAE utopia.
It's possible to get something approximating this utopia today, if you don't mind buying all the software you'll ever use from the one vendor. This approach works fine, as long as you don't mind being tied to that vendor's idea of what sort of engineering you should be doing, and what you should be doing with your data. Of course, you may one day realize that a competing product would better suit your needs, but you have 10 years worth of engineering models stored in a file-format specific to your current vendor and just cant make the switch. This is exactly the problem a lot of business are currently having with Microsoft Office - as much a they might like to use a competing program, all their business data is tied into their current platform and they just cant switch. Is this sacrifice worth it for a pale approximation of CAE freedom?
What I hope to show you today is that there is another road toward this CAE freedom. It wont get you there tonight, but it can start you on your way. Open Software.
So, what do I mean when I say "Open Software". Being a fairly technical audience, I'm sure some of you are familiar with "Open Source Software" and maybe you think that's what I'm talking about and I'm just being lazy. Well you're half right - it's part of what I want to talk about, but it's not the whole story.
For those of you who have no idea what I'm talking about, Open Source Software means that as well as getting a program that you can run, you also get two other very important things: the source code for the program so that you can see and understand how it operates, and the freedom to modify the program, run your modified version, give your modified version to other people, generally improve the software as you see fit. At the least perhaps you've heard of - as one of my friend's summed it up - "that Leenux thing". Linux is an Open Source operating system and it's something of a poster child for the Open Source movement.
So Open Source sounds like a powerful tool in the search for your CAE freedom. The program has no secrets. For a well-written program, you will be able to run the source code through a compiler and produce an executable that will run under Windows, or on a Mac, or on Linux, or wherever you want to use it. If the software is storing it's information in some strange format, you can peek inside and find out just what it's doing, making the job of doing other things with that information that much easier. But as I said, Open Source isn't the whole story. Equally important - and some would argue more important - is the idea of Open Standards.
To give you an example, who here knows HTML? HTML is the language of web pages, and it's an open standard. One can produce an HTML document independently of any particular piece of software. As a result, I can view web pages using whatever software I feel like, and I can get software that will do any number of interesting and useful things with a web page - check the spelling, look for broken links, summarize some news headlines.
By contrast, think of a Microsoft Word document. We can all produce them, in fact I'd wager many of us have a lot of our important personal information stored as Word documents. But I challenge you to create a Word document without using Microsoft Word. I challenge you to do useful things with the information that's stored in a Word document. If you're using other Microsoft tools, no problem. If you're lucky, the tool that you want to use will have an import filter for Word documents, but since it's a closed standard there's no guarantee that it will be accurate. Worst case scenario: your data is locked away forever, or you're stuck using Word to solve all your problems.
The same problems arise using CAE software. It's quite easy to obtain material property data, but what format will it be in? Can the tools you want to use handle that format? It's not hard to create a finite element model, but what file format will you store it in? What if you want to use a different solver? What if you want to use some sort of optimization software? Will they be able to understand it? And most importantly, can the material information and the geometrical information be easily combined in any meaningful way?
Take a step back, and imagine that there is a universally agreed-upon system for storing material property data and for storing a geometrical model. It's documented, freely available and comprehensive. Imagine that all your work is stored in these formats, allowing you to use it anywhere. Imagine you suddenly decide, for example, that "I want to use a transient finite-element analysis in an optimization loop to determine the best length for this part.". You've got all the ingredients - the models and the information, and software that can understand them - and this time you can make it just work. You don't have to go shopping, you've already got the green paint.
By Open Software, I really mean software that "plays well with others". Being Open Source is part of that, as it makes it easier for the software to run where you want it and in ways that you want. Supporting Open Standards is part of that, as it makes sharing of information between programs painless. There are other aspects as well - for example the ability to program the software to perform a specific task without user interaction. The more CAE software that we have which takes an open stance, that plays well with others, the closer we will be to this dream of CAE freedom. And the two best ways to achieve openness are, in my opinion, Open Source and Open Standards.
In my experience one of the biggest problems with supporting Open Software, in CAE or in any field, is that the practitioners don't realize what is out there. So let me just point out a few options for supporting Open Software in CAE.
One very popular piece of engineering software is Matlab, and there's no doubt that it's reputation is well deserved. But how many of you have heard of a software package called Octave? It's an open-source program that is very similar to Matlab, and indeed will run many Matlab scripts without modification. But, because of it's open-source nature, it has an enormous array of plugins and addons that allow it to interact with a wide variety of other software. It's open-source nature has also allowed its user to constantly provide improvements, so much so that in my experience it tends to be more powerful and flexible than Matlab in the areas that have received a lot of attention.
For the finite-element world, there is a project called Impact which is an open-source finite-element mesh solver. It's still in early stages, but users have been having a direct line back to the development by providing source-code improvements, and its capabilities are growing rapidly. There are in fact any number of open-source, freely-available analysis tools if one cares to look. Wouldn't it be nice to be able to effortlessly take advantage of them in your project?
On the standards front, let me point out MatML, which is a markup language for describing material property data that has been produced by the National Institute of Standards and Technology in the US. There is also femML, a language designed for describing finite-element models which is being developed by researchers at various universities and the US Naval Research Laboratory, among others. These file formats are specifically designed with the goal of openness in mind - to allow all CAE applications to seamlessly share information.
So while you cant exactly go out today and put together a completely open CAE environment, you can actually get a lot further than most people would think. And progress towards this goal is only building pace as more and more engineers realize the benefits of maintaining their CAE freedom.
Hopefully I have started to convince you that Open Software is in your interests as a modern engineer. And for those of you in the audience who aren't engineers, perhaps you'll tell your engineering friends a thing or two about what I've said. I'd like to leave you with a few thoughts on how you can help promote the use of Open Software in the engineering profession.
If you're starting a new project, take a moment to have a look around on the internet for some open-source projects that might be related to what you are doing. Before this presentation, would you have thought you could get a free Matlab replacement? More often than not, you will be surprised at what's out there.
Consider the ultimate fate of any information that you are going to collect or generate for your projects. Are you unnecessarily limiting what can be done with it, or the ways in which that information can be combined? Choose your sources of information and your file formats with an eye to being open, so that you can access that information in whatever way you need rather than the ways the vendor felt like providing it. In particular, avoid using formats that are supported by only a single program, or that are poorly documented. Again, you may be surprised at the formats supported by your program of choice, some of which will undoubtedly be more open than others.
Finally, and I would say most importantly, start demanding support for open standards such as MatML and femML a I mentioned earlier. Contact the vendors of your CAE software and ask them to support it if it does not. Let them know that openness is important to you. Because in all honesty the large commercial packages are going to dominate CAE for some time to come, so it's important to make sure that we encourage the vendors to play well with others. As much as the vendors may like for you exclusively use their tools, you need to make sure that they know that the engineering profession isn't about them - it's about us, about engineers.
It's about giving engineers the freedom to be as creative as they can be, to combine their information and their tools as they require - to mix their own paint. It's about making sure that control of your engineering process ultimately rests with you. To use a tired cliche, its about making your tools work for you instead of working for your tools. Because in the end, as creative and innovative beings - as artists - engineers need their CAE freedom.