OpenFOAM

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
OpenFOAM
OpenFOAM запускається в емуляторі термінала
Тип Обчислювальна гідродинаміка, Програмне забезпечення моделювання
Автори Henry Weller
Розробники CFD Direct[1] / OpenCFD[2]
Перший випуск 10 грудня 2004; 19 років тому (2004-12-10)[3]
Стабільний випуск 5.0[4] і v1712 [5] (26 липня 2017[6] і 31 грудня 2017[7])
Операційна система Unix/Linux
Мова програмування C++
Ліцензія GPLv3
Репозиторій https://github.com/OpenFOAM/OpenFOAM-dev, https://develop.openfoam.com/Development/openfoam
Вебсайт openfoam.org

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

Історія[ред. | ред. код]

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

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

Відмінні особливості[ред. | ред. код]

Синтаксис[ред. | ред. код]

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

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

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

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

Розширюваність[ред. | ред. код]

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

Структура OpenFOAM[ред. | ред. код]

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

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

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

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

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

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

Можливості[ред. | ред. код]

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

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

  • Базові CFD розв'язувачі
  • Нестримний потік з RANS та LES можливостями[26]
  • Потік стисливої рідини з RANS- та LES-можливостями[27]
  • Розв'язувачі плавучих потоків[28]
  • DNS та LES
  • Розв'язувачі багатофазових потоків[29]
  • Розв'язувачі відстеження частинок
  • Розв'язувачі проблем згоряння[30]
  • Розв'язувачі для кон'югатної теплопередачі[28]
  • Розв'язувачі молекулярної динаміки[31]
  • Розв'язувачі симулятора Монте Карло[32]
  • Розв'язувачі електромагнетизму[33]
  • Розв'язувачі твердої динаміки[34]

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

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

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

Ліцензія[ред. | ред. код]

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

Переваги та недоліки[ред. | ред. код]

Переваги[ред. | ред. код]

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

Недоліки[ред. | ред. код]

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

GUI і програмні інструменти з інтегрованим OpenFOAM розв'язувачем[ред. | ред. код]

Дивись також[ред. | ред. код]

Стаття створена за ініціативи  факультету прикладної математики та інформатики [Архівовано 12 червня 2018 у Wayback Machine.] Львівського Національного Університету імені Івана Франка [Архівовано 17 грудня 2010 у Wayback Machine.]

Посилання[ред. | ред. код]

  1. CFD Direct - The Architects of OpenFOAM. CFD Direct. Архів оригіналу за 27 March 2015.
  2. The open source CFD toolbox. OpenFOAM. Архів оригіналу за 5 лютого 2005. Процитовано 12 червня 2018.
  3. OpenFOAM Version 1.0. Архів оригіналу за 7 June 2017.
  4. OpenFOAM Version 5.0. Архів оригіналу за 6 October 2017.
  5. OpenCFD Release OpenFOAM® v1712. Архів оригіналу за 1 січня 2018. Процитовано 11 червня 2018.
  6. Release History - OpenFOAM. Архів оригіналу за 29 July 2017.
  7. OpenFOAM® History. Архів оригіналу за 12 червня 2018. Процитовано 11 червня 2018.
  8. OpenCFD. OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox. www.openfoam.com. Архів оригіналу за 22 September 2016.
  9. Jasak, Hrvoje (1996). Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows (PDF). Архів оригіналу (PDF) за 25 липня 2014. Процитовано 12 червня 2018.
  10. Chen, Goong; Xiong, Qingang; Morris, Philip J.; Paterson, Eric G.; Sergeev, Alexey Sergeev,; Wang, Yi-Ching. (April 2014). OpenFOAM for Computational Fluid Dynamics. Notices of the American Mathematical Society (English) . American Mathematical Society. 61 (4): 354—363. doi:10.1090/noti1095. ISSN 0002-9920. Процитовано 1 травня 2018.
  11. Greenshields, Chris (3 квітня 2016). Release History. openfoam.org. Архів оригіналу за 29 July 2017.
  12. Wikki Ltd - About Us. Архів оригіналу за 29 травня 2018. Процитовано 11 червня 2018.
  13. Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software. SGI. Архів оригіналу за 6 грудня 2012. Процитовано 18 грудня 2012.
  14. Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics. ESI Group. 11 вересня 2012. Архів оригіналу за 6 December 2012. Процитовано 18 грудня 2012.
  15. OpenFOAM. CFD Direct. 25 березня 2015. Архів оригіналу за 29 March 2015.
  16. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  17. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  18. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  19. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 27 March 2015.
  20. OpenFOAM v5 User Guide: 7.3 Transport/rheology models. cfd.direct. 2 березня 2017. Архів оригіналу за 19 March 2016.
  21. OpenFOAM v5 User Guide: 7.1 Thermophysical models. cfd.direct. 2 березня 2017. Архів оригіналу за 19 March 2016.
  22. Turbulence Modelling - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016.
  23. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  24. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  25. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 21 March 2015.
  26. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  27. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  28. а б OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  29. Multiphase Flows - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016.
  30. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  31. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  32. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  33. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  34. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
  35. Greenshields, Chris (28 квітня 2016). Free Software Licence. openfoam.org. Архів оригіналу за 9 June 2012.
  36. OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation. cpp.openfoam.org.
  37. FEATool 1.8 with OpenFOAM MATLAB CFD GUI Integration. featool.com. Процитовано 18 травня 2018.
  38. HELYX-OS GUI for OpenFOAM | ENGYS. engys.com. Архів оригіналу за 16 січня 2018. Процитовано 15 січня 2018.
  39. Administrator. Setup: iconCFD Process. iconcfd.com (en-gb) . Архів оригіналу за 1 грудня 2017. Процитовано 15 січня 2018.
  40. simFlow CFD Software - OpenFOAM® GUI. simFlow CFD (амер.). Архів оригіналу за 22 січня 2019. Процитовано 15 січня 2018.
  41. Open Source Solvers Integrated with SimScale. SimScale (амер.). Архів оригіналу за 23 вересня 2017. Процитовано 15 січня 2018.
  42. Contrib/SwiftBlock - OpenFOAMWiki. openfoamwiki.net (англ.). Архів оригіналу за 27 червня 2018. Процитовано 15 січня 2018.
  43. Contrib/SwiftSnap - OpenFOAMWiki. openfoamwiki.net (англ.). Архів оригіналу за 6 червня 2018. Процитовано 15 січня 2018.
  44. Visual-CFD for OpenFOAM®. openfoam.com (англ.). Архів оригіналу за 6 травня 2018. Процитовано 5 травня 2018.
  45. Open Source Engineering Software - silentdynamics. silentdynamics (амер.). Архів оригіналу за 12 червня 2018. Процитовано 7 червня 2018.