FreeFem Un piccolo FEM Open Source con molte potenzialità
Da MontelLUG WIKI.
FreeFem++
FreeFem++ è un software di analisi agli elementi finiti non specializzato, ma molto potente. FreeFem++ è bidimensionale, ma è in fase di sviluppo anche una versione 3D. E' Open Source, ed è disponibile per Linux, vari UNIX, MacOS X e Windows. Dopo aver installato il pacchetto, scaricabile da http://www.freefem.org, si ha a disposizione qualche comando testuale e molti script di esempio, anche se è disponibile un abbozzo di interfaccia grafica basata su Tcl/Tk. Il programma è in effetti fondamentalmente un risolutore basato su un proprio linguaggio di scripting con una sintassi C++-like. Dopo alcuni test quello che si può dire è:
Pro:
- Ha un ottimo manuale in PDF, neppure eccessivamente lungo (200 pagine)
- Più che un FEM tradizionale, è un solutore di equazioni differenziali generico basato sugli elementi finiti: questo lo rende estremamente versatile e adattabile alle esigenze di calcolo dell'utente. In pratica, è l'utente a decidere nei dettagli il modello matematico sottostante alla simulazione, e questo da il controllo di quello che si fa, quindi maggior confidenza nei risultati.
- Permette di simulare allo stesso modo problemi fisici completamente diversi, dalla meccanica, alla fluidodinamica, ai campi elettromagnatici, permettendo di risolvere per via numerica anche problemi di ottimizzazione.
- E' leggero e veloce.
- Genera automaticamente la mesh, secondo l'algoritmo Delunay-Voronoi, ritenuto uno dei più affidabili e molto usato per questo tipo di software.
- Consente mesh con contorni mobili.
- Integra un linguaggio di calcolo matematico, che permette di calcolare in fretta funzioni, calcoli con numeri complessi, integrali, derivate, e ovviamente di risolvere equazioni differenziali con il metodo degli elementi finiti. In pratica può essere usato come un semplice sostituto di Octave e Matlab, cosa che i software commercailei non fanno.
- Tutti gli esempi del manuale sono ben spiegati e nel pacchetto ci sono tutti gli script sorgente.
- la sintassi è simil-C++, un netto vantaggio per chi già conosce questo linguaggio.
- Include già un discreto numero di diversi elementi finiti, e, secondo quanto affermano gli autori nel manuale, in poche ore di programmazione C++ e ricompilando, è possibile inserirne di nuovi.
- Nel manuale sono definiti i formati dei file di mesh: da buon software Open Source, il suo formato file potrebbe essere comodamente implementato in altri programmi.
Contro:
- Richiede di conoscere bene la matematica sottostante al problema analizzato: non è molto user-friendly come i moderni S/W che fanno tutto con pochi click (anche se poi non si sa cosa facciano)
- Definendo le geometrie e le mesh in base alla definizione matematica, non dispone di alcun tool di importazione da formati esterni (tipo DXF/DWG), anche se permette di esportare le mesh in alcuni formati (BB, AM_FMT, AMBDA).
- Non ha un vero preprocessing: la geometria e la mesh devono essere definite a mano.
- Non è specializzato: è necessario conoscere i dettagli della matematica del problema e averli implementati correttamente per avere risultati affidabili. Questo può essere oneroso in termini di tempo.
In conclusione, è evidente che FreeFem++ non è un software nato con l'intenzione di confrontarsi e soppiantare i software commerciali (che investono molto nello sviluppo degli algoritmi di calcolo, ma si fanno pagare più che profumatamente), ma offre delle caratteristiche veramente interessanti, e sembra promettere molto sul piano dell'espandibiltà e dello sviluppo. Sicuramente se la comunità Open Source cominciasse a offrirne supporto potrebbe diventare in breve tempo una ottima alternativa, soprattutto se venissero implementate una interfaccia grafica ben utilizzabile e la possibilità di importare i file CAD nei formati più diffusi. Tanto più che il codice si adatta a molti generi di problema diverso, dal calcolo strutturale e dinamico, alla fluidodinamica, ai campi elettromagnetici, ecc.