Учебная программа · вычислительная гидродинамика

Расчёт обтекания одиночного здания

Двумерная задача обтекания здания потоком воздуха: поток набегает слева, здание стоит на земле, ось y направлена вверх. Расчёт ведётся в переменных U (продольная скорость), V (вертикальная), W (вне плоскости потока, в двумерной постановке тождественно нулевая) и P (давление) методом решётки Больцмана (LBM, D2Q9). Счёт идёт прямо в браузере — без сервера и без сети.

Параметры расчёта

Скорость воздуха вдали от здания. От неё считается динамическое давление, на которое нормируются Cp и коэффициенты сил.

Главный масштаб задачи: по высоте здания считается число Рейнольдса Re = U∞·H/ν и лобовая площадь, на которую нормируются силы.

Ширина по потоку (от наветренной грани до заветренной). Вместе с H задаёт соотношение сторон, от которого зависит режим отрыва.

Расстояние от левого (входного) края домена до наветренной грани здания. Это длина разгонного участка: слишком короткий участок искажает картину.

Двускатная крыша добавляет к зданию треугольный объём высотой высота крыши: стропила сходятся на коньке, и течение обтекает уже не прямоугольник.

Высота конька над стенами. Имеет смысл только при двускатной крыше; при плоской игнорируется.

—

Вязкость воздуха в реальности около 1,5·10⁻⁵ м²/с, но в двумерной задаче её приходится брать много большей — иначе пришлось бы считать Re = 10⁷, чего браузер не потянет. Поэтому Re задаётся явно, а ν = U∞·H/Re.

—

Множитель в формуле подсеточной вязкости νt = (Cs·Δ)²·|∇u|. Рабочее значение около 0,1…0,2; поле от него зависит слабо.

Равномерный вход — идеализация: скорость одинакова по высоте. Логарифмический — профиль приземного слоя: у земли медленно, на уровне крыши быстро.

Размер расчётной области по потоку: разгонный участок, здание и след за ним. Домен должен быть заметно длиннее здания.

Высота расчётной области. Чем ближе верхняя граница к крыше, тем сильнее её искусственное условие free-slip влияет на картину.

—

Сколько шагов по времени сделать. Счёт идёт порциями, страницу не подвешивает; расчёт можно остановить в любой момент, но короткая вычитка даёт ещё не установившуюся картину.

—

Теория и история задачи

Раздел загружается…

Расчёты на больших компьютерах

Раздел загружается…

Инструкция по пользованию и презентация

Файлы можно скачать: инструкция по пользованию (DOCX) и презентация программы (PPTX). Это те же материалы, что выложены на сайте, — в презентации есть схемы постановки задачи и метода, сделанные для этой программы.

Инструкция по пользованию
  1. Задайте поток и здание. Скорость U∞ (по умолчанию 10 м/с), высота H, ширина B, положение x от левого края домена и форма крыши. Эти пять чисел задают физику: поток набегает слева, обтекает препятствие и уходит в след за ним. Подсказка под каждым полем объясняет, что оно делает.
  2. Задайте число Рейнольдса. Re = U∞·H/ν — единственное число, которое выбирает режим течения. По умолчанию ν подставляется автоматически (ν = U∞·H/Re); галочку снимают, только если вязкость нужно задать руками. В двумерной задаче вязкость получается в сотни раз больше реальной — иначе пришлось бы считать Re порядка 10⁷.
  3. Выберите режим расчёта. «Ламинарный» — вязкость только молекулярная, корректен при Re ≲ 1000. «LES по Смагоринскому» — добавляется подсеточная вязкость, и картина становится вихревой; на грубой сетке она качественная.
  4. Проверьте вход и домен. Равномерный или логарифмический профиль набегающего потока; длина и высота домена. Слишком короткий домен или слишком близкая верхняя граница искажают картину сильнее, чем ошибка численной схемы.
  5. Задайте сетку и число итераций. По умолчанию 120 × 60 и 2000 шагов. Проверьте подсказку под сеткой: она показывает, сколько клеток приходится на высоту здания (меньше шести — картина будет грубой) и сколько времени примерно займёт счёт.
  6. Нажмите «Рассчитать». Счёт идёт в браузере порциями по несколько десятков итераций, страница при этом не подвисает: в строке состояния видно номер итерации и прошедшее время. Кнопка «Остановить» прерывает счёт на любой итерации — но картина на неустановившемся течении не годится для оценок.
  7. Смотрите результат. Картина выбранного поля, линии тока, профиль скорости по высоте перед зданием и за ним, распределение Cp по наветренной и заветренной граням, таблица результатов и сравнение с эталоном.
  8. Сравнивайте с эталоном осторожно. В колонке «Характер сравнения» прямо сказано, что проверяется количественно, а что — только по порядку величины. Для проверенных чисел нужен расчёт на большой машине, см. раздел «Большие компьютеры».
  9. Выгрузите результат. Кнопка «Выгрузить поле в CSV» отдаёт файл с полями по всем клеткам сетки; в шапке файла записаны параметры расчёта и единицы, чтобы файл можно было прочитать отдельно от программы.

Демо-режим — это заранее рассчитанная картина, а не новый расчёт. Он берёт готовый снимок из файла data/demo.js, который делает тот же решатель и в том же браузере. Измерять по такому снимку точность бессмысленно, и плашка под результатом об этом предупреждает. Если файла снимков нет, программа честно об этом сообщает и картину не рисует.

