Серии продувки и ИИ-агент — отклонения руля, скольжение, MCP

Обновлено: 2026-10-27 Продвинутый уровень cfd продувка серия руль высоты элероны скольжение поляра балансировка mcp ии-агент

Серии продувки и ИИ-агент

Простыми словами. Один расчёт отвечает на вопрос «какие силы при этом
угле и этом положении руля». Серия отвечает сразу на много таких
вопросов: она сама перебирает углы атаки и отклонения руля (или углы
скольжения) и собирает таблицу — по ней видно, как работает руль, на каком
угле модель летит горизонтально, на какой скорости сваливается и устойчива
ли она. Серия считается часами, поэтому ставится одна задача, а результат
ждёт в «Моих расчётах». Серии есть только у вошедших. В конце страницы — как
делать всё то же через ИИ-агента (MCP).

Серия отклонений руля

Серия считает силы одной группы рулей на многих углах атаки и отклонениях —
одной задачей. Результат живёт в «Моих расчётах».

Как поставить из формы. Войдите, загрузите модель (шаг 1) и на шаге 2
отметьте рули группы, которую хотите посчитать, — с осью шарнира и ходом (см.
«Рули: назначение и ход»). На
шаге 3 «Условия» появится выбор «Один расчёт / Серия отклонений»:
выберите серию, затем группу рулей (в списке только те, что отмечены на шаге 2)
и план — «39» по умолчанию или «27». Под выбором — грубая оценка времени,
только порядок величины: «порядка 2 часов на видеокарте, порядка суток без
неё» (если видеокарта сервера недоступна — только время на процессоре).
Правило округления: до 16 часов — целые часы, от 16 часов — целые сутки;
фактическое время может заметно отличаться. Скорость потока задаётся как
обычно, а угол атаки и качество сетки у серии не спрашиваются: она сама
перебирает углы плана и считается только в режиме «точно». На шаге 4 сводка
называет режим, группу, план и ту же оценку времени; «Запустить расчёт»
ставит в очередь одну задачу-серию и открывает её страницу в «Моих
расчётах». Если рули не отмечены или шаг 2 пропущен, выбора нет — форма
ставит одиночный расчёт; без входа вместо выбора стоит подсказка войти.

План. «39» (по умолчанию) — 13 углов атаки × 3 отклонения (оба края хода и
нейтраль), «27» — 9 × 3, дешевле на треть и грубее по углу. Полная таблица —
углы от −10° до +15° с шагом 0,5° × 15 отклонений — восстанавливается по
посчитанным кадрам, когда серия досчитана, с оценкой неопределённости у
каждого узла. Углы одного отклонения считаются по возрастанию, и каждый
следующий до 7° начинается с решения предыдущего — так кадр короче и точнее,
чем с нуля; первый угол каждого отклонения и углы выше 7° (у срыва, где ответ
мог бы зависеть от порядка счёта) считаются с нуля.

Время. «39» на видеокарте — около 1,6 часа для половины модели (руль
высоты, закрылки, элевоны) и около 3 часов для модели целиком (элероны, руль
направления: у них нужна вся модель, без плоскости симметрии); без
видеокарты — около 17 и 33 часов. Модель целиком помещается на видеокарту,
пока её сетка не крупнее примерно 5,9 млн клеток; сетка крупнее считается на
процессоре. Если сетка модели вышла больше, чем сервер удержит в памяти, она
строится заново грубее и серия считается дальше: все кадры одной серии — на
сетках одного размера. Обычно это видно на первой же сетке и добавляет к
серии около 13 минут; если грубее пришлось перейти позже, уже посчитанные
кадры прежних отклонений считаются заново, и счётчик «Кадров готово» на это
время откатывается назад. Режима «быстро» у серии нет: его сетка крупнее щели
шарнира, и в нейтрали руль получает ложный «провал» подъёмной силы — около
8 % на нашем замере.

Серия досчитывает кадры там, где поляра гнётся. После кадров каждого
отклонения серия смотрит, насколько ненадёжна достройка между посчитанными
углами, и добавляет кадры посередине отрезков, где ошибка достройки выше ±2 %
силы (на уровне шума сетки сборки); вне −2…+6° точность самих кадров —
проценты, поэтому там порог ±10 %. Плоские участки остаются редкими. Не
больше 4 добавочных кадров на отклонение — «39» вырастает не выше 51 кадра,
«27» — не выше 39; число «Кадров готово из …» растёт вместе с ними. Время
серии на форме — диапазон («2 ч – 4 ч»): нижняя граница — как у плоской
поляры, верхняя — со всеми добавочными кадрами. У аккаунта одновременно идёт
одна серия; в суточный лимит она засчитывается как один расчёт.

