By Trey Walters on Tuesday, 24 February 2015
Category: President's Perspective

The Blessing and Curse of Computational Engineering Software

We have all heard it countless times - "Garbage in, garbage out". As applied to engineering, and specifically to computational engineering software, the admonition is clear - we have to be certain we are properly specifying our engineering input to the software which will compute the behavior we seek to understand.

How can we as engineers maximize the productivity that comes from engineering software while minimizing the pitfalls? There is no one correct answer to this timeless question but I will attempt here to convey some insights I have gained.

When I started my engineering career almost 30 years ago I remember talking to some old timers about the software we used to calculate three-dimensional heat transfer. They expressed concern that the software had removed the engineer from the calculation and that they did not have to think about it as deeply and thoroughly. Going through a hand calculation forced the engineer to look at every number that went into the calculation. Allowing a computer to calculate the numbers meant the engineer did not have as much opportunity to think about each step and evaluate the reasonableness of each number.

Last night I was having dinner with a client and he expressed concern about the new generation of engineers not understanding what the output was from engineering software - and are thus less able to find errors in their input or their assumptions. Or, in some cases, errors in the software itself.

With these valid concerns as a starting point, let's make a list of the so-called blessings and curses. And then use that to suggest ways for all of us to get the most from computational engineering software.

The Blessings

Wow, with all these positive aspects who could argue with the value of computational software? Well, the greybeards among us would offer some cautionary words.

The Curses

With the preceding list of blessings and curses, and with the obvious reality that computational software is here to stay, what are some good practices we should all keep in mind when using computational software?

  1. Think about what you are doing - do not let the software do your thinking. Pay attention to all the steps and what is happening.
  2. Never completely trust software - software is written by humans and humans all have the capacity for error.
  3. Double-check results whenever possible - even if you only do a small sample, double-checking results will never hurt and will likely help. If your double-check agrees with the software, you have reinforced your grasp of the principles involved while also building confidence in the software results.
  4. Educate yourself - if your understanding of the principles behind the software is weak or imperfect, dig in! Take a short course. Browse the internet. Buy a book. Talk to another engineer with more experience. 
  5. Ask questions. And then ask more. - do not be afraid to ask questions. Ask colleagues, more experienced engineers, and the software developers themselves. If the software developers are reputable they will welcome your questions and the chance to help with your education.

Perhaps you can think of other blessings and curses. If so please feel free to add your comments!

Leave Comments