Тематические исследования в моей докторской диссертации требуют, чтобы у меня были расширения интервалов подпрограмм Фортрана в 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, чтобы интервальная арифметика работала особенно хорошо. Мне было бы сложно воспроизвести это в любой другой упаковке.
источник
Ответы:
Предполагая, что проблема заключается в том, что
DAEPACK
работает в 32-битном режиме, но не в 64-битном режиме, вот несколько подходов для решения этой проблемы.Компиляция
DAEPACK
в 32-битном режиме на 64-битной ОСПосмотрите, как это сделать, в другом вопросе . Это может быть простой способ продолжить работу с ним.
Если проблема заключается в том, что сгенерированный код имеет проблемы в 64-битном режиме, скомпилируйте сгенерированный код с аналогичными 32-битными флагами или в 32-битной среде (64-битная ОС может запускать 32-битный код при наличии соответствующих библиотек, но не наоборот ).
Воссоздать всю безопасную
DAEPACK
средуСоздайте полную 32-разрядную среду в виртуальной машине, используя, например, VirtualBox , чтобы
DAEPACK
она работала в ней успешно, будь то из старых двоичных файлов или перекомпилирована в этой среде. Вы можете получить версию ОС с открытым исходным кодом и компилятор настолько старый, насколько вам нужно, чтобы получить рабочую версию программного обеспечения.Возьмите выходные данные
DAEPACK
и перенесите их на хост-компьютер или отдельную виртуальную машину, где среда подходит для другого программного обеспечения, и продолжайте работу. Это может быть более поздняя 64-битная ОС, например, и продолжающая работать там.Использование функции общих папок в VirtualBox должно упростить вам эту задачу.
Привлекайте других, чтобы помочь исправить
DAEPACK
Я заметил, что вы сказали, что ни у вас, ни у автора программного обеспечения нет времени, чтобы это исправить, но никто не сказал, что вы не можете заручиться чьей-либо помощью! Рассмотрим эти варианты:
Наймите студентов бакалавриата MIT CS, чтобы помочь решить проблемы 32- и 64-разрядных систем. Обратите внимание, что для того, чтобы побудить их поработать над этим, вам, возможно, придется их компенсировать, например, деньгами или пиццей (и / или пивом, если они достигли совершеннолетия). Или подумайте, может ли ваш консультант нанять студентов с частичной занятостью, чтобы помочь с этим (может быть проблема с финансированием, если ваше собственное финансирование заканчивается). Или попросите об одолжении у программистов-исследователей в вашем отделе.
Лобби для релиза с открытым исходным кодом
DAEPACK
. Похоже, что его лицензионный статус неясен , но обратите внимание, что у MIT есть одноименная лицензия с открытым исходным кодом, которая довольно известна; выпуск его под открытой лицензией может помочь лучше понять проблему и помочь исправить 32-битные и 64-битные проблемы.Обратите внимание, что в зависимости от вашего департамента, юридического, административного и т. Д. Офисов может занять больше, чем 6 месяцев, которые у вас осталось для получения степени доктора философии, поэтому рассмотрите возможность начать это раньше, одновременно выбирая другие альтернативы.
Удачи!
источник