Руководство для начинающих, чтобы иметь собственный код CFD?2D уравнение Эйлера - PullRequest
1 голос
/ 27 октября 2011

Знаете ли вы хорошее и особенно простое руководство по написанию собственного решения для вычислительной гидродинамики для двумерных уравнений Эйлера? Я просто хотел бы понять, чем занимается коммерческое программное обеспечение, такое как Fluent. И когда это станет достаточно просто, я бы хотел показать друзьям, как это сделать, и закодировать это.

К сожалению, я не смог найти, как перевести это http://en.wikipedia.org/wiki/Euler_equations_%28fluid_dynamics%29 в числовое приложение.

Кто-нибудь делал это раньше? Любая помощь приветствуется,

Andreas

Ответы [ 4 ]

3 голосов
/ 10 декабря 2011

Эта книга:

http://www.amazon.com/Computational-Fluid-Dynamics-John-Anderson/dp/0070016852

- довольно простое, простое описание того, что нужно для написания кода CFD.Это подходит для введения уровня бакалавриата с более практическими примерами, чем теория.

3 голосов
/ 27 октября 2011

Да, многие люди делали это раньше.

Хитрость заключается в том, чтобы написать законы сохранения массы, импульса и энергии в виде интегральных уравнений и превратить их в матричные уравнения, чтобы вы могли решать их численно. Процесс преобразования обычно включает в себя дискретизацию контрольного объема с использованием простых форм, таких как треугольники и четырехугольники для 2D и тетраэдров, и кирпичей для 3D и предположения о распределении соответствующих переменных внутри фигуры.

Вам нужно будет знать достаточно много о линейной алгебре и численном интегрировании, если проблема временная.

Есть несколько методов для этого: конечные разности, конечные элементы и граничные элементы (если существует подходящая функция Грина).

Это не тривиально. Вы хотите прочитать что-то вроде этого:

http://www.amazon.com/Numerical-Transfer-Hemisphere-Computational-Mechanics/dp/0891165223

1 голос
/ 24 ноября 2017

Ваш шестилетний вопрос все еще довольно распространен среди всех новичков в области вычислительной гидродинамики (CFD) («Насколько это может быть сложно?»).Тем не менее, на этом этапе нужно быть осторожным, чтобы не тривиализировать математику, стоящую за решением данной системы уравнений.

Для новичков (или заинтересованных) в CFD -

Прежде чем начать думать окодирование, важно понимать природу уравнений, которые вы пытаетесь решить.Эллиптическая задача (например, решатель Пуассона для потенциального потока) сильно отличается от гиперболической системы (например, уравнения Эйлера), в которой информация «распространяется» через числовую область в виде различных волновых мод.Какой мой первый пункт,

1.Знать свойства системы и изучать уравнения - Для этого шага вам нужно будет пройти учебники по математике по уравнениям в частных производных и уметь классифицировать различные уравнения.(См. Дифференциальные уравнения в частных производных для ученых и инженеров , автор Farlow, или пересмотрите курсы бакалавриата по математике.)

2.Изучение линейной алгебры - У лучших из известных мне экспертов по CFD есть сильные основы линейной алгебры.

Переход к конкретному случаю для гиперболических задач, например, уравнений Эйлера

3,Читайте о пространственной и временной дискретизации - Этот момент менее понятен людям, плохо знакомым с CFD.Поскольку информация распространяется в определенном направлении и скорости в гиперболических задачах, вы не можете дискретизировать ваши уравнения произвольно.Для этого вам необходимо понять концепцию задач Римана, т.е. с учетом прерывистой связи между двумя состояниями в данный момент времени, как развивается система?В современных методах конечных объемов используются пространственные дискретизации, которые воспроизводят то, как информация распространяется через ваше моделирование в пространстве и времени.Это называется против ветра .Прочитайте книгу Toro о решателях Римана для хорошего знакомства с раскруткой.

4.Понимать концепцию стабильности - Не все методы дискретизации и интеграция по времени приведут к стабильному решению.Понять понятие ограничивающего временного шага ( CFL-условие ).Если вы не будете следовать законам раскручивания, будет сложно найти стабильное решение.

В этот момент у вас будет более четкое представление о том, что входит в код CFD, и вы можете начать беспокоиться о том, какой язык использовать для кодирования.Наиболее широко используемые коды CFD написаны на C или Fortran для скорости вычислений и распараллеливания.Однако, если вы намереваетесь писать только для обучения, вы можете использовать Matlab или Python, с которыми вам будет меньше работать.Я должен также упомянуть, что кодирование двумерного решателя Эйлера - типичная домашняя задача для новых аспирантов в области аэрокосмической техники, поэтому постарайтесь быть скромными и открытыми для обучения, если вам это удастся.

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

1 голос
/ 10 октября 2012

Ответ на ваш вопрос зависит от подхода, который вы хотите использовать для решения двумерного уравнения Эйлера.Лично я рекомендую подход с конечным объемом и, чтобы понять его, я думаю, вам стоит взглянуть на эту книгу: Вычислительная гидродинамика: принципы и приложения от Jiri Blazek .

Это хорошоКнига, в которой с самого начала понимается метод конечного объема для написания собственного кода, а также сопровождающий код, который поможет вам в этом.Это очень хорошая книга, она меня удивила, когда я писал магистерскую диссертацию.

...