Приклади моєї кандидатської дисертації вимагають, щоб у мене було інтервал розширень підпрограм Fortran в CHEMKIN-II (вибачення за посилання; це найкраще, що я міг би знайти для пакету, який більше не поширюється Національною лабораторією Sandia). CHEMKIN-II - хімічний пакет, що використовується в хімії згоряння; оскільки це стандартний пакет, що використовується для спалювання, я не можу (а точніше, волію не використовувати) інший пакет там.
Для того щоб отримати необхідні розширення інтервалів, я використовував власний інструмент, розроблений DAEPACK. Старі двійкові файли, які я використовував, щоб я міг генерувати необхідні інтервальні розширення підпрограм CHEMKIN-II, які мені потрібні були на 32-бітній ОС (з версією libstdc, що відповідає gcc 2.95) пару років тому, але з тих пір випали на сьогоднішній день, і це було б величезним випробуванням у використанні (адже мені доведеться знайти 32-бітні версії всіх інших програм, які я використовував). Вихідний код цього пакету також є власником, але оскільки він спочатку був розроблений в MIT, і я працюю в MIT, я зміг (після великих зусиль) отримати вихідний код для DAEPACK. Використовуючи вихідний код, мені вдалося скласти версію DAEPACK, сумісну з 64-бітовими версіями Linux та версіями libstdc, що відповідають gcc 4.xx. Однак цей вихідний код, як я підозрюю, старий, компілюється у виконуваний файл, який не успішно генерує код розширення інтервалу, який мені потрібен для виконання моєї дипломної роботи. Я звернувся до розробника, намагаючись отримати допомогу у фіксації вихідного коду, але з попереднього контакту з розробником я знаю, що йому знадобиться час, щоб виправити вихідний код, якщо він взагалі є.
Ось велика проблема: у мене ще 6 місяців, поки мені потрібно закінчити навчання, бо у мене закінчується фінансування. Я не можу розраховувати на розробника, щоб виправити DAEPACK досить швидко, щоб я успішно закінчив кандидатську дисертацію, куди ви, хлопці, заходьте.
Мені потрібен пакет, який робить наступне:
- Генерує інтервальні розширення, моделі Тейлора (використовуючи інтервал арифметики) та похідні майже довільного коду Fortran 77; Я думаю, що єдині структури, які не аналізуються DAEPACK, - це
DO
петлі таIF
заяви. Оскільки мені потрібні моделі Тейлора, код також повинен мати можливість автоматичної диференціації (AD). - Генерує ці інтервальні розширення та моделі Тейлора шляхом трансляції коду Fortran 77 від джерела до джерела (тобто він аналізує вихідний код, як компілятор, щоб генерувати вихідний код, який обчислює розширення інтервалу та моделі Тейлора).
Я можу використовувати програмне забезпечення, яке робить два вищевказані речі в код C замість коду Fortran 77, а потім все пропускати f2c
. Я справді вважаю за краще не робити цього так, бо я не маю уявлення, чи все f2c
пройде, чи все це буде спрацьовувати, але я дуже відчайдушний.
Чи можете ви, хлопці, допомогти зневіреному докторанту?
Щоб передбачити деякі можливі пропозиції, ось такі підходи, які НЕ працюватимуть для мене, враховуючи часові обмеження:
- Намагаються сильніше змусити DAEPACK працювати; повірте, я спробував. І я часто переживаю розробника.
- Інструменти, які обчислюють розширення інтервалів або моделі Тейлора, використовуючи об'єктно-орієнтовані (або об'єктно-орієнтовані) підходи. У мене немає часу перекодувати CHEMKIN-II (або будь-яку іншу подібну велику бібліотеку) новими типами; він занадто великий.
- Використовуючи будь-яку іншу мову, ніж Fortran 77/90 або C. Код CHEMKIN-II знаходиться у Fortran. Я можу перетворити його на C за допомогою
f2c
або, якщо потрібно, використовувати клон на основі Санді CHEMKIN-II під назвою TChem. Мої старі результати використовують CHEMKIN-II; мої нові результати повинні повторювати мої старі результати, і я вже знаю, що Cantera не повторить те, що робить CHEMKIN-II на основі тематичних досліджень та одиничних тестувань. Крім того, аспірант, який передував мені, здійснив деяку чорну магію у вихідному коді CHEMKIN-II, щоб отримати інтервал арифметики для роботи особливо добре. Мені було б важко повторити це в будь-якому іншому пакеті.