[{"data":1,"prerenderedAt":277},["ShallowReactive",2],{"$f1e4bwpy0wvbpg":3},{"slug":4,"publishedAt":5,"category":6,"title":7,"summary":8,"image":9,"imageAlt":14,"readingMinutes":15,"serviceId":16,"keywords":17,"imageCaption":23,"sections":24,"sources":261},"how-to-learn-cfd","2026-10-25","guides","Как научиться CFD с нуля: путь, который учит проверять ответы","Как научиться CFD с нуля: напишите маленький решатель, посмотрите, как он ошибается, пройдите эталонные задачи с опубликованными ответами, затем освойте программу.",{"src":10,"thumbnail":11,"width":12,"height":13},"\u002Fassets\u002Fcfd-cases\u002Fvalidation\u002Fimages\u002F01.webp","\u002Fbrand\u002Fstudies\u002Fvalidation.svg",1672,941,"Иллюстрация DEEB-FLOW: экспериментальная установка для валидации расчёта",11,"review",[18,19,20,21,22],"как научиться CFD","CFD с нуля","CFD для начинающих","план изучения CFD","эталонные задачи CFD","Концептуальная иллюстрация из библиотеки кейсов DEEB-FLOW. Она не является результатом из этой статьи.",[25,32,43,57,64,111,120,179,186,197,242,254],{"id":26,"title":27,"paragraphs":28},"a-beautiful-plot","Красивая картинка и три вопроса",[29,30,31],"Студент показывает вам красивое поле течения вокруг автомобиля. Плавные цвета, правдоподобные линии тока, коэффициент сопротивления с тремя знаками после запятой. Вы задаёте три вопроса: какой был y+ на поверхности, сошёлся ли баланс массы и насколько изменилось сопротивление при измельчении сетки? Ни на один нет ответа.","Этот студент освоил программу для CFD. Сам CFD он ещё не освоил.","Чтобы научиться CFD с нуля, научитесь отличать правильный ответ от уверенного. На практике это четыре этапа именно в таком порядке: немного математики, которая объясняет, почему численные решения ошибаются; маленький решатель, который вы пишете сами и намеренно ломаете; лестница эталонных задач с опубликованными ответами; и только потом коммерческий или открытый пакет. В статье описан этот путь, разобран пример, который в десяти строках алгебры показывает самый важный урок предмета, а в конце дан план по неделям.",{"id":33,"title":34,"paragraphs":35},"what-it-means","Что значит научиться CFD?",[36,37],"Это три вещи, а программа идёт четвёртой и значит меньше всего.",{"list":38},[39,40,41,42],"**Физика.** Что говорят уравнения сохранения, что делает каждый член и какие члены доминируют в вашей задаче. Числа Рейнольдса, Пекле и Маха говорят о течении до построения сетки больше, чем большинство цветных картинок после расчёта.","**Численные методы.** Как непрерывное уравнение превращается в алгебру и какую ошибку это вносит. Любой ответ метода конечных объёмов содержит погрешность дискретизации, и умение состоит в том, чтобы знать её величину и характер.","**Суждение.** Решить, что моделировать, проверить, что числа сошлись, балансы замкнуты и результат не чувствителен к сетке, и сравнить с чем-то независимым. Это верификация и валидация, и именно за это платят работодатели и заказчики.","**Программа** служит интерфейсом ко всему перечисленному. Её можно освоить за несколько недель, когда остальное уже на месте, и она всё равно меняется с каждым выпуском.",{"id":44,"title":45,"paragraphs":46},"the-mathematics","Какая математика нужна и зачем",[47,48,49,50,56],"Меньше, чем многие боятся, и больше, чем признаёт большинство учебных роликов.","Нужно векторное исчисление (дивергенция, градиент, теорема о дивергенции), потому что метод конечных объёмов и есть теорема о дивергенции, применённая к маленькому объёму. Нужно различать три класса уравнений в частных производных, потому что они ведут себя по-разному: эллиптические задачи (стационарная диффузия, давление) чувствуют все границы сразу, параболические (нестационарная диффузия) движутся вперёд по времени, а гиперболические (чистая конвекция, волны, скачки) переносят информацию вдоль характеристик и наказывают схемы, которые не учитывают направление потока.","И нужны ряды Тейлора, потому что именно из них берётся погрешность дискретизации. Разложите гладкую функцию в окрестности точки и возьмите разности:",{"formula":51},[52,53,54,55],"φ(x + Δx) = φ + Δx φ′ + (Δx²\u002F2) φ″ + (Δx³\u002F6) φ‴ + …","φ(x − Δx) = φ − Δx φ′ + (Δx²\u002F2) φ″ − (Δx³\u002F6) φ‴ + …","D_c φ = [φ(x + Δx) − φ(x − Δx)] \u002F (2Δx) = φ′ + (Δx²\u002F6) φ‴ + …","D_u φ = [φ(x) − φ(x − Δx)] \u002F Δx = φ′ − (Δx\u002F2) φ″ + …","Здесь D_c это центральная разность, а D_u разность против потока. Центральная разность имеет второй порядок: уменьшите шаг вдвое, и главная ошибка упадёт в четыре раза. Разность против потока имеет первый порядок, и её главный член ошибки пропорционален второй производной. Запомните это. На этом построен весь следующий раздел.",{"id":58,"title":59,"paragraphs":60},"write-a-solver","Напишите маленький решатель и сломайте его",[61,62,63],"Прежде чем открывать коммерческий интерфейс, напишите решатель строк на сорок. Наблюдая за его ошибками, вы узнаете больше, чем за месяц учебных роликов.","Хорошая бесплатная отправная точка CFD Python, «12 шагов к уравнениям Навье-Стокса» Лорены Барбы и Гилберта Форсайта: блокноты Jupyter, которые ведут от одномерной линейной конвекции через диффузию, уравнение Бюргерса, уравнения Лапласа и Пуассона к двумерному течению в каверне и в канале. Материалы распространяются по лицензии CC-BY 4.0, код по BSD-3, так что их можно свободно использовать и адаптировать.","Затем проведите тот единственный эксперимент, который каждый инженер CFD должен проделать своими руками.",{"id":65,"title":66,"paragraphs":67},"cell-peclet-number","Пример расчёта: сеточное число Пекле",[68,69,73,74,75,80,81,82,101,102,103,104,105,108,109,110],"Возьмём стационарную одномерную конвекцию и диффузию скаляра φ на отрезке 0 ≤ x ≤ L при φ(0) = 0 и φ(L) = 1. Уравнение и его точное решение:",{"formula":70},[71,72],"d(ρuφ)\u002Fdx = d\u002Fdx (Γ dφ\u002Fdx)","φ(x) = [exp(Pe·x\u002FL) − 1] \u002F [exp(Pe) − 1],   Pe = ρuL \u002F Γ","При Pe = 50 решение почти равно нулю по всей области и резко растёт в тонком слое у правого конца. При x = 0,9 L точное значение около exp(−5) ≈ 0,007.","Разобьём отрезок на N одинаковых ячеек. Всё определяет сеточное число Пекле Pe_Δ = ρuΔx \u002F Γ = Pe \u002F N. На равномерной сетке каждая схема сводится к рекуррентному соотношению, решения которого растут от узла к узлу с постоянным множителем, и этот множитель показывает, что делает схема:",{"formula":76},[77,78,79],"φ(i+1) \u002F φ(i) → exp(Pe_Δ)","r_c = (1 + Pe_Δ\u002F2) \u002F (1 − Pe_Δ\u002F2)","r_u = 1 + Pe_Δ","Первая строка это точное отношение значений в соседних узлах, r_c отношение для центральной схемы, r_u для схемы первого порядка против потока.","**На 10 ячейках** Pe_Δ = 5:",{"table":83},{"head":84,"rows":88},[85,86,87],"Схема","Отношение соседних узлов","Что вы видите",[89,93,97],[90,91,92],"Точное решение","exp(5) ≈ 148","Резкий слой в последней ячейке",[94,95,96],"Центральная","(1 + 2.5)\u002F(1 − 2.5) ≈ −2.33","Знак меняется от узла к узлу: осцилляции и значения вне диапазона от 0 до 1",[98,99,100],"Против потока","1 + 5 = 6","Гладко, монотонно и со слишком толстым слоем","**На 40 ячейках** Pe_Δ = 1,25: центральная схема даёт отношение около 4,3 при точном 3,5, гладко и близко; схема против потока даёт 2,25 и всё ещё заметно размазывает решение.","Отсюда следуют два урока, и это самые важные уроки статьи.","**Центральная схема осциллирует при Pe_Δ > 2.** Отношение становится отрицательным, и в решении появляются колебания, к физике отношения не имеющие. Это классический результат из учебника Патанкара, и именно поэтому коммерческие решатели в большинстве течений не используют чистую центральную схему для конвекции.","**Схема против потока никогда не осциллирует и ошибается так, что выглядит правильной.** Ошибка усечения из разложения Тейлора выше, (Δx\u002F2)φ″, действует в точности как дополнительная диффузия. Схема ведёт себя так, будто коэффициент диффузии равен:",{"formula":106},[107],"Γ_eff = Γ + ρuΔx\u002F2 = Γ (1 + Pe_Δ\u002F2)","На 10 ячейках это 3,5 Γ. Ваше гладкое решение по схеме против потока в главном порядке является решением задачи с числом Пекле около 50\u002F3,5 ≈ 14, а вовсе не 50. На экране об этом ничего не говорит. Изолинии чистые, невязки красиво падают, а ответ относится к другому течению.","Поэтому я предпочитаю, чтобы новичок сначала увидел осциллирующее решение центральной схемы. Колебания честны.","Любой современный решатель предлагает ограниченные схемы повышенного порядка (второй порядок против потока с ограничителями, QUICK, семейства TVD), которые находятся между этими крайностями. Понять, что делают эти настройки, вы сможете, только увидев, как ошибаются обе крайности.",{"id":112,"title":113,"paragraphs":114},"order-of-accuracy","Проверьте порядок точности",[115,116,119],"Теперь измельчайте сетку. Вычислите ошибку относительно точного решения на двух сетках с коэффициентом измельчения r. Если e₁ ошибка на грубой сетке, а e₂ на мелкой, наблюдаемый порядок равен:",{"formula":117},[118],"p = ln(e₁ \u002F e₂) \u002F ln(r)","**Пример расчёта с условными числами.** Схема второго порядка даёт ошибки 0,020 и 0,0051 на сетках с шагами Δx и Δx\u002F2, значит p = ln(3,92)\u002Fln(2) ≈ 1,97. Верно. Если схема, которая должна иметь второй порядок, даёт 1,0, где-то есть что-то первого порядка: граничное условие, градиент, интерполяция на грани. Найти это лучшая численная школа, какая бывает. Тот же расчёт лежит в основе индекса сеточной сходимости, пошагово разобранного в нашей статье о сеточной независимости.",{"id":121,"title":122,"paragraphs":123},"benchmark-ladder","Поднимайтесь по лестнице задач с опубликованными ответами",[124,125,176,177,178],"Когда ваш собственный код ведёт себя правильно, переходите к задачам, ответ на которые уже опубликован. Каждая ступень учит одной новой трудности, и на каждой есть проверка, которую можно пройти или провалить.",{"table":126},{"head":127,"rows":133},[128,129,130,131,132],"Ступень","Задача","Чему учит","Эталон","Проверка",[134,140,146,152,158,164,170],[135,136,137,138,139],"1","Одномерная конвекция с диффузией","Схемы, число Пекле, порядок точности","Точное решение выше","Наблюдаемый порядок совпадает с порядком схемы",[141,142,143,144,145],"2","Каверна с подвижной крышкой, Re 100 и 1000","Связь давления и скорости в 2D","Ghia, Ghia и Shin (1982), скорости на осевых линиях","Ваши профили ложатся на табличные точки",[147,148,149,150,151],"3","Ламинарное течение в трубе","Начальный участок, градиенты у стенки","Хаген-Пуазейль: f = 64\u002FRe","Коэффициент трения стремится к 64\u002FRe при измельчении сетки",[153,154,155,156,157],"4","Обратный уступ, ламинарный режим","Отрыв и присоединение","Armaly и др. (1983), измерения","Длина зоны рециркуляции в зависимости от числа Рейнольдса",[159,160,161,162,163],"5","Цилиндр в канале, DFG 2D-2","Нестационарное течение, шаг по времени","FeatFlow: C_D,max = 3,2200, St = 0,30188","Появляется срыв вихрей, и оба значения близки",[165,166,167,168,169],"6","Турбулентный канал","Пристеночная обработка и пределы RANS","DNS при Re_τ от 180 до 5200 (Lee и Moser, 2015; данные Oden Institute)","Средняя скорость в пристеночных единицах против профиля DNS",[171,172,173,174,175],"7","Нагреваемая труба, турбулентный режим","Коэффициенты теплоотдачи","Корреляция Гнелинского","Число Нуссельта в пределах разброса корреляции","Ступень 3 заслуживает замечания. Длина ламинарного начального участка примерно 0,05 Re D, так что при Re = 1000 профилю нужно около 50 диаметров, чтобы установиться. Короткая труба даёт коэффициент трения заметно выше 64\u002FRe, и это развивающееся течение делает то, что должно. Научиться отличать одно от другого и есть цель.","На ступени 6 большинство самоучек обнаруживает, что модель турбулентности это модель. Сравните профиль средней скорости в пристеночных единицах с DNS один раз при первой ячейке на y+ ≈ 1, а другой раз с пристеночными функциями при y+ ≈ 50. Статья о k-omega SST и k-epsilon в этом блоге объясняет, почему они ведут себя по-разному.","Ступень 5 к тому же хорошая проверка для любого, кто или что берётся ставить для вас расчёты CFD; статья об ИИ-агентах для CFD использует её именно так.",{"id":180,"title":181,"paragraphs":182},"then-the-software","Потом осваивайте программу",[183,184,185],"К этому моменту меню станут понятны, потому что каждое из них это решение, которое вы уже принимали вручную: схема конвекции, связь давления и скорости, пристеночная обработка, шаг по времени.","Хорошо освойте один пакет, прежде чем пробовать несколько. Для учёбы достаточно двух бесплатных путей. OpenFOAM открыт, работает в Linux или в Windows через WSL. Ansys Student бесплатен для студентов и преподавателей, работает в Windows и допускает до 1 миллиона ячеек в задачах течения на четырёх ядрах, только для учебных целей. Миллиона ячеек хватает для каждой ступени описанной лестницы, и это не случайно.","Повторите ступени 2, 3 и 5 в пакете. Если ваша самописная каверна и коммерческая совпадают друг с другом и с Ghia, вы проверили обе и освоили настройки пакета через сравнение, а не через доверие.",{"id":187,"title":188,"paragraphs":189},"books","Книги, которые стоит иметь",[190],{"list":191},[192,193,194,195,196],"**Versteeg и Malalasekera, An Introduction to Computational Fluid Dynamics: The Finite Volume Method.** Самый понятный первый учебник по методу конечных объёмов, которым пользуются коммерческие коды.","**Патанкар, «Численные методы решения задач теплообмена и динамики жидкости».** Короткая, старая и по-прежнему лучшая книга о том, почему схемы ведут себя так, как ведут.","**Ferziger, Perić и Street, Computational Methods for Fluid Dynamics.** Справочник по численным методам, когда основы уже пройдены.","**Moukalled, Mangani и Darwish, The Finite Volume Method in Computational Fluid Dynamics.** Мост от теории к реализации в OpenFOAM.","**Pope, Turbulent Flows.** Для момента, когда вопрос «какая модель турбулентности?» становится настоящим.",{"id":198,"title":199,"paragraphs":200},"sixteen-week-plan","План на 16 недель",[201,202,241],"Мой вариант для человека с инженерным образованием и примерно восемью-десятью часами в неделю. Каждый блок заканчивается результатом, который можно показать.",{"table":203},{"head":204,"rows":208},[205,206,207],"Недели","Работа","Результат",[209,213,217,221,225,229,233,237],[210,211,212],"1 и 2","Ряды Тейлора, классы уравнений; шаги с 1 по 4 CFD Python","Код одномерной диффузии с точным решением",[214,215,216],"3 и 4","Конвекция с диффузией; эксперимент с числом Пекле; порядок точности","График точного решения, центральной схемы и схемы против потока при Pe_Δ = 5 и 1,25",[218,219,220],"5 и 6","Шаги с 9 по 11 CFD Python; каверна с подвижной крышкой","Ваша каверна против Ghia и др. при Re 100",[222,223,224],"7 и 8","Установка одного пакета; повтор каверны; ламинарное течение в трубе","Коэффициент трения против 64\u002FRe с измельчением сетки",[226,227,228],"9 и 10","Построение сеток: пограничные слои, метрики качества; исследование на трёх сетках","Индекс сеточной сходимости для трубы",[230,231,232],"11 и 12","Турбулентность и стенки; турбулентный канал","u+ в зависимости от y+ в сравнении с DNS для двух пристеночных подходов",[234,235,236],"13 и 14","Нестационарное течение; цилиндр DFG","Число Струхаля и пиковое сопротивление против эталона",[238,239,240],"15 и 16","Небольшой собственный проект","Короткий отчёт со сходимостью, балансами, исследованием сетки и одним сравнением с данными","Последний результат как раз тот, благодаря которому вас возьмут на работу. Отчёт со словами «перепад давления 1245 Па при численной неопределённости 1,6%, расхождение с корреляцией в пределах 4%» стоит больше любого количества цветных картинок.",{"id":243,"title":244,"paragraphs":245},"common-mistakes","Типичные ошибки и как они выглядят на экране",[246],{"list":247},[248,249,250,251,252,253],"**Гладкое решение, которое ни с чем не сравнивали.** Его дала схема против потока. Оно может отличаться от истины в разы, как показывает пример.","**Колебания, «вылеченные» переходом на первый порядок.** Колебания говорили, что сетка слишком груба для схемы. Первый порядок прячет сообщение и сохраняет ошибку.","**Учебный пример, повторённый щелчок за щелчком.** Он работает, а объяснить, почему каждая настройка именно такая, вы не можете. Меняйте по одной настройке и предсказывайте эффект до запуска.","**Коэффициент трения, «неверный» на 30% в короткой трубе.** Это начальный участок, и решатель прав.","**Турбулентный расчёт без проверки y+.** Пристеночная обработка ни разу не была в своей области применимости, и модель делала не то, что вы думаете.","**Невязки как единственное свидетельство сходимости.** Следите за величиной, которую будете указывать, и проверяйте баланс массы; статья о сходимости в этом блоге объясняет почему.",{"id":255,"title":256,"paragraphs":257},"what-i-would-do","Что бы сделал я",[258,259,260],"Если у вас инженерный диплом и несколько часов в неделю, идите в описанном порядке: математика, объясняющая ошибку, маленький решатель, эталонные задачи, затем программа. Не пропускайте эксперимент с числом Пекле. Он занимает вечер и меняет то, как вы читаете каждую цветную картинку до конца карьеры.","Если вы уже работаете в коммерческом пакете, но численной подготовки не получали, пройдите тот же путь в сжатом виде: эксперимент с числом Пекле, каверна против Ghia, исследование на трёх сетках для знакомой задачи. Три выходных. Вы начнёте видеть, под какими из своих старых результатов вы бы ещё подписались.","Если нужна помощь в системе, наш курс «CFD-моделирование течений жидкостей и газов» идёт в том же порядке: постановка, физика, моделирование, верификация и интерпретация, а курс «Теплообмен в инженерных приложениях» охватывает ступень 7 и дальше. В любом случае держитесь правила: ни один результат не покидает ваш стол, пока его не сравнили с чем-то, что вы не считали сами.",[262,265,268,271,274],{"href":263,"label":264},"https:\u002F\u002Fgithub.com\u002Fbarbagroup\u002FCFDPython","Barba and Forsyth: CFD Python, 12 steps to Navier-Stokes",{"href":266,"label":267},"https:\u002F\u002Fwwwold.mathematik.tu-dortmund.de\u002F~featflow\u002Fen\u002Fbenchmarks\u002Fcfdbenchmarking\u002Fflow\u002Fdfg_benchmark2_re100.html","FeatFlow, TU Dortmund: DFG flow around cylinder benchmark 2D-2 (Re = 100)",{"href":269,"label":270},"https:\u002F\u002Fturbulence.oden.utexas.edu\u002F","Oden Institute, University of Texas at Austin: turbulent channel DNS data",{"href":272,"label":273},"https:\u002F\u002Fansys.synopsys.com\u002Facademic\u002Fstudents\u002Fansys-student","Ansys Student: free student software and its limits",{"href":275,"label":276},"https:\u002F\u002Fdoi.org\u002F10.1016\u002F0021-9991(82)90058-4","Ghia, Ghia and Shin (1982), Journal of Computational Physics: high-Re solutions for incompressible flow",1792989858759]