OpenFOAM

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
OpenFOAM
software
Logo
Logo
Avvio di un calcolo da terminale
Avvio di un calcolo da terminale
Avvio di un calcolo da terminale
GenereComputer grafica 3D
Computer-aided engineering
Computer-aided process planning
SviluppatoreOpenCFD Ltd[1] / CFD Direct Ltd.[2] / Wikki Ltd.[3]
Data prima versione2004
Ultima versionev1906 / v6 (27 giugno 2019 (v1906) / 29 giugno 2019 (v6))
Sistema operativoLinux
Unix-like
LinguaggioC++
LicenzaGNU General Public License
(licenza libera)
LinguaInglese
Sito webopenfoam.org

OpenFOAM (Open Field Operation And Manipulation) è principalmente un toolbox C++ per customizzare ed estendere soluzioni software per la simulazione. È un finalizzatore (solver) basato sulla teoria della meccanica dei continui che include la fluidodinamica computazionale (CFD, Computational Fluid Dynamics). Viene fornito con una estesa libreria di solver, sempre ampliata, applicabile ad una generalità di problemi.

OpenFOAM è uno dei primi maggiori pacchetti software scientifici scritti in C++.

Ci sono tre versioni principali di OpenFOAM, gratuite e che sono rilasciate sotto la licenza GPL:

  1. La versione ufficiale di OpenFOAM La versione rilasciata ogni 6 mesi da ESI-OpenCFD Ltd.,
  2. La fork della OpenFOAM-Foundation rilasciata da CFD Direct Ltd. a nome di OpenFOAM Foundation, e
  3. La fork del progetto FOAM-Extend rilasciata da Wikki Ltd..

Oltre a queste versioni principali, ci sono diverse altre varianti mantenute e rilasciate per specifiche applicazioni da altre entità. Ad esempio: blueCFD®-Core, SIMSCALE, e iconCFD. È prodotto dalla società britannica OpenCFD Ltd. e dal 2004, e nel 2007 il nome OpenFOAM è stato registrato come marchio[4] e garantisce l'uso del suo marchio OpenFOAM alle terze parti tramite licenza. ESI Group e la OpenFOAM Foundaation Ltd. possono attualmente utilizzare il nome e il dominio.

Un modello del NASA X-43 Scramjet, (veicolo ipersonico che vola a Mach 7), creato al computer utilizzando software per la Fluidodinamica

Storia[modifica | modifica wikitesto]

L'uso del nome FOAM viene fatto risalire per la prima volta come utility di post-processing scritta da Charlie Hill all'inizio degli anni '90 nel gruppo del Prof. David Gosman all'Imperial College di Londra[5].

Ciònonostante, i primi sviluppi di FOAM (poi OpenFOAM) come strumento di simulazione fluidodinamica furono iniziati da Henry Weller allo stesso istituto utilizzando come linguaggio C++, invece del de facto standard del periodo, FORTRAN. Henry Weller e Hrvoje Jasak continuarono a sviluppare OpenFOAM sotto il nome di Nabla Ltd, per quasi un decennio[6]. Per alcuni anni, FOAM fu venduto come codice commerciale dalla Nabla Ltd.[7], ma a partire dal 2004, FOAM venne rilasciato sotto licenza GPL e rinominato OpenFOAM.

Dopo il fallimento della Nabla Ltd. nel 2004, Henry Weller, Chris Greenshields e Mattijs Janssens fondarono OpenFOAM Ltd per sviluppare e rilasciare OpenFOAM[8]. Allo stesso tempo, Hrvoje Jasak fonda la compagnia di consulenza Wikki Ltd[9] e mantiene una fork di OpenFOAM chiamata openfoam-extend.

Dall'8 Agosto 2011, OpenCFD fu acquisita da Silicon Graphics International (SGI)[10]. Dal 12 Settembre 2012, il gruppo ESI annunciò l'acquisizione di OpenCFD Ltd. e del marchio OpenFOAM da SGI[11].

Nel 2014, Welle e Greenshields lasciano il gruppo ESI, e fondano CFD Direct Ltd,[12], creando la fork di OpenFOAM della OpenFOAM Foundation.

La figura seguente presenta un riassunto dello sviluppo cronologico delle tre diverse varianti di OpenFOAM, con le frecce indicanti la direzione del trasferimento di funzionalità tra le diverse versioni. In particolare:

  1. La versione ufficiale di OpenFOAM (trademark) Versione principalmente sviluppata e mantenuta da ESI-OpenCFD Ltd. con una sigla indicante la data di rilascio (e.g. v1906),
  2. La versione della OpenFOAM-Foundation fork principalmente mantenuta da CFD Direct Ltd. con una sigla basata su una sequenza incrementale (e.g. 6.0),
  3. La versione del progetto FOAM-Extend fork principalmente mantenuta da Wikki Ltd..
