Prijeđi na sadržaj

OpenFOAM

Izvor: Wikipedija

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 | uredi kôd]
Računalna simulacija protoka zraka velike brzine oko Space Shuttlea.

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 | uredi kôd]

Sintaksa

[uredi | uredi kôd]

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:

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

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 | uredi kôd]

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 | uredi kôd]
Simulacija Hyper-X Scramjet vozila u pogonu na Mach-7

OpenFOAM je konstituiran od velike standardne biblioteke koja nudi osnovne sposobnosti koda:

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 | uredi kôd]
Simulacija izgaranja metana. Grafičko korisničko sučelje je ParaView.

OpenFOAM mehanizmi rješavanja uključuju:[7]

  • 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[11]
  • RANS (Reynolds-averaged Navier-Stokes) i LES (Large eddy simulation) pristup modeliranju nestlačivog strujanja[12]
  • modeliranje višefaznih strujanja[13]
  • modeliranje jednofaznih strujanja
  • metoda praćenja čestica
  • rješavanje problema procesa izgaranja[14]
  • simulacije molekularne dinamike[15]
  • Monte Carlo simulacije[16]
  • modeli izmjene topline[17]

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)[18]

Licenca

[uredi | uredi kôd]

OpenFOAM je slobodan softver otvorenog koda, distribuiran pod licencom GNU General Public License verzija 3.[19]

Prednosti i nedostaci

[uredi | uredi kôd]

Prednosti

[uredi | uredi kôd]
  • jednostavna sintaksa za parcijalne diferencijalne jednadžbe
  • potpuno dokumentirani izvorni kod[20]
  • širok raspon primjena i modela spremnih za upotrebu
  • komercijalna podrška i obuka koju pružaju programeri
  • bez troškova licenciranja

Nedostaci

[uredi | uredi kôd]
  • 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 | uredi kôd]
  • OpenFOAM+[21] 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“,[22] „General Grid Interface (GGI)“,„Finite-Flächen-Methode (Finite Area Method, FAM)“ ili „Block Coupled Matrix Solver“.
  • FreeFOAM[23] 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 primijenio je programer Extend-Project-a kako bi omogućio prebacivanje na Microsoft Windows.
  • caelus-CML[24] 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 | uredi kôd]
  • SwiftBloc[25] i SwiftSna[26] su dvije Python-plug-in skripte za Blender koje olakšavaju stvaranje konfiguracijski datoteka blockMeshDict i snappyHexMeshDict
  • HELYX-O[27] je grafičko korisničko sučelje za rad s programom automatskog umrežavanja snappyHexMesh
  • SimScale[28] je simulacijski softver temeljen na oblaku koji integrira OpenFOAM i ostale solvere.
  • SimFlow[29] je GUI za OpenFOAM. RapideCFD varijanta istog proizvođača također nudi rješavanje jednadžbi na bazi GPU-a.
  • iconCFD[30] je još jedna komercijalna verzija OpenFOAM-a s grafičkim sučeljem

Izvori

[uredi | uredi kôd]
  1. OpenFOAM (engleski). Pristupljeno 14. studenoga 2017.
  2. "Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software" (engleski). Pristupljeno 14. studenoga 2017.
  3. Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics (engleski). ESI Group. 11. rujna 2012. Inačica izvorne stranice arhivirana 6. prosinca 2012. Pristupljeno 14. studenoga 2017.
  4. OpenFOAM (engleski). CFD Direct. 25. ožujka 2015. Pristupljeno 14. studenoga 2017.
  5. a b c d "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  6. Linear system solvers in OpenFOAM (engleski). Pristupljeno 24. studenoga 2017.
  7. a b "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 14. studenoga 2017.
  8. "OpenFOAM v5 User Guide: 7.3 Transport/rheology models" (engleski). Pristupljeno 24. studenoga 2017.
  9. "OpenFOAM v5 User Guide: 7.1 Thermophysical models" (engleski). Pristupljeno 24. studenoga 2017.
  10. "Turbulence Modelling - OpenFOAM - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  11. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  12. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  13. "Multiphase Flows - OpenFOAM - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  14. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 24. studenoga 2017.
  15. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 13. prosinca 2017.
  16. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 10. prosinca 2017.
  17. "OpenFOAM Features - CFD Direct" (engleski). Pristupljeno 10. prosinca 2017.
  18. About OpenFOAM (engleski). Inačica izvorne stranice arhivirana 2. ožujka 2016. Pristupljeno 14. studenoga 2017.
  19. "Free Software Licence" (engleski). Pristupljeno 17. prosinca 2017.
  20. "OpenFOAM: Free, Open Source Software from the OpenFOAM Foundation" (engleski). Pristupljeno 13. prosinca 2017.
  21. "OpenFOAM+" (engleski). Inačica izvorne stranice arhivirana 12. listopada 2017. Pristupljeno 17. prosinca 2017.
  22. 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) (PDF) (engleski). Inačica izvorne stranice (PDF) arhivirana 15. ožujka 2013. Pristupljeno 17. prosinca 2017.
  23. Free Foam (engleski). Pristupljeno 17. prosinca 2017.
  24. caelus-Homepage (engleski). Inačica izvorne stranice arhivirana 24. listopada 2017. Pristupljeno 17. prosinca 2017.
  25. SwiftBlock project homepage (engleski). Pristupljeno 14. studenoga 2017.
  26. SwiftSnap project homepage (engleski). Pristupljeno 14. studenoga 2017.
  27. HELYX-OS Project Homepage (engleski). Inačica izvorne stranice arhivirana 7. prosinca 2015. Pristupljeno 14. studenoga 2017.
  28. SimScale (engleski). Pristupljeno 14. studenoga 2017.
  29. SimFlow (engleski). Pristupljeno 14. studenoga 2017.
  30. iconCFD (engleski). Inačica izvorne stranice arhivirana 1. prosinca 2017. Pristupljeno 14. studenoga 2017.