Учебная программа · вычислительная гидродинамика
Расчёт обтекания одиночного здания
Двумерная задача обтекания здания потоком воздуха: поток набегает слева, здание стоит на земле, ось 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). Это те же материалы, что выложены на сайте, — в презентации есть схемы постановки задачи и метода, сделанные для этой программы.
Инструкция по пользованию
- Задайте поток и здание. Скорость U∞ (по умолчанию 10 м/с), высота H, ширина B, положение x от левого края домена и форма крыши. Эти пять чисел задают физику: поток набегает слева, обтекает препятствие и уходит в след за ним. Подсказка под каждым полем объясняет, что оно делает.
- Задайте число Рейнольдса. Re = U∞·H/ν — единственное число, которое выбирает режим течения. По умолчанию ν подставляется автоматически (ν = U∞·H/Re); галочку снимают, только если вязкость нужно задать руками. В двумерной задаче вязкость получается в сотни раз больше реальной — иначе пришлось бы считать Re порядка 10⁷.
- Выберите режим расчёта. «Ламинарный» — вязкость только молекулярная, корректен при Re ≲ 1000. «LES по Смагоринскому» — добавляется подсеточная вязкость, и картина становится вихревой; на грубой сетке она качественная.
- Проверьте вход и домен. Равномерный или логарифмический профиль набегающего потока; длина и высота домена. Слишком короткий домен или слишком близкая верхняя граница искажают картину сильнее, чем ошибка численной схемы.
- Задайте сетку и число итераций. По умолчанию 120 × 60 и 2000 шагов. Проверьте подсказку под сеткой: она показывает, сколько клеток приходится на высоту здания (меньше шести — картина будет грубой) и сколько времени примерно займёт счёт.
- Нажмите «Рассчитать». Счёт идёт в браузере порциями по несколько десятков итераций, страница при этом не подвисает: в строке состояния видно номер итерации и прошедшее время. Кнопка «Остановить» прерывает счёт на любой итерации — но картина на неустановившемся течении не годится для оценок.
- Смотрите результат. Картина выбранного поля, линии тока, профиль скорости по высоте перед зданием и за ним, распределение Cp по наветренной и заветренной граням, таблица результатов и сравнение с эталоном.
- Сравнивайте с эталоном осторожно. В колонке «Характер сравнения» прямо сказано, что проверяется количественно, а что — только по порядку величины. Для проверенных чисел нужен расчёт на большой машине, см. раздел «Большие компьютеры».
- Выгрузите результат. Кнопка «Выгрузить поле в CSV» отдаёт файл с полями по всем клеткам сетки; в шапке файла записаны параметры расчёта и единицы, чтобы файл можно было прочитать отдельно от программы.
Демо-режим — это заранее рассчитанная картина, а не новый расчёт. Он берёт готовый снимок из файла data/demo.js, который делает тот же решатель и в том же браузере. Измерять по такому снимку точность бессмысленно, и плашка под результатом об этом предупреждает. Если файла снимков нет, программа честно об этом сообщает и картину не рисует.
Презентация программы — сценарий показа
- Постановка задачи (2 мин). Открыть раздел «Теория» → «Постановка задачи». Нарисовать на доске: поток слева, здание на земле, ось y вверх. Назвать пять граничных условий и объяснить, почему условие прилипания на земле и на здании — главная причина отрыва за зданием.
- История (2 мин). Там же, раздел «История»: Рейнольдс и его опыты с телами разной формы, Прандтль и пограничный слой, Пенни, Тейлор и Гордон — вихревые структуры за препятствием, и оттуда уже современные расчётные коды. Главный вывод: аналитического решения у здания нет, есть только эксперимент и численный расчёт.
- Ламинарный расчёт (3 мин). Начальные значения программы: Re = 200, сетка 120 × 60. Нажать «Рассчитать», дождаться конца, показать картину |U| и линии тока. Главное, что должно быть видно: поток ускоряется над зданием, за зданием образуется зона отрыва с обратным течением.
- Турбулентный режим (2 мин). Переключить модель на LES, сравнить картины. Честно сказать: на грубой сетке это качественное различие — вихревая структура в следе, — а не количественный результат.
- Смена геометрии (2 мин). Поменять B и H, поставить здание ближе к входу, поставить двускатную крышу. Показать, что картина меняется целиком: сдвиг по потоку меняет длину разгонного участка, крыша меняет место отрыва. Указать, что поле при этом сбрасывается и считается заново.
- Силы и Cp (2 мин). Переключить поле на Cp, показать распределение по высоте на наветренной и заветренной гранях, потом таблицу результатов: Cd, вертикальная сила, Cp_max и Cp_min. Здесь же честно сказать, что вертикальная сила — это в основном отсос на крыше, а не «подъёмная сила» в классическом смысле, и что модули Cp в браузере завышены в 1,5–1,8 раза относительно справочных.
- Чувствительность к сетке (2 мин). Удвоить nx и ny, повторить расчёт. Углы и отрыв заметно сглаживаются, профиль в целом меняется слабо. Это честная демонстрация того, что в этой задаче дороже всего обходится угол здания, а не ядро потока.
- Сравнение с эталоном (2 мин). Открыть таблицу сравнения: видно, что в ней написано, что количественно, а что качественно, и что расхождение с экспериментом Okajima по Cd на десятки процентов — это норма для браузерной сетки, а не ошибка.
- Модели турбулентности (1 мин). Раздел «Турбулентность»: замыкание Рейнольдса, k-ε, k-ω, SST, RANS, LES, DES, DNS — что работает на практике, а что требует оговорок, и почему браузерная сетка физически не может ни одна из этих моделей по-настоящему.
- ИИ в моделях (1 мин). Раздел «ИИ»: где машинное обучение реально помогает (RANS+ML на грязных входах, surrogate-модели), а где честно не работает, и почему нейросетевое замыкание пока не заменяет DNS.
- Большие компьютеры (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 нет в каталоге. Это не поломка: программа честно отказывается рисовать чужую картину. Считать можно в обычном режиме.
- Расчёт идёт слишком долго. Уменьшите число итераций или сетку. Оценка времени счёта показана под полем сетки.