OpenFOAM
Screenshot OpenFOAM-2.1.x gnome-terminal.png
OpenFOAM запускається в емуляторі термінала
Тип Обчислювальна гідродинаміка, Програмне забезпечення моделювання
Автор(и) Henry Weller
Розробники CFD Direct / OpenCFD
Перший випуск 10 грудня, 2004; 14 років тому (2004-12-10)
Стабільний випуск 5.0 і v1712 (26 липня 2017 і 31 грудня 2017)
Версії 6 (10 липня 2018)
Репозиторій github.com/OpenFOAM/OpenFOAM-dev
Операційна система Unix/Linux
Написано на C++
Ліцензія GPLv3
openfoam.org

OpenFOAM у Вікісховищі?

OpenFOAM (з англ. "Open source Field Operation And Manipulation") - це інструмент мовою C++ для розробки чисельних методів та розв'язування проблем механіки суцільного середовища, включаючи обчислювальну гідродинаміку. Код надається вільно і відкрито за умов дотримання GNU General Public License. Назву OpenFOAM було зареєстровано компанією OpenCFD Ltd в 2007 року. Ліцензіата змінено на OpenFOAM Foundation Ltd у 2011 році.

Історія

OpenFOAM (початкова назва — FOAM) було створено Генрі Веллером наприкінці 1980-х в Імперському коледжі Лондона, щоб розробити більш потужну та гнучку загальну імітаційну платформу, ніж Фортран. Це призвело до вибору C++ як мови програмування через її модульність та об'єктно-орієнтовані функції. Хруве Ясак працював у Імперському коледжі як доктор філософських наук з 1993 до 1996 року. У 2000 році Ясак об'єднав свої зусилля з Веллером у спробі комерціалізації FOAM через компанію Nabla Ltd. У 2004 році компанія Nabla Ltd припинила роботу, і Генрі Веллер, Кріс Грінсілдс та Маттійс Янссенс заснували OpenCFD Ltd для розробки та випуску OpenFOAM. У той же час, Ясак заснував консалтингову компанію Wikki Ltd і підтримував розгалуження openfoam-extend, пізніше  перейменовану на foam-extend.

8 серпня 2011 року OpenCFD було придбано Silicon Graphics International (SGI). У той же час авторське право на OpenFOAM було передано OpenFOAM Foundation, новоствореній неприбутковій організації, яка керує OpenFOAM і розповсюджує її широкій публіці. 12 вересня 2012 року, ESI Group оголосила про придбання OpenCFD Ltd від SGI. У 2014 Веллер і Гріншилдс покинули ESI Group і продовжують розробку та управління OpenFOAM, від імені OpenFOAM Foundation, на CFD Direct. CFD Direct розробляє OpenFOAM версію з ідентифікатором програмного забезпечення (5.0), тоді як ESI group зараз самостійно розробляє версію з ідентифікатором програмного забезпечення (v1712).

Відмінні особливості

Синтаксис

Одним з відмінних рис OpenFOAM є його синтаксис для тензорних операцій та рівнянь в частинних похідних. Наприклад, рівняння

представляється кодом

solve
(
     fvm::ddt(rho,U)
   + fvm::div(phi,U)
   - fvm::laplacian(mu,U)
 ==
   - fvc::grad(p)
);

Цей синтаксис, досягнутий завдяки використанню об'єктно-орієнтованого програмування та перевантаженню оператора, дозволяє користувачам створювати власні розв'язувачі з відносною легкістю. Тим не менш, налаштування коду стає більш складним із збільшенням глибини в бібліотеці OpenFOAM через відсутність документації та значне використання шаблонного метапрограмування.

Розширюваність

Користувачі можуть створювати власні об'єкти, такі як граничні умови або моделі турбулентності, які працюватимуть з існуючими розв'язувачами без необхідності модифікувати або перекомпілювати існуючий вихідний код. OpenFOAM виконує це шляхом об'єднання віртуальних конструкторів з використанням спрощених базових класів як інтерфейсів. Як результат, це дає OpenFOAM хороші розширювальні якості.

Структура OpenFOAM

