Практические ресурсы кодирования для новых практиков CFD

Кажется, что много книг и статей, которые подробно описывают различные методы CFD, но, к сожалению, я не смог найти много хороших ресурсов таких методов, реализованных в таких кодах, как MATLAB или Python (помимо основных проблем, таких как линейное уравнение адвекции). Таким образом, мне было интересно, есть ли там какие-нибудь книги, которые я мог бы приобрести, которые поставляются со многими закодированными примерами, или если есть бесплатные онлайн-ресурсы, которые показывают, как решить различные проблемы CFD. Я понимаю, что CFD может быть очень сложной областью, особенно при работе со сложными геометриями. Однако, если бы я мог найти ресурс, который, например, дает пошаговые инструкции о том, как решить двумерные уравнения Эйлера (с очень простой геометрией), что, по-видимому, является логическим шагом при переходе от скалярных к векторным уравнениям , это станет отличной отправной точкой для изучения более сложных тем. К сожалению, я узнаю на примере и могу увязнуть слишком много теории. Таким образом, использование примеров кода для работы и понимания наряду с теорией было бы большой помощью. Большое спасибо.

4
Изучали ли вы Лорену Барбу 12 шагов к Navier Stokes ?
добавлено автор nicoguaro, источник
Я предлагаю вам сначала следовать «лекциям», и если после этого вы считаете, что подход не является адекватным, держите свое мнение. Прямо сейчас, вы нажимаете, что будет так.
добавлено автор nicoguaro, источник
Я посмотрел на него немного, прежде чем я разместил это, и это похоже на очень хороший ресурс. Я заметил, однако, что он, кажется, перескакивает с относительно простых PDE на уравнения Навье-Стокса, не давая никакого отношения к уравнениям Эйлера, что немного неудачно (хотя я мог ошибаться в этом).
добавлено автор plaidshirt, источник
Они, похоже, утверждают, что они не охватывают уравнения Эйлера на этой странице: lorenabarba.com/blog/cfd-python-12-steps-to-navier-stokes . Не имея большого опыта CFD, я предположил, что лучше всего попробовать уравнения Эйлера до перехода в сложные уравнения Навье-Стокса, но вы правы, я углубится в этот курс, и это должно иметь смысл.
добавлено автор plaidshirt, источник

4 ответы

Зависит от того, что вы подразумеваете под CFD. Я бы выделил академические и прикладные подходы.

В академических целях - скажем, для приобретения навыков численного анализа и научных вычислений или игровой площадки для ваших недавно разработанных предварительных условий - я могу порекомендовать книгу от Griebel, Dornseifer и Neunhoeffer Численное моделирование в динамике жидкости . Он охватывает весь диапазон:

  1. Заявление о физике и PDE, граничных условиях и ожидаемых трудностях.
  2. Метод дискретизации (здесь конечные различия )
  3. псевдокод
  4. готовый к использованию C-код

Если вы хотите стать инженером CFD для компании, вы должны получить некоторые теоретические сведения о моделировании и приближении потоков и турбулентности. (Возможно, вы найдете лекцию о турбулентных потоках ), а затем просто пойдите и сделайте учебники с помощью своего любимого коммерческого инструмента CFD. (Ansys, Fluent, Star ...)

6
добавлено

СУПЕР ДОЛГО ПОЧТА ЗДЕСЬ Я ЖЕЛАЮ, ЧТО Я МОЖЕТ ТРЕТЬЯ, ДР ЭТО, НО ЭТО БЫЛО БЫТЬ НЕОБХОДИМЫМ ПОЛЬЗОВАТЕЛЕМ

Я предполагаю, что вы являетесь преподавателем, в технике, потому что, если вы град, сначала вы должны были пройти курс CFD в соответствующем отделе. Если вы участвуете в математике, я не знаю, как относиться к вашим знаниям о вещах в классической гидродинамике.

ПРЕДПОСЫЛКА ДЛЯ ME

Я понимаю позицию, в которой вы находитесь в довольно хорошем состоянии, я сам застрял в том же болоте в течение довольно долгого времени, и мне никогда не приходило в голову теоретически, и, насколько я понял, чтение книги, такой как JD Anderson или Versteeg, не действительно много помогают. И, я чувствую, что довольно нечувствительно просить кого-то прочитать обложку J.D Anderson для покрытия, даже первые несколько глав, и только затем разрешить ему начать настоящую CFD-кодировку. В течение моего времени, когда я стремился к изучению CFD, я провел несколько ночей в общежитии, просматривая интернет, чтобы найти достойные учебные пособия по CFD, очищая CFD онлайн и reddit. Некоторые даже хотели, чтобы я прочитал весь JDA и Versteeg, прежде чем начинать кодирование (что смешно), и я не мог сделать его, и был очень расстроен. Я все еще не мог легко сделать кусок половины вещей в этих книгах, и я нахожусь на втором курсе CFD в школе градации. Надеюсь, мой ответ здесь дает лучший способ для следующего поколения начать кодирование в CFD.

SCREW 2D !!!

