Журнал говорит, что расчёт завершён
Журнал заканчивается так, как и должен заканчиваться журнал. Решатель дошёл до конечного времени, невязки упали, и агент сообщает, что моделирование завершено. В исследовании 2026 года, где кодирующих агентов проверяли на OpenFOAM, авторы посмотрели на сетки, стоящие за такими расчётами. В двух из четырёх задач об обтекании препятствия, построенных одной из моделей, сетка не содержала препятствия.
Можно рассчитать обтекание цилиндра без цилиндра. Сходится превосходно.
ИИ-агенты для CFD уже умеют по одной фразе написать case для OpenFOAM, запустить его, прочитать ошибки и исправить их, и на эталонных задачах большая часть таких расчётов доходит до конца. Правильных среди них меньше. В этой статье эти две вещи разделены с помощью цифр самих исследователей, показаны ошибки, которые проходят любую проверку журнала, и дан порядок проверки любого case, который вам передаст агент. Агентов я не продаю и ничего против них не имею. Я просто хочу, чтобы их проверяли.
Что на самом деле делают эти агенты?
Идея одна и та же у всех систем, появившихся за последние два года. Большая языковая модель получает ваш запрос. Она находит похожие учебные примеры и документацию, пишет файлы case, запускает построитель сетки и решатель, читает журнал и правит файлы, если что-то не так. Это повторяется, пока расчёт не завершится или модель не сдастся.
Известные системы различаются тем, как организован этот цикл. Foam-Agent распределяет работу между несколькими агентами, с многоуровневым поиском по разным частям моделирования, генерацией файлов, при которой словари согласованы друг с другом, и циклом исправления ошибок, призванным устранять сбои без участия человека. ChatCFD добавляет структурированные базы знаний, локализатор ошибок и компонент, который пишет физическое резюме результата. Исследователи проверяли и универсальных кодирующих агентов, которым дали только подсказку, ориентированную на OpenFOAM.
OpenFOAM здесь естественная цель. Case представляет собой папку текстовых словарей, решатель запускается из командной строки, а журнал является текстом. Языковая модель может читать и писать каждую его часть, чего не скажешь о решателе, которым управляют через графический интерфейс.
Что измеряют показатели успеха?
Здесь стоит притормозить.
| Система | Набор задач | Заявленная цифра | Что считалось успехом |
|---|---|---|---|
| Foam-Agent (2025) | 110 задач, составленных авторами | 83,6% с Claude 3.5 Sonnet | Доля успеха; в аннотации она не определена |
| ChatCFD (2025, редакция 2026) | 315 случаев, составленных авторами | 82,1% успешного выполнения | Расчёт завершается |
| ChatCFD, та же статья | Те же 315 случаев | 68,12% физической достоверности | Мера авторов того, имеет ли результат научный смысл |
| Foam-Agent в измерении авторов ChatCFD | Те же 315 случаев | 42,3% успешного выполнения | Расчёт завершается |
| Универсальный кодирующий агент (Xiao и др., 2026) | 9 задач на основе учебных примеров | 9 из 9 завершены с особой подсказкой, 4 из 9 со стандартной | Расчёт доходит до конечного времени; у 7 из 9 нормированная среднеквадратичная ошибка относительно эталона ниже 0,1 |
Выделяются три вещи.
- Один и тот же инструмент на разных наборах задач получает очень разные оценки. Foam-Agent сообщает 83,6% на задачах своих авторов и получает 42,3% на задачах ChatCFD. Ни одна цифра не ошибочна. Они измеряют разные задачи, и доля успеха мало что значит, пока вы не знаете задач.
- Отработать и оказаться правым это разные оценки. По собственным данным ChatCFD, 82,1% расчётов завершаются, а физическая достоверность составляет 68,12%. Если каждый достоверный случай одновременно и завершившийся, что выглядит правдоподобно, то примерно каждый шестой завершённый расчёт по мерке самих авторов не имел физического смысла. Это моя арифметика на их цифрах, и это самая полезная цифра в таблице.
- Некоторые меры действительно проверяют ответ. Метрики, которые приводят Xiao с коллегами, включают ошибку относительно эталонных случаев, поэтому последняя строка может сказать, насколько близко к эталону подошли 7 из 9 расчётов, а не только то, завершились ли они. Это правильный тип меры. Набрать по нему высокий балл труднее, поэтому всегда спрашивайте, к какому типу относится цифра.
Почему трудные ошибки самые тихие?
Исследование Xiao и коллег из Пекинского университета 2026 года является самой откровенной работой в этой небольшой области, и её стоит прочитать ради описанных неудач.
На задачах, похожих на учебные, агент с тщательно составленной подсказкой завершил все расчёты и на большинстве подошёл близко к эталону. На плоских задачах обтекания препятствий, где сетку нужно было построить, а не скопировать, всё изменилось. С одной из моделей в двух задачах из четырёх сетка не отображала препятствие. В другом расчёте агент повторно использовал сетку из учебного примера, не обновив геометрию. Более сильная модель строила сетки лучше, но один тип сетки всё равно потребовал многократных подсказок человека. В предварительных испытаниях на высокоскоростном горении агент не смог добиться устойчивой конфигурации, правя файлы по журналу.
Хорошо агент справлялся с ошибками, которые выдают сообщения. Неподдерживаемая настройка, отсутствующая запись, опечатка в ключевом слове: журнал называет проблему, и агент её исправляет. Вывод авторов прямой. Неспособность отобразить препятствие в сетке и другие физические проблемы агентам заметить трудно, и надзор человека остаётся необходимым.
Итак, агенты лучше всего справляются с ошибками, которые заявляют о себе, и хуже всего с теми, что молчат. Для инженера это ровно наоборот, потому что ошибки, которые заявляют о себе, никогда не были опасными. Решатель, который упал, вам что-то сообщил. Решатель, который сошёлся на неправильной геометрии, не сообщил вам ничего, причём очень убедительно.
Тихие ошибки по семействам
Это классы ошибок, которые проходят любую проверку журнала. Ни один из них не специфичен для ИИ; люди совершают их все. Разница в том, что агент, копирующий учебные примеры, совершает их быстро, а агент, читающий только журнал, не может их заметить.
- Геометрия. Отсутствующий или смещённый элемент, или сетка, масштабированная в миллиметрах, хотя вершины записаны в метрах.
- Единицы. Несжимаемые решатели OpenFOAM работают с кинематическим давлением, то есть давлением, делённым на плотность, в м²/с². Для сил тогда нужна опорная плотность, которую кто-то должен задать.
- Унаследованные настройки. Вязкость, турбулентные величины, профили на входе и конечное время из учебного примера, с которого начался case, оставленные как есть, потому что ничто не жаловалось.
- Правдоподобные граничные условия, неверные для этой задачи. Пристеночная функция на сетке, которую никто не проверил по y+, или условие нулевого градиента там, где нужно было фиксированное значение.
- Слишком короткий расчёт. Нестационарная задача, остановленная до выхода течения на периодический режим, а затем усреднённая.
Разбор на примере: две ошибки, которые выглядят безупречно
Ошибка 1: миллиметровый цилиндр. Возьмём стандартную эталонную задачу: обтекание цилиндра диаметром 0,1 м в канале при средней скорости на входе 1 м/с и кинематической вязкости 0,001 м²/с. Число Рейнольдса равно 100, и с цилиндра срываются вихри.
Теперь допустим, что агент начинает с учебного примера, в котором словарь blockMesh масштабирует все вершины на 0,001, а новые вершины записывает в метрах. Цилиндр теперь имеет диаметр 0,1 мм.
Это ползущее течение. Срыва вихрей нет, решатель сходится быстро и гладко, а график невязок оказывается самым красивым за неделю. Утилита checkMesh выводит габариты расчётной области, так что одного взгляда на её вывод достаточно, чтобы это заметить. Агент, читающий журнал, туда не смотрит, потому что ничего не сломалось.
Ошибка 2: силы занижены на 18%, а коэффициенты точно верны. В несжимаемом case OpenFOAM функциональный объект forces умножает кинематическое давление на опорную плотность rhoInf, чтобы получить паскали, а затем ньютоны. Допустим, среда это воздух с плотностью 1,225 кг/м³, а агент оставляет rhoInf равным 1, как во многих учебных примерах. Тогда каждая сила занижена в одно и то же число раз.
Функциональный объект коэффициентов сил делит на ½ ρ U² A с тем же rhoInf, поэтому плотность сокращается, и коэффициент сопротивления получается верным. График коэффициента выглядит безупречно, а отчёт, где сопротивление указано в ньютонах, ошибочен. Мне нравится этот пример, потому что он проходит именно ту проверку, которую внимательный человек сделал бы первой: сравнение C_D с опубликованным значением.
Обе группы чисел здесь условные. Механизмы настоящие.
Тестовая задача с известными ответами
Если ваша команда хочет оценить агента или нового инженера, дайте ему задачу с опубликованным эталоном. Хорошо подходит эталон DFG для ламинарного обтекания цилиндра, вариант 2D-2 из работы Schäfer и Turek (1996): он двумерный, дешёвый, нестационарный и документирован до нескольких знаков.
Постановка на странице эталона FeatFlow: канал длиной 2,2 м и высотой 0,41 м с цилиндром радиусом 0,05 м и центром в точке (0,2; 0,2). Профиль на входе параболический с максимумом 1,5 м/с и средним значением 1,0 м/с, кинематическая вязкость 0,001 м²/с, плотность 1, что даёт Re = 100 по диаметру. Эталонные значения на самой мелкой сетке:
| Величина | Эталонное значение |
|---|---|
| Максимальный коэффициент сопротивления | 3.2200 |
| Максимальный коэффициент подъёмной силы | 0.9859 |
| Число Струхаля | 0.30188 |
Попросите агента построить case по описанию простыми словами, не называя эталон, и сравните. Число Струхаля около 0,30 и пиковый коэффициент сопротивления около 3,2 на разумной сетке говорят, что постановка верна. Полное отсутствие колебаний говорит, что чего-то не хватает: цилиндра, нестационарности, разрешения или конечного времени.
Обратите внимание, что цилиндр немного смещён от оси канала: 0,2 м при высоте канала 0,41 м. Оставьте его там. Агент, который «наводит порядок» и ставит геометрию симметрично, изменил эталонную задачу, и его ответ больше не сравним с эталоном.
Как я проверил бы case, написанный агентом
В таком порядке. Большая часть займёт минуты.
- Запишите, что вы ожидаете, до того как открыть результаты. Важные для вас величины и примерный диапазон для каждой, из ручной оценки, корреляции или прежней работы.
- Смотрите на сетку раньше, чем на течение. Запустите checkMesh, прочитайте габариты и откройте геометрию. Все ли элементы на месте, нужного размера и в нужном положении?
- Сравните case с учебным примером, из которого он вырос. Агент скажет, что он изменил. Опасны строки, которых он не касался: вязкость, турбулентные параметры, конечное время, интервал записи, настройки функциональных объектов.
- Проверьте единицы и опорные значения. Кинематическое или статическое давление, rhoInf, вязкость в транспортном словаре и число Рейнольдса, вычисленное вручную по файлам case.
- Прочитайте каждый файл граничных условий, поле за полем, и спросите себя, описывает ли он физическую задачу. Журнал на это не ответит.
- Проверьте сходимость и балансы. Масса на входе равна массе на выходе, и энергия тоже, если она решается. О том, что должно означать слово «сошлось», рассказывает статья о сходимости в этом блоге.
- Сравните с чем-то независимым. Эталон, корреляция, измерение или прежний проверенный расчёт. В этом и состоит разница между верификацией и валидацией, которой посвящена отдельная статья в этом блоге.
- Если числа повлияют на решение, проверьте сетку. Исследование сеточной независимости применимо к сетке агента ровно так же, как к вашей.
Это дольше, чем написать подсказку. И гораздо быстрее, чем написать case.
Где ИИ-агенты для CFD помогают уже сегодня
Там, где уже есть проверенный case и агент меняет в нём параметры: серия расчётов по скоростям на входе, набор геометрических вариантов проверенной конструкции, пакет скриптов постобработки. Опасные решения были приняты один раз и человеком, а агент повторяет безопасные.
Там, где работа шаблонная: словари функциональных объектов, линии выборки, скрипты, превращающие папку результатов в таблицу.
Там, где ошибка громкая: case, который не запускается, словарь с синтаксической ошибкой, отсутствующая запись библиотеки. Здесь опубликованные агенты уже хороши и экономят реальное время.
И в обучении, осторожно. Студент, который за минуту видит полный работающий case, быстрее понимает устройство OpenFOAM. Того же студента нужно научить ему не доверять, и этот урок стоит больше, чем сам case.
Где я не стал бы использовать их без полной проверки: новая физика, трёхмерная промышленная геометрия, течения с реакциями или многофазные, и всё, для чего нет эталона для сравнения. Исследование 2026 года называет трёхмерные и промышленно значимые задачи предметом будущей работы, а его испытания на горении не стабилизировались. Вот где находится эта область в этом году.
Что я спросил бы, прежде чем внедрять агента
Если кто-то предлагает ИИ-агента для постановки расчётов CFD в вашей команде, задайте четыре вопроса.
- Какой показатель успеха стоит за цифрой? Завершившийся расчёт и результат, близкий к эталону, это разные цифры, иногда сильно различающиеся.
- На чьих задачах? Набор вариаций учебных примеров мало говорит о вашей геометрии.
- Что проверяет агент, прежде чем сообщить об успехе? Если ответ «журнал», вы теперь знаете, что он пропускает.
- Кто проверяет case и по чему? Если никто, агент производит очень быструю и очень аккуратную неопределённость.
Коротко
Агенты для CFD реальны и быстро совершенствуются. Они исправляют ошибки, которые выводят сообщения, и пропускают те, что молчат. Относитесь к case от агента так, как отнеслись бы к работе способного нового коллеги в его первую неделю: с благодарностью за сэкономленное время и с чтением каждого файла, прежде чем что-либо покинет стены компании.
Если в этом месяце вы окажетесь на конференции, где ИИ есть на каждом слайде, задайте докладчику один вопрос: из расчётов, которые завершились, сколько оказались правильными?
О более широком вопросе, заменят ли обученные модели моделирование, читайте статью «Заменит ли ИИ CFD?» в этом блоге. Если у вас есть модель, построенная агентом или доставшаяся по наследству, и вы хотите проверить её файл за файлом, для этого и существует экспертиза модели.
Источники и материалы
- Xiao, Zhang, Xu, Mao, Li and Chen (2026), arXiv 2602.11689: a preliminary assessment of coding agents for CFD workflows
- Yue, Somasekharan, Cao and Pan (2025), arXiv 2505.04997: Foam-Agent, towards automated intelligent CFD workflows
- Fan et al. (2025, revised 2026), arXiv 2506.02019: ChatCFD, an LLM-driven agent for end-to-end CFD automation
- FeatFlow, TU Dortmund: DFG flow around cylinder benchmark 2D-2, time-periodic case (Re = 100)
Связанная услуга
Проверка моделей и нестандартные исследования
Понять, какие выводы подтверждает модель, где остаётся неопределённость и что требует проверки.
Посмотреть услуги