AVL / VLM Расчёт
VLM (Vortex Lattice Method) — метод вихревой решётки. Быстрый линейный метод для расчёта аэродинамики крыла.
Что считается
| Параметр | Описание |
|---|---|
| CL | Коэффициент подъёмной силы при данном угле атаки |
| CD_ind | Индуктивное сопротивление |
| CD_total | Полное сопротивление = CD_ind + cd0_airframe (сумма CD0 в коде ОДНА — AD-1423) |
| cd0_airframe | ПОЛНЫЙ CD0 борта = cd0_parasite + CD_profile (AD-1423). Именно к нему относится типовой диапазон 0.02…0.04 класса RC и проверка правдоподобия стадии S13; к подтоталу cd0_parasite диапазон НЕ применим |
| L/D | Аэродинамическое качество |
| Cm | Момент тангажа |
| CL_alpha | Производная CL по α (1/рад) — крутизна поляры |
| Cm_alpha | Производная Cm по α — ключевой параметр продольной устойчивости |
| Cn_β | Производная Cn по β (1/рад) — путевая устойчивость (weathercock); >0 = вертикальное оперение достаточно, чтобы «флюгерить» нос обратно на поток, ≤0 = неустойчиво |
| NP (% MAC) | Нейтральная точка — % от MAC от ПК |
| SM | Запас устойчивости = NP − CG (% MAC) |
| Cm тяги | Момент от тяги при T/W=1 (информационно) |
| Drag breakdown | cd0_fus, cd0_nacelles, cd0_gear, cd0_interference |
| Распределение по размаху | cl×c по полосам крыла + эллиптический эталон + местный Cl сечения |
| Угол атаки (L = W) | Рабочий угол, на котором посчитано всё остальное: подобран так, чтобы подъёмная сила равнялась весу борта |
Балансировка по подъёмной силе
Расчёт больше не ведётся на произвольном угле атаки: сначала подбирается угол,
на котором подъёмная сила равна весу (L = W при заданных проектной массе,
скорости и площади крыла), и уже на нём считаются сопротивление, качество,
потребная тяга и мощность. Отсюда простое следствие, которого раньше не было:
проектная масса реально меняет цифры — тяжелее борт, больше угол атаки,
больше индуктивное сопротивление, больше потребная тяга.
Опорная площадь — одна на весь расчёт: площадь крыла В ПЛАНЕ (проекция
сверху, поперечное V в неё не входит) — та же, что показывает редактор и по
которой считается нагрузка на крыло. По ней обезразмерены все коэффициенты
(CL, CD, Cm, Cnβ), от неё же считаются потребная тяга, скорость сваливания и
бюджет сопротивления. Раньше решатель нормировал коэффициенты по площади,
измеренной вдоль поперечного V, — на 20–30° поперечного V это расходилось с
остальными числами отчёта на 6–15%.
Это балансировка сил, а не моментов: угол установки оперения и отклонение
руля высоты в модели не задаются, поэтому момент тангажа при найденном угле в
общем случае не нулевой, а балансировочное сопротивление от отклонённого руля
не учитывается (качество получается слегка оптимистичным).
Если равновесие не достигнуто, отчёт честно предупреждает об этом, а не
показывает цифры как рабочий режим. Предупреждений два, и они разные:
- решатель назвал причину — веса на этой скорости не унести ни на каком
угле, который модель умеет считать. Проверьте скорость сваливания: скорее
всего, выбранная скорость ниже неё; - причины нет — в результате вообще нет сведений о балансировке. Так
выглядит отчёт, посчитанный до появления балансировки, и результат, который
решатель не успел досчитать. Пересчитайте.
Проверка правдоподобия режима (единицы измерения)
В запросе к расчёту масса задаётся в килограммах, скорость — в метрах в
секунду. Раньше это держалось только на подписи поля: 400 граммов, введённые
числом 400, считались как 400 кг, а 72 км/ч числом 72 — как 72 м/с
(259 км/ч). Расчёт при этом проходил и выдавал уверенные числа — просто про
другой самолёт.
На экране редактора скорость — в километрах в час (крейсерская в мастере
создания и в стадии «Design assumptions», скорость сваливания в отчёте).
Пересчёт делает интерфейс на границе показа: в проект, в запрос и в отчёт
скорость по-прежнему уезжает в м/с, поэтому всё сказанное ниже про единицы
запроса касается сторонних вызовов (MCP, скрипты, интеграции) без изменений.
Скороподъёмность и там и там в м/с — это вертикальная скорость, её так
показывают вариометры.
Теперь перед запуском проверяется, существует ли такой режим вообще: из условия
L = W считается потребный коэффициент подъёмной силы. Если он выше того, что
даёт любое крыло, или, наоборот, настолько мал, что крыло почти не нагружено,
расчёт не запускается, а сообщение называет посчитанные числа и напоминает
единицы.
Проверка физическая, а не «диапазон побольше» — и границы у неё честные:
массу в граммах (в тысячу раз больше) она ловит всегда, а скорость в км/ч
(в 3.6 раза больше) — только там, где режим от этого становится неправдоподобным;
у медленного борта с большим крейсерским углом атаки такая ошибка может пройти.
Полностью её закроет только явное указание единиц в запросе.
Одна масса и одна скорость на весь расчёт
Проектная масса и крейсерская скорость со стадии «Design assumptions» — те же
числа, по которым считается полёт и которыми подписан отчёт. Раньше они ехали
на сервер дважды (режим расчёта отдельно от проектных допущений), и ничто не
мешало прислать разные: получился бы расчёт по одной массе с подписью о другой.
Теперь такой запрос отклоняется с объяснением, какая пара разошлась.
Для работы в дизайнере это ничего не меняет — редактор всегда отправляет одно
и то же число; проверка защищает сторонние вызовы (MCP, скрипты, интеграции).
Как запустить расчёт
- В дизайнере выберите скорость, массу и угол атаки (или «Auto trim»)
- Нажмите кнопку Рассчитать в блоке AVL
- Дождитесь результата (обычно 3–10 сек)
- Результаты появятся в правой панели
Как читать результаты
Cm_alpha — главный индикатор устойчивости
Cm_alpha < 0 → самолёт устойчив по тангажу ✓
Cm_alpha > 0 → самолёт неустойчив ✗ (увеличить плечо хвоста, ЦТ вперёд)
Типичные значения: от −0.8 до −0.3 /рад
SM — запас статической устойчивости
SM = NP% − CG%
5–15% → хорошая устойчивость (тренер/FPV)
15–25% → высокая устойчивость (слабая манёвренность)
< 5% → малый запас, риск колебаний
< 0% → метастабильный или неустойчивый
Cn_β — путевая устойчивость (weathercock)
Cn_β > 0 → самолёт путево устойчив ✓ (вертикальное оперение возвращает нос на поток)
Cn_β ≤ 0 → путево неустойчив ✗ (увеличить площадь ВО / плечо киля)
Считается через β-производную (обдув под углом скольжения ±0.5°) в том же
прогоне VLM, что и продольные производные — отдельный канал, продольную
устойчивость (Cm_alpha/NP/SM) не затрагивает. Летающее крыло без киля обычно
даёт Cn_β ≤ 0.
В конструкторе v2 (
/tools/aero-designer-v2, только для администраторов)
путевая устойчивость Cn_β и базовые ЛТХ показываются в оверлее «Полный расчёт
борта». ЛТХ разделены на две группы, и граница между ними — наличие
располагаемой тяги:
- всегда — скорость сваливания (по CL_max крыла: максимум поляры
профиля приведён к крылу по распределению нагрузки этого же расчёта — крыло
срывается, когда до предела профиля дошло первое сечение, поэтому потолок
крыла ниже, а скорость сваливания выше; в отчёте рядом показаны оба числа и
сам множитель), потребная тяга и
мощность, скорость снижения с выключенным мотором. Всё это считается
целиком по планеру;- только после стадии «Силовая установка» (мотор, винт, батарея) —
скороподъёмность, максимальная скорость горизонтального полёта, избыток
тяги, статическая тяга и обороты винта.Пока стадия не пройдена, вторая группа не показывается вовсе. Это не
недоделка: единственная тяга, известная без мотора, — потребная, а она
равна сопротивлению по определению. Избыток тяги, посчитанный по ней, — ноль
по построению, и «скороподъёмность» из него получалась бы выдуманным числом
(так и было до AD-1379: до 91% ответа давало постороннее слагаемое). Разбор —
docs/reference/skyforge-design-flow-reference.md§ 14, вопрос В1.
Распределение подъёмной силы по размаху и срыв законцовки
График показывает погонную нагрузку cl×c по полуразмаху крыла (η = y/(b/2),
0 — корень, 1 — законцовка) и рядом — эллиптический эталон: распределение с
минимальным индуктивным сопротивлением при той же подъёмной силе. Чем ближе
расчётная кривая к эталону, тем меньше индуктивные потери.
Предупреждение о срыве законцовки считается по местному Cl сечения
(cl×c, делённое на местную хорду) — отношение «максимум в зоне законцовки
(η ≥ 0.7) / значение у корня»:
≤ 1.05 → хорошее распределение ✓ (корень срывается первым)
1.05…1.12 → нагрузка у законцовки высокая — подумайте об отрицательной крутке
> 1.12 → риск срыва законцовки ✗ (увеличьте крутку или уменьшите сужение)
Почему местный Cl, а не cl×c: срыв начинается там, где сечение первым доходит
до Cl_max профиля. В погонную нагрузку вшита сужающаяся к законцовке хорда,
поэтому на трапециевидном крыле оценка «по cl×c» систематически занижает риск.
Срыв законцовки опасен тем, что элероны теряют эффективность раньше, чем
проваливается корень — самолёт сваливается на крыло.
Почему максимум по зоне, а не значение у самой кромки: у крайней панели
циркуляция обнуляется концевым вихрем по построению метода — это ноль у кромки,
а не нагрузка законцовки. Ориентиры калибровки (крыло без крутки и
стреловидности, замер при α = 2°, обновлён в AD-1203): сужение 0.7 — около 0.94,
сужение 0.6 — около 0.98, сужение 0.45 — около 1.06, сужение 0.4 — около 1.09,
сужение 0.25 — около 1.19. Стреловидность назад добавляет примерно +0.07 на
каждые 10°.
Полная таблица и разбор влияния крутки — Распределение по размаху.
Распределение считается по панелям основного крыла (циркуляция оперения в
него не входит), а эллиптический эталон нормируется на подъёмную силу этого же
крыла. Если данных панелей нет, показывается приближение по методу Шренка
(среднее эллиптического и планформного распределений) — в этом случае под
графиком стоит явная пометка, что это приближение.
В конструкторе v2 (
/tools/aero-designer-v2, только для администраторов)
график и предупреждение показываются в обоих оверлеях — «Анализ крыла» и
«Полный расчёт борта». В классическом дизайнере график тот же, но
предупреждение там осталось на старом критерии — по погонной нагрузке cl×c у
крайней станции, — а он на данных VLM практически никогда не срабатывает
(замер: 0.32 / 0.27 / 0.19 для сужений 1.0 / 0.6 / 0.25 при пороге 0.9).
Проще говоря: зелёная подпись под графиком в классическом дизайнере ничего
не гарантирует — оценивайте риск по таблице выше и по форме самой кривой.
L/D — аэродинамическое качество
- Тренер на 80 км/ч: L/D ≈ 10–15
- FPV racing 150 км/ч: L/D ≈ 5–8
- Планер 60 км/ч: L/D ≈ 20–30
Профильное сопротивление — по рабочему режиму
Профильное сопротивление крыла берётся на том режиме, на котором борт
реально летит: сначала подбирается угол балансировки (L = W), затем по
поляре профиля на рабочем числе Рейнольдса берётся Cd при получившемся Cl.
Раньше вместо этого подставлялся минимум поляры — самая выгодная точка, в
которой борт находится ровно на одной скорости. На всех остальных режимах
сопротивление профиля выше, а значит показанное качество (L/D) было завышено:
по измеренной поляре E387 уже на крейсерском Cl = 0.6 занижение составляло
18%. Поэтому после обновления качество и дальность могут показаться хуже,
чем раньше — это не ухудшение борта, а исчезнувшая ошибка расчёта.
Рядом с Cd профиля показывается Cl, на котором он взят: без него число
нечем проверить.
Точность. Полярa вычисляется, а не измеряется, и её достоверность падает с
числом Рейнольдса. Ориентир получен сравнением двух независимых аэродинамических
труб на одном и том же профиле (UIUC против NASA Langley, отчёт TM-4062):
| Рабочее число Рейнольдса | Расхождение самих измерений по Cd |
|---|---|
| ≥ 200 000 | −13…+6% |
| ≈ 100 000 | +15…+38%, причём измерители это расхождение не объяснили |
Ниже Re ≈ 200 000 точность профильного сопротивления принципиально хуже, и
никакая модель этого не исправляет: при таких числах Рейнольдса поток на
профиле бывает в двух разных состояниях при одном и том же угле атаки
(гистерезис ламинарного пузыря), то есть однозначной зависимости Cd(Cl) там
просто не существует. Маленькие модели на малых скоростях — как раз этот режим.
Измеренные поляры, по которым проверяется расчёт, произведены в рамках
UIUC Low-Speed Airfoil Test program (M. Selig, J. Guglielmo, A. Broeren,
P. Giguere, «Summary of Low-Speed Airfoil Data, Volume 1», SoarTech
Publications; данные — https://m-selig.ae.illinois.edu/pd.html).
Drag breakdown
cd0_airframe = cd0_parasite + CD_profile # полный CD0 борта, AD-1423
↳ фюзеляж
↳ шасси (если есть)
↳ интерференция
CD_total = CD_induced + cd0_airframe # вторая сумма тех же слагаемых
# НЕ собирается (AD-1423)
Сверка с ТЗ — «а достаточно ли этого»
Расчёт отвечает на вопрос «что получилось». Чтобы понять, достаточно ли
этого, нужен второй набор чисел — то, что аппарат ОБЯЗАН уметь. Он живёт в
секции «Design assumptions» v2-редактора, блок «ТЗ модели»: скорость сваливания
не выше, время полёта и дальность не меньше, полезная нагрузка не меньше,
взлётная масса и транспортный размах не больше.
Отчёт борта показывает эти требования таблицей: слева обязательство, рядом
посчитанный результат, справа исход. Исходов четыре, и три из них — не
«выполнено»:
| Исход | Что означает |
|---|---|
| Выполнено | требование задано, результат посчитан и не хуже требования |
| Не выполнено | то же, но результат хуже — это и есть расхождение, ради которого стадия существует |
| Не проверяется | требования нет. Пустое поле НИКОГДА не считается выполненным: сравнивать не с чем |
| Нечем проверить | требование есть, а результата никто не производит (см. ниже) |
Три требования сегодня попадают в последнюю строку, и это сказано прямо, а не
скрыто зелёной галочкой:
- время полёта и дальность — нужен энергетический баланс силовой установки
(ёмкость батареи против потребной мощности); его считает отдельная задача; - полезная нагрузка — в справочнике компонентов нет категории «полезная
нагрузка», поэтому отделить её от оснащения нечем. Полная известная масса
борта — другая величина, и она сюда сознательно не подставляется.
Два уточнения про то, с чем сравнивается результат:
- взлётная масса сверяется с расчётной (снизу вверх) массой — компоненты
компоновки плюс масса конструкции планера, — а не с проектной массой из
допущений: проектная масса это то, чем борт СЧИТАЕТСЯ, и сверять её с собой
бессмысленно; - транспортный размах сегодня равен полётному: разъёмного и складного крыла
в редакторе нет. Это допущение написано под таблицей. Именно его снимает
конструктивное решение — разъёмность или складывание отвязывают размах в
багажнике от размаха в полёте, не трогая ни одного требования.
Ограничения метода
- VLM — линейный метод: не учитывает отрыв потока, нелинейности при больших α.
Модели срыва в нём нет вообще — угол балансировки может оказаться уже за
срывом, поэтому смотрите его вместе со скоростью сваливания - Нейтральная точка и SM предварительные, пока ЦТ не задан компоновкой: тогда
за ЦТ берётся аэродинамический центр крыла — ¼ САХ, отсчитанная от
ПЕРЕДНЕЙ КРОМКИ САХ (у стреловидного/сужающегося крыла она лежит ПОЗАДИ
корневой передней кромки, а не на ней). В оверлее «Анализ крыла»
v2-редактора реального ЦТ нет вообще, поэтому показанный там запас подписан
как «при опорном ЦТ» — настоящий запас устойчивости даёт «Полный расчёт
борта» с ЦТ из компоновки - Балансировка — только по силам (
L = W). Моментного трима (Cm = 0
отклонением руля высоты) нет: органов управления в модели не задано,
балансировочное сопротивление не учтено
Типичные ошибки
| Проблема | Причина | Решение |
|---|---|---|
| SM < 0% | CG слишком сзади или ГО мало | Сдвинуть ЦТ вперёд, увеличить Vh |
| SM > 30% | CG слишком впереди | Сдвинуть ЦТ назад |
| L/D кажется высоким | Нет профильного drag (нет данных xfoil) | Запустить расчёт профиля сначала |
| Cm_alpha > 0 | Летающее крыло без стреловидности, или ГО слишком мало | Увеличить стреловидность / плечо |
Связь с другими разделами
- Drag Budget и тяговая линия — подробно о cd0_parasite и Cm тяги
- Оптимизатор геометрии — как подбирается AR/TR для нужного L/D