FemtetのVTU出力データ構成
このページでは、Femtetが出力するVTU(VTK XML UnstructuredGrid)ファイルの基本構成と、各データの意味を説明します。
Femtetは解析結果フィールドをVTU形式で出力することができます。ParaviewなどのVTK対応可視化ソフトやPythonでのデータ処理などで利用できます。
出力方法は下記の2通りあります。
- [ツール]タブの[結果フィールドのVTU出力]
- FemtetマクロのCFemtet.OutputResultFieldVTU関数
VTUはメッシュデータ形式です。節点座標、要素接続、節点結果、要素結果、ボディID、材料名などを格納します。
1. 全体構成
VTU出力設定
[結果フィールドのVTU出力]を実行すると表示される設定ダイアログで、次の項目を指定できます。

| 設定グループ | 選択肢 | 説明 |
|---|---|---|
| VTU出力の要素次数 | 1次(推奨:データ処理が高速、ファイルサイズ小) | すべての要素を対応するVTK一次セルとして出力します。 |
| 2次(中間節点を含めて出力) | VTKセルに対応する二次要素を、中間節点を含む二次セルとして出力します。 | |
| データ形式 | バイナリ(推奨:データ処理が高速、ファイルサイズ小) | 数値データをformat="appended"で出力します。 |
| ASCII(テキスト形式) | 数値データをformat="ascii"で出力します。 |
|
| 出力フィールド | すべてのフィールド | 出力可能なすべての結果フィールドをVTUファイルへ出力します。 |
| JSON設定ファイルで指定 | VTUファイルへ出力するフィールドを定義したJSON設定ファイルのパスを指定します。[参照...]からファイルを選択できます。 |
要素次数による違い
1次を選択した場合は、すべての要素を対応するVTK一次セルとして出力します。二次要素の中間節点はPointsとPointDataから除外され、使用する節点番号はVTU用に再採番されます。
2次を選択した場合は、VTKセルに対応するFemtet二次要素について、中間節点を含む二次セルとして出力します。FemtetとVTKで節点の並びが異なる要素は、VTKの節点順序へ変換して出力します。
| Femtet要素 | 2次出力時のVTKセル |
|---|---|
LIN3 |
VTK_QUADRATIC_EDGE |
TRM6 |
VTK_QUADRATIC_TRIANGLE |
QUM8、QUM9 |
VTK_QUADRATIC_QUAD、VTK_BIQUADRATIC_QUAD |
TET10 |
VTK_QUADRATIC_TETRA |
PYR13、PYR14 |
VTK_QUADRATIC_PYRAMID |
PEN15、PEN18 |
VTK_QUADRATIC_WEDGE、VTK_BIQUADRATIC_QUADRATIC_WEDGE |
HEX20、HEX27 |
VTK_QUADRATIC_HEXAHEDRON、VTK_TRIQUADRATIC_HEXAHEDRON |
2次を選択しても、VTKの二次セルに直接対応しない
TRM10、WLIN、WTRM、WQUM系の要素は一次セルとして出力されます。PYR14は底面中心節点を除く13節点を使用してVTK_QUADRATIC_PYRAMIDとして出力されます。メッシュに対応可能な二次要素がない場合は、すべて一次セルとして出力されます。
一次要素と二次要素が混在するメッシュでは、2次を選択した場合、対応可能な二次要素を二次セル、それ以外を一次セルとして同じVTUファイルへ出力します。CellDataは要素単位のデータであるため、要素次数を変更してもデータ数は変わりません。
データブロック
FemtetのVTU出力は、主に次のブロックで構成されます。
| ブロック | 内容 |
|---|---|
FieldData |
ファイル全体のメタ情報、ボディ属性名テーブル、材料名テーブルを格納します。UnstructuredGrid直下に配置されます。 |
Points |
節点座標を格納します。 |
Cells |
要素の接続情報、要素区切り、要素タイプを格納します。 |
PointData |
節点に紐づく結果値を格納します。 |
CellData |
要素に紐づく結果値、ボディIDなどを格納します。 |
<VTKFile type="UnstructuredGrid" version="1.0" byte_order="LittleEndian"> <UnstructuredGrid> <FieldData> ... </FieldData> <Piece NumberOfPoints="1008" NumberOfCells="458"> <Points> ... </Points> <Cells> ... </Cells> <PointData> ... </PointData> <CellData> ... </CellData> </Piece> </UnstructuredGrid> </VTKFile>
2. FieldData:ファイル全体のメタ情報
FieldDataには、節点や要素に直接紐づかない情報を格納します。Piece内ではなく、UnstructuredGrid直下に配置されます。
文字列は直接記述せず、UTF-8で符号化した各バイトを符号なし整数(0~255)の10進数として出力します。各文字列の末尾には終端を示す0を付加します。NumberOfTuplesには、バイト数ではなく文字列数を指定します。
| DataArray名 | 意味 |
|---|---|
Producer |
VTUファイル先頭のXMLコメントに、出力元としてFemtetを記録します。 |
FemtetVTUFileVersion |
Femtet VTU出力仕様のバージョンです。文字列をバイト列の10進数で格納します。 |
BodyAttrNameTable |
BodyIDに対応するボディ属性名のテーブルです。 |
MaterialNameTable |
BodyIDに対応する材料名のテーブルです。 |
<!-- Producer: Femtet --> <!-- Femtet VTU FileVersion: 1.1.0 --> <UnstructuredGrid> <FieldData> <DataArray type="String" Name="FemtetVTUFileVersion" NumberOfTuples="1" format="ascii"> 49 46 49 46 48 0 </DataArray> <!-- BodyAttrNameTable[0]: VOL1 --> <!-- BodyAttrNameTable[1]: VOL2 --> <DataArray type="String" Name="BodyAttrNameTable" NumberOfTuples="2" format="ascii"> 86 79 76 49 0 86 79 76 50 0 </DataArray> <!-- MaterialNameTable[0]: 002_金Au --> <!-- MaterialNameTable[1]: 500_SUS301 --> <DataArray type="String" Name="MaterialNameTable" NumberOfTuples="2" format="ascii"> 48 48 50 95 233 135 145 65 117 0 53 48 48 95 83 85 83 51 48 49 0 </DataArray> </FieldData> <Piece NumberOfPoints="1008" NumberOfCells="458"> ... </Piece> </UnstructuredGrid>
86 79 76 49 0は、末尾の0を除いた各値をバイトとして復元するとVOL1になります。48 48 50 95 233 135 145 65 117 0は、UTF-8として復元すると002_金Auになります。
名称を直接文字列として出力すると、ParaViewなど一部のVTK対応ソフトで正常に読み込めない場合があります。このため、Femtet VTU出力仕様1.0.1では、名称をバイト値の列として格納します。
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内のテーブルで管理されます。VTUファイル上では名称をUTF-8のバイト列として格納しますが、次表では復元後の文字列を示します。
| 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 |
ファイル全体の情報です。節点数・要素数とは直接対応しません。名称テーブルのNumberOfTuplesは文字列数を表します。 |


