Visualisierung von Quadtree- und Octree-Gittern

10

Sogenannte Quadtree- und Octree- Gitter sind für Anwendungen, die eine adaptive Netzverfeinerung erfordern, sehr attraktiv. Sie werden zum Beispiel in Gerris und Paramesh verwendet . Ist jemandem ein gutes Dateiformat für solche Raster und unterstützende Visualisierungssoftware bekannt? Siehe auch diese Antwort in den Gerris-FAQ. Der einzige potenzielle Kandidat, den ich derzeit kenne , ist die VTK HyperOctree- Klasse, aber es scheint fast keine Dokumentation zu geben.

Betrachten Sie als spezifisches Beispiel eines Netzes ein spärlich verfeinertes Octree-Gitter, das aus Feldern besteht, die jeweils 8 × 8 × 8 = 512 Zellen enthalten. Meine aktuellen Strategien in Visit / Paraview sind:1048×8×8=512

  1. Schreiben Sie das Raster als unstrukturierte VTK-Datei. Dies ist für größere Datensätze teuer und nutzt die "Struktur" des Quad / Octree nicht aus.
  2. Sammeln Sie benachbarte 'Kästchen' im Baum in größeren Blöcken und schreiben Sie ein blockstrukturiertes Raster. Dies erfordert eine Menge zusätzlichen Codes und verliert die im Quad / Octree eingebetteten Konnektivitätsinformationen.

Update Wenn es derzeit kein praktikables Format zum direkten Schreiben und Visualisieren eines Octree-Rasters gibt, würde ich Vorschläge für ein Dateiformat begrüßen, mit dem das Octree als blockstrukturiertes Raster geschrieben werden kann. Idealerweise dieses Format:

  1. Hat eine relativ einfache Definition / Implementierung, idealerweise Open Source und mit C / Fortran-Kompatibilität.
  2. Kann eine große Anzahl von Gitterblöcken (z. B. 1000 oder mehr) effizient verarbeiten.
  3. Ermöglicht die einfache Angabe der Konnektivität von Gitterblöcken, insbesondere an Verfeinerungsgrenzen.

Ich verwende derzeit Silo für diesen Zweck, suche aber nach etwas, das bei den oben genannten drei Punkten besser abschneidet (kleiner, schneller, einfacher).

Jannis Teunissen
quelle
1
Warum erzeugt das unstrukturierte Netz zu viele Daten? Es wären nur 5 Millionen Zellen. Das ist ein ziemlich kleiner Datensatz, den ich in Visit oder Paraview visualisieren kann.
Wolfgang Bangerth
Weil die Koordinaten und die Konnektivität pro Zelle angegeben werden, anstatt nur einmal pro Box (z. B. 512 Zellen). Bei größeren Datensätzen (z. B. 20 Millionen Zellen oder mehr) wird die Visualisierung viel langsamer als bei einem blockstrukturierten Netz, insbesondere wenn sich signifikante Teile des Rasters auf derselben Verfeinerungsstufe befinden.
Jannis Teunissen
Vielleicht ist die Liste der unterstützten Dateiformate in Visit für diese Frage nützlich: visitusers.org/…
Jannis Teunissen
1
Vielleicht schauen Sie sich auch an, was CHOMBO, SAMRAI usw. für die Visualisierung tun?
Abhilash Reddy M
1
Fügen Sie BoxLib zur Liste hinzu. Sie haben ein Paket namens AMRVis entwickelt, um AMR-Daten zu visualisieren. Der Code ist auf der LBL-Website verfügbar.
Abhilash Reddy M

Antworten:

2

In meinem Fall, als ich die mehrstufige Verfeinerung durchführte, habe ich Rasterdateien auf verschiedenen Ebenen separat geschrieben. Normalerweise ist die Stufe 0 ein grobes Grundnetz, das fest bleibt. Und für Level 1 und höher habe ich verschiedene Dateien für verschiedene Patches verwendet. Angenommen, Sie haben 5 feine Patches auf Ebene 1, meine Strategie bestand darin, am Ende meines Programms fünf verschiedene Dateien zu schreiben, etwa Level_1_Patch_1, Level_1_Patch_2 ..., die dynamisch in C ausgeführt werden konnten (in Fortran nie funktioniert).

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

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

Ich sollte hier erwähnen, dass ich ein strukturiertes Rastersystem mit endlichen Differenzen verwendet habe.

Also hatte ich einmal alle Ebenen und ihre .PLT- oder .DAT-Dateien. Ich importiere sie alle in TecPLOT. Wenn ich beispielsweise meinen zweistufigen Code mit ein paar feinen Patches auf Ebene 1 geschrieben habe, sollte Ihr Netz in Tecplot so aussehen.

Geben Sie hier die Bildbeschreibung ein

Ich bin nicht sehr vertraut mit dem Umgang mit nicht strukturierten Gittern, aber strukturierte werden in Tecplot gut behandelt

Tanmay Agrawal
quelle
Es ist interessant, über Ihren Ansatz zu lesen, aber dies scheint für einen großen Octree nicht sinnvoll zu sein. Dann müssten Sie Tausende von Dateien schreiben und lesen, was normalerweise ziemlich langsam ist.
Jannis Teunissen
1
@JannisTeunissen: Wenn Sie sich für eine blockstrukturierte Lösung für Tecplot entscheiden, können alle Blöcke als separate "Zonen" (Tecplot-Terminologie) in dieselbe Datei geschrieben werden. Sie müssen keine separaten Dateien sein. Parallele E / A ist jedoch nicht vorhanden. Große Datensätze werden ersticken. Die Tecplot-Dateien können jedoch in ParaView geladen werden (Tecplot ist proprietär). Das ASCII-Format ist sehr einfach. Mit etwas Aufwand können Sie auch Binärdateien direkt im Tecplot-Format schreiben. Es gibt eine offizielle Bibliothek namens TecIO, in der Sie Ihren Code verknüpfen können, um die Dateien einfacher zu erstellen.
Abhilash Reddy M
Ich denke nicht, dass das besser funktionieren würde als mein aktueller Ansatz mit Silo, das (wichtig) Open Source ist. Beachten Sie, dass ASCII-Dateien für dieses Problem nicht wirklich geeignet sind.
Jannis Teunissen