FemtetのVTU出力データ構成
このページでは、Femtetが出力するVTU(VTK XML UnstructuredGrid)ファイルの基本構成と、各データの意味を説明します。
Femtetは解析結果フィールドをVTU形式で出力することができます。ParaviewなどのVTK対応可視化ソフトやPythonでのデータ処理などで利用できます。
出力方法は下記の2通りあります。
- [ツール]タブの[結果フィールドのVTU出力]
- FemtetマクロのCFemtet.OutputResultFieldVTU関数
VTUはメッシュデータ形式です。節点座標、要素接続、節点結果、要素結果、ボディID、材料名などを格納します。
1. 全体構成
注意:解析で2次要素を使用している場合でも、VTU出力ではメッシュは1次要素として出力されます。中間節点はVTUファイルには含まれません。
FemtetのVTU出力は、主に次のブロックで構成されます。
| ブロック | 内容 |
|---|---|
FieldData |
ファイル全体のメタ情報、ボディ属性名テーブル、材料名テーブルを格納します。 |
Points |
節点座標を格納します。 |
Cells |
要素の接続情報、要素区切り、要素タイプを格納します。 |
PointData |
節点に紐づく結果値を格納します。 |
CellData |
要素に紐づく結果値、ボディIDなどを格納します。 |
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian"> <UnstructuredGrid> <Piece NumberOfPoints="1008" NumberOfCells="458"> <FieldData> ... </FieldData> <Points> ... </Points> <Cells> ... </Cells> <PointData> ... </PointData> <CellData> ... </CellData> </Piece> </UnstructuredGrid> </VTKFile>
2. FieldData:ファイル全体のメタ情報
FieldDataには、節点や要素に直接紐づかない情報を格納します。
| DataArray名 | 意味 |
|---|---|
Producer |
VTUファイルの出力元です。例:Femtet |
FileVersion |
Femtet VTU出力仕様のバージョンです。 |
BodyAttrNameTable |
BodyIDに対応するボディ属性名のテーブルです。 |
MaterialNameTable |
BodyIDに対応する材料名のテーブルです。 |
<FieldData> <DataArray type="String" Name="Producer" NumberOfTuples="1" format="ascii"> Femtet </DataArray> <DataArray type="String" Name="FileVersion" NumberOfTuples="1" format="ascii"> 1.0.0 </DataArray> <DataArray type="String" Name="BodyAttrNameTable" NumberOfTuples="2" format="ascii"> VOL1 VOL2 </DataArray> <DataArray type="String" Name="MaterialNameTable" NumberOfTuples="2" format="ascii"> 002_金Au 500_SUS301 </DataArray> </FieldData>
BodyID=0がVOL1 / 002_金Au、BodyID=1がVOL2
/ 500_SUS301に対応します。
3. Points:節点座標
Pointsには節点座標を格納します。NumberOfComponents="3"のため、1節点あたりx
y zの3値です。
<Points> <DataArray type="Float32" NumberOfComponents="3" format="ascii"> 5 20 50 5 17.5 50 ... </DataArray> </Points>
| 項目 | 説明 |
|---|---|
type="Float32" |
座標値を32bit浮動小数点で格納します。 |
NumberOfComponents="3" |
1節点が3成分(X, Y, Z)を持つことを示します。 |
NumberOfPoints="1008" |
この例では1008個の節点があります。 |
4. Cells:要素接続
Cellsには、各要素を構成する節点IDと要素タイプを格納します。
| DataArray名 | 意味 |
|---|---|
connectivity |
各要素を構成する節点IDの並びです。節点IDはPoints内の節点番号を参照します。 |
offsets |
connectivityのどこまでが1要素かを示す累積オフセットです。 |
types |
VTKの要素タイプです。例の10は四面体要素(VTK_TETRA)を表します。 |
<Cells> <DataArray type="Int32" Name="connectivity" format="ascii"> 983 979 952 961 ... </DataArray> <DataArray type="Int32" Name="offsets" format="ascii"> 10 20 ... </DataArray> <DataArray type="UInt8" Name="types" format="ascii"> 10 10 ... </DataArray> </Cells>
5. PointData:節点に紐づく結果
PointDataには、節点ごとの値を格納します。温度や電位など、節点値として扱うスカラー結果と変位、変位後の座標が出力されます。
<PointData Scalars="WATT_TEMPERATURE[deg]-Scalar-Mode0"> <DataArray type="Float32" Name="WATT_TEMPERATURE[deg]-Scalar-Mode0" format="ascii"> 100 100 ... </DataArray> </PointData>
| 例 | 内容 |
|---|---|
WATT_TEMPERATURE[deg]-Scalar-Mode0 |
節点温度です。 |
PointDataの各配列は、節点数NumberOfPointsと同じ個数の値を持ちます。
6. CellData:要素に紐づく結果とBodyID
CellDataには、要素ごとの値を格納します。熱流束、温度勾配などのベクトル結果、応力などのテンソル結果、要素が所属するBodyIDが出力されます。
<CellData Vectors="WATT_HEAT_CURRENT[W/m2]-Vector-Mode0"> <DataArray type="Float32" Name="WATT_HEAT_CURRENT[W/m2]-Vector-Mode0" NumberOfComponents="3" format="ascii"> 1.1641532e-10 -1.1641532e-10 -630000 0 5.8207661e-11 -630000 ... </DataArray> <DataArray type="Int32" Name="BodyID" format="ascii"> 0 0 ... 1 1 </DataArray> </CellData>
| DataArray名 | 内容 |
|---|---|
WATT_HEAT_CURRENT[W/m2]-Vector-Mode0 |
要素ごとの熱流束ベクトルです。NumberOfComponents="3"のため、X/Y/Z成分を持ちます。 |
WATT_TEMPERATURE_GRADIENT[deg/m]-Vector-Mode0 |
要素ごとの温度勾配ベクトルです。 |
BodyID |
要素が属するボディを表すIDです。FieldData内の名称テーブルと対応します。 |
CellDataの各配列は、要素数NumberOfCellsと同じ個数の値を持ちます。
7. BodyIDと名称テーブルの対応
BodyIDは要素ごとに出力されます。ボディ属性名と材料名はFieldData内のテーブルで管理されます。
| BodyID | BodyAttrNameTable | MaterialNameTable |
|---|---|---|
| 0 | VOL1 | 002_金Au |
| 1 | VOL2 | 500_SUS301 |
たとえば、ある要素のBodyIDが1の場合、その要素はボディ属性名VOL2、材料名500_SUS301に対応します。
8. 結果名の読み方
Femtetの結果名は、概ね次のような形式です。
"解析タイプ_物理量"の各種ラベル名は「ユーザー定義フィールドの定義」と同じものです。
解析タイプ_物理量[単位]-データ種別-モード番号
| 例 | 意味 |
|---|---|
WATT_TEMPERATURE[deg]-Scalar-Mode0 |
熱伝導解析の温度スカラー結果、単位はdeg、モード番号が0(過渡解析の場合0sの結果)です。 |
WATT_HEAT_CURRENT[W/m2]-Vector-Mode0 |
熱伝導解析の熱流束ベクトル結果、単位はW/m2、モード番号が0(過渡解析の場合0sの結果)です。 |
-Scalar- |
1成分のスカラー値です。 |
-Vector- |
3成分のベクトル値です。ParaViewではMagnitude表示になることがありますが、内部的にはX/Y/Z成分を保持しています。 |
-Tensor- |
9成分のテンソル値です。成分順は通常 xx, xy, xz, yx, yy, yz, zx, zy, zz です。 |
9. ParaViewでの確認方法
BodyIDで色分けする
- ParaViewでVTUファイルを開きます。
- Applyを押します。
- Coloringのプルダウンから
BodyIDを選択します。
BodyIDで一部のボディだけ表示する
- 対象データを選択します。
- Filters → Thresholdを選択します。
- Scalarsに
BodyIDを指定します。 - 表示したいBodyIDの範囲を指定します。例:
0だけ表示する場合は下限・上限とも0にします。
ベクトル成分を確認する
ParaViewでは、ベクトルを色表示すると初期状態でMagnitude(大きさ)が表示される場合があります。X/Y/Z成分を確認したい場合は、Coloring設定で対象ベクトルの成分を選択してください。
FieldDataにあるBodyAttrNameTableやMaterialNameTableは、ParaViewの通常のColoringやThresholdには直接表示されません。色分けや抽出にはCellDataのBodyIDを使用します。
10. データ数の対応関係
| データ | 値の個数 |
|---|---|
Points |
NumberOfPoints個。この例では1008個です。 |
PointData |
NumberOfPoints個。この例では各配列1008個です。 |
Cells/types |
NumberOfCells個。この例では458個です。 |
CellData |
NumberOfCells個。この例では各配列458個です。 |
FieldData |
ファイル全体の情報です。節点数・要素数とは直接対応しません。 |


