Код NASA Chemical Equilibrium with Applications (CEA) — вычислительная рабочая лошадка, которая рассчитывает характеристики ракет, ударные волны и детонации с тех пор, как большинство её нынешних пользователей ещё не родились, — наконец получил давно назревшую модернизацию. Инженерно-технический центр безопасности (NESC) агентства провёл легаси-код CEA2 на Fortran через эволюцию в CEA v3 — объектно-ориентированный пакет на Fortran 2008, который теперь свободно говорит на Python, C, MATLAB и даже Excel, потому что ничто так не говорит «ракетная наука», как интерфейс в виде электронной таблицы.

CEA2, выпущенный в 2002 году, был основным инструментом для анализа двигательных установок и термохимии, но его оригинальная процедурная реализация на Fortran, судя по всему, была такой же весёлой в сопровождении, как 20-летний код без интерфейса подпрограмм. Отсутствие надлежащего интерфейса делало всё более трудным расширение и интеграцию в современные инженерные процессы, которые теперь требуют автоматизированных параметрических прогонов, интеграции с другими инструментами моделирования и поддержки новых топлив, таких как зелёные пропелленты и устойчивое авиационное топливо. Поэтому NASA решило втащить его в современную эпоху, сохранив проверенную техническую основу.

CEA v3 построен на объектно-ориентированных структурах данных, строгой типизации и потокобезопасной архитектуре решателя равновесия. Он поддерживает интерфейсы Fortran, C, Python, MATLAB и Excel, что позволяет подключать инструмент напрямую к автоматизированным конвейерам анализа, многодисциплинарным средам проектирования и исследованиям с большим объёмом дизайна экспериментов. А для ностальгирующих сохранена обратная совместимость через легаси-интерфейс командной строки, так что существующие входные файлы и рабочие процессы можно переносить с минимальными помехами — потому что ничто так не говорит «прогресс», как сохранение старой командной строки.

Термодинамическая база данных также расширена и теперь включает дополнительные пропелленты и топлива, актуальные для текущих приложений NASA, включая компоненты зелёных пропеллентов, такие как ADN, HAN и LMP-103S, а также кандидатов в устойчивое авиационное топливо, например н-бутанол. Это означает, что CEA v3 теперь может помочь вам понять, как сжигать что-то, что лучше для планеты, или, по крайней мере, менее отвратительно.

Теперь о мелком шрифте: отдельные расчёты равновесия в CEA v3 умеренно медленнее, чем в CEA2, потому что модернизированная архитектура и повышенная надёжность требуют некоторых вычислительных накладных расходов. В репрезентативном тестировании один расчёт был примерно на 40 процентов медленнее, но абсолютная разница составила всего около 0,004 секунды на случай — так что вы можете даже не заметить, если только не засекаете время с секундомером и обидой.

Но вот где модернизация действительно окупается: для многоэтапных рабочих процессов, которые распространены в исследованиях дизайна экспериментов, параметрических прогонах, оптимизации и анализе неопределённостей, CEA v3 меняет правила игры. В одном бенчмарке прогон из 108 500 случаев завершился примерно за 1,11 секунды с CEA v3 по сравнению с примерно 15 минутами с CEA2. Это примерно в 800 раз меньше времени выполнения для этого рабочего процесса. Да, вы прочитали правильно: в 800 раз быстрее. Крупномасштабные исследования двигательных установок и автоматизированное исследование пространства проектирования стали гораздо более практичными, и вентилятор вашего компьютера скажет спасибо.

Инженерам NASA следует учитывать следующие рекомендации: примите будущее, но держите под рукой свои легаси-входные файлы. И если у вас есть вопросы, свяжитесь с Марком К. Лидером в Исследовательском центре Гленна, mark.leader@nasa.gov, потому что ему явно больше нечем заняться, кроме как отвечать на ваши письма о новых привязках Python для 20-летнего кода.