Femtet2026.0ヘルプ/マニュアル
 

FemtetのVTU出力データ構成

このページでは、Femtetが出力するVTU(VTK XML UnstructuredGrid)ファイルの基本構成と、各データの意味を説明します。

Femtetは解析結果フィールドをVTU形式で出力することができます。ParaviewなどのVTK対応可視化ソフトやPythonでのデータ処理などで利用できます。

出力方法は下記の2通りあります。

  • [ツール]タブの[結果フィールドのVTU出力]
  • FemtetマクロのCFemtet.OutputResultFieldVTU関数
ポイント
VTUはメッシュデータ形式です。節点座標、要素接続、節点結果、要素結果、ボディID、材料名などを格納します。

1. 全体構成

VTU出力設定

[結果フィールドの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で色分けする

  1. ParaViewでVTUファイルを開きます。
  2. Applyを押します。
  3. ColoringのプルダウンからBodyIDを選択します。

BodyIDで一部のボディだけ表示する

  1. 対象データを選択します。
  2. Filters → Thresholdを選択します。
  3. ScalarsにBodyIDを指定します。
  4. 表示したい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は文字列数を表します。