Крен и рыскание — у серий элеронов и руля направления. У этих серий
модель считается целиком, и в таблице кадров появляются колонки «Крен,
Н·м»
и «Рыскание, Н·м», а под ней — раскрывающаяся таблица наклона
крена по отклонению
(Н·м на градус) на каждом угле атаки: так видно,
насколько эффективны элероны по крену. Знак — как у самолёта: крен
положителен, когда правое крыло уходит вниз, рыскание — когда нос уходит
вправо. «Плюс» отклонения — задняя кромка правого элерона вниз (левый — в
обратную сторону), поэтому положительное отклонение даёт отрицательный
крен
. Моменты — относительно той же точки, что момент тангажа (центр масс,
если задан; иначе начало координат файла); коэффициента крена нет — размах
модели трубе не известен. У серии руля высоты, закрылков и элевонов
(полумодель) и у одиночных расчётов без скольжения крена и рыскания нет:
плоскость симметрии гасит их по построению.

Страница серии

Страница серии показывает, сколько кадров готово из плана (и сколько не
посчиталось), полосу прогресса, что считается сейчас (сетка очередного
отклонения или кадр), в очереди — сколько расчётов перед серией, а когда
серия идёт — сколько минут она идёт уже (оценки «осталось» нет); обновляется
сама. Серия уступает очередь одиночным расчётам между своими кадрами,
поэтому может постоять. Пока серия идёт, её можно отменить: из очереди
она уходит сразу, идущая останавливается за несколько секунд, посчитанные
кадры остаются.

Ниже — таблица кадров: отклонение, угол атаки, сопротивление и подъёмная
сила; «≈» у кадра — силы не установились; «» у угла — он вне −2…+6°: там
силы печатной сборки в «точно» не устанавливаются и за долгий расчёт, и
точность кадра — проценты, а не шум сетки (±1,5–2 %). Насколько кадр не
установился, видно числом:
«Итерации» — на какой итерации решатель
остановился (кадр без установления кончается на своём потолке: 350
итераций, у кадра, начатого с решения предыдущего угла, — 300),
«Размах
D / L, %»
— насколько сопротивление и подъёмная отходили от своего среднего
за последние итерации (прочерк — меньше 1 %),
«Дрейф D / L, %»* —
насколько расходятся средние первой и второй половины этих итераций. Большой
дрейф значит, что среднее ещё плывёт, ИЛИ что сила медленно колеблется с
периодом порядка самого окна (у сборки так ведёт себя подъёмная).

Файлы. На странице своей серии — «Скачать посчитанные кадры (CSV)»
(frames.csv, в любой момент, в том числе у отменённой серии: те же числа,
что в таблице, плюс outside_reliable_alpha — пометка «», extra_round —
добавочный кадр сгущения, сходимость кадра, у модели целиком —
roll_moment_nm/yaw_moment_nm) и, когда серия досчитана,
«Скачать полную
таблицу (CSV)»
* (table.csv: строка на каждый узел «угол × отклонение» с
силами, оценкой неопределённости и номером кадра, если узел посчитан, а не
восстановлен; колонка uncertain помечает узлы, которым после сгущения
доверять нельзя). Серия с полётной массой — ещё «Выводы по полётной массе
(CSV)». Всё сразу — архивом ZIP (см.
«Скачать цифры и архив»).

Как смотреть серию. Когда серия досчитана и полная таблица восстановлена,
под таблицей кадров появляется блок «Исследовать серию»:

  • ползунок угла атаки — все углы таблицы с шагом 0,5°, и ползунок
    отклонения руля — 15 положений хода группы;
  • карточка выбранной точки — подъёмная, сопротивление, L/D и момент
    тангажа
    с оценкой неопределённости «± …». Под карточкой сказано, откуда
    числа: «посчитано» — в этой точке решался кадр серии (силы самого кадра
    указаны строкой «в кадре: …» — они отличаются от таблицы на шум расчёта) —
    или «восстановлено» — точка между кадрами, числа достроены по
    посчитанным;
  • переключатель величины и два графика: по углу атаки (кривые для краёв хода
    и нейтрали пунктиром плюс выбранное отклонение сплошной) и по отклонению при
    выбранном угле. Мелкие точки — посчитанные кадры, крупная — выбранная
    точка.

