5. AVS/Express PCEにて利用できるデータファイルフォーマット

AVS/Express PCEで可視化を行う時に使用できるデータは、大きく分けて以下の2つのフォーマットが用意されています。

  • AVS Field

2次元や3次元の構造格子のデータを扱うフォーマットです。

  • AVS UCD

Unstructured Cell Dataの略で、非構造格子型のデータを扱うフォーマットです。

5.1. AVS Fieldデータフォーマット

AVS Fieldフォーマットはヘッダー部と物理量データ部、形状データ部の3つのパートで作成されます。 この3つのパートを1つのファイルとして取り扱うことができますが、作成するのに面倒なので、別ファイルとして取り扱うこともできます。 形状が等間隔直交メッシュの場合は、形状データは必要ありません。 データ部に書いてある内容をヘッダー部で説明するような形式になります。データ部はASCII形式でもバイナリ形式でも取り扱うことができます

5.1.1. ヘッダファイル・パラメータ

  • ヘッダファイルのファイル名には必ず拡張子.fldが必要です。
  • ヘッダファイルの最初の行は#AVSと書き込みます。

(2行目からの#はコメントですので#の後に続く文字は全て無視されます)

  • ndim = 値(必須)

…フィールドの計算空間の次元数

  • dim1 = 値(必須)
  • dim2 = 値(必須、ndimの値に依存)
  • dim3 = 値(必須、ndimの値に依存)

…各軸の次元サイズ

  • nspace = 値(必須)

…物理空間の次元数。データが存在する空間が2次元(x、y平面)であるか、3次元(x,y,z)であるかを記述します。

  • veclen = 値(必須)

…各フィールド要素のデータ数

  • data = {byte,integer,float,doubleの中の1つが必須}

…各フィールド要素のデータ数

  • data = {byte,integer,float,doubleの中の1つが必須}

…データ・タイプ

  • field = {uniform,rectilinear,irregularの中の1つが必須}

…フィールドのタイプ

label = 文字列(オプション)

…各要素にタイトルを付ける

  • unit = 文字列(オプション)

…各要素に単位を付ける

以下のvariable・coordにはサブパラメータがあります

  • variable(必須)

…データファイルのフォーマットを指定

  • coord(必須 但し uniformフィールドタイプには不要)

…座標情報のフォーマットを指定

varlable・coordのパラメータコマンド

5.1.1.1. パラメータ

  • n

データ要素数.座標値数を指定

  • file

データ又は座標値が人っているファイル名の指定

  • filetype,ascii,unformatted,binary

5.1.1.2. コマンド

  • skip = n

asciiファイルでは読み飛ばす行数を指定 unformatted,binary では読み飛ばすバイト数を指定(skipのデフォルトは0)

  • offset = m

最初のデータを読み始める前に読み飛ばすカラム数を指定(asciiファイルの時のみ使用)(offsetのデフォルトは0)

  • stride = p

次のデータを読み込むための読み飛ばすカラム数を指定 (binaryと書式なしの場合は p x データ・サイズ) (stride のデフォルトは1)

5.2. AVS Fieldデータ例

5.2.1. スカラーデータ例

次に示すデータのFieldデータを作成します。

小さい文字の数値は座標値で、イタリックの文字はノード上の物理量(スカラー値)です。 このデータの形状データおよび物理量のデータを以下に示します。

形状データ:scalar.geo

0.0   1.0   2.0   3.0   0.0   1.0   2.0   3.0   0.0   1.0   2.0   3.0
0.0   0.0   0.0   0.0   1.0   1.0   1.0   1.0   2.0   2.0   2.0   2.0

物理量データ:scalar.dat

50.   55.   60.   80.   57.   60.   65.   95.   70.   76.   88.   100.

上記のデータに対するAVS Fieldデータを以下に示します。

AVS Fieldデータ:scalar.fld

#AVS
ndim=2
dim1=4
dim2=3
nspace=2
veclen=1
data=float
field=irregular
coord 1 file=scalar.geo filetype=ascii skip=0 offset=0
coord 2 file=scalar.geo filetype=ascii skip=1 offset=0
variable 1 file=scalar.dat filetype=ascii skip=0 offset=0

各行の意味は以下のようになっています。

1行目 1行目は必ず#AVSと書きます。
2行目 2次元格子データなので、ndim=2となります。
3、4行目 i方向の次元数が4、j方向の次元数が3なので、dim1=4,dim2=3となります。
5行目 2次元平面のデータなのでnspaceの値は2になります。
6行目 物理量が1種類だけなので、veclenの値は1になります。
7行目 物理量のデータが浮動小数点のデータなので、dataの指定はfloatになります。
8行目 このデータのタイプはuniformになりますが、各データのX,Y,Z座標値を与えるので、 irregular形式として取り扱います。
9行目 形状ファイルavs.geoの中に1行目から1レコードで書かれてあり読み飛ばす必要はないので、 skip=0,offset=0となります。
10行目 形状ファイルavs.geoの中に2行目から1レコードで書かれてあり始めの一行目だけを 読み飛ばすので、skip=1,offset=0 となります。
11行目 物理量のデータファイル avs.dat の中に、1行目から1レコードで書かれてあり 読み飛ばす必要はないので、skip=0,offset=0となります。

5.2.2. ベクトルデータ例

下記に示すデータのFieldデータを作成します。

小さい文字の数値は座標値で、イタリックの文字はノード上の物理量(ベクトル値)です。 このデータの形状データおよび物理量のデータを以下に示します。

形状データ:vedor.geo

0.0   1.0   1.0   0.0
0.0   0.0   1.0   1.0

物理量データ:vedor.dat

1.0   1.0   1.0   1.0
-1.0   0.0   0.5   1.0

上記のデータに対するAVS Fieldデータを以下に示します。

AVS Fieldデータ:vector.fld

#AVS
ndim = 2
dim1 = 2
dim2 = 2
nspace = 2
veclen = 2
data = float
field = irregular
coord 1 file=vector.geo filetype=ascii skip=0 offset=0
coord 2 file=vector.geo filetype=ascii skip=1 offset=0
variable 1 file=vector.dat filetype=ascii skip=0 offset=0 stride=1
variable 2 file=vector.dat filetype=ascii skip=1 offset=0 stride=1

各行の意味は以下のようになっています。(スカラーデータと違う部分に関してのみ説明します)

3,4行目 i方向の次元数が2、j方向の次元数が2なので、dim1=2,dim2=2となります。
6行目 物理量は、U,Vの組みなので、veclenの値は2になります。
11行目 物理量のデータファイルavs.datの中に、1行目から1レコードで書かれてあり 読み飛ばす必要はないので、skip=0,offset=0となります。
12行目 物理量のデータファイル avs.dat の中に、2行目から1レコードで書かれてあり 一行目だけを読み飛ばすのでskip=0,offset=0となります。

5.3. AVS UCDデータフォーマット

有限要素法等で計算された結果は、フィールドデータフォーマットと違い、構造格子状になっていません。 三角形や、四角形などの要素型になっています。 このようなデータは、UCDデータフォーマットで取り扱います。 UCDデータフォーマットはセル(要素)とノード(節点)で構成され、ノードにデータを与えたり、セルにデータを持たせることができます。

5.3.1. セル(要素)の種類

データに使用できるセルタイプには次のものがあります。各ノードに示されている番号は、ノードの接続の順番を示しています。

上に示すセルに対して、2次要素としてノード問に対しても情報を持つことができます。

5.3.2. データの形式

UCDのファイルフォーマットは、ノードの座標値、データ等の情報を次に示すようにアスキー形式で作成します。

#コメント
<ステップ数>
<サイクルタイプ>
step1 <コメント>
<節点数> <要素数>
<節点番号1> <X> <Y> <Z>
<節点番号2> <X> <Y> <Z>
:
<要素番号1> <マテリアル番号> <要素タイプ> <要素の構成>
<要素番号2> <マテリアル番号> <要素タイプ> <要素の構成>
:
:
<節点データ数> <要素データ数>
<節点データ成分数> <第1成分ベクトル長> <第2成分ベクトル長>
<第1成分名>, <第1成分単位名>
<第2成分名>, <第2成分単位名>
:
:
<節点番号1> <節点データ1> <節点データ1>
<節点番号2> <節点データ2> <節点データ2>
:
:
<要素データ成分数> <第1成分ベクトル長> <第2成分ベクトル長>
<第1成分名>, <第1成分単位名>
<第2成分名>, <第2成分単位名>
:
:
<要素番号1> <要素データ1> <要素データ2> …
:
:
step2 <コメント>
<節点数> <要素数>
<節点番号1> <X> <Y> <Z>
<節点番号2> <X> <Y> <Z>
:
:
<節点データ数> <要素データ数>
<要素データ成分数> <第1成分ベクトル長> <第2成分ベクトル長>
<第1成分名>, <第1成分単位名>
:
:
step3 <コメント>
:
:

ファイル形式の説明は次の通りです。

  1. # データに関する記述の前((2)の部分以前)に存在する#で始まる行は、コメント行として使用することができます。
  2. <ステップ数> ファイル内に書かれているデータのステップ数を記述します。
  3. <サイクルタイプ> 繰り返しのタイプ。data,geom,data_geomから指定します。geomが指定されたときは (4)~(7)の項目が繰り返され、dataが指定されたときは(4)から次のステップまでの項目が繰り返されます。 data-geomが指定されれば、(4)から次のステップまでの項目が繰り返されます。
  4. stepN 各ステップの先頭にはステップ番号を記述します。第1ステップはstep1,第2ステップはstep2…と記述する必要があります。ステップ番号の後には、そのステップに対するコメントを記述することができます。Read_UCDモジュールはこのコメントを出力するので、ビューワー・ウィンドウに表示させることも可能です。
  5. <節点数>,<要素数>節点数および要素数。サイクルタイプがgeomまたはdata_geomの場合はステップ毎に 記述されますが、geomの場合には、第1ステップと同じ値を第2ステップ以降に記述する必要があります。
  6. <節点番号>、,,節点番号と節点の座標値を全ての節点に関して記述します。節点番号は整数値です。連続した番号でなくても構いませんが、重複しないようにして下さい。
  7. <要素番号>整数値です。連続した番号でなくても構いませんが、重複しないようにして下さい。

  8. <マテリアル番号>

要素をグループ分けするのに用いる整数値です。

  • <要素タイプ>

要素のタイプを指定します。要素にはコーナーのみに節点を持つ1次要素と中関節点を持つ2次要素があります。

  • <要素の構成>

要素を構成する節点の番号を記述します。この番号は(6)で記述したものに対応しています。

以上について、すべての要素に関して記述します。

5.3.3. スカラーデータ例

下記に示すデータのFieldデータを作成します。 小さい文字の数値は座標値で、イタリックの細文字はノードの番号です。 イタリックの太文字はセル上の物理量,スカラー値)です。このデータは、節点上ではなく、要素上に物理量が存在する例です。この図のUCDデータを以下に示します。

