Wizualizacja sieci quadtree i octree

10

Tzw QuadTree i Octree ruszty są dość atrakcyjne dla zastosowań wymagających adaptacyjne wyrafinowanie oczek. Są one używane na przykład w Gerris i Paramesh . Czy ktoś wie o dobrym formacie pliku dla takich siatek i oprogramowaniu do wizualizacji? Zobacz także tę odpowiedź w FAQ Gerris. Jedynym potencjalnym kandydatem, którego obecnie znam, jest klasa HyperOctree VTK , ale wydaje się, że prawie nie ma dokumentacji.

Jako szczególny przykład siatki rozważ słabo dopracowaną siatkę oktetów, składającą się z pól, z których każde zawiera komórek. Moje obecne strategie w Visit / Paraview to: 8 × 8 × 8 = 5121048×8×8=512

  1. Napisz siatkę jako nieustrukturyzowany plik VTK. Jest to kosztowne w przypadku większych zestawów danych i nie wykorzystuje „struktury” quad / octree.
  2. Zbierz sąsiednie „pudełka” w drzewie w większe bloki i napisz siatkę o strukturze bloków. Wymaga to sporo dodatkowego kodu i traci informacje o łączności osadzone w quad / octree.

Aktualizacja Jeśli obecnie nie ma realnego formatu do bezpośredniego pisania i wizualizacji siatki oktree, byłbym wdzięczny za sugestie dotyczące formatu pliku, którego można użyć do zapisania oktree jako siatki o strukturze blokowej. Idealnie ten format:

  1. Ma stosunkowo prostą definicję / implementację, idealnie open source i kompatybilność z C / Fortran.
  2. Może efektywnie obsługiwać dużą liczbę bloków siatki (np. 1000 lub więcej).
  3. Pozwala w łatwy sposób określić łączność bloków siatki, w szczególności na granicach uszlachetnienia.

Obecnie używam Silo do tego celu, ale szukam czegoś, co uzyska lepsze wyniki w powyższych trzech punktach (mniejszym, szybszym, prostszym).

Jannis Teunissen
źródło
1
Dlaczego nieustrukturyzowana siatka tworzy zbyt dużo danych? Będzie to tylko 5 milionów komórek. To dość mały zestaw danych do wizualizacji w Visit lub Paraview.
Wolfgang Bangerth,
Ponieważ współrzędne i łączność są określone dla komórki, a nie tylko raz dla pudełka (zawierającego np. 512 komórek). W przypadku większych zestawów danych (np. 20 milionów komórek lub więcej) wizualizacja staje się znacznie wolniejsza niż w przypadku siatki o strukturze blokowej, w szczególności jeśli znaczna część siatki jest na tym samym poziomie wyrafinowania.
Jannis Teunissen
Być może lista obsługiwanych formatów plików w Visit jest przydatna w przypadku tego pytania: visitusers.org/…
Jannis Teunissen
1
Może również przyjrzysz się, co CHOMBO, SAMRAI itp. Robią dla wizualizacji?
Abhilash Reddy M
1
Dodaj BoxLib do listy. Opracowali pakiet o nazwie AMRVis do wizualizacji danych AMR. Kod jest dostępny na stronie internetowej LBL.
Abhilash Reddy M

Odpowiedzi:

2

W moim przypadku, gdy robiłem udoskonalanie wielopoziomowe, pisałem pliki siatki na różnych poziomach osobno. Zwykle poziom 0 jest podstawową grubą siatką, która pozostaje stała. A dla poziomu 1 i wyższego użyłem różnych plików dla różnych łatek. Powiedzmy, że jeśli masz 5 poprawek na poziomie 1, moją strategią było napisanie pięciu różnych plików na końcu mojego programu, coś w rodzaju Level_1_Patch_1, Level_1_Patch_2 ... które można dynamicznie wykonać w C (nigdy nie działało w Fortranie).

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

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

Powinienem tutaj wspomnieć, że zastosowałem system siatki strukturalnej o skończonej różnicy.

Kiedyś miałem już wszystkie poziomy i ich pliki .PLT lub .DAT. Wszystkie importuję do TecPLOT. Na przykład, kiedy pisałem mój dwupoziomowy kod z kilkoma drobnymi łatkami na poziomie 1, twoja siatka powinna wyglądać tak w Tecplot.

wprowadź opis zdjęcia tutaj

Nie jestem zbyt obeznany z obsługą niestrucutowanych siatek, ale strukturyzowane są dobrze obsługiwane w Tecplot

Tanmay Agrawal
źródło
Interesujące jest przeczytanie o twoim podejściu, ale nie wydaje się to opłacalne w przypadku dużej oktawy, wtedy musiałbyś pisać i czytać tysiące plików, co zwykle jest raczej powolne.
Jannis Teunissen
1
@JannisTeunissen: Jeśli szukasz rozwiązania o strukturze bloków, w przypadku Tecplot wszystkie bloki można zapisać w tym samym pliku jako osobne „Strefy” (terminologia tecplot). Nie muszą to być osobne pliki. Jednak nie ma tam równoległych We / Wy. Duże zestawy danych będą się dusić. Pliki tecplot można jednak załadować do ParaView (Tecplot jest zastrzeżony). Format ascii jest bardzo prosty. Przy odrobinie wysiłku możesz również bezpośrednio zapisywać pliki binarne w formacie tecplot. Istnieje oficjalna biblioteka o nazwie TecIO, którą możesz połączyć swój kod, aby łatwiej tworzyć pliki.
Abhilash Reddy M
Nie sądzę, żeby działało to lepiej niż moje obecne podejście do Silo, które (co ważne) jest open source. Zauważ, że pliki ASCII nie są tak naprawdę wykonalne z tego powodu.
Jannis Teunissen