Под карточкой — угол балансировки выбранного отклонения: угол атаки, при
котором момент тангажа относительно центра масс равен нулю, и наклон dM/dα
там (отрицательный — модель устойчива: при росте угла момент опускает нос).
Центр масс серии задаётся на форме запуска; в просмотрщике его можно сдвинуть
полями X/Z — момент всех точек таблицы и кадров и угол балансировки
пересчитываются сразу. Таблица загружается вместе со страницей один раз —
ползунки двигаются без обращений к серверу.

3D серии: давление, проигрывание, щётка

Давление на модели у каждого кадра. Серия сохраняет у каждого кадра лёгкий
3D-слой — давление на поверхности модели (около 0,1 МБ на кадр), а форму
модели с рулём в своём положении — один раз на отклонение. В «Исследовать
серию» двигаете ползунок угла или отклонения — модель сразу перекрашивается
давлением этого кадра, а руль стоит в своём положении (крутить, приближать и
«Сбросить вид» — как в 3D одиночного расчёта). Синее — разрежение, красное —
поджатие. По умолчанию шкала одна на всю серию, чтобы кадры можно было
сравнивать на глаз; переключатель «Шкала кадра» растягивает её под выбранный
кадр. Таблица серии гуще посчитанных кадров, и в точке, где кадра нет,
показан ближайший посчитанный кадр — подпись над моделью называет его
угол и отклонение. Если у какого-то кадра слоя нет, подпись так и говорит
(«у кадра N слоя нет — показан ближайший со слоем: кадр M»); силы при этом на
месте. Первый показ скачивает 3D-движок (≈ 0,6 МБ) и форму модели своего
отклонения (≈ 1–3 МБ), дальше — один файл ≈ 0,1 МБ на точку. На широком
экране заодно подгружаются соседние точки, на телефоне — нет.

«Досчитать 3D-слой». Если у части кадров готовой серии слоя давления нет,
под 3D есть кнопка «Досчитать 3D-слой» (видна только владельцу): она
заново считает ТОЛЬКО кадры без слоя — на той же сетке, в том же порядке и с
тем же тёплым стартом, что в серии, — и заранее называет, сколько это кадров
и примерно сколько минут (у серии на плане «27» со сгущением — около часа
полумоделью и около двух часов моделью целиком). Силы, таблица и выводы
серии при этом не меняются: досчёт добавляет только давление на
поверхности. Пересчитанные силы сверяются с сохранёнными, и если у кадра они
разошлись больше шума (≈ 1,3–1,4 % в надёжной зоне углов, вне её — размах
колебания силы самого кадра, но не меньше 2 %), кадр называется под 3D —
таблица по-прежнему показывает сохранённые силы. Кадр, который досчёт уже
пробовал, второй раз не предлагается. Если перестроенная сетка отклонения
вышла не точно такой, как в серии, его кадры не досчитываются (давление
легло бы не на те точки модели) — это тоже названо; если сохранённую форму
модели с перестроенной сеткой не сверить вовсе, сетка даже не строится
(время видеокарты не тратится), и кадры названы сразу. Пока идёт досчёт,
серия стоит в очереди, как обычная серия, её можно остановить кнопкой
«Остановить досчёт» — серия при любом исходе остаётся готовой. Таблица,
архив и сравнение доступны и во время досчёта; удалить серию, пока досчёт
считается, нельзя — сначала остановите его. Досчёт не тратит суточный лимит,
но, как и серия, идёт не больше одного на аккаунт.

