Case studies in my PhD thesis require that I have interval extensions of Fortran subroutines in CHEMKIN-II (apologies for the link; it's the best one I could find for a package no longer distributed by Sandia National Laboratory). CHEMKIN-II is a chemistry package used in combustion chemistry; since it's the standard package used in combustion, I can't (or rather, would really prefer not to) use a different package out there.
In order to get the required interval extensions, I've been using a tool developed in-house called DAEPACK. The old binaries I have used to be able to generate the required interval extensions of the CHEMKIN-II subroutines I needed on a 32-bit OS (with a version of libstdc corresponding to gcc 2.95) a couple years ago, but have since fallen out of date, and would be a tremendous ordeal to use (because I'd have to find 32-bit versions of every other piece of software I used). The source code for this package is also proprietary, but since it was originally developed at MIT, and I work at MIT, I was able to (after a great deal of effort) get the source code for DAEPACK. Using the source code I have, I was able to compile a version of DAEPACK compatible with 64-bit versions of Linux and versions of libstdc corresponding to gcc 4.x.x. However, this source code, which I suspect is old, compiles into an executable that does not successfully generate the interval extension code I need in order to complete my thesis. I have contacted the developer in an attempt to get his help in fixing the source code, but from previous contact with the developer, I know that it will take time for him to fix the source code, if he does at all.
Here's the big problem: I have 6 months left until I need to graduate because I run out of funding. I can't rely on the developer to fix DAEPACK quickly enough for me to successfully complete my PhD thesis, which is where you guys come in.
I need a package that does the following:
- Generates interval extensions, Taylor models (using interval arithmetic), and derivatives of almost arbitrary Fortran 77 code; I think the only structures that aren't parsed by DAEPACK are
DO
loops andIF
statements. Since I need Taylor models, the code must also have automatic differentiation (AD) capability. - Generates these interval extensions and Taylor models by source-to-source translation of the Fortran 77 code (i.e., it parses the source code like a compiler to generate the source code that calculates the interval extensions and Taylor models).
In a pinch, I can use software that does the above two things to C code instead of Fortran 77 code, and then pass everything through f2c
. I'd really prefer not to do it this way, because I have no idea whether or not passing everything through f2c
will even work, but I'm pretty desperate.
Can you guys help a desperate PhD student out?
To anticipate some possible suggestions, here are approaches that will NOT work for me, given the time constraints:
- Trying harder to get DAEPACK to work; believe me, I've tried. And I'm bugging the developer frequently.
- Tools that calculate interval extensions or Taylor models using object-oriented (or object-oriented-like) approaches. I don't have time to recode CHEMKIN-II (or any other similarly large library) with new types; it's too big.
- Using any language other than Fortran 77/90 or C. The CHEMKIN-II code is in Fortran. I can convert it to C using
f2c
, or if need be, use a Sandia-based clone of CHEMKIN-II called TChem. My old results use CHEMKIN-II; my new results should replicate my old results, and I already know that Cantera won't replicate what CHEMKIN-II does based on case studies and unit testing. Furthermore, the graduate student that preceded me did some black magic to the CHEMKIN-II source code to get interval arithmetic to work especially well. It would be difficult for me to replicate that in any other package.