Есть ли хороший, простой в использовании, высококачественный решатель 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.