Ключевые кадры с полным 3D. Кроме лёгкого слоя, серия сохраняет полный
3D-вид (давление, линии тока, поле течения — тот же формат и просмотрщик,
что у одиночного расчёта) у нескольких кадров: нейтрали и обоих краёв хода
руля на одном-двух углах атаки
— 3–6 кадров. Это те же кадры плана, а не
дополнительные расчёты. Углы по умолчанию — 2° и 5° (оба в зоне −2…+6°,
где силы сборки устанавливаются); угла, которого нет в плане, берётся
ближайший угол плана (у «39» вместо 2° — 1°). На форме запуска, в блоке
серии, поле «Углы атаки кадров с 3D» принимает один-два угла через
запятую, а флажок «Не сохранять 3D кадров» оставляет серию только с
силами. Цена — до ≈ 10 МБ на кадр (до ≈ 60 МБ на серию из шести кадров,
хранится и удаляется вместе с серией) и около минуты к серии. У ключевых
кадров в таблице стоит ссылка «3D», а в просмотрщике — кнопка «Открыть
этот кадр в 3D»
. Ссылки видит только владелец (по секретной ссылке кадры
серии не раздаются — как и CSV серии). Если 3D какого-то ключевого кадра не
построилось, серия всё равно готова, а страница предупреждает об этом.

Проигрывание серии (▶). Над моделью — кнопка ▶/⏸, выбор оси («Угол
атаки» или отклонение руля), режим («Петля» или «Туда-обратно») и скорость
(0,5×–4×; 1× — 6 точек таблицы в секунду, то есть 51 угол — около 8,5 с).
Между соседними точками всё меняется плавно, а не скачком: цвет давления
— смесь двух ближайших посчитанных кадров, числа карточки и маркеры на
графиках — интерполяция таблицы. Перед стартом страница догружает давление
всех кадров пути («загружено N из M файлов, X МБ»); при включённом в системе
«уменьшении движения» скорость по умолчанию 0,5×, а точки сменяются шагом;
если давление загрузить не удалось, играют только числа и графики. ⏸
останавливает на ближайшей точке, ползунок во время проигрывания тоже
останавливает его. Сервер во время проигрывания не опрашивается. Проход
можно сохранить роликом (см. «Сохранить видео»).

Поворачивается самолёт, а не воздух. Модель (вместе с щёткой и линиями
тока) повёрнута на угол атаки показанного кадра вокруг точки момента серии
(ЦТ; если точку не задавали — вокруг середины модели), а воздух всегда идёт
слева направо вдоль тонкой серой оси — это «горизонт», по нему виден
угол. Камера не крутится вместе с моделью: при проигрывании по углу атаки
самолёт плавно поднимает и опускает нос.

Подъёмная по размаху (зелёная «щётка»). Над моделью стоят зелёные
столбики — по одному на каждую из 48 полос размаха — и линия по их вершинам:
высота столбика — подъёмная сила этой полосы. Видно, где по размаху
рождается подъёмная (у хорошего крыла огибающая близка к эллипсу), где её
«съедает» фюзеляж и как она растёт с углом атаки. Масштаб один на всю
серию
, поэтому при проигрывании щётка растёт вместе с углом. Все столбики
крыла стоят на линии четверти хорды, как в XFLR5: у стреловидного крыла
линия идёт назад к законцовкам, у крыла с поперечным V — вверх. Верхушки
соединяет плавная линия — сглаживание по размаху, которое не пересекает
резкие скачки (ступень у фюзеляжа, спад у законцовки); исходная ломаная по
полосам остаётся тонкой бледной линией под ней. Отрицательная подъёмная —
столбики вниз; щётка рисуется поверх модели. У полумодели щётки зеркальны,
как и модель. Считает её браузер из того же давления, которым раскрашена
модель. Под тумблером «Подъёмная по размаху» — сумма полос в ньютонах,
подъёмная кадра и разница в процентах: в полосах только давление, а сила
кадра — с трением, поэтому несколько процентов разницы — норма; у кадров с
подъёмной около нуля процент не пишется.

