Visualisasi grid quadtree & octree

10

Apa yang disebut grid quadtree dan octree cukup menarik untuk aplikasi yang membutuhkan penyempurnaan mesh adaptif. Mereka misalnya digunakan dalam Gerris dan Paramesh . Adakah yang mengetahui format file yang bagus untuk grid seperti itu, dan mendukung perangkat lunak visualisasi? Lihat juga jawaban ini di FAQ Gerris. Satu-satunya kandidat potensial yang saat ini saya ketahui adalah kelas VTK HyperOctree , tetapi tampaknya hampir tidak ada dokumentasi.

Sebagai contoh spesifik dari sebuah jaring, pertimbangkan kisi oktri yang disempurnakan secara jarang, yang terdiri dari kotak, masing-masing berisi sel. Strategi saya saat ini dalam Kunjungan / Paraview adalah: 8 × 8 × 8 = 5121048×8×8=512

  1. Tulis kisi sebagai file VTK yang tidak terstruktur. Ini mahal untuk dataset yang lebih besar, dan tidak mengeksploitasi 'terstruktur' dari quad / octree.
  2. Kumpulkan 'kotak' tetangga di pohon ke dalam blok yang lebih besar, dan tulis kisi berstruktur blok. Ini melibatkan sedikit kode tambahan, dan kehilangan informasi konektivitas yang tertanam dalam quad / octree.

Pembaruan Jika saat ini tidak ada format yang layak untuk langsung menulis dan memvisualisasikan kisi octree, saya akan menghargai saran untuk format file yang dapat digunakan untuk menulis octree sebagai kisi blok-terstruktur. Idealnya, format ini:

  1. Memiliki definisi / implementasi yang relatif sederhana, sumber terbuka idealnya dan dengan kompatibilitas C / Fortran.
  2. Secara efisien dapat menangani sejumlah besar blok kotak (mis. 1000 atau lebih).
  3. Memungkinkan untuk dengan mudah menentukan konektivitas blok kisi, khususnya pada batas penyempitan.

Saat ini saya menggunakan Silo untuk tujuan ini, tetapi saya mencari sesuatu yang mendapat skor lebih baik pada ketiga poin di atas (lebih kecil, lebih cepat, lebih sederhana).

Jannis Teunissen
sumber
1
Mengapa mesh tidak terstruktur membuat terlalu banyak data? Itu hanya akan menjadi 5 juta sel. Itu kumpulan data yang cukup kecil untuk saya visualisasikan dalam Kunjungan atau Paraview.
Wolfgang Bangerth
Karena koordinat dan konektivitas ditentukan per sel, alih-alih hanya satu kali per kotak (berisi misalnya 512 sel). Untuk dataset yang lebih besar (mis., 20 juta sel atau lebih) visualisasi menjadi jauh lebih lambat dibandingkan dengan mesh yang terstruktur-blok, khususnya jika bagian-bagian grid yang signifikan berada pada level perbaikan yang sama.
Jannis Teunissen
Mungkin daftar format file yang didukung di Visit berguna untuk pertanyaan ini: visitusers.org/...
Jannis Teunissen
1
Mungkin juga melihat apa yang CHOMBO, SAMRAI dll lakukan untuk visualisasi?
Abhilash Reddy M
1
Tambahkan BoxLib ke daftar. Mereka telah mengembangkan paket yang disebut AMRVis untuk memvisualisasikan data AMR. Kode ini tersedia dari situs web LBL.
Abhilash Reddy M

Jawaban:

2

Dalam kasus saya ketika saya melakukan penyempurnaan bertingkat, saya biasa menulis file kotak pada tingkat yang berbeda secara terpisah. Biasanya level 0 adalah mesh kasar dasar yang tetap tetap. Dan untuk level 1 ke atas, saya menggunakan file yang berbeda untuk patch yang berbeda. Katakanlah jika Anda memiliki 5 tambalan halus pada level 1, strategi saya adalah menulis lima file berbeda di akhir program saya, sesuatu seperti Level_1_Patch_1, Level_1_Patch_2 ... yang secara dinamis dapat dilakukan di C (tidak pernah bekerja di Fortran).

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

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

Saya harus menyebutkan di sini bahwa saya menggunakan perbedaan, sistem grid terstruktur.

Jadi, sekali saya memiliki semua level dan file .PLT atau .DAT mereka. Saya mengimpor semuanya di TecPLOT. Misalnya, ketika saya sedang menulis kode dua tingkat saya dengan beberapa tambalan halus pada level 1, mesh Anda akan terlihat seperti ini di Tecplot.

masukkan deskripsi gambar di sini

Saya tidak terlalu terbiasa menangani kisi-kisi yang tidak terstruktur tetapi yang terstruktur ditangani dengan baik di Tecplot

Tanmay Agrawal
sumber
Menarik untuk membaca tentang pendekatan Anda, tetapi ini tampaknya tidak layak untuk satu Oktober besar, maka Anda harus menulis dan membaca ribuan file, yang biasanya agak lambat.
Jannis Teunissen
1
@JannisTeunissen: Jika Anda mencari solusi terstruktur blok, untuk Tecplot, semua blok dapat ditulis ke dalam file yang sama dengan "Zona" terpisah (terminologi tecplot). Tidak harus file yang terpisah. Namun, I / O paralel tidak ada. Kumpulan data besar akan tersedak. File tecplot dapat dimuat ke ParaView (Tecplot adalah hak milik). Format ascii sangat mudah. Dengan sedikit usaha, Anda bisa langsung menulis file biner juga dalam format tecplot. Ada perpustakaan resmi bernama TecIO di mana Anda dapat menautkan kode Anda untuk membuat file lebih mudah.
Abhilash Reddy M
Saya tidak berpikir itu akan bekerja lebih baik daripada pendekatan saya saat ini dengan Silo, yang (penting) adalah open source. Perhatikan bahwa file ASCII tidak benar-benar layak untuk masalah ini.
Jannis Teunissen