Is Python Suitable for Integrating and Updating Legacy Engineering Software?

Click For Summary
SUMMARY

This discussion confirms that Python is a suitable language for integrating and updating legacy engineering software, particularly when using libraries like NumPy for numerical computations. The conversation highlights the potential of using Microsoft Visual Studio with third-party Fortran compilers for maintaining existing Fortran code while developing new features. Additionally, WinPython and Portable Python are recommended distributions for Windows environments, facilitating the use of Python without extensive installation. The use of Cython is also suggested for optimizing performance when converting iterative solutions to vectorized forms.

PREREQUISITES
  • Familiarity with Python programming, specifically version 3.x.
  • Understanding of numerical computing concepts, particularly with NumPy.
  • Basic knowledge of Fortran programming and its integration with other languages.
  • Experience with Microsoft Visual Studio and its extensions for Fortran support.
NEXT STEPS
  • Research the capabilities of NumPy for vectorizing iterative solutions.
  • Explore the installation and features of WinPython and Portable Python for Windows.
  • Investigate the use of Cython for performance optimization in Python applications.
  • Look into third-party Fortran compilers compatible with Microsoft Visual Studio.
USEFUL FOR

Engineers, software developers, and project managers involved in legacy software modernization, particularly those transitioning from Fortran to Python or integrating various programming languages within engineering applications.

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).
 

Similar threads

Replies
16
Views
3K
  • · Replies 9 ·
Replies
9
Views
2K
Replies
4
Views
4K
Replies
2
Views
3K
  • · Replies 14 ·
Replies
14
Views
3K
  • · Replies 67 ·
3
Replies
67
Views
25K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
Replies
15
Views
5K