Горизонтальное оперение — своя, пурпурная щётка над стабилизатором (у
V-хвоста — над его панелями, высота — вертикальная составляющая силы), с тем
же масштабом, что у крыла, и подпись делит сумму: «крыло X Н, оперение Y Н».
Оперение узнаётся по геометрии. Если модель разбита на детали, оперение —
деталь, которая стоит позади задней кромки крыла с заметным зазором и сама
тонкая, как пластина (щётка заводится, если среди таких деталей есть
горизонтальная или V); киль идёт в щётку оперения (его вклад в подъёмную
почти нулевой, боковую силу щётка не показывает), элевоны и закрылки остаются в крыле, а объёмные детали
позади крыла — гондола, обтекатель мотора, отдельная задняя часть фюзеляжа —
оперением не считаются. Если стабилизатор слит с крылом и фюзеляжем в одно
тело (так у печатных сборок, у серии рулей и у расчёта с отклонённым рулём
модель всегда считается одним телом), граница идёт по положению: задняя
кромка крыла берётся на внешней части размаха, где крыло одно, и всё, что
лежит позади неё с заметным зазором, — оперение, если там есть
горизонтальная (или V) поверхность шире фюзеляжа. Тогда в пурпурную щётку
попадает и хвостовая часть фюзеляжа позади крыла — так же, как передняя
часть фюзеляжа входит в зелёную щётку крыла; одиночный киль без
стабилизатора, конец фюзеляжа, переднее горизонтальное оперение «утки» и
вытянутый назад центроплан летающего крыла щётку оперения не заводят. У
тандема, посчитанного одним телом, заднее крыло целиком попадает в щётку
оперения: по одной геометрии его не отличить от большого стабилизатора.

Поток (тумблер «Поток»). Линии тока есть только у ключевых кадров.
У такого кадра поверх давления бегут оранжевые штрихи — воздух «массой», как
«Поток как масса» в 3D одиночного расчёта (≈ 1–2 МБ, скачиваются при первом
показе кадра). У остальных кадров потока нет — чужие линии на них не
переносятся (они посчитаны при другом угле и положении руля и прошли бы
сквозь модель), подпись называет ближайший ключевой кадр. При проигрывании
поток проявляется около ключевого кадра и плавно гаснет к соседнему. Линии
всех ключевых кадров на пути проигрывания скачиваются до старта и держатся до
его конца, поэтому поток появляется у каждого из них. Тумблер прячет штрихи и
ничего не скачивает.

Кадр серии отдельно, с 3D

Под ползунками досчитанной серии есть кнопка «Посчитать этот кадр отдельно
с 3D»
. Она ставит одиночный расчёт на той же модели и с тем же
назначением рулей, на выбранных ползунками угле атаки и отклонении (см.
«Один расчёт с отклонением руля»);
отклонения узла ложатся точными числами серии (2.857143°, а не округлёнными
для показа). Серия при этом не перезапускается и не меняется; новый расчёт
идёт в суточный лимит и в очередь как любой одиночный, открывается в «Моих
расчётах», а повтор той же кнопки отдаёт уже поставленный расчёт. Кнопка —
только на странице своей серии, по секретной ссылке её нет. Силы такого
расчёта совпадают с кадром серии в пределах шума кадра: тот же файл, то же
отклонение, та же рамка и сетка.

Серия по скольжению

На шаге 3 выберите «Серия» и в группе — «Скольжение, модель целиком (без
рулей)»
: рули для неё не нужны. Серия идёт при угле атаки этого шага и сама
проходит скольжения по плану:

  • beta9 (по умолчанию) — от −10° до +10° через 2,5°: 9 расчётов, порядка
    часа на видеокарте и около 8 часов без неё;
  • beta5 — −10, −5, 0, +5, +10°: 5 расчётов, около получаса на видеокарте
    и около 4–5 часов без неё.

Все расчёты серии идут на одной сетке (её след накрывает оба крайних
скольжения), моделью целиком и только в режиме «точно»; 3D-вида у кадров нет —
только силы и моменты. На странице серии — таблица по скольжению (боковая сила,
крен, рыскание, сопротивление, подъёмная, тангаж) и блок «Устойчивость по
скольжению»
: рыскание, крен и боковая сила на градус скольжения — наклон
прямой по кадрам от −5° до +5° (кадры за ±5° показывают, где кривая начинает
загибаться, и в наклон не входят). Знаки и смысл — как у
сравнения пары расчётов со скольжением.
Моменты — относительно центра масс серии (поле точки момента на шаге 3).
Таблицу и наклоны можно скачать файлом beta.csv, все кадры — frames.csv.

Серия отклонений руля со скольжением не принимается — скольжение перебирает
только эта серия. Файл-полумодель самолёта серия по скольжению тоже не
принимает (граница та же, что у одиночного расчёта со скольжением).

Точка момента на странице серии по скольжению двигается так же, как у
одиночного расчёта: введите X и Z центра масс — моменты крена, рыскания и
тангажа каждого кадра и оба наклона пересчитаются сразу, без нового
расчёта; «Точка расчёта» возвращает числа серии.