scalar.inp

1
data
step1
8   3
2   0.   0.   0.
2   1.   0.   0.
3   2.   0.   0.
4   3.   0.   0.
5   0.   1.   0.
6   1.   1.   0.
7   2.   1.   0.
8   3.   1.   0.
2   1 quad 1 2 6 5
2   1 quad 2 3 7 6
3   1 quad 3 4 8 7
2   1
2   1
scalar,
1 0.1
2 0.4
3 0.3

各行の意味は以下のようになっています。

1行目 1ステップのデータなので、ステップ数は1となります。
2行目 ステップ数が1なので、この部分はdataでもgeomでもdata_geomでも構いません。
3行目 全ノード数が8、セル数が3になります。
5-12行目 ノード番号と、ノードのX,Y,Z座標値を示しています。
13-15行目 各セルのセル番号と、セルタイプ、ノードの接続順番を指定します。
16行目 このデータは、節点上ではなく、要素上に1種類の物理量が存在するデータなので、節点データ数は0、要素データ数が1となります。
17行目 1種類のスカラー値のため、データ成分数が1、第1成分ベクトル長は1となります。
18行目 成分名(任意の文字列:scalar)と、その単位名(任意の文字列:)。単位名は、つけなくても構いませんが、成分名の後のコンマ“,“は必ずつけて下さい。
19-21行目 要素番号、要素データを各要素毎に記述します。

