エクスポートデータには awFEM Archive (awa) 形式のバイナリファイルと, テキストファイルの2種類に大別されます. メールに添付された awa ファイルは,メールアプリ内でタップすることで, awFEM へインポートすることが出来ます. テキストファイルはエクスポートするのみで,インポートすることは出来ません.
awa ファイルの構造は非公開です.
以下ではテキスト形式のエクスポートファイルのデータ構造について説明します.
※エクスポート・インポート機能を利用するには「制限解除」の購入が必要です.テキストファイルは 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 #ブロック終了
メッシュデータは @mesh から始まり @end で終わるメッシュブロック中に記述され, node ブロックと triangle ブロックが格納されています.
@node から始まり,@end で終わります. 各行にはノードの X 座標と Y 座標が記述されています. ノード番号はノードの出現順位に対応し,先頭はゼロです.
1ファイルに1ブロックのみ現れます.
例は既に示した通りです.
awFEM の要素としては3節点1次要素(三角形要素)のみサポートしています. これは triangle ブロックで記述されます. triangle ブロックの各行は1つの三角形要素に対応します. 各行では,三角形の頂点に対応するノード番号が配置されています. なお,頂点は左回り(反時計回り)の順に配置されます. 要素番号は三角形の出現順位に対応し,ゼロから開始されます.
1ファイルに1ブロックのみ現れます.
例)triangle ブロック @triangle 0 1 2 #要素 0 の節点のノード番号 2 3 0 #要素 1 の節点のノード番号 @end
コンディションデータは @condition から始まり @end で終わるコンディションブロック中に記述され, property ブロック,fix ブロック,cload ブロック,bload ブロックが格納されます.
property ブロックは解析種別と材料定数をキー・バリュー形式で格納します. キーには plane_strain,young,poisson,thickness があります.
1ファイルに1ブロックのみ現れます.
例は既に示した通りです.
拘束条件が指定されます. 複数の 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 ブロックの開始直後に name,value のキーバリュー形式が記述され, その後,nid ブロックが配置されます.
例) @cload name "cload1" value 1 2 @nid 0 1 @end @end
メッシュ境界上の分布荷重が記述されます. 複数の bload ブロックが存在する可能性があります. メッシュ境界上の分布荷重が存在しないばあいには本ブロックは現れません.
bload ブロックの開始直後に name,type,value のキーバリュー形式が記述され, その後,edge ブロックが配置されます.
例) @bload name "bload1" type pressure value 1 0 @edge 0 1 1 2 @end #edge の終わり @end #bload の終わり