Полётная масса у серии по скольжению. Если у серии задана масса, под
таблицей кадров стоят выводы по каждому скольжению: какую долю веса несёт
подъёмная сила кадра, скорость и тяга горизонтального полёта на угле атаки
серии и сколько скольжение стоит по тяге против 0°. Угла горизонтального
полёта, скорости сваливания и запаса устойчивости у такой серии нет: для них
нужен перебор углов атаки. Файл flight.csv — строка на кадр.

Сравнение двух серий

Две серии сравниваются так же, как два одиночных расчёта (отметьте их в «Моих
расчётах»), но вместо сил и 3D страница показывает поляры двух серий на
одних графиках
и таблицу по углам атаки:

  • отклонение руля — серии сравниваются при одном и том же отклонении: по
    умолчанию ближайшем к нулю из общих у обеих серий, другое выбирается списком
    над графиками (?d=<градусы> в адресе). Нет ни одного общего отклонения —
    страница скажет об этом: сравнивать силы при «разных ручках» нельзя;
  • четыре графика — подъёмная сила, сопротивление, качество L/D и момент
    тангажа: кривая A сплошная, кривая B пунктирная (различимы и без цвета).
    Это числа таблиц серий — те же, что показывает ползунок на странице серии;
    момент — в Н·м (у серии нет опорных площади и хорды);
  • таблицу по углам — для каждого угла атаки A, B и разница B − A по
    каждой из четырёх величин с отметкой, у кого лучше; углы, которых нет в
    одной из серий, помечены «только в A»/«только в B» и не сравниваются;
  • предупреждение о разных условиях — как у одиночных, плюс другая
    группа рулей. Моменты, взятые относительно разных точек, не вычитаются.

Две серии по скольжению сравниваются таблицей по скольжению — боковая
сила, моменты крена и рыскания, сопротивление и подъёмная сила A, B и
разница B − A — и наклонами каждой серии с разницей. Скольжение, которого нет
в одной из серий, показано и не сравнивается. Угол атаки у двух серий должен
совпадать: страница называет общий угол, а расхождение — в списке условий.
Серию по скольжению нельзя сравнить с серией руля.

Через ИИ-агента (MCP)

Расчётами своего аккаунта может управлять ИИ-агент через MCP-сервер Skyforge
(токен в «Настройки → API-токены»; как подключить агента —
ИИ-ассистент и MCP). Ставить,
перезапускать, останавливать и удалять — право токена wind_tunnel:write,
читать — read. Лимит тот же — 10 расчётов в сутки на аккаунт или личный
лимит аккаунта (отказ account_daily_limit называет это число).

Как агенту посчитать самолёт. Модель в осях расчётчика (нос −X, верх +Z)
или с nose/up; одиночный расчёт — полумодель (целый симметричный самолёт
сервер сам переносит на плоскость симметрии). Для чисел — quality='accurate'
(«быстро» — черновик, сравнивать нельзя). Поляра — серия одиночных расчётов по
углам −2…+6° (каждый идёт в суточный лимит), руль — серия отклонений.
not_converged: true — силы не устоялись: верьте им меньше и сверьтесь с
соседним углом. Два варианта сравнивает wind_tunnel_compare — надёжно только
при одинаковых условиях и «точно». Тот же сценарий коротко записан в описании
wind_tunnel_submit.

