Python Is Python Suitable for Integrating and Updating Legacy Engineering Software?

AI Thread Summary
Python is considered a suitable option for integrating and updating legacy engineering software, particularly due to its ease of use and libraries like NumPy for numerical computations. While some suggest using C or C#.NET for new code, Python's ability to interface with existing Fortran code through DLLs is also highlighted. The discussion mentions tools like f2c for Fortran-to-C conversion and emphasizes the potential for speed improvements using Cython. Various Python distributions for Windows, such as WinPython and Anaconda, are recommended for their convenience and functionality. Ultimately, the choice of language should depend on the ease of translating the old code and the specific requirements of the project.
bigaggie
Messages
40
Reaction score
0
So, my company has quite a few old programs for calculating solutions to bearings, annular seals, etc. The calculations are iterative in nature, and none of these old programs are really integrated together, which is problematic. Plus they're in Fortran (or something else), and don't run on our newer computers. So I would like to reprogram some of them to run on 64 bit Windows machines. But I'm not sure what language to use for something like this. We'd like to package them together into a software suite that we can distribute among our engineering group. I know some Python, and I think I could do it in Python relatively quickly, but is this really something that Python's suitable for? Should we be looking at C (or one of its variants)?
 
Technology news on Phys.org
C#.NET would be a reasonable choice.
 
If the company is paying for the job, Microsoft Visual Studio supports Fortran (but not in the free VS Express versions). All the languages are integrated with each other, so if you want to leave your Fortran code untouched and add a graphical user interface in a different language, you can.

I agree the .NET framework would be a reasonable choice for any new code. Use whichever language is easiest to translate your old code into (which probably means "old school" C, rather than C++ or C#).

There used to be a very good fortran-to-C conversion program, called, unimaginatively, f2c. I don't know if it's still around or supported though. Try Google.
 
EDIT: If you can package up the Fortran code as a DLL, you could use the existing code from another language like Python. I don't have any practical experience with this, though. Otherwise...

Python with numpy would be a good choice.

http://www.numpy.org/

There are several Python distributions for windows that probably have all you need, like Anaconda, Canopy, WinPython, and Portable Python.

http://code.google.com/p/winpython/
http://continuum.io/downloads
https://www.enthought.com/products/canopy/
http://portablepython.com/

I use WinPython. The default install is just a directory, with no registry changes. It's only as invasive as you want it to be. But Portable Python may be even more convenient in this way since it's meant to be run off a USB stick.

And here's a site with many pre-compiled scientific Python modules for windows:

http://www.lfd.uci.edu/~gohlke/pythonlibs/

With numpy, you want to try to convert an iterative solution to a vectorized solution. Usually this is very straightforward, but some cases may take some thought. In the case where only an iterative solution will work, I've found Cython fairly easy to use for massive speedups without having to write C by hand:

http://cython.org/
 
Last edited:
Thanks for the help guys. Looks like we'll have to find a co-op or something (we're a bunch of mech engineers).
 
Back
Top