OpenFOAM складається з великої базової бібліотеки, яка пропонує основні можливості коду:

  • Тензорні операції та операції із векторними полями
  • Дискретизація рівнянь в частинних похідних з використанням зручного для читання людиною синтаксису
  • Рішення лінійних систем
  • Рішення звичайних диференціальних рівнянь
  • Автоматичне розпаралелювання операцій високого рівня
  • Динамічна сітка
  • Загальні фізичні моделі
    • Реологічні моделі
    • Термодинамічні моделі
    • Моделі турбулентності
    • Хімічні реакції та моделі кінетики
    • Лагранжеві методи відстеження частинок
    • Моделі випромінювання-теплопередачі
    • Методології багато- та одноканальних фреймів

Потужності, надані бібліотекою, потім використовуються для розробки додатків. Програми розробляються за допомогою синтаксису високого рівня, представленого OpenFOAM, метою якого є відтворення умовних математичних позначень. Є дві категорії додатків:

  • Розв'язувачі: вони виконують фактичний розрахунок для вирішення конкретної проблеми механіки континууму.
  • Утиліти: вони використовуються для підготовки сітки, встановлення симуляційного випадку, обробки результатів та виконання операцій, крім вирішення розглянутої проблеми.

Кожна програма надає певні можливості: наприклад, програма blockMesh використовується для створення сітки з вхідного файлу, наданого користувачем, тоді як інша програма, що називається icoFoam, розв'язує рівняння Нев'є-Стокса для нестисливого ламінарного потоку.

Нарешті, набір сторонніх пакетів використовується для забезпечення паралельної функціональності (OpenMPI) та графічної після обробки (ParaView).

Можливості

Моделювання спалення Метану. Графічний інтерфейс користувача - ParaView.

OpenFOAM розв'язувачі включають:

  • Базові CFD розв'язувачі
  • Нестримний потік з RANS та LES можливостями
  • Потік стисливої рідини з RANS- та LES-можливостями
  • Розв'язувачі плавучих потоків
  • DNS таLES
  • Розв'язувачі багатофазових потоків
  • Розв'язувачі відстеження частинок
  • Розв'язувачі проблем згоряння
  • Розв'язувачі для кон'югатної теплопередачі
  • Розв'язувачі молекулярної динаміки
  • Розв'язувачі симулятора Монте Карло
  • Розв'язувачі електромагнетизму
  • Розв'язувачі твердої динаміки

Крім стандартних розв'язувачів, синтаксис OpenFOAM дозволяє легко створювати власні розв'язувачі.

OpenFOAM-утиліти поділяються на:

  • Утиліти сіток
    • Генерація сітки: вони генерують обчислювальні сітки, починаючи з вхідного файлу (blockMesh) або з загальної геометрії, яка вказується як  STL-файл, який автоматично зчеплений шістнадцятковою сіткою (snappyHexMesh)
    • Перетворення сітки: вони перетворюють сітки, створені за допомогою інших інструментів, у формат OpenFOAM
    • Маніпуляція сіткою: вони виконують певні операції на сітці, такі як локалізований пошук, визначення регіонів та інші
  • Утиліти паралельної обробки: вони надають інструменти для розкладання, реконстукції та перерозподілу обчислювального корпусу для виконання паралельних обчислень
  • Передпроектні утиліти: інструменти для підготовки випадків моделювання
  • Утиліти пост-обробки: інструменти для обробки результатів випадків моделювання, включаючи плагін для інтерфейсу OpenFOAM та ParaView
  • Поверхневі утиліти
  • Термофізичні утиліти

Ліцензія

OpenFOAM вільне та відкрите програмне забезпечення, випущене за умови дотримання GNU General Public License версії 3.

Переваги та недоліки

Переваги

  • Привітний синтаксис для рівнянь з частковими похідними
  • Повністю документований вихідний код
  • Неструктуровані багатогранні сітки
  • Автоматичне розпаралелювання додатків, написаних за допомогою високого рівня синтаксису OpenFOAM
  • Широкий вибір додатків та моделей, готових до використання
  • Комерційна підтримка та навчання, надані розробниками
  • Без витрат на ліцензію

Недоліки

  • Розвиток громади страждає від фрагментації, що призвело до створення численних проектів.
  • Відсутність інтегрованого графічного інтерфейсу користувача
  • Посібник для програміста не надає достатньої інформації

GUI і програмні інструменти з інтегрованим OpenFOAM розв'язувачем

  • FEATool
  • HELYX-OS
  • iconCFD
  • SimFlow
  • SimScale
  • SwiftBloc та SwiftSnap
  • VisualCFD
  • InsightCAE 

У цій статті використовується матеріал з статті Вікіпедії OpenFOAM, який випущений під Creative Commons Attribution-Share-Alike License 3.0.