Инструменты

  • wind_tunnel_submit — поставить расчёт: STL или STEP в stl_base64
    (до 8 МБ; STEP сервер узнаёт по содержимому) или файл вашего Хранилища
    (vault_file_id, ниже), скорость, качество, угол атаки alpha_deg,
    скольжение beta_deg (расчёт модели целиком, в отчёте блок lateral).
  • wind_tunnel_rerun — перезапуск на том же файле; не названный параметр
    — как у исходного расчёта, ориентация — всегда исходная.
  • wind_tunnel_series_submit — серия отклонений: группа рулей, план
    «39»/«27», task_id своего расчёта с назначенными рулями или новый файл; в
    ответе — грубый порядок времени с пометкой «не обещание». Группа beta —
    серия по скольжению при угле alpha_deg, планы beta9/beta5.
  • wind_tunnel_series_cancel, wind_tunnel_cancel — отменить серию;
    остановить любой свой расчёт, в том числе идущий (ниже).
  • wind_tunnel_series_relayer — досчитать 3D-слой давления у кадров
    готовой серии, которым он не достался.
  • wind_tunnel_list, wind_tunnel_status, wind_tunnel_report —
    мои расчёты, статус (у серии — кадры, адреса CSV, с include_table=true —
    полная таблица, те же числа, что у ползунков на странице; у серии по
    скольжению — блок beta и beta_csv_url) и отчёт (силы, предупреждения,
    ссылки на картинки).
  • wind_tunnel_compare — сравнить два своих готовых расчёта (task_id_a,
    task_id_b): силы A и B, разница B − A в единицах и %, кто лучше,
    совпадают ли условия (conditions_match, mismatches), parts — детали
    пары, ссылка на страницу сравнения; пара, различающаяся только
    скольжением, несёт sideslip — путевую устойчивость. Для пары серий —
    kind: "series", deflection_deg (по умолчанию ближайшее к нулю общее),
    deflections_deg и angles с compared/only_in; две серии по
    скольжению — kind: "beta_series", betas и slopes; серия по скольжению с
    серией руля — отказ compare_series_kind.
  • wind_tunnel_set_flight — поменять полётную массу готового расчёта или
    серии без нового расчёта (ниже).
  • wind_tunnel_delete — то же, что кнопка «Удалить» в «Моих расчётах».

Аргументы постановки

  • Черновик «быстро» агент видит: у такого расчёта forces_draft: true (в
    списке, статусе и отчёте), а accuracy_note в отчёте говорит, что силы
    приблизительные и для сравнения его надо перезапустить с
    quality='accurate'.
  • Рули — аргумент controls у wind_tunnel_submit/wind_tunnel_rerun
    (та же форма, что у мастера: группа, номера деталей, ось шарнира в мм, ход в
    обе стороны; у перезапуска без аргумента — как у исходного расчёта);
    назначение видно в wind_tunnel_status. Имена деталей STEP по номерам — в
    task.input_step.shell_names ответа постановки и списка.
  • Ориентация — nose и up у wind_tunnel_submit и
    wind_tunnel_series_submit со своим файлом (оси файла -x…+z, верх
    поперёк носа; без них — без поворота); ось шарнира в controls тогда — в
    осях уже повёрнутой модели. Перезапуск и серия с task_id берут ориентацию
    исходного расчёта, wind_tunnel_status её показывает (orientation).
  • Отклонение руля — deflection_group и deflection_deg у
    wind_tunnel_submit (вместе с controls, в которых есть эта группа) и
    wind_tunnel_rerun (без аргументов — отклонение исходного расчёта,
    deflection_deg меняет угол); отклонение — в task.deflection и
    conditions.deflection отчёта. Кадр серии с 3D — wind_tunnel_rerun по
    task_id серии с alpha_deg и deflection_deg; без deflection_deg
    серию не перезапустить (series_rerun). Отказы: bad_deflection,
    deflection_no_group, deflection_out_of_travel.
  • Центр масс — moment_ref_mm ([x, z] в мм, в осях повёрнутой модели)
    у wind_tunnel_submit, wind_tunnel_rerun и wind_tunnel_series_submit;
    без аргумента — начало координат, у перезапуска — точка исходного расчёта.
  • Внутренний проток — internal_flow у wind_tunnel_submit
    (task.internal_flow в ответе); в отчёте — leak_check, у деталей
    connected_to_flow, блок through_flow (расход и баланс).
  • Атмосфера — либо altitude_m (−500…11 000) и/или temperature_c
    (−60…+50; без температуры — стандартная для высоты), либо оба числа
    density_kg_m3 (0.3…1.4) и kinematic_viscosity_m2_s (1e-5…5e-5,
    например 1.46e-5). Оба способа сразу, одно из пары ρ/ν или значение вне
    границ — отказ bad_atmosphere, задача не создаётся. Не задано ничего —
    воздух у земли (0 м, 15 °C); у перезапуска и серии с task_id — воздух
    исходного расчёта. Итоговые ρ, ν, скорость звука и (если есть) высота с
    температурой — в поле atmosphere ответа любого инструмента и отчёта.
    Чтобы совпасть с XFLR5, передайте те же density_kg_m3 и
    kinematic_viscosity_m2_s.
  • Полётная масса — flight_mass_g (г) и необязательные wing_area_dm2,
    mac_mm у wind_tunnel_submit, wind_tunnel_rerun и
    wind_tunnel_series_submit. Отчёт одиночного расчёта несёт блок flight,
    статус серии — тот же блок с углом горизонтального полёта
    (level_alpha_deg), скоростью сваливания (stall_speed_ms), нейтральной
    точкой и запасом (static_margin_pct) и ссылку flight_csv_url. Площадь
    или САХ без массы — отказ bad_flight.
    wind_tunnel_set_flight(task_id, flight_mass_g?, wing_area_dm2?, mac_mm?)
    меняет массу у готового расчёта или серии: ответ сразу несёт пересчитанные
    выводы (conclusions); без аргументов — масса убирается.
    wind_tunnel_compare несёт блок flight (a, b, same_weight).

