OpenFOAM
OpenFOAM (Open Source Field Operation and Manipulation) softverski je paket u C++ za razvoj prilagođenih numeričkih solvera i pred/post procesnih alata za rješavanje problema u mehanici kontinuuma, uključujući računalni dinamiku fluida. OpenFOAM je distribuiran kao slobodan softver otvorenog koda pod licencom GNU General Public License.
Povijest[uredi]
OpenFOAM (izvorno, FOAM) stvorio je Henry Weller 80-ih godina dvadesetog stoljeća na Imperial College, London, u svrhu razvijanja moćnije i fleksibilnije simulacijske platforme od tadašnje standardne, FORTRAN. Zbog svoje modularnosti i objektno orijentiranih značajki kao programski jezik izabran je C++. Godine 2004. Henry Weller, Chris Greenshields i Mattijs Janssens osnivaju OpenCFD Ltd kako bi razvili i distribuirali OpenFOAM.[1] 8.kolovoza 2011. OpenCFD kupila je tvrtka Silicon Graphics International (SGI).[2] Istovremeno, autorsko pravo OpenFOAM-a prebačeno je na OpenFOAM Foundation, novoosnovanu, neprofitnu organizaciju koja upravlja OpenFOAM-om i distribuira ga široj javnosti. 12.rujna 2012. ESI Group objavljuje da kupuje OpenCFD Ltd od SGI-a.[3] Weller i Greenshields 2014. napuštaju ESI Group i nastavljaju razvoj i upravljanje OpenFOAM-om preko OpenFOAM Foundation, na CFD Direct-u.[4] CFD Direct nastavio je razvoj distribucije poznat kao OpenFOAM, dok ESI Group sada samostalno razvija OpenFOAM-plus.
Istaknute značajke[uredi]
Sintaksa[uredi]
Jedna od istaknutih značajki OpenFOAM-a jest njegova sintaksa za tenzorske operacije i parcijalne diferencijalne jednadžbe koja sliči jednadžbama koje se rješavaju. Na primjer,[5] jednadžbu:
Predstavlja kod:
<syntaxhighlight lang="cpp"> solve (
fvm::ddt(rho,U) + fvm::div(phi,U) - fvm::laplacian(mu,U) == - fvc::grad(p)
); </syntaxhighlight>
Ova sintaksa, postignuta korištenjem objektno orijentiranog programiranja i preopterećenih operatora, omogućuje korisnicima stvaranje prilagođenih rješenja s relativnom lakoćom. Međutim, prilagodba koda postaje izazovnija s produbljivanjem u OpenFOAM biblioteku, zbog nedostatka dokumentacije i teške uporabe metaprogramiranja.
Fleksibilnost rada[uredi]
Korisnici mogu izraditi prilagođene objekte, kao što su rubni uvjeti ili modeli turbulencije, koji će raditi bez potrebe za izmjenom postojećeg izvornog koda. OpenFOAM postiže to kombiniranjem virtualnih konstruktora uz korištenje pojednostavljenih osnovnih klasa kao sučelja. Rezultat je dobra fleksibilnost rada OpenFOAM-a.
Struktura OpenFOAM-a[uredi]
OpenFOAM je konstituiran od velike standardne biblioteke koja nudi osnovne sposobnosti koda:
- Tenzorske operacije
- Diskretizacija parcijalnih diferencijalnih jednadžbi pomoću sintakse čitljive ljudima
- Rješenje linearnih sustava[6]
- Rješenje običnih diferencijalnih jednadžbi[7]
- Dinamička meža[8]
- Opći fizikalni modeli:
- Reološki modeli[9]
- Termodinamički modeli i baza podataka[10]
- Modeli turbulencije[11]
- Modeli kemijskih reakcija i kemijske kinetike[12]
- Modeli prijenosa topline zračenjem
- Lagrangeova metoda praćenja čestica[13]
Mogućnosti koje pruža biblioteka koriste se za razvoj aplikacija. Aplikacije su zapisane pomoću sintakse, razvijene od strane OpenFOAM-a, koja ima cilj reproducirati konvencionalnu matematičku notaciju. Postoje dvije kategorije aplikacija:
- Solvers: izvode stvarni izračun za rješavanje specifičnog problema mehanike kontinuuma
- Utilities: koriste se za pripremu mreže, postavljanje simulacijskog slučaja, te obradu rezultata
Svaka aplikacija pruža specifične mogućnosti: na primjer, aplikacija zvana blockMesh koristi se za generiranje mreža iz ulazne datoteke koju je dao korisnik, dok druga aplikacija pod nazivom icoFoam rješava Navier-Stokesove jednadžbe za nestlačivo laminarno strujanje.
Sposobnosti[uredi]
OpenFOAM mehanizmi rješavanja uključuju:[14]
- osnovne CFD solvere
- direktne numeričke simulacije (DNS) koje rješavaju puni raspon trubulentnih skala
- simulacije velikih vrtloga (LES)
- RANS (Reynolds-averaged Navier-Stokes) i LES (Large eddy simulation) pristup modeliranju stlačivog strujanja[15]
- RANS (Reynolds-averaged Navier-Stokes) i LES (Large eddy simulation) pristup modeliranju nestlačivog strujanja[16]
- modeliranje višefaznih strujanja[17]
- modeliranje jednofaznih strujanja
- metoda praćenja čestica
- rješavanje problema procesa izgaranja[18]
- simulacije molekularne dinamike[19]
- Monte Carlo simulacije[20]
- modeli izmjene topline[21]
Osim standardnih solvera, OpenFOAM sintaksa omogućuje jednostavno kreiranje prilagođenih solvera.
OpenFOAM alati podjeljeni su u sljedeće grupe:
- alati za rad s mežama
- generiranje mreža: generiraju računalne rešetke počevši od ulazne datoteke (blockMesh) ili iz generičke geometrije navedene kao STL datoteka, koja je automatski povezana s hex-dominantnim rešetkama (snappyHexMesh)
- pretvorba mreže: oni pretvaraju rešetke generirane drugim alatom u OpenFOAM format
- manipulacija mrežom: obavljaju specifične operacije na mreži, kao što su lokalno usavršavanje, definiranje područja i druge
- usluge paralelne obrade: oni pružaju alate za rastavljanje, rekonstrukciju i ponovnu distribuciju računalnog slučaja za obavljanje paralelnih izračuna
- pred-procesni alati: alati za pripremu simulacijskih slučajeva
- post-procesni alati: alati za obradu rezultata simulacijskih slučajeva, uključujući dodatak za sučelje OpenFOAM i ParaView
- termodinamički procesi
Kako bi se mogli riješiti sustavi parcijalnih diferencijalnih jednadžbi, u OpenFOAM-u primjenjuju se sljedeće sheme diskretizacije koje su implementirane u C ++ programsku biblioteku:
- metoda konačnih volumena
- metoda konačnih elemenata i
- metoda konačnih površina (Finite Area)[22]
Licenca[uredi]
OpenFOAM je slobodan softver otvorenog koda, distribuiran pod licencom GNU General Public License verzija 3.[23]
Prednosti i nedostaci[uredi]
Prednosti[uredi]
- jednostavna sintaksa za parcijalne diferencijalne jednadžbe
- potpuno dokumentirani izvorni kod[24]
- širok raspon primjena i modela spremnih za upotrebu
- komercijalna podrška i obuka koju pružaju programeri
- bez troškova licenciranja
Nedostaci[uredi]
- razvojna zajednica pati od fragmentacije, što dovodi do velikog broja loših projekata
- nedostatak integriranog grafičkog korisničkog sučelja (dostupne samostalne open-source opcije)
- vodič za programere nije dovoljno detaljan zbog čega je učenje dugotrajno kada je potrebno napisati novi program ili dodati funkcionalnost
Izvedeni programi i projekti[uredi]
- OpenFOAM+[25] je verzija koju je dodatno razvio ESI Group, a proizlazi iz verzije 3.0.x koju je razvio OpenFOAM Foundation
- Extend-Project sa svojom vezijom „foam-extend-3.1“ temelji se na verziji OpenFOAM-1.6 i sadrži dodatne funkcije poput „Radial Basis Function“[26], „General Grid Interface (GGI)“,„Finite-Flächen-Methode (Finite Area Method, FAM)“ ili „Block Coupled Matrix Solver“.
- FreeFOAM[27] ne pruža dodatnu funkcionalnost u odnosu na OpenFOAM, ali pokušava olakšati pokretanje na drugim operacijskim sustavima primjenjujući CMake umjesto OpenFOAM-ovog vlastitog „wmake“ (Weller make). Prebacivanje FreeFOAM-a na CMake primjenio je programer Extend-Project-a kako bi omogućio prebacivanje na Microsoft Windows.
- caelus-CML[28] je OpenFOAM podružnica i opisuje se kao "Computational Mechanics Library" koja ukazuje na širok raspon primjena na području CAE.
Grafičko korisničko sučelje (GUI) i alati za rad s OpenFOAM-om[uredi]
- SwiftBloc[29] i SwiftSna[30] su dvije Python-plug-in skripte za Blender koje olakšavaju stvaranje konfiguracijski datoteka blockMeshDict i snappyHexMeshDict
- HELYX-O[31] je grafičko korisničko sučelje za rad s programom automatskog umrežavanja snappyHexMesh
- SimScale[32] je simulacijski softver temeljen na oblaku koji integrira OpenFOAM i ostale solvere.
- SimFlow[33] je GUI za OpenFOAM. RapideCFD varijanta istog proizvođača također nudi rješavanje jednadžbi na bazi GPU-a.
- iconCFD[34] je još jedna komercijalna verzija OpenFOAM-a s grafičkim sučeljem
Reference[uredi]
- PREUSMJERI Predložak:Izvori
- ↑ "OpenFOAM" (engl.). https://openfoam.org/download/history/ Pristupljeno 14. studenog 2017.
- ↑ ""Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software"" (engl.). http://www.sgi.com/company_info/newsroom/press_releases/2011/august/opencfd.html Pristupljeno 14. studenog 2017.
- ↑ "Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics" (engl.). ESI Group. 11. rujan 2012.. http://www.esi-group.com/corporate/finance/news/financial-press-release/acquisiton-of-opencfd-ltd-the-leader-in-open-source-software-in-computional-fluid-dynamics Pristupljeno 14. studenog 2017.
- ↑ "OpenFOAM" (engl.). CFD Direct. 25. ožujak 2015.. http://cfd.direct/openfoam Pristupljeno 14. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 24. studenog 2017.
- ↑ "Linear system solvers in OpenFOAM" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 14. studenog 2017.
- ↑ ""OpenFOAM v5 User Guide: 7.3 Transport/rheology models"" (engl.). https://cfd.direct/openfoam/user-guide/transport-rheology/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM v5 User Guide: 7.1 Thermophysical models"" (engl.). https://cfd.direct/openfoam/user-guide/thermophysical/ Pristupljeno 24. studenog 2017.
- ↑ ""Turbulence Modelling - OpenFOAM - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/turbulence-modelling/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/ Pristupljeno 14. studenog 2017
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#compressibleFlowSolvers Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#incompressibleFlowSolvers Pristupljeno 24. studenog 2017.
- ↑ ""Multiphase Flows - OpenFOAM - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/multiphase/ Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#combustionSolvers Pristupljeno 24. studenog 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#MDSolvers Pristupljeno 13. prosinca 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#DSMCSolvers Pristupljeno 10. prosinca 2017.
- ↑ ""OpenFOAM Features - CFD Direct"" (engl.). https://cfd.direct/openfoam/features/#heatTransferSolvers Pristupljeno 10. prosinca 2017.
- ↑ "About OpenFOAM." (engl.). http://powerlab.fsb.hr/ped/kturbo/FsbOpenFOAMWorkshop/openfoam.html Pristupljeno 14. studenog 2017.
- ↑ ""Free Software Licence"" (engl.). https://openfoam.org/licence/ Pristupljeno 17. prosinca 2017.
- ↑ ""OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation"" (engl.). https://cpp.openfoam.org/v5/ Pristupljeno 13. prosinca 2017.
- ↑ ""OpenFOAM+"" (engl.). https://www.openfoam.com/products/openfoam-plus.php Pristupljeno 17. prosinac 2017.
- ↑ "Radial Basis Function (OpenFOAM: Year in Review - S. 7); New Features in Upcoming Release:Block matrix implementation with parallelisation support (S. 20); Native Windows Version of OpenFOAM (S. 21)" (engl.). http://web.student.chalmers.se/groups/ofw5/Presentations/HrvojeJasakSlidesOFW5.pdf Pristupljeno 17. prosinca 2017.
- ↑ [FreeFOAM-Homepage "http://freefoam.sourceforge.net/"] (engl.). FreeFOAM-Homepage Pristupljeno 17. prosinac 2017.
- ↑ "caelus-Homepage" (engl.). http://www.caelus-cml.com/ Pristupljeno 17. prosinca 2017.
- ↑ "SwiftBlock project homepage" (engl.). https://openfoamwiki.net/index.php/SwiftBlock Pristupljeno 14. studenog 2017.
- ↑ "SwiftSnap project homepage" (engl.). https://openfoamwiki.net/index.php/Contrib/SwiftSnap Pristupljeno 14. studenog 2017.
- ↑ "HELYX-OS Project Homepage" (engl.). https://sourceforge.net/projects/helyx-os/ Pristupljeno 14. studenog 2017.
- ↑ "SimScale" (engl.). https://www.simscale.com/ Pristupljeno 14. studenog 2017.
- ↑ "SimFlow" (engl.). https://sim-flow.com/ Pristupljeno 14. studenog 2017.
- ↑ "iconCFD" (engl.). http://iconcfd.com/en/iconcfd/427-iconcfd-setup Pristupljeno 14. studenog 2017.