四分木および八分木グリッドの視覚化


10

いわゆるクワッドツリーおよびオクツリーグリッドは、適応メッシュリファインメントを必要とするアプリケーションにとって非常に魅力的です。たとえば、GerrisParameshで使用されています。そのようなグリッドの適切なファイル形式と、サポートする視覚化ソフトウェアを知っている人はいますか?Gerris FAQのこの回答も参照してください。私が現在気付いている唯一の潜在的な候補はVTK HyperOctreeクラスですが、ドキュメントはほとんどないようです。

メッシュの具体的な例として、それぞれがセルを含む個のボックスで構成される、まばらに洗練された八分木グリッドを考えてみましょう。Visit / Paraviewでの私の現在の戦略は次のとおりです。1048×8×8=512

  1. グリッドを非構造化VTKファイルとして書き込みます。これは、大規模なデータセットではコストがかかり、クワッド/オクツリーの「構造化」を利用しません。
  2. ツリー内の隣接する「ボックス」をより大きなブロックに集め、ブロック構造のグリッドを記述します。これにはかなりの追加コードが含まれ、クワッド/オクツリーに埋め込まれた接続情報が失われます。

更新現在、octreeグリッドを直接書き込んで視覚化するための実行可能な形式がない場合は、octreeをブロック構造のグリッドとして書き込むために使用できるファイル形式について提案をいただければ幸いです。理想的には、このフォーマット:

  1. 定義/実装が比較的シンプルで、理想的にはオープンソースで、C / Fortranと互換性があります。
  2. 多数のグリッドブロック(1000以上など)を効率的に処理できます。
  3. 特に細分割境界でグリッドブロックの接続を簡単に指定できます。

私は現在、この目的でSiloを使用していますが、上記の3つの点でより良いスコア(より小さく、より速く、より単純)を探しています。


1
非構造化メッシュが大量のデータを作成するのはなぜですか?たったの500万個の細胞でしょう。これは、VisitまたはParaviewで視覚化するためのかなり小さなデータセットです。
Wolfgang Bangerth

座標と接続はセルごとに指定されるため、ボックスごとに1回だけではなく(たとえば、512セルを含む)。より大きなデータセット(例:2,000万セル以上)の場合、特にグリッドの重要な部分が同じ細分割レベルにある場合、視覚化はブロック構造メッシュの場合よりもはるかに遅くなります。
Jannis Teunissen

おそらく、Visitでサポートされているファイル形式のリストは、この質問に役立ちます。visitusers.org
Jannis Teunissen

1
CHOMBO、SAMRAIなどが視覚化のために何をするのかも見てください。
Abhilash Reddy M 2016

1
リストにBoxLibを追加します。彼らは、AMRデータを視覚化するAMRVisと呼ばれるパッケージを開発しました。コードはLBL Webサイトから入手できます。
Abhilash Reddy M 2016

回答:


2

私の場合、マルチレベルの改良を行っていたとき、以前は異なるレベルのグリッドファイルを個別に作成していました。通常、レベル0は固定されたままのベースの粗いメッシュです。レベル1以上では、パッチごとに異なるファイルを使用しました。レベル1に5つの細かいパッチがある場合、私の戦略は、プログラムの最後にLevel_1_Patch_1、Level_1_Patch_2 ...のように5つの異なるファイルを書き込むことでした(Cでは動的に実行できます(Fortranでは機能しません))。

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

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

ここでは、有限差分構造化グリッドシステムを使用したことを述べておきます。

したがって、すべてのレベルとそれらの.PLTまたは.DATファイルを取得したことがありました。TecPLOTにすべてインポートします。たとえば、レベル1にいくつかの細かいパッチを使用して2レベルのコードを記述していた場合、メッシュはTecplotでは次のようになります。

ここに画像の説明を入力してください

私は構造化されていないグリッドの扱いにはあまり詳しくありませんが、構造化されたグリッドはTecplotでうまく処理されます


あなたのアプローチについて読むのは興味深いですが、これは大きなoctreeにとっては実行可能ではないように思えます。その場合、通常はかなり低速な数千のファイルを読み書きする必要があります。
Jannis Teunissen

1
@JannisTeunissen:Tecplotのブロック構造化ソリューションを使用する場合、すべてのブロックを別々の「ゾーン」(tecplot用語)として同じファイルに書き込むことができます。それらは別々のファイルである必要はありません。ただし、パラレルI / Oはありません。大規模なデータセットは窒息します。ただし、tecplotファイルはParaViewにロードできます(Tecplotは独自仕様です)。ASCII形式は非常に単純です。少し努力すれば、バイナリファイルもtecplot形式で直接書き込むことができます。コードをリンクしてファイルをより簡単に作成できるTecIOと呼ばれる公式ライブラリがあります。
Abhilash Reddy M 2016

これは、(重要なことに)オープンソースであるSiloを使った現在のアプローチよりもうまくいくとは思いません。この問題では、ASCIIファイルは実際には使用できないことに注意してください。
Jannis Teunissen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.