Les études de cas dans ma thèse de doctorat nécessitent que j'ai des extensions d'intervalle des sous - programmes Fortran dans CHEMKIN-II (excuses pour le lien; c'est la meilleure que j'ai pu trouver pour un package qui n'est plus distribué par le Sandia National Laboratory). CHEMKIN-II est un ensemble de chimie utilisé en chimie de la combustion; comme c'est le package standard utilisé dans la combustion, je ne peux pas (ou plutôt, je préférerais vraiment ne pas) utiliser un package différent.
Afin d'obtenir les extensions d'intervalle requises, j'ai utilisé un outil développé en interne appelé DAEPACK. Les anciens fichiers binaires que j'ai utilisés pour générer les extensions d'intervalle requises des sous-programmes CHEMKIN-II dont j'avais besoin sur un système d'exploitation 32 bits (avec une version de libstdc correspondant à gcc 2.95) il y a quelques années, mais sont depuis tombés en panne de date, et serait une épreuve énorme à utiliser (car je devrais trouver des versions 32 bits de tous les autres logiciels que j'ai utilisés). Le code source de ce paquet est également propriétaire, mais comme il a été initialement développé au MIT et que je travaille au MIT, j'ai pu (après beaucoup d'efforts) obtenir le code source de DAEPACK. En utilisant le code source que j'ai, j'ai pu compiler une version de DAEPACK compatible avec les versions 64 bits de Linux et les versions de libstdc correspondant à gcc 4.xx Cependant, ce code source, que je soupçonne est ancien, se compile en un exécutable qui ne génère pas avec succès le code d'extension d'intervalle dont j'ai besoin pour terminer ma thèse. J'ai contacté le développeur dans le but d'obtenir son aide pour corriger le code source, mais d'après les contacts précédents avec le développeur, je sais qu'il lui faudra du temps pour corriger le code source, s'il le fait.
Voici le gros problème: il me reste 6 mois avant de devoir obtenir mon diplôme parce que je manque de financement. Je ne peux pas compter sur le développeur pour corriger DAEPACK assez rapidement pour que je puisse terminer avec succès ma thèse de doctorat, c'est là que vous intervenez.
J'ai besoin d'un package qui fait ce qui suit:
- Génère des extensions d'intervalle, des modèles de Taylor (en utilisant l'arithmétique d'intervalle) et des dérivés de code Fortran 77 presque arbitraire; Je pense que les seules structures qui ne sont pas analysées par DAEPACK sont les
DO
boucles et lesIF
instructions. Puisque j'ai besoin de modèles Taylor, le code doit également avoir une capacité de différenciation automatique (AD). - Génère ces extensions d'intervalle et ces modèles de Taylor par traduction source à source du code Fortran 77 (c'est-à-dire qu'il analyse le code source comme un compilateur pour générer le code source qui calcule les extensions d'intervalle et les modèles de Taylor).
Dans un pincement, je peux utiliser un logiciel qui fait les deux choses ci-dessus pour le code C au lieu du code Fortran 77, puis tout passer f2c
. Je préférerais vraiment ne pas le faire de cette façon, parce que je ne sais pas si tout traverser f2c
fonctionnera même, mais je suis assez désespéré.
Pouvez-vous aider un doctorant désespéré?
Pour anticiper quelques suggestions possibles, voici des approches qui ne fonctionneront PAS pour moi, compte tenu des contraintes de temps:
- Essayer plus fort de faire fonctionner DAEPACK; croyez-moi, j'ai essayé. Et je bug souvent le développeur.
- Outils qui calculent des extensions d'intervalle ou des modèles de Taylor en utilisant des approches orientées objet (ou orientées objet). Je n'ai pas le temps de recoder CHEMKIN-II (ou toute autre bibliothèque de même taille) avec de nouveaux types; c'est trop grand.
- Utilisation d'une langue autre que Fortran 77/90 ou C. Le code CHEMKIN-II est en Fortran. Je peux le convertir en C en utilisant
f2c
, ou si besoin est, en utilisant un clone basé sur Sandia de CHEMKIN-II appelé TChem. Mes anciens résultats utilisent CHEMKIN-II; mes nouveaux résultats devraient reproduire mes anciens résultats, et je sais déjà que Cantera ne reproduira pas ce que CHEMKIN-II fait sur la base d'études de cas et de tests unitaires. De plus, l'étudiant diplômé qui m'a précédé a fait un peu de magie noire au code source de CHEMKIN-II pour que l'arithmétique d'intervalle fonctionne particulièrement bien. Il serait difficile pour moi de reproduire cela dans n'importe quel autre paquet.
la source
Réponses:
En supposant que le problème est que cela
DAEPACK
fonctionne en mode 32 bits mais pas en mode 64 bits, voici quelques approches pour résoudre ce problème.Compiler
DAEPACK
en mode 32 bits sur un système d'exploitation 64 bitsDécouvrez comment procéder dans une autre question . Cela peut être un moyen facile de continuer à travailler avec.
Si le problème est que le code généré rencontre des problèmes en mode 64 bits, compilez le code généré avec des indicateurs 32 bits similaires ou dans un environnement 32 bits (le système d'exploitation 64 bits peut exécuter du code 32 bits avec les bibliothèques appropriées, mais pas l' inverse ).
Recréer un ensemble
DAEPACK
environnement sécuriséCréez un environnement 32 bits complet dans une machine virtuelle en utilisant, par exemple, VirtualBox , tel qu'il
DAEPACK
est heureux de l'exécuter, que ce soit à partir d'anciens binaires ou recompilé dans cet environnement. Vous pouvez obtenir une version d'un système d'exploitation et d'un compilateur open source aussi anciens que nécessaire pour obtenir une version de travail du logiciel.Prenez la sortie de
DAEPACK
et transférez-la vers la machine hôte ou une machine virtuelle distincte où l'environnement est approprié pour l'autre logiciel et continuez à travailler. Il peut s'agir d'un système d'exploitation 64 bits plus récent, par exemple, et continuer à y travailler.L'utilisation de la fonction de dossiers partagés dans VirtualBox devrait vous faciliter la tâche.
Demandez à d'autres personnes de vous aider à corriger
DAEPACK
J'ai remarqué que vous avez dit que ni vous ni l'auteur du logiciel n'avez le temps de résoudre ce problème, mais personne n'a dit que vous ne pouvez pas demander l'aide de quelqu'un d'autre! Considérez ces options:
Embaucher des étudiants de premier cycle MIT CS pour aider à résoudre les problèmes 32 bits contre 64 bits. Notez que pour les inciter à y travailler, vous devrez peut-être les rémunérer, que ce soit avec de l'argent ou de la pizza (et / ou de la bière, s'ils ont l'âge légal pour boire), par exemple. Ou envisagez de demander si votre conseiller peut embaucher des étudiants à temps partiel pour vous aider (cela peut être un problème de financement, si votre propre financement est épuisé). Ou demandez des faveurs aux programmeurs de recherche de votre département.
Faites pression pour une version open source de
DAEPACK
. Il semble que son statut de licence ne soit pas clair , mais notez que le MIT a une licence open source éponyme qui est plutôt bien connue; le publier sous une licence ouverte peut aider à mieux comprendre le problème et à résoudre les problèmes 32 bits contre 64 bits.Notez que selon votre département, les bureaux juridiques, administratifs, etc. peuvent prendre plus de 6 mois que vous avez quitté pour votre doctorat, alors envisagez de commencer tôt, tout en recherchant d'autres alternatives.
Bonne chance!
la source