OpenFOAM riassunto delle diverse release
OpenFOAM riassunto delle diverse release

Funzionalità[modifica | modifica wikitesto]

OpenFOAM si confronta con successo con le funzionalità dei maggiori pacchetti software CFD commerciali. Esso si basa sulla scelta degli utenti di utility di pre e post-processing di terze parti, e viene fornito come:

  • un plugin (paraFoam) per la visualizzazione dei dati finiti e mesh in ParaView.
  • ampia varietà di convertitori delle griglie tridimensionali permettendo l'importazione da una serie di importanti pacchetti commerciali
  • un mesher automatico di esaedri per creare le griglie poligonali per le configurazioni in ingegneria.

Struttura di OpenFOAM[modifica | modifica wikitesto]

OpenFOAM è stato concepito come piattaforma per la meccanica dei continui ma è ideale per creare simulazioni in vari ambiti della fisica. La libreria di base di OpenFOAM è quella su cui si basano le capacità di base del codice:

  • Operazioni su tensori e campi
  • Discretizzazione di equazioni alle derivate parziali
  • Soluzione di sistemi lineari[13]
  • Soluzione di equazioni alle derivate ordinarie[14]
  • Parallelizzazione automatica di operazioni di alto livello
  • Gestione di mesh dinamiche[15]
  • Modelli fisici generali:
    • Modelli reologici[16]
    • Modelli termodinamici[17]
    • Modelli di turbolenza[18]
    • Reazioni chimiche e modelli cinetici[19]
    • Tracciamento di particelle lagrangiane[20]
    • Modelli di trasferimento di calore per radiazione
    • Metodi a singolo e multiplo sistema di riferimento

Le capacità in dotazione alla libreria sono poi utilizzate per sviluppare le applicazioni. Le applicazioni sono scritte utilizzando la sintassi di alto livello introdotta da OpenFOAM, che cerca di riprodurre la notazione matematica convenzionale. Due categorie di applicazioni esistono:

  • Solver: risolvono uno specifico problema di meccanica del continuo, effettuando i calcoli necessari
  • Utility: usate per preparare la mesh, preparare il caso simulativo, e processare i risultati.

Ogni applicazione provvede diverse capacità: ad esempio l'applicazione chiamata blockMesh permette di generare una mesh esaedrica dall'input dell'utente, mentre l'applicazione icoFoam risolve le equazioni di Navier-Stokes per un flusso incomprimibile laminare.

Infine, un set di pacchetti di terze parti sono utilizzati per provvedere funzionalità quali la parallelizzazione e il post processing grafico.

Capacità[modifica | modifica wikitesto]

La libreria di OpenFOAM include solver capaci di risolvere[21]:

Le utility di OpenFOAM sono suddivise in:

  • Utility di meshing
    • Generazione della mesh: creano la griglia computazionale a partire da un file di input (blockMesh) o a partire da una file che rappresenti la geometria d'interesse, che viene meshata con una griglia a dominanza esaedrica (snappyHexMesh).
    • Conversione della mesh: convertono griglie generate con altri meshatori in mesh compatibili con OpenFOAM
    • Manipolazione della mesh: permettono di effettuare operazioni specifiche sulla mesh, come raffinamento locale, definizione di regioni, ed altre.
  • Utility di parallelizzazione: Permettono di decomporre, ricostruire o ridistribuire il caso per permettere la simulazione in parallelo
  • Pre-processing: utility per preparare le simulazioni
  • Post-processing: utility per processare i risultati.
  • Utility di manipolazione delle superfici: per preparare le geometrie da utilizzare per il setup dei casi
  • Termofisiche: per valutare proprietà del flusso

Sintassi[modifica | modifica wikitesto]

Oltre ai solvers standard, una delle funzionalità che distinguono OpenFOAM è la sua relativa facilità di creazione soluzioni solvers customizzate. OpenFOAM consente all'utente di utilizzare la sintassi che assomigliano molto alle equazioni alle derivate parziali in fase di soluzione.

Per esempio l'equazione: [31]

è rappresentata dal codice:

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

Questa sintassi, raggiunta attraverso l'uso di una programmazione orientata agli oggetti e Polimorfismo, permette all'utente di creare solver con relativa facilità.

Espandibilità[modifica | modifica wikitesto]

