Пожалуйста, цитируйте: Барба, Лорена А. и Форсайт, Гилберт Ф. (2018). CFD Python: 12 шагов к уравнениям Навье-Стокса. Журнал образования с открытым исходным кодом , 1 (9), 21, https://doi.org/10.21105/jose.00021
CFD Python , также известный как 12 шагов к Навье-Стоксу , представляет собой практический модуль для изучения основ вычислительной гидродинамики (CFD) путем кодирования решений основных уравнений в частных производных, описывающих физику потока жидкости. Модуль был частью курса, который профессор Лорена Барба читала в период с 2009 по 2013 год на факультете машиностроения Бостонского университета (с тех пор профессор Барба перешла в Университет Джорджа Вашингтона).
Модуль предполагает только базовые знания программирования (на любом языке) и некоторый опыт работы с уравнениями в частных производных и механикой жидкости. «Шаги» были вдохновлены идеями доктора Рио Йокота, который был постдоком в лаборатории профессора Барбы до 2011 года, а уроки были усовершенствованы профессором Барбой и ее студентами в течение нескольких семестров, преподававших курс CFD. Мы написали этот набор блокнотов Jupyter в 2013 году для проведения интенсивного двухдневного курса в Мендосе, Аргентина.
Проводя учащихся через эти шаги (не пропуская ни одного!), они извлекают много ценных уроков. Постепенный характер упражнений означает, что в конце каждого задания они чувствуют достижение и чувствуют, что учатся с минимальными усилиями. По мере продвижения они естественным образом практикуют повторное использование кода и постепенно изучают методы программирования и построения графиков. Анализируя свои результаты, они узнают о числовом распространении, точности и сходимости. Примерно за четыре недели регулярного курса они становятся программистами среднего уровня и мотивированы начать обсуждать больше теоретических вопросов.
На регулярном университетском курсе студенты могут пройти уроки CFD Python за 4–5 недель. В качестве интенсивного обучения модуль можно пройти за два или три полных дня, в зависимости от предыдущего опыта учащегося. Уроки также можно использовать для самостоятельного изучения. Во всех случаях учащиеся должны следовать проработанным примерам на каждом уроке, переписывая код в новом блокноте Jupyter, возможно, делая оригинальные заметки по мере проверки.
Запустите интерактивный сеанс с этим модулем с помощью сервиса Binder:
Шаги 1–4 выполняются в одном пространственном измерении. Шаги 5–10 выполнены в двух измерениях (2D). Шаги 11–12 решают уравнение Навье-Стокса в 2D. Три «бонусных» блокнота охватывают условие CFL для числовой стабильности, операции с массивами с помощью NumPy и определение функций в Python.
Чтобы использовать эти уроки, вам понадобится Python 3 и стандартный стек научного Python: NumPy, Matplotlib, SciPy, Sympy. И, конечно же, вам понадобится Jupyter — интерактивная вычислительная среда, работающая в веб-браузере.
Этот мини-курс построен в виде набора блокнотов Jupyter, содержащих письменные материалы и разработанные решения по коду Python. Для работы с материалом мы рекомендуем начинать каждый урок с новой тетради и следовать по тексту, вводя каждую строку кода (не копируя и вставляя!), изучая его, изменяя параметры и наблюдая, что происходит.
После установки, чтобы убедиться, что ваши пакеты обновлены, выполните в терминале следующие команды:
conda update conda
conda update jupyter numpy sympy scipy matplotlib
Если вы предпочитаете Miniconda (мини-версию Anaconda, которая экономит место на диске), установите все необходимые библиотеки для прохождения этого курса, выполнив следующие команды в терминале:
conda update conda
conda install jupyter
conda install numpy scipy sympy matplotlib
pip install jupyter
Также убедитесь, что у вас установлены необходимые библиотеки, запустив
pip install numpy scipy sympy matplotlib
Мы принимаем вклад через запрос на включение — на самом деле, несколько пользователей уже отправили запросы на включение, внося исправления или небольшие улучшения. Вы также можете открыть проблему, если обнаружите ошибку или у вас есть предложение.
(c) 2017 Лорена А. Барба, Гилберт Ф. Форсайт. Весь контент находится под лицензией Creative Commons Attribution CC-BY 4.0, а весь код — в соответствии с пунктом BSD-3 (ранее — под MIT, изменено 8 марта 2018 г.).
Мы будем рады, если вы каким-либо образом повторно используете контент!