OpenFOAM

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
OpenFOAM
Screenshot OpenFOAM-2.1.x gnome-terminal.png
OpenFOAM запускається в емуляторі термінала
Тип Обчислювальна гідродинаміка, Програмне забезпечення моделювання
Автор(и) Henry Weller
Розробники CFD Direct[1] / OpenCFD[2]
Перший випуск 10 грудня 2004; 5001 день тому[3]
Стабільний випуск 5.0[4] і v1712 [5] (26 липня 2017[6] і 31 грудня 2017[7])
Версії 6[8]
Репозиторій 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[9] в 2007 року. Ліцензіата змінено на OpenFOAM Foundation Ltd у 2011 році.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стаття створена за ініціативи  факультету прикладної математики та інформатики Львівського Національного Університету імені Івана Франка

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

  1. CFD Direct - The Architects of OpenFOAM. CFD Direct. Архів оригіналу за 27 March 2015. 
  2. The open source CFD toolbox. OpenFOAM. 
  3. OpenFOAM Version 1.0. Архів оригіналу за 7 June 2017. 
  4. OpenFOAM Version 5.0. Архів оригіналу за 6 October 2017. 
  5. OpenCFD Release OpenFOAM® v1712. 
  6. Release History - OpenFOAM. Архів оригіналу за 29 July 2017. 
  7. OpenFOAM® History. 
  8. Release 6 — 2018.
  9. OpenCFD. OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox. www.openfoam.com. Архів оригіналу за 22 September 2016. 
  10. Jasak, Hrvoje (1996). Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows. 
  11. 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. ISSN 0002-9920. doi:10.1090/noti1095. Процитовано 1 May 2018. 
  12. Greenshields, Chris (3 April 2016). Release History. openfoam.org. Архів оригіналу за 29 July 2017. 
  13. Wikki Ltd - About Us. 
  14. Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software. SGI. Архів оригіналу за 6 December 2012. Процитовано 2012-12-18. 
  15. Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics. ESI Group. 2012-09-11. Архів оригіналу за 6 December 2012. Процитовано 2012-12-18. 
  16. OpenFOAM. CFD Direct. 2015-03-25. Архів оригіналу за 29 March 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. Архів оригіналу за 2 April 2015. 
  20. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 27 March 2015. 
  21. OpenFOAM v5 User Guide: 7.3 Transport/rheology models. cfd.direct. 2 March 2017. Архів оригіналу за 19 March 2016. 
  22. OpenFOAM v5 User Guide: 7.1 Thermophysical models. cfd.direct. 2 March 2017. Архів оригіналу за 19 March 2016. 
  23. Turbulence Modelling - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016. 
  24. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  25. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  26. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 21 March 2015. 
  27. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  28. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  29. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  30. Multiphase Flows - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016. 
  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. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  36. OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015. 
  37. Greenshields, Chris (28 April 2016). Free Software Licence. openfoam.org. Архів оригіналу за 9 June 2012. 
  38. OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation. cpp.openfoam.org. 
  39. FEATool 1.8 with OpenFOAM MATLAB CFD GUI Integration. featool.com. Процитовано 2018-05-18. 
  40. HELYX-OS GUI for OpenFOAM | ENGYS. engys.com. Процитовано 2018-01-15. 
  41. Administrator. Setup: iconCFD Process. iconcfd.com (en-gb). Процитовано 2018-01-15. 
  42. simFlow CFD Software - OpenFOAM® GUI. simFlow CFD (en-US). Процитовано 2018-01-15. 
  43. Open Source Solvers Integrated with SimScale. SimScale (en-US). Процитовано 2018-01-15. 
  44. Contrib/SwiftBlock - OpenFOAMWiki. openfoamwiki.net (en). Процитовано 2018-01-15. 
  45. Contrib/SwiftSnap - OpenFOAMWiki. openfoamwiki.net (en). Процитовано 2018-01-15. 
  46. Visual-CFD for OpenFOAM®. openfoam.com (en). Процитовано 2018-05-05. 
  47. Open Source Engineering Software - silentdynamics. silentdynamics (en-US). Процитовано 2018-06-07.