5.3.4. ベクトルデータ例

下記に示すデータのFieldデータを作成します。 小さい文字の数値は座標値で、イタリックの細文字はノードの番号です。 イタリックの大文字はセル上の物理量,ベクトル値です。 このデータは、要素上ではなく、節点上に物理量が存在する例です。この図のUCDデータを以下に示します。

vector.inp

1
data
step1
4   1
2   0.   0.   0.
2   1.   0.   0.
3   0.   1.   0.
4   1.   1.   0.
1   1 quad 1 2 4 3
3   0
1   3
Vector-component,
1 0.0 -0.5 0.0
2 0.5 -0.5 0.0
3 0.5 0.0 0.0
4 0.25 0.5 0.0

各行の意味は以下のようになっています。

1行目 1ステップのデータなので、ステップ数は1となります。
2行目 ステップ数が1なので、この部分はdataでもgeomでもdata_geomでも構いません。
3行目 全ノード数が4、セル数が1になります。
5-8行目 ノード番号と、ノードのX,Y,Z座標値を示しています。
9行目 各セルのセル番号と、セルタイプ、ノードの接続順番を指定します。
10行目 このデータは、要素上ではなく、節点上に1種類のベクトル値が存在するデータなので、節点データ数は3、要素データ数が0となります。
11行目 1種類のベクトル値のため、データ成分数が1、第1成分ベクトル長は3となります。
12行目 成分名(任意の文字列:Vector-component)と、その単位名(任意の文字列J。単位名は、つけなくても構いませんが、成分名の後のコンマ“,“は必ずつけて下さい。
13-16行目 節点番号、節点データを各節点毎に記述します。