Презентация программы — сценарий показа
  1. Постановка задачи (2 мин). Открыть раздел «Теория» → «Постановка задачи». Нарисовать на доске: поток слева, здание на земле, ось y вверх. Назвать пять граничных условий и объяснить, почему условие прилипания на земле и на здании — главная причина отрыва за зданием.
  2. История (2 мин). Там же, раздел «История»: Рейнольдс и его опыты с телами разной формы, Прандтль и пограничный слой, Пенни, Тейлор и Гордон — вихревые структуры за препятствием, и оттуда уже современные расчётные коды. Главный вывод: аналитического решения у здания нет, есть только эксперимент и численный расчёт.
  3. Ламинарный расчёт (3 мин). Начальные значения программы: Re = 200, сетка 120 × 60. Нажать «Рассчитать», дождаться конца, показать картину |U| и линии тока. Главное, что должно быть видно: поток ускоряется над зданием, за зданием образуется зона отрыва с обратным течением.
  4. Турбулентный режим (2 мин). Переключить модель на LES, сравнить картины. Честно сказать: на грубой сетке это качественное различие — вихревая структура в следе, — а не количественный результат.
  5. Смена геометрии (2 мин). Поменять B и H, поставить здание ближе к входу, поставить двускатную крышу. Показать, что картина меняется целиком: сдвиг по потоку меняет длину разгонного участка, крыша меняет место отрыва. Указать, что поле при этом сбрасывается и считается заново.
  6. Силы и Cp (2 мин). Переключить поле на Cp, показать распределение по высоте на наветренной и заветренной гранях, потом таблицу результатов: Cd, вертикальная сила, Cp_max и Cp_min. Здесь же честно сказать, что вертикальная сила — это в основном отсос на крыше, а не «подъёмная сила» в классическом смысле, и что модули Cp в браузере завышены в 1,5–1,8 раза относительно справочных.
  7. Чувствительность к сетке (2 мин). Удвоить nx и ny, повторить расчёт. Углы и отрыв заметно сглаживаются, профиль в целом меняется слабо. Это честная демонстрация того, что в этой задаче дороже всего обходится угол здания, а не ядро потока.
  8. Сравнение с эталоном (2 мин). Открыть таблицу сравнения: видно, что в ней написано, что количественно, а что качественно, и что расхождение с экспериментом Okajima по Cd на десятки процентов — это норма для браузерной сетки, а не ошибка.
  9. Модели турбулентности (1 мин). Раздел «Турбулентность»: замыкание Рейнольдса, k-ε, k-ω, SST, RANS, LES, DES, DNS — что работает на практике, а что требует оговорок, и почему браузерная сетка физически не может ни одна из этих моделей по-настоящему.
  10. ИИ в моделях (1 мин). Раздел «ИИ»: где машинное обучение реально помогает (RANS+ML на грязных входах, surrogate-модели), а где честно не работает, и почему нейросетевое замыкание пока не заменяет DNS.
  11. Большие компьютеры (2 мин). Раздел «Большие компьютеры»: во сколько раз браузерная сетка меньше нужной для проверенного числа, что такое blockMeshDict и snappyHexMesh, как ставить расчёт в очередь SLURM и как забрать результат обратно. Это естественный финал: браузер даёт картину, а проверенное число считают на кластере.
Частые вопросы и типичные ошибки
  • Cd получился больше двух, а в справочнике 1,4–1,5. Так и должно быть на грубой сетке: вклад даёт базовое разрежение за зданием, а оно на грубой сетке завышено, плюс острые углы дают ложный пик отсоса. Сравнение с эталоном в программе помечено как качественное.
  • Вертикальная сила получилась большой и положительной. Это не «подъёмная сила» в классическом смысле, а сумма вертикальных сил на здание: отсос на крыше плюс сдвиг по земле. У плоской крыши почти всё это отсос.
  • Cp в стагнационной точке вышел меньше единицы. Идеал Cp = 1 относится к невязкому потенциальному течению. В вязком течении и на грубой сетке значение ниже; контракт прямо запрещает использовать Cp = 1 как жёсткую норму — проверяется знак и порядок величины.
  • Картина не меняется, кнопка «Рассчитать» нажимается, а ничего не происходит. Проверьте, что в поле «число итераций» стоит не 0. Если расчёт остановлен на первой итерации, картина будет пустой — это честное поведение.
  • В расчёте NaN или пустые пиксели. Обычно виновата слишком мелкая вязкость при очень большом Re: поле развалится. Уменьшите Re или увеличьте вязкость. В поле состояния показывается номер итерации, на котором счёт остановился.
  • Скорость на картине вдвое больше U∞. Это не ошибка: поток обтекает здание и в узком месте разгоняется. Верхняя граница домена не может пропустить столько же расхода, сколько пришло, — значит, скорость в обход обязана вырасти. Для справки: без отрыва скорость в обходе равна U∞/(1 − H/Ly).
  • В картине здание «съехало» или обрезалось. Здание не поместилось в домен, и решатель подрезал его по решётке. Фактическая геометрия показана в строке «Геометрия (фактическая)» таблицы результатов.
  • Программа просит сеть. Никогда: программа работает офлайн, открытием index.html с диска. Если сеть всё же понадобилась, значит в каталоге появилась посторонняя ссылка — такого быть не должно.
  • Демо-режим пишет, что снимки не загружены. Файла data/demo.js нет в каталоге. Это не поломка: программа честно отказывается рисовать чужую картину. Считать можно в обычном режиме.
  • Расчёт идёт слишком долго. Уменьшите число итераций или сетку. Оценка времени счёта показана под полем сетки.