L'utente di OpenFOAM può creare oggetti personalizzati, come condizioni al contorno o modelli di turbolenza, che funzionano con il resto della libreria, senza la necessità di modificare o ricompilare il codice sorgente esistente. OpenFOAM raggiunge questo obiettivo combinando costruttori virtuali con l'uso di classi base semplici come interfacce. Ciò da ad OpenFOAM una buona espandibilità.

FreeFOAM[modifica | modifica wikitesto]

FreeFOAM è un fork della suite OpenFOAM. È orientata verso la liberazione di OpenFOAM dal suo sistema di dipendenze, rendendola più portabile e più facile da installare[32]. Il progetto segue da vicino la release ufficiale e non include ulteriori funzionalità. CMake è utilizzato come compilatore.

Note[modifica | modifica wikitesto]

  1. ^ The open source CFD toolbox, su OpenFOAM. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 5 febbraio 2005).
  2. ^ CFD Direct - The Architects of OpenFOAM, su CFD Direct. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 27 marzo 2015).
  3. ^ Wikki Ltd., su wikki.co.uk.
  4. ^ OpenCFD, OpenFOAM® - Official home of The Open Source Computational Fluid Dynamics (CFD) Toolbox, su openfoam.com. URL consultato il 3 maggio 2010 (archiviato dall'url originale il 22 settembre 2016).
  5. ^ Original OpenFOAM authors, su CFD-Online. URL consultato il 28 giugno 2019.
  6. ^ Goong Chen, Qingang Xiong, Philip J. Morris, Eric G. Paterson, Alexey Sergeev e Yi-Ching Wang, OpenFOAM for Computational Fluid Dynamics, in Notices of American Mathematical Society, vol. 61, n. 4, 2014, pp. 354-363, DOI:10.1090/noti1095.
  7. ^ OpenFOAM, su CFD-Online. URL consultato il 28 giugno 2019.
  8. ^ Chris Greenshields, Release History, su openfoam.org, 3 aprile 2016 (archiviato il 29 luglio 2017).
  9. ^ Wikki Ltd - About Us, su wikki.gridcore.se. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 29 maggio 2018).
  10. ^ Press Releases: SGI Acquires OpenCFD Ltd., the Leader In Open Source Computational Fluid Dynamics (CFD) Software, su sgi.com, SGI. URL consultato il 18 dicembre 2012 (archiviato dall'url originale il 6 dicembre 2012).
  11. ^ Acquisition of OpenCFD Ltd., The leader in Open Source software in Computational Fluid Dynamics, su esi-group.com, ESI Group, 11 settembre 2012. URL consultato il 18 dicembre 2012 (archiviato dall'url originale il 6 dicembre 2012).
  12. ^ OpenFOAM, su cfd.direct, CFD Direct, 25 marzo 2015 (archiviato il 29 marzo 2015).
  13. ^ OpenFOAM Features - CFD Direct, su openfoam.org (archiviato il 2 aprile 2015).
  14. ^ OpenFOAM Features - CFD Direct, su openfoam.org (archiviato il 2 aprile 2015).
  15. ^ OpenFOAM Features - CFD Direct, su openfoam.org (archiviato il 27 marzo 2015).
  16. ^ OpenFOAM v5 User Guide: 7.3 Transport/rheology models, su cfd.direct, 2 marzo 2017 (archiviato il 19 marzo 2016).
  17. ^ OpenFOAM v5 User Guide: 7.1 Thermophysical models, su cfd.direct, 2 marzo 2017 (archiviato il 19 marzo 2016).
  18. ^ Turbulence Modelling - OpenFOAM - CFD Direct, su cfd.direct (archiviato il 9 agosto 2016).
  19. ^ OpenFOAM Features - CFD Direct, su openfoam.org (archiviato il 2 aprile 2015).
  20. ^ OpenFOAM Features - CFD Direct, su openfoam.org (archiviato il 2 aprile 2015).
  21. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 21 marzo 2015).
  22. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  23. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  24. ^ a b OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  25. ^ Multiphase Flows - OpenFOAM - CFD Direct, su cfd.direct (archiviato il 9 agosto 2016).
  26. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  27. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  28. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  29. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  30. ^ OpenFOAM Features - CFD Direct, su openfoam.org. URL consultato il 4 luglio 2019 (archiviato dall'url originale il 2 aprile 2015).
  31. ^ OpenFOAM 1.6 User Guide Archiviato il 15 maggio 2010 in Internet Archive.
  32. ^ (EN) FreeFOAM, su SourceForge. URL consultato il 22 aprile 2022.

Voci correlate[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]