Есть ли хороший, простой в использовании, высококачественный решатель CFD с открытым исходным кодом?


17

Моя диссертация посвящена разработке численных методов для моделирования снижения горения. Я использую свои методы исключительно в химической модели моделирования горения, и у меня есть много примеров для моделирования 0-D (без потока). Я хотел бы запустить симуляции, в которых есть потоки, предпочтительно 2-мерные или 3-мерные.

Эти моделирования должны быть параллельными из-за высоких вычислительных требований. Мне также нужно что-то, что может взаимодействовать с химическими решателями, такими как Chemkin или Cantera, для которых у меня есть исходный код. (Чемкин в Фортране 77, а Кантера в С ++.)

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

У кого-нибудь есть опыт использования пакета CFD или написания кода CFD, и если да, можете ли вы порекомендовать его? Я знаю, что хотел бы использовать Strang-расщепление, но я не эксперт по CFD или PDE; Я изучаю химию и численные методы для сокращения модели. Также, пожалуйста, прокомментируйте, сколько времени у вас ушло на то, чтобы освоить программное обеспечение, которое вы рекомендуете.

@FrenchKheldar отмечает, что я должен упомянуть характеристики проблем, которые я хотел бы решить:

  • Идеальный (идеальный) газ, однофазный
  • сжимающийся
  • Ламинарный поток имеет важное значение; турбулентный поток это плюс. (Я немного знаю о турбулентности из предыдущей работы по численным методам в CFD, но я не работал над решателями CFD; я просто немного разбираюсь в физике.)
  • С формулировкой нулевого числа Маха все в порядке (меня не волнуют удары или сверхзвуковой поток)
  • Химия горения, игнорируя потоки Соре и Дюфура и рассматривая диффузию как Фикиана
  • Геометрия может быть чем-то простым

Я могу написать интерфейсный код, хотя чем меньше мне придется писать, тем лучше; @FrenchKheldar также указывает, что Cantera имеет привязки Fortran и Python. Я использую привязки Cantera Python прямо сейчас для быстрого создания прототипов, так что я тоже доволен ими.


Cantera имеет обертки для Python и Fortran, так что поиск немного расширяется.
— FrenchKheldar

Хотите моделировать ламинарные потоки или турбулентные потоки? Сжимаемый или несжимаемый? Идеальный газ? Один этап? Чем больше деталей вы нам можете дать, тем точнее ответ.
— ФренчХелдар

@FrenchKheldar: Спасибо, что указали на это. Я добавил некоторые особенности.
— Джефф Оксберри

2
Еще один комментарий: если вас не волнует акустика или волны, разве вы не можете использовать несжимаемый решатель? Это расширит ваши возможности ...
— FrenchKheldar

Позвольте мне перефразировать: меня не волнуют шоки. Поскольку фаза является идеальным газом, а идеальные газы меняются по плотности при изменении давления, поток должен быть сжимаемым.
— Джефф Оксберри

Ответы:


11

Я большой пользователь OpenFOAM , поэтому, естественно, я бы порекомендовал его. Он имеет большое количество функций, включая модели сгорания (хотя не обязательно именно то, что вам нужно) и использовался вместе с Canterra другими людьми. Если вам нужен решатель для конкретного уравнения, которое еще не было реализовано, вы можете буквально написать свои уравнения . Я не знаю, что такое расщепление ударов (я сам не работаю над сжиганием), но другие люди использовали его в OpenFOAM .

Существует ограниченное количество учебников. Те, что описаны в руководстве пользователя, не включают химию. Есть несколько примеров вариантов решения проблем, которые вы можете посмотреть. Лучше всего зайти на сайт выпускного курса OS-CFD на Chalmers (ссылка на 2011 год, но содержит ссылку на страницы предыдущих лет). Там студенты часто документируют решателей, над которыми они работают, например, здесь .

Об усилиях по его изучению: если вы используете одну из заранее определенных моделей, ее довольно просто использовать, и вы сможете получить результаты в течение нескольких недель. Если вам придется опуститься ниже верхнего уровня (например, чтобы добавить новый решатель ODE), все может стать довольно сложным, и вы по достоинству оцените C ++.


Спасибо за рекомендацию! Я слышал хорошие вещи об OpenFOAM, и я хотел бы использовать его в будущем. По вашему опыту, было ли легко изучить API? Есть ли хорошие уроки или примеры, которые используют OpenFOAM, предпочтительно с химией?
— Джефф Оксберри

Я обновил свой ответ
— AKID

1
Начните изучать C ++ в ближайшее время. :) Годспид.
— tmaric

2

Вы можете использовать PyClaw , параллельное расширение Clawpack (примечание: я один из главных разработчиков PyClaw). Он включает 2D и 3D решатели для невязких уравнений Эйлера (сжимаемый поток) идеального газа. Он также имеет встроенное разбиение по Strang, но вам нужно добавить оценку вязких терминов и химии самостоятельно. Должен быть простой интерфейс с Chemkin и Cantera, так как PyClaw написан на Python и уже включает в себя оба кода: Fortran 77 и C.

PyClaw является относительно новым (хотя базовый код Clawpack довольно стар) и, следовательно, не так устоял, как OpenFOAM.


Благодарность! Я должен проверить это, хотя это может занять некоторое время, чтобы добраться до него. Когда я доберусь до его использования, я дам вам знать, как это происходит.
— Джефф Оксберри

2

NIST Fire Dynamics Simulator (FDS) звучит так, как вы хотите. FDS - это решатель потока с малым числом Маха. Плотность может меняться, но акустические эффекты и удары игнорируются.

FDS довольно хорошо документирован, хотя, я признаю, я не смотрел в подпрограммах решателя основного потока. Я также не знаю много о том, как FDS управляет химией горения.

Я предлагаю загрузить последнюю версию кода с сайта Google Code FDS .


0

Там много всего!

OpenFOAM - лучший, IMHO, но другие по этой ссылке ,


Пожалуйста, не давайте ответов «только ссылки», так как ссылки могут быть повреждены.
— января 13 января

Я не хотел представлять все варианты, упомянутые там, как «мои». Технически, я мог бы скопировать и вставить все содержимое, но я не тот человек. Итак, я поместил ссылку прямо, чтобы дать кредиты первоначальному автору (авторам)
— T3rmInAt0r

1
Хорошо. Но вы можете, например, сказать, что кафедра вычислительной гидродинамики и механики турбулентности в университете Манчестера составила список программного обеспечения с открытым исходным кодом для инженеров. Если вы это сделаете, другие посетители могут по-прежнему искать в Интернете в случае, если ссылка не работает.
— января 13 января

0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.