ビジュアライザーで開くことができる VTK ファイルにメッシュ データを書き込むことで、Fortran で記述された熱水力学コードを改善しています。以前は、データは単純にテキスト ファイルに書き込まれ、ユーザーが手動で操作する必要がありました。2 つのファイルを作成します。1 つは、構造化されたメッシュ セルの頂点とその中のスカラー データを含むスカラー データ用で、もう 1 つはベクター データ用のファイルです。ソリューション アルゴリズムにより、ベクトルはメッシュ セルの面上にあるため、Polydata ポイントを使用してそれらの位置を定義します。
小さな 500 セル メッシュで変更をテストしたところ、問題なく動作しましたが、より大きな 9,000 セル メッシュに移行しようとしました。ベクトルが正しく表示されません。メッシュには、x 方向に 18 個のセル、y 方向に 18 個のセル、z 方向に 29 個のセルがあります。下に添付した図では、y 方向に 18 個のベクトルがあることがわかります。これは正しいですが、y 方向には 7 個のベクトルしかありません。ここでは複雑さを軽減するために、z 方向のメッシュを 3 レベルに減らしました。これがビジュアライザー、VTK ファイル、または私のコードに問題があるかどうかを判断する必要があります。
VTK ファイルを確認したところ、すべて揃っているように見えます。実際、私が行った以前の試みでは、データの印刷が含まれていたため、z 方向の座標が最も速く変化し、次に x、y の順に変化し、z 方向にずれたベクトルのセットが生成されました。x が最も速く変化し、次に y、次に z が上記のように変化するようにします。VTK ファイルの実際の内容は変わらないので、これが違いを生んだことに驚きました。もちろん、オンラインで多くの情報を見つけることができないため、VTK 形式への書き込みには問題があります。以下に書いた VTK ファイルを添付して、見落としがあるかどうかを確認します。これは非常に長いファイルなので、この記事のほとんどのデータを削除し、2 つのヘッダー セクションといくつかのデータ ポイントを残しました。
# vtk DataFile Version 1.0
Vector Data
ASCII
DATASET POLYDATA
POINTS 972 double
0.33500000E-02 0.33500000E-02 0.00000000E+00
0.13000000E-01 0.33500000E-02 0.00000000E+00
0.25600000E-01 0.33500000E-02 0.00000000E+00
0.38200000E-01 0.33500000E-02 0.00000000E+00
0.50800000E-01 0.33500000E-02 0.00000000E+00
0.63400000E-01 0.33500000E-02 0.00000000E+00
... up to 972 values
POINT_DATA 972
VECTORS Axial_Liquid_Mass_Flow_Rate float
0.0000E+00 0.0000E+00 0.9075E-01
0.0000E+00 0.0000E+00 0.1636E+00
0.0000E+00 0.0000E+00 0.1636E+00
0.0000E+00 0.0000E+00 0.1636E+00
0.0000E+00 0.0000E+00 0.1636E+00
0.0000E+00 0.0000E+00 0.1636E+00
... up to 972 values
クリスのコメントを参照して:
まず、コードは実際にはスタッガード メッシュ アプローチに従って 2 つのメッシュを使用します。セル)、2) 運動量方程式が解かれる運動量セル メッシュ (速度は運動量メッシュ セルの中心で定義されます)。スカラー メッシュはユーザーによって定義され、運動量メッシュはその上に構築されるため、運動量セルの中心はスカラー セルの面上にあります。
このようなメッシュは、VTK の直線形式を使用してキャプチャするのが最適だと思いましたが、ここに示すような非正方形または長方形のジオメトリをキャプチャする方法がわかりませんでした。
代わりに、すべてのセル頂点情報を簡単に取得できる非構造化グリッドを使用しました (セルの接続性を考慮する必要がなかったため、コードから出力するのも簡単でした)。運動量セルは、中心がスカラー セルの面上にあるように設定されているため、実際には互いに重なっています。したがって、セルの中心のみが重要です。そのため、メッシュの代わりにポイントを使用して速度ベクトルを定義しました。赤い破線で示されているいくつかの運動量メッシュ セルを追加した場合は、前の図を参照してください。
各スカラー セルに 6 つの配列が関連付けられるようにコードを変更しました。 1) x_location(i,j) - スカラー メッシュ セルの中心のメートル単位の x 位置スカラー メッシュ セルの中心の y 位置 3) z_location(i,j) - スカラー メッシュ セルの中心の z 位置 4) x_size(i,j) - x 方向のスカラー セルのサイズ5) y_size(i,j) - y 方向のスカラー セルのサイズ 6) z_size(i,j) - z 方向のスカラー セルのサイズ
i インデックスは、z 方向に積み重ねられたセル (チャネル) の列を表します。j インデックスは、x、y 方向にまたがるセルのレイヤーを表します。
セルは、i および j インデックスによって一意に識別できます。すべてのスカラー セル データは、これらのインデックス (つまり、密度(i,j)、エンタルピー(i,j)、圧力(i,j) など) に関しても与えられます。