Visualizzazione di griglie quadrate e ottiche


10

Le cosiddette quadtree e octree griglie sono abbastanza attraenti per le applicazioni che richiedono adaptive mesh refinement. Sono ad esempio utilizzati in Gerris e Paramesh . Qualcuno è a conoscenza di un buon formato di file per tali griglie e supporta il software di visualizzazione? Vedi anche questa risposta nelle FAQ di Gerris. L'unico potenziale candidato di cui sono attualmente a conoscenza è la classe VTK HyperOctree , ma sembra non esserci quasi documentazione.

Come esempio specifico di una mesh, si consideri una griglia di ottoni scarsamente raffinata, composta da scatole, ciascuna contenente celle. Le mie attuali strategie in Visita / Paraview sono:1048×8×8=512

  1. Scrivi la griglia come file VTK non strutturato. Questo è costoso per set di dati più grandi e non sfrutta la "struttura" del quad / octree.
  2. Raccogli le "caselle" vicine nell'albero in blocchi più grandi e scrivi una griglia strutturata a blocchi. Ciò comporta un po 'di codice extra e perde le informazioni sulla connettività incorporate nel quad / octree.

Aggiornamento Se attualmente non esiste un formato praticabile per la scrittura e la visualizzazione diretta di una griglia di ottetti, apprezzerei i suggerimenti per un formato di file che può essere utilizzato per scrivere l'ottetto come griglia strutturata a blocchi. Idealmente, questo formato:

  1. Ha una definizione / implementazione relativamente semplice, idealmente open source e con compatibilità C / Fortran.
  2. Può gestire in modo efficiente un gran numero di blocchi della griglia (ad es. 1000 o più).
  3. Consente di specificare facilmente la connettività dei blocchi della griglia, in particolare ai limiti di perfezionamento.

Attualmente sto usando Silo per questo scopo, ma sto cercando qualcosa che ottenga un punteggio migliore sui tre punti sopra (più piccolo, più veloce, più semplice).


1
Perché la mesh non strutturata crea troppi dati? Sarebbe solo 5 milioni di cellule. È un set di dati piuttosto piccolo che posso visualizzare in Visit o Paraview.
Wolfgang Bangerth,

Perché le coordinate e la connettività sono specificate per cella, anziché una sola volta per scatola (contenente ad esempio 512 celle). Per set di dati più grandi (ad es. 20 milioni di celle o più) la visualizzazione diventa molto più lenta rispetto a una mesh strutturata a blocchi, in particolare se parti significative della griglia si trovano allo stesso livello di raffinamento.
Jannis Teunissen,

Forse l'elenco dei formati di file supportati in Visita è utile per questa domanda: visitusers.org/…
Jannis Teunissen,

1
Forse guarda anche cosa fanno CHOMBO, SAMRAI ecc. Per la visualizzazione?
Abhilash Reddy M

1
Aggiungi BoxLib all'elenco. Hanno sviluppato un pacchetto chiamato AMRVis per visualizzare i dati AMR. Il codice è disponibile dal sito Web LBL.
Abhilash Reddy M

Risposte:


2

Nel mio caso quando stavo facendo il perfezionamento multilivello, scrivevo i file della griglia a diversi livelli separatamente. Di solito il livello 0 è una mesh grossolana di base che rimane fissa. E a partire dal livello 1, ho usato file diversi per patch diverse. Supponiamo che se hai 5 patch di livello 1, la mia strategia era scrivere cinque file diversi alla fine del mio programma, qualcosa come Level_1_Patch_1, Level_1_Patch_2 ... che potrebbe essere fatto dinamicamente in C (mai lavorato in Fortran).

        char filename1[64];
        sprintf(filename1, "Patch%d.dat", patch_number);

        FILE *file;
        file= fopen(filename1, "wb");

Dovrei menzionare qui che ho usato una differenza finita, un sistema a griglia strutturato.

Quindi una volta ho avuto tutti i livelli e i loro file .PLT o .DAT. Li importa tutti in TecPLOT. Ad esempio, quando stavo scrivendo il mio codice a due livelli con un paio di patch di livello 1, la tua mesh dovrebbe apparire così in Tecplot.

inserisci qui la descrizione dell'immagine

Non ho molta familiarità con la gestione di griglie non strutturate, ma quelle strutturate sono gestite bene in Tecplot


Interessante da leggere sul tuo approccio, ma questo non sembra fattibile per un grande numero, quindi dovresti scrivere e leggere migliaia di file, che di solito è piuttosto lento.
Jannis Teunissen,

1
@JannisTeunissen: Se stai cercando una soluzione strutturata a blocchi, per Tecplot, tutti i blocchi possono essere scritti nello stesso file come "Zone" separate (terminologia tecplot). Non devono essere file separati. Tuttavia, l'I / O parallelo non è presente. I set di dati di grandi dimensioni verranno soffocati. I file tecplot possono essere caricati in ParaView (Tecplot è proprietario). Il formato ASCII è molto semplice. Con un certo sforzo, è possibile scrivere direttamente file binari e in formato tecplot. Esiste una libreria ufficiale chiamata TecIO che puoi collegare il tuo codice per creare i file più facilmente.
Abhilash Reddy M

Non penso che funzionerebbe meglio del mio attuale approccio con Silo, che (soprattutto) è open source. Si noti che i file ASCII non sono realmente praticabili per questo problema.
Jannis Teunissen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.