Что агент видит в ответе

  • Починка при загрузке — task.input_repair: before/after
    (открытые рёбра, края дыр boundary_edges, число дыр holes и наибольшая
    — hole_max_mm/hole_max_width_mm, перевёрнутые и копии треугольников),
    что сделано (holes_closed, welded_vertices, flipped_faces,
    removed_duplicates) и наибольший сдвиг поверхности max_deviation_mm;
    large_caps — закрытые плоские заплатки крупнее 2 мм (shell,
    length_mm, width_mm; large_caps_total — их число): могли закрыть
    задуманное отверстие; skipped — почему починка отменена или урезана.
    null — чинить было нечего. Риск утечки до расчёта — task.leak_risk.
  • Цифры — отчёт (wind_tunnel_report) и статус готового расчёта (поле
    results) отдают одно и то же: условия (conditions — скорость, угол
    атаки, качество, полумодель или целиком, число Маха, скоростной напор),
    атмосферу, силы и момент с признаками сходимости (forces) и
    коэффициенты. Коэффициенты считаются, когда агент назвал площадь крыла всей
    модели ref_area_m2 (CL, CD) и хорду ref_chord_m (Cm и число
    Рейнольдса); Cm — относительно moment_ref_mm или точки момента расчёта.
  • Силы по деталям — ключ parts в блоке цифр: items (по убыванию
    площади, «прочее» последним: name — имя тела STEP или null, rank,
    kind, area_m2, drag_n, lift_n, drag_share, lift_share),
    sum_drag_n/sum_lift_n, min_area_fraction (порог «прочего», 0.01).
    null — расчёт не разбивался.
  • Сжимаемость — у расчёта быстрее 100 м/с статус и отчёт несут поле
    compressibility: на сколько процентов занижены силы давления
    (pressure_forces_low_pct) и тот же текст предупреждения, что на странице.
  • Архив — archive_url в wind_tunnel_status/wind_tunnel_report:
    ссылка, открывается тем же токеном с read; содержимое в ответ не
    кладётся.

Крупная модель, остановка и удаление

  • Модель больше 8 МБ агент передаёт не base64, а через ваше Хранилище:
    кладёт файл в свою карточку (загрузкой POST /vault/<карточка>/files тем
    же токеном со скоупом vault:write — до 200 МБ на файл — или
    vault_upload для небольших файлов) и ставит расчёт аргументом
    vault_file_id у wind_tunnel_submit или wind_tunnel_series_submit.
    Для этого токену нужен ещё read, и считается только файл ВАШЕЙ карточки,
    не из корзины. Третий путь — та же загрузка, что у веб-формы: POST /tools/wind-tunnel (multipart, поле stl, заголовок Accept: application/json, токен с wind_tunnel:write) — до 500 МБ.
  • Остановка — wind_tunnel_cancel: то же, что кнопка «Остановить
    расчёт», для одиночного расчёта и для серии. В очереди расчёт закрывается
    сразу (outcome: cancelled), идущий останавливается не позже чем через
    ~30 секунд (outcome: requested), задача становится failed с кодом
    cancelled, а wind_tunnel_status в failure.stage называет стадию.
    Законченный расчёт — ошибка task_finished.
  • Удаление — wind_tunnel_delete. Расчёт в очереди удаление снимает с
    очереди; идущий удалить нельзя — отказ task_running: сначала остановите
    его, потом удаляйте.