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