目次     ⬅︎

8. エクスポート・データ

エクスポートデータには awFEM Archive (awa) 形式のバイナリファイルと, テキストファイルの2種類に大別されます. メールに添付された awa ファイルは,メールアプリ内でタップすることで, awFEM へインポートすることが出来ます. テキストファイルはエクスポートするのみで,インポートすることは出来ません.

awa ファイルの構造は非公開です.

以下ではテキスト形式のエクスポートファイルのデータ構造について説明します.

※エクスポート・インポート機能を利用するには「制限解除」の購入が必要です.

8.1 書式

エンコード

テキストファイルは UTF8 のユニコードでエンコードされています.

データ区切り

空白または改行コードでデータの区切りを認識します. ただし,文字列は " で囲まれ,この中の空白は文字として扱われます.

1行1レコードとして扱われます.

コメント

# 文字から行末まではコメントとして扱われます.

ブロック

@ 文字から始まる行はブロックの開始と終了を表します.

ブロックは @+ブロック名から構成されるヘッダから開始します.

例)@node #ノードブロックの開始

@end はブロックの終了を表します.

ブロックの中にブロックが入れ子状に定義される場合があります. 同じ種類のブロックが複数回記述可能なものもあります.

データの配置

データはブロックの種別に従って,行ごとに直接配置されるものと, 1行にキーとなる文字列とその値の組で配置されるものがあります. 前者のレコード形式はブロック中の位置(行,コラム)が重要な意味を持ち, 例えば,行番号は配列のインデックス(ゼロから始まる),コラム位置がXやY方向などを意味します. 後者のキー・バリュー形式は原則として順不同となります.

例)レコード形式(nodeブロック)
  @node #ブロック開始
   0 0  #ノード 0 の X と Y 座標
   1 0  #ノード 1 の X と Y 座標
   1 1  #ノード 2 の X と Y 座標
   0 1  #ノード 3 の X と Y 座標
  @end #ブロックの終了

例)キー・バリュー形式(propertyブロック)
  @property #ブロック開始
   plane_strain true #平面ひずみ問題か?
   young 210000 #ヤング率
   poisson 0.3  #ポアソン比
   thickness 1  #材料の厚さ
   @end #ブロック終了

8.2 メッシュデータ

メッシュデータは @mesh から始まり @end で終わるメッシュブロック中に記述され, node ブロックと triangle ブロックが格納されています.

node ブロック

@node から始まり,@end で終わります. 各行にはノードの X 座標と Y 座標が記述されています. ノード番号はノードの出現順位に対応し,先頭はゼロです.

1ファイルに1ブロックのみ現れます.

例は既に示した通りです.

triangle ブロック

awFEM の要素としては3節点1次要素(三角形要素)のみサポートしています. これは triangle ブロックで記述されます. triangle ブロックの各行は1つの三角形要素に対応します. 各行では,三角形の頂点に対応するノード番号が配置されています. なお,頂点は左回り(反時計回り)の順に配置されます. 要素番号は三角形の出現順位に対応し,ゼロから開始されます.

1ファイルに1ブロックのみ現れます.

例)triangle ブロック
  @triangle
   0 1 2 #要素 0 の節点のノード番号
   2 3 0 #要素 1 の節点のノード番号
  @end

8.3 コンディションデータ

コンディションデータは @condition から始まり @end で終わるコンディションブロック中に記述され, property ブロック,fix ブロック,cload ブロック,bload ブロックが格納されます.

property ブロック

property ブロックは解析種別と材料定数をキー・バリュー形式で格納します. キーには plane_strain,young,poisson,thickness があります.

1ファイルに1ブロックのみ現れます.

例は既に示した通りです.

fix ブロック

拘束条件が指定されます. 複数の fix ブロックが存在する可能性があります. 拘束条件が存在しない場合には本ブロックは現れません.

fix ブロックの開始直後に,name,fg_dir,value のキーバリュー形式が記述され, その後,nid ブロックが配置されます.

例)
  @fix
   name "fix1"
   fg_dir true true
   value 0 0
  @nid
   0
   1
   2
   3
  @end #nidの終わり
  @end #fixの終わり

cload ブロック

集中荷重が記述されます. 複数の cload ブロックが存在する可能性があります. 集中荷重が存在しない場合には本ブロックは現れません.

cload ブロックの開始直後に name,value のキーバリュー形式が記述され, その後,nid ブロックが配置されます.

例)
  @cload
   name "cload1"
   value 1 2
  @nid
   0
   1
  @end
  @end

bload ブロック

メッシュ境界上の分布荷重が記述されます. 複数の bload ブロックが存在する可能性があります. メッシュ境界上の分布荷重が存在しないばあいには本ブロックは現れません.

bload ブロックの開始直後に name,type,value のキーバリュー形式が記述され, その後,edge ブロックが配置されます.

例)
  @bload
   name "bload1"
   type pressure
   value 1 0
  @edge
   0 1
   1 2
  @end #edge の終わり
  @end #bload の終わり


⬆︎