LINUX.ORG.RU

OpenFOAM 5.0

 , , , ,


1

2

26 июля вышла новая значительная версия пакета OpenFOAM, развиваемого и поддерживаемого под эгидой некоммерческой организации The OpenFOAM Foundation. В соответствии с текущей стратегией выпуска новых версий, данный выпуск является срезом ветки для разработчиков OpenFOAM-dev.

Проект представляет собой платформу для численного решения уравнений в частных производных методом конечного объёма, которая распространяется под лицензией GPLv3 и включает в себя как набор библиотек, позволяющих написать собственные программы для решения уравнений в частных производных (на языке C++), так и множество готовых решателей и утилит, предназначенных в основном для численного моделирования различных задач механики сплошных сред.

Основные изменения:

  • Реализован новый алгоритм трассировки лагранжевых частиц, основанный на использовании локальных барицентрических координат, что существенно улучшает точность построения траектории частицы и предотвращает возникновение ошибок, связанных с «потерей» частиц на «плохих» расчётных сетках. Стоит отметить, что данная работа была проведена благодаря добровольным пожертвованиям, собранным The OpenFOAM Foundation в 2017 году.
  • Добавлена возможность генерации модельных волн на поверхности жидкости (как граничное условие на входе в расчётную область). Моделирование волн необходимо, в частности, для различных задач судостроения.
  • Реализована новая технология декомпозиции для параллельных расчётов, благодаря которой данные параллельного расчёта от разных процессов записываются в один файл. В предыдущих версиях OpenFOAM для каждого процесса с номером N создавался свой каталог с именем «processorN», куда и производилась запись от процесса N; в результате при большом числе процессов могли возникнуть проблемы записи, связанные в т. ч. со слишком большим количеством открытых файлов. Данный метод работы в параллельном режиме (называемый collated) не включён по умолчанию. Отметим, что имеется возможность работы ввода-вывода в многопоточном режиме (multithreading).
  • Добавлена возможность автодополнения по TAB опций решателей и утилит.
  • Увеличена надёжность работы многофазных решателей в задачах с входными/выходными границами.
  • Добавлены новые модели для вязких сред и новая модель горения.
  • Улучшены сеточные генераторы snappyHexMesh и blockMesh.

>>> Подробности

★★★★

Проверено: Shaman007 ()

Реализована новая технология декомпозиции для параллельных расчётов, благодаря которой данные параллельного расчёта от разных процессов пишутся в один файл.

А синхронизация не бьёт по параллелизации? Или там сделали поток для file i/o, в который можно писать без блокировки, и у которого есть время ждать освобождения блокировки файла?

в результате при большом числе процессов могли возникнуть проблемы записи, связанные в т.ч. со слишком большим количеством открытых файлов.

Интересно, много счастливчиков с таким кол-вом (hyper-)ядер?..

gag ★★★★★ ()

Пользуясь случаем спрошу, кому-то попадались проекты, где с выходом новой версии вместо ветки создавали бы новый репозиторий? Так удобней?

gag ★★★★★ ()
Ответ на: комментарий от gag

А синхронизация не бьёт по параллелизации?

this:

Или там сделали поток для file i/o, в который можно писать без блокировки, и у которого есть время ждать освобождения блокировки файла?

как я понимаю, используется принцип параллельной MPI-записи в файл (есть такая функция в MPI, если заранее известно, куда надо писать :)

Sahas ★★★★ ()
Ответ на: комментарий от hotpil

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

Oberstserj ()
Ответ на: комментарий от hotpil

Есть пакеты расчитывающие это? Какие модели (в том числе турбулентности) там используются? У тебя там граница раздела двух сред, изменение формы которой тебе нужно как-то описывать.

grem ★★★★★ ()
Последнее исправление: grem (всего исправлений: 1)
Ответ на: комментарий от hotpil

Есть жидкость, под углом к поверхности дует ветер. Гонит волну. Можно в этом пакете такое посчитать?

можно. Решатель interFoam (метод Volume of Fluid, если это о чём-либо говорит :)

Только считаться будет довольно долго

Sahas ★★★★ ()
Последнее исправление: Sahas (всего исправлений: 1)
Ответ на: комментарий от Oberstserj

Я так понимаю, что эта штуковина не моделирования, а тупо для вычисления кратных интегралов

неправильно понимаешь. Это не «тупой расчёт кратных интегралов», а именно моделирование задач механики сплошных сред. В том числе и моделирование движения многофазных сред

Sahas ★★★★ ()
Ответ на: комментарий от Sahas

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

Const ()
Ответ на: комментарий от Const

Ну так-то любое моделирование — это решение тех или иных уравнений :)

Насчёт «широты и универсальности» — согласен, но заточено всё, конечно, именно под МСС, скорее даже CFD. В частности, для моделирования многофазных течений используются хитрые методики и численные схемы (VOF)

Sahas ★★★★ ()
Последнее исправление: Sahas (всего исправлений: 2)
Ответ на: комментарий от Sahas

Не всегда это диффуры в частных производных. Взять, к примеру, молекулярную динамику.

Ну а насчёт многофазных течений, то при необходимости иметь границу раздела, никуда от хитрых методик типа того же VOFа не деться, если оставаться в рамках эйлерова подхода, естественно.

Const ()

Штука, может быть, и годная, но при её проектировании допущена фатальная ошибка. Учёные не пишут на C++. Можно писать на Матлабе, Питоне, старые и особо упоротые, а также в случае потребности в высокой производительности, пишут на Фортране. В некоторых проектах типа fftw3 используется Си из-за производительности и в силу упоротости команды (им предлагали написать на Фортране, как нормальным людям, но они рогом упёрлись). Но не ЦеПэПэ.

Vudod ★★★★★ ()
Ответ на: комментарий от Vudod

Усё верно. Сам предпочитаю Фортран за скорость, простоту и разумность.

Но я плохо представляю, как реализовать на Фортране те же плюшки. Несмотря на наличие в современном Ф. и ООП и прочей новомодной ереси.

Const ()
Ответ на: комментарий от Vudod

К сожалению, пишут. А «к сожалению» не потому, что на C++ нельзя написать ничего работающего, а потому, что средний «учёный» не умеет программировать. Как-то открыл какой-то проект от церна для обработки их данных на гитхабе на C++ - там просто ад - будто гигантская лабораторная работа второкурсника

anonymous ()