OpenFOAM
-
Медіафайли у Вікісховищі
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).
Можливості
![](http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Screenshot_OpenFOAM_smallPoolFire2D_ParaView_3.12.0.png/350px-Screenshot_OpenFOAM_smallPoolFire2D_ParaView_3.12.0.png)
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 розв'язувачем
- FEATool[37]
- HELYX-OS[38]
- iconCFD[39]
- SimFlow[40]
- SimScale[41]
- SwiftBloc[42] та SwiftSnap[43]
- VisualCFD[44]
- InsightCAE [45]
Посилання
- ↑ CFD Direct - The Architects of OpenFOAM. CFD Direct. Архів оригіналу за 27 March 2015.
- ↑ The open source CFD toolbox. OpenFOAM. Архів оригіналу за 5 лютого 2005. Процитовано 12 червня 2018.
- ↑ OpenFOAM Version 1.0. Архів оригіналу за 7 June 2017.
- ↑ OpenFOAM Version 5.0. Архів оригіналу за 6 October 2017.
- ↑ OpenCFD Release OpenFOAM® v1712. Архів оригіналу за 1 січня 2018. Процитовано 11 червня 2018.
- ↑ Release History - OpenFOAM. Архів оригіналу за 29 July 2017.
- ↑ OpenFOAM® History. Архів оригіналу за 12 червня 2018. Процитовано 11 червня 2018.
- ↑ OpenCFD. OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox. www.openfoam.com. Архів оригіналу за 22 September 2016.
- ↑ Jasak, Hrvoje (1996). Error Analysis and Estimation for the Finite Volume Method with Applications to Fluid Flows (PDF). Архів оригіналу (PDF) за 25 липня 2014. Процитовано 12 червня 2018.
- ↑ 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.
- ↑ Greenshields, Chris (3 квітня 2016). Release History. openfoam.org. Архів оригіналу за 29 July 2017.
- ↑ Wikki Ltd - About Us. Архів оригіналу за 29 травня 2018. Процитовано 11 червня 2018.
- ↑ Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software. SGI. Архів оригіналу за 6 грудня 2012. Процитовано 18 грудня 2012.
- ↑ Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics. ESI Group. 11 вересня 2012. Архів оригіналу за 6 December 2012. Процитовано 18 грудня 2012.
- ↑ OpenFOAM. CFD Direct. 25 березня 2015. Архів оригіналу за 29 March 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 27 March 2015.
- ↑ OpenFOAM v5 User Guide: 7.3 Transport/rheology models. cfd.direct. 2 березня 2017. Архів оригіналу за 19 March 2016.
- ↑ OpenFOAM v5 User Guide: 7.1 Thermophysical models. cfd.direct. 2 березня 2017. Архів оригіналу за 19 March 2016.
- ↑ Turbulence Modelling - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 21 March 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ а б OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ Multiphase Flows - OpenFOAM - CFD Direct. cfd.direct. Архів оригіналу за 9 August 2016.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ OpenFOAM Features - CFD Direct. openfoam.org. Архів оригіналу за 2 April 2015.
- ↑ Greenshields, Chris (28 квітня 2016). Free Software Licence. openfoam.org. Архів оригіналу за 9 June 2012.
- ↑ OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation. cpp.openfoam.org.
- ↑ FEATool 1.8 with OpenFOAM MATLAB CFD GUI Integration. featool.com. Процитовано 18 травня 2018.
- ↑ HELYX-OS GUI for OpenFOAM | ENGYS. engys.com. Архів оригіналу за 16 січня 2018. Процитовано 15 січня 2018.
- ↑ Administrator. Setup: iconCFD Process. iconcfd.com (en-gb) . Архів оригіналу за 1 грудня 2017. Процитовано 15 січня 2018.
- ↑ simFlow CFD Software - OpenFOAM® GUI. simFlow CFD (амер.). Архів оригіналу за 22 січня 2019. Процитовано 15 січня 2018.
- ↑ Open Source Solvers Integrated with SimScale. SimScale (амер.). Архів оригіналу за 23 вересня 2017. Процитовано 15 січня 2018.
- ↑ Contrib/SwiftBlock - OpenFOAMWiki. openfoamwiki.net (англ.). Архів оригіналу за 27 червня 2018. Процитовано 15 січня 2018.
- ↑ Contrib/SwiftSnap - OpenFOAMWiki. openfoamwiki.net (англ.). Архів оригіналу за 6 червня 2018. Процитовано 15 січня 2018.
- ↑ Visual-CFD for OpenFOAM®. openfoam.com (англ.). Архів оригіналу за 6 травня 2018. Процитовано 5 травня 2018.
- ↑ Open Source Engineering Software - silentdynamics. silentdynamics (амер.). Архів оригіналу за 12 червня 2018. Процитовано 7 червня 2018.
|