Прежде всего, если вы студент-младший, а не гений, будет очень сложно сражаться с CFD и обычной курсовой работой. Я предлагаю вам забыть 2D и придерживаться 1D-кодов на данный момент . CFD довольно сложно, и вам определенно нужен курс уровня града, чтобы начать понимать нюансы метода конечных объемов и метода конечных элементов в 2D. Я предлагаю твердо, твердо придерживаться 1D и изучать различные числовые методы в Finite Differencing, такие как схемы Lax (нормальный, Friedrich, Wendroff и т. Д.), Центральные, разветвленные схемы разнесения и схемы дискретизации времени. Если вам нужны примеры, просто скачайте что-то вроде «Lax Friedrich 1D Advection C ++ code simple» и попробуйте сопоставить теорию в этих книгах с кодом, понять, как они работают, и почему они работают так, как они делают. Проведите анализ ошибок (фон Нейман и многорежим). В 1D есть мир вещей, вы никогда не закончите. Самое главное, что для несовершеннолетних они легки, логичны и незаменимы при построении концепций.

Я предлагаю попробовать невязкое, несжимаемое, линейное переходное уравнение адвекции, а затем переходное уравнение теплоты, играющее вокруг с различными граничными условиями (дирихле, нейман, периодический, Робин) и призракными клетками. Если это будет сделано, вы можете попытаться перейти к сжимаемому 1D Euler, но два выше должны быть выполнены идеально и строго, включая теорию. Это поможет вам создать базу идеально для курса градиентной школы, где вы сможете расслабиться и сосредоточиться на правильном использовании 2D-концепций.

Если вы не уверены ни о чем, просто Google.

ПРЕДПОСЫЛКА ДЛЯ ME # 2

Чтобы дать вам представление, я сделал два проекта 2D Navier-Stokes, которые в основном включали в себя как 8 кодов в прошлом семестре. Затем я подумал, что я был отсортирован по CFD, а затем на полпути к продвинутому курсу CFD в этом сем, я все еще делаю коды 1D. Вот как важно и подчеркивается получение твердой руки на 1D. Не разочаруйтесь в отсутствии прекрасных цветов и форм, они придут. : D

SCREW 2D # 2 !!!!!!!

Предполагая, что вы все это сделали для вашего удовлетворения, вы можете попытаться построить 2D-ресивер Пуассона. Обычно вы можете найти образцы кода и простую сетку с образцами в Интернете. Если нет, вы всегда можете создать свою собственную квадратную сетку и решить ее. Это отправная точка для кодирования любых NS-уравнений. Вы можете узнать различные итерационные схемы, такие как ILU, Point Jacobi и прочее. Вы можете легко найти образцы все в Интернете.

Забудьте о 2D Euler, так как это главный привкус, когда вы пытаетесь сжимать потоки, в которых есть какая-то сложная физика. Изучение числовых схем теперь облегчит вам понимание 2D Эйлера в будущем. Вы можете делать 2D с конечными различиями, но это было бы довольно упрощенным, бесполезным и громоздким по большей части, если вы не мастер в 1D. В большинстве современных 2D-кодов сегодня используются методы конечного объема или прерывистые методы Галеркина, которые очень продвинуты в плане формулировки.

ПУНКТЫ ДЛЯ СООБРАЖЕНИЯ

В заключение я хотел бы дать еще несколько указателей, которые могут помочь вам реально начать CFD

1.) Сначала попробуйте изучить коммерческие коды и пройти стажировки в тех местах, где они используются. Они дадут вам представление о том, чего ожидать, и сформируйте отличный образовательный инструмент для понимания элементов и рабочего процесса, которые входят в проблему CFD.

2.) Перейдите на C ++ или Fortran ASAP, если вы даже мечтаете о 2D-кодах. Мой профессор в последний раз рассказал мне о студенте, который написал мне свой код на Python, и ему потребовалось неделю, чтобы сблизиться с окончательным проектом, который занял всего несколько минут для нас на C ++ и Fortran. Он не мог превратить весь свой проект и получил плохой класс. Matlab в равной степени вреден для scicomp. Научитесь выводить свои данные в файл .dat и использовать Tecplot или Origin для построения графиков и контуров. Между C ++ и Fortran на самом деле не имеет большого значения.

3.) Опять же, я не могу этого достаточно подчеркнуть, НЕ ИДИТЕ ДЛЯ 2D. Это громоздко и неуместно для вашего роста в CFD на данном этапе.

4.) Если вы не планируете заниматься градиентными исследованиями, забудьте о кодировании CFD. Потребуем вам годы, чтобы освоить суб-область CFD, и делать это по коммерческому коду займет у вас день или два вершины. Коды предназначены для идиотов, и результаты тоже очень хороши. Это будет гораздо более полезно в инженерных командах, не имеющих оснований-scicomp-исследований, если вы правильно поймете основы FM и HT.

5.) CFD собирается пинать вашу задницу, и вам это понравится. Я не спал больше, чем в общей сложности 4 часа в течение 3 последовательных дней, и это находится в середине моего весеннего перерыва (без дерьма). Будьте готовы к его кривой обучения, но гарантированно будет стоить того, когда вы создадите свою собственную красочную кучу мусора.

В течение 12 ШАГОВЫХ КУРСОВ

Вы можете попробовать сделать 12 шагов как хобби, но в ретроспективе это было бесполезным, самовосхваляющим, завышенным стремлением к поиску понимания реального CFD, поскольку большая часть его слишком хорошо структурирована и упрощена. Я признаю, что это отличный курс, но это почти слишком хорошо, что в конечном итоге бесполезно, если вы знаете, что я имею в виду. Профессор очень убедительный и умный, но слишком легко разбирается в этих темах. Я знаю, что многие люди здесь ругаются по ее курсу и могут сильно обидеться со мной, но я думаю, что многие из тех, кто прошел курс обучения CFD, могут со мной согласиться.

УЗНАТЬ ЭТО СЕРДЦЕМ!

Ода для CFD

Стив Бова и Альфред Лорбер Лаборатория CFD Университета Техаса

Старые коды никогда не умирают

Они передаются вам и мне

Если у вас нет большой роботизированности

Вам нужно добавить только вязкость

Многие ручка и несколько переключателей

Требуется запустить его без заминки

Если вы получаете более высокие ставки флопа, вы должны осознать

Просто создайте больший размер сетки

Если тривиальная модификация вашего менеджера ищет

Моя оценка составляет не менее десяти недель.

4
добавлено
Если вас интересуют несжимаемые потоки, просто нет 1D, периода. Вы должны делать 2D или 3D.
добавлено автор nsanders, источник
Я согласен с вашим мнением, чтобы вначале полностью понять 1D, поскольку случаи более высокого порядка подавляют студентов техническими соображениями, которые не имеют отношения к изучению самих основ CFD. Но 2D/3D - это то, где кодирование и правильный выбор алгоритмов становятся интересными и где могут быть решены соответствующие физические проблемы. Я бы не стал здесь без твердых знаний о лежащей в основе физике и математике. Многие руководители практикующих склонны преподавать сложные методы, которые сначала кажутся кажущимися из ниоткуда, но многие трюки довольно «очевидны» с математической точки зрения.
добавлено автор Christian Waluga, источник
+1 для этого разговора, так как иногда некоторые личные мнения помогают новичкам понять, что происходит. Однако я полностью не согласен с вашими «винтовыми 2D» аргументами. В 1D нет уравнения Navier-Stokes или Эйлера ...
добавлено автор Jan, источник
@Jan Ну, я не имел в виду ничего очень похожего на CFD, но я знаю, что существуют, например, 1D коды для NS и Euler. в моделировании сгорания и ударных трубах. Вы упрощаете NS и накладываете их на более сложную физику в 1D. Я просто хотел подчеркнуть, что 1D - это то, где кто-то, начиная cfd, получит больше глубины и понимания. Если он сейчас перейдет в 2D, я боюсь, что более глубокие понятия будут отстранены. В любом случае, спасибо за победу! Просто обнаружил и начал здесь, в stackexchange (мне это нравится!), И начал думать, что разглашение зашло слишком далеко. : D
добавлено автор sebastian, источник
Я уже прошел несколько методов в своем курсе, используя 1D-уравнения, и именно поэтому я хотел найти более сложные 2D-примеры, чтобы попытаться.
добавлено автор plaidshirt, источник

Книга CFD от Blazek помогла мне больше, чем любой другой. Он очень хорошо объясняет методы конечных объемов. Используя эту книгу, я написал 2D-решатель Эйлера и двумерный сжимаемый решатель Navier-Stokes.

Я также предлагаю вам смотреть видеокурсы Qiqi Wang . Не аэродинамика курса вязких жидкостей - прокрутите вниз, и вы должны увидеть видео с лекцией 20 ... Лекция 1. Эти видеоролики взяты из курса количественных методов в Массачусетском технологическом институте. Здесь я действительно научился писать коды конечного объема. Он объясняет теорию/методы работы, а затем разрабатывает примеры в MATLAB, чтобы вы могли следовать. Он учит очень хорошо и легко следовать.

2
добавлено

Этот вопрос чрезвычайно широк. Как отметил Ян, CFD может быть связан с отраслью или основан на теме исследования. Кроме того, существует большая разница между проблемами сжимаемого и несжимаемого потока. Если вы фокусируетесь на сжимаемом потоке, то знакомство с гиперболическими законами сохранения - хорошее начало. И, как сказал Джеймс выше, реализация еще одного хорошего решателя в простой 2D-картезированной сетке - еще один хороший шаг.

Я рекомендую такие книги, как:

  • Методы конечного объема для гиперболических задач Рэндалла Дж. Левека
  • Нодальные разрывные методы Галеркина Ян С. Хестхавен и Тим Уорбертон

У Hesthaven и Warburton есть коды Matlab и C ++ для реализации схем DG для уравнений Эйлера в 1D и 2D. Методами конечного объема являются DG с кусочно-постоянными приближениями.

1
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community