Povijest
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. 8.kolovoza 2011. OpenCFD kupila je tvrtka Silicon Graphics International (SGI). 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. Weller i Greenshields 2014. napuštaju ESI Group i nastavljaju razvoj i upravljanje OpenFOAM-om preko OpenFOAM Foundation, na CFD Direct-u. CFD Direct nastavio je razvoj distribucije poznat kao OpenFOAM, dok ESI Group sada samostalno razvija OpenFOAM-plus.
Istaknute značajke
Sintaksa
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, 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
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
Simulacija Hyper-X Scramjet vozila u pogonu na
Mach-7
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
- Rješenje običnih diferencijalnih jednadžbi
- Dinamička meža
- Opći fizikalni modeli:
- Reološki modeli
- Termodinamički modeli i baza podataka
- Modeli turbulencije
- Modeli kemijskih reakcija i kemijske kinetike
- Modeli prijenosa topline zračenjem
- Lagrangeova metoda praćenja čestica
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
Simulacija izgaranja metana. Grafičko korisničko sučelje je ParaView.
OpenFOAM mehanizmi rješavanja uključuju:
- 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
- RANS (Reynolds-averaged Navier-Stokes) i LES (Large eddy simulation) pristup modeliranju nestlačivog strujanja
- modeliranje višefaznih strujanja
- modeliranje jednofaznih strujanja
- metoda praćenja čestica
- rješavanje problema procesa izgaranja
- simulacije molekularne dinamike
- Monte Carlo simulacije
- modeli izmjene topline
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)
Licenca
OpenFOAM je slobodan softver otvorenog koda, distribuiran pod licencom GNU General Public License verzija 3.
Prednosti i nedostaci
Prednosti
- jednostavna sintaksa za parcijalne diferencijalne jednadžbe
- potpuno dokumentirani izvorni kod
- širok raspon primjena i modela spremnih za upotrebu
- komercijalna podrška i obuka koju pružaju programeri
- bez troškova licenciranja
Nedostaci
- 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
- OpenFOAM+ 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“, „General Grid Interface (GGI)“,„Finite-Flächen-Methode (Finite Area Method, FAM)“ ili „Block Coupled Matrix Solver“.
- FreeFOAM 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 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
- SwiftBloc i SwiftSna su dvije Python-plug-in skripte za Blender koje olakšavaju stvaranje konfiguracijski datoteka blockMeshDict i snappyHexMeshDict
- HELYX-O je grafičko korisničko sučelje za rad s programom automatskog umrežavanja snappyHexMesh
- SimScale je simulacijski softver temeljen na oblaku koji integrira OpenFOAM i ostale solvere.
- SimFlow je GUI za OpenFOAM. RapideCFD varijanta istog proizvođača također nudi rješavanje jednadžbi na bazi GPU-a.
- iconCFD je još jedna komercijalna verzija OpenFOAM-a s grafičkim sučeljem