Bitpit
# Bitpit

bitpit è una libreria C++ modulare e libera per il calcolo scientifico. Lo scopo di bitpit è la semplicazione nella stesura di un programma scientifico fornendo i mattoni comuni necessari in molte applicazioni scientifiche.

Ogni modulo della libreria bitpit è sviluppato per affrontare uno specifico aspetto dello sviluppo di applicazioni reali. I moduli possono essere usati come mattoni per sviluppare applicazioni scientifiche ad alta performance. La libreria è quindi costituita da diversi moduli che spaziano da funzionalità di basso livello, come gli operatori algebrici, a funzionalità di alto livello, come la valutazione delle funzioni distanza su griglie di calcolo.

## Caratteristiche e moduli

Tra le caratteristiche e i moduli presenti in bitpit possiamo trovare:

* griglie non strutturate di volume e di superficie e griglie cartesiane
* quadtree/octree lineare, parallelo a carico bilanciato e con vincoli sulla taglia di elementi vicini
* contenitore di base per differenti tipi di griglie (di superficie e di volume) che permette l'uso contemporaneo di più griglie di tipo diverso.
* strumenti per la valutazione di distanze segnate e non a partire da un oggetto generico immerso nel dominio di calcolo (level-set).
* operatori algebrici di base (somma, differenza, moltiplicazione, divisione), funzioni matematiche (prodotto scalare, il prodotto vettoriale, la norma, il valore assoluto, ...), operatori di stream e funzioni di visualizzazione per alcuni containers della Standard Template Library (STL)
* una raccolta di containers utili per applicazioni scientifiche
* buffers binari per lo scambio dati in parallelo e metodi di alto livello per la gestione delle comunicazioni parallele.
* metodi per la lettura e la scrittura di file di dati comuni come i file DGF (Dune Grid Format), STL (STereo Litography) and VTK (Visualization ToolKit) e metodi per la manipolazione di file di log.
* strumenti utili alla gestione e soluzione di piccoli sistemi lineari densi.
* interpolazione e parametrizzazione per mezzo di Radial Basis Functions anche di grandi insiemi di nodi.
* algoritmi di ordinamento (LIFO, kd-tree, alberi binari per il massimo e il minimo,...)
* metodi di geometria computazionale
