簡単CAEソフト

セミナー・通信講座
技術情報
SPH粒子法のご紹介 ダウンロード・購入

7. ユーザによるサンプルデータの実行


7.1 AdvTriPatch

7.1.1 解析作業ディレクトリとサンプルデータ置き場の作成

ユーザauserでログイン

%mkdir adventure
%cd adventure
%mkdir samples
%cd samples
%mkdir patchSample
%cd patchSample
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_manual_data01.igs ./data01.igs
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_manual_data01.ptn ./data01.ptn
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_manual_data02.igs ./data02.igs
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_manual_data02.ptn ./data02.ptn

7.1.2 サンプルデータの実行

(1)data01(L字型)

%mkdir data01
%mv data01.* data01
%cd data01
%ls
data01.igs data01.ptn
%ADVENTURE_TriPatch data01 data01
%ls
data01.igs data01.pch data01.ptn dta01_c_mdp.wrl

約1秒で実行終了。節点数(number of nodes)2213。パッチ数(number of elements)4422。PCにファイルを転送してvrwebでパッチを確認した。

(2)data02(直方体)

%cd ../
%mkdir data02
%mv data02.* data02
%cd data02
%ls
data02.igs data02.ptn
%ADVENTURE_TriPatch data02 data02
%ls
data02.igs data02.pch data02.ptn data02_c_mcp.wrl

約3秒で実行終了。節点数5402。パッチ数10,800。
PCにファイルを転送してvrwebでパッチを確認した。

(3)nozzle

%cd ../
%mkdir nozzle
%cd nozzle
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_sample_nozle.igs ./nozzle.igs
%cp ~/tmp/adventure/AdvTriPatch-0.82b/sample_data/adventure_sample_nozle.ptn ./nozzle.ptn
%ls
nozzle.igs nozzle.ptn
%ADVENTURE_TriPatch nozzle nozzle

17秒で実行終了。節点数26,257。パッチ数52,514。
PCにファイルを転送してvrwebでパッチを確認した。

7.2 AdvTetMesh

7.2.1 サンプルデータ置き場の作成

ユーザauserでログイン

%cd adventure
%cd samples
%ls
patchSample/
%mkdir tetMeshSample
%ls
patchSample/ tetMeshSample/
%cd tetMeshSample
%mkdir original
(これはAdvTetMeshに添付されたサンプルの置き場です)
%cd original
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/adventure_manual_data01.pch ./data01.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/adventure_manual_data01.ptn ./data01.ptn
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box0.pch ./box0.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box0.ptn ./box0.ptn
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box1.pch ./box1.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box1.ptn ./box1.ptn
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box2.pch ./box2.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/box2.ptn ./box2.ptn
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/nozzle.pch ./nozzle.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/nozzle.ptn ./nozzle.ptn
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/pot01.pch ./pot01.pch
%cp ~/tmp/adventure/AdvTetMesh-0.81b/sample_data/pot01.ptn ./pot01.ptn
%cd ..
%mkdir fromTriPatch
(これはAdvTriPatchで実際に作成したパッチファイルの置き場です)
%cd fromTriPatch
%cp ../../patchSample/data01/*.pch ./
%cp ../../patchSample/data01/*.ptn ./
%cp ../../patchSample/data02/*.pch ./
%cp ../../patchSample/data02/*.ptn ./
%cp ../../patchSample/nozzle/*.pch ./
%cp ../../patchSample/nozzle/*.ptn ./
%cd ..

7.2.2 実行

%cd original
%advtmesh8m data01 -s -p

6秒でメッシュ生成終了。-sは二次節点生成の意味。-pはVRMLファイル出力の意味。要素数23,324。節点数35,193。

%advtmesh8m box0 -s -p

2秒ぐらいでメッシュ生成終了。要素数2736。節点数3807。

%advtmesh8m box1 -s -p

6分49秒でメッシュ生成終了。要素数201,166。節点数273,191。途中でスライバー要素(体積ゼロの要素)の修正をしていました。これが起動されるとかなり時間がかかるように思われます。

%advtmesh8m box2 -s -p

9分55秒でメッシュ生成終了。要素数386,109。節点数514,626。

%advtmesh8m nozzle -s -p

1分55秒でメッシュ生成終了。要素数96,448。節点数147,438。

%advtmesh8m pot01 -s -p

5秒でメッシュ生成終了。要素数22,199。節点数33,050。

%cd ../fromTriPatch
%advtmesh8m data01 -s -p

6秒でメッシュ生成終了。要素数23,328。節点数35,210。originalのdata01とは若干違ったメッシュになったみたいです。理由は不明。

%advtmesh8m data02 -s -p

28秒でメッシュ生成終了。要素数66,008。節点数97,825。

%advtmesh8m nozzle -s -p

異常終了。最後に以下のメッセージを吐き出して終了しました。
delaunay3D.cc:678: DLNDelaunayConnecter3D : first tetrahedron is not found
このモデルは非常に細い面を含んでおり,TetMesh_P を通さないとだめなモデルだそうです。ということで今回は見送ります。

7.2.3 結果の確認

%cd ../original

data01_e.wrlが表面メッシュです。L字型です。ちゃんとできているようです。
data01_n.wrlが表面メッシュプラス表面節点(赤)、内部節点(水色)。こちらも大丈夫そうです。

box0_e.wrlは直方体です。表面メッシュの筈ですが、何か変です。メッシュ作成に失敗しているのかも知れません。
box_n.wrlで表面メッシュメッシュがほとんどありません。また内部節点が妙に中心にかたまってます。
よく検討したら、これは正常のようです。節点密度分布のつけかたがとても特殊であること(表面には頂点以外の節点がない)と、TetMesh_Pモジュー ルによる表面の修正が行われる前の状態であることがこの変なメッシュができた理由です。しかしこんなサンプル見たらプログラムのバグと思いますよ、誰で も。

box1_e.wrlが表面メッシュです。box0と同様とても変な形をしています。
box1_n.wrlはbox0と同じ特徴があるようです。こちらもbox0と同様特殊な密度設定ということで理解して下さい。

box2_e.wrlは直方体ではなく立方体なので少し違うのですが、box0、box1と同様の問題が発生してます。
box2_n.wrlもbox0と同じ問題です。

nozzle_e.wrlは少し表面にでこぼこがありますが、ちゃんとできているようです。このでこぼこはTetMesh_Pモジュールで除去します。
nozzle_n.wrlは問題なさそうです。

pot01_e.wrlもpot01_n.wrlも問題はなさそうです。回転体の花瓶です。

%cd ../fromTriPatch

data01_e.wrlが表面メッシュです。L字型です。ちゃんとできているようです。
data01_n.wrlが表面メッシュプラス表面節点(赤)、内部節点(水色)。こちらも大丈夫そうです。

data02_e.wrlは直方体です。表面にある円周に沿って節点密度が高くしてあります。それ以外にも頂点を中心として、ある辺を中心として密度分布がつけてあります。ちゃんとできているようです。
data02_n.wrlも大丈夫そうです。

7.3 AdvBCtool

7.3.1 サンプルデータをコピーしてくる

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%ls
patchSample/ tetMeshSample/
%mkdir bcToolSample
%ls
patchSample/ tetMeshSample/ bcToolSample/
%cd bcToolSample
%mkdir original
%cd original
%cp ~/tmp/adventure/AdvBCtool-0.81b/sample/material.dat ./
%cp ~/tmp/adventure/AdvBCtool-0.81b/sample/mesh_tet1.msh ./
%cp ~/tmp/adventure/AdvBCtool-0.81b/sample/mesh_tet2.msh ./
%cp ~/tmp/adventure/AdvBCtool-0.81b/sample/mesh_hex1.msh ./
%cp ~/tmp/adventure/AdvBCtool-0.81b/sample/mesh_hex2.msh ./
%cd ..
%mkdir fromTetMesh
%cd fromTetMesh
%cp ../../tetMeshSample/original/*.msh ./
%cp ../original/material.dat ./
%ls
material.dat mesh_hex1.msh mesh_hex2.msh mesh_tet1.msh mesh_tet2.msh
%cd ..
%mkdir fromTriPatch
%cd fromTriPatch
%cp ../../tetMeshSample/fromTriPatch/*.msh ./
%cp ../original/material.dat ./
%ls
data01.msh data02.msh material.dat

7.3.2 メッシュの表面抽出実行

%cd ../original
%msh2pcg mesh_hex1.msh 4
4は面グループを識別するときのパラメータです。180°/4 = 45°を超えると別の面とみなします。

一瞬で終了しました。同様に
%msh2pcg mesh_hex2.msh 4
%msh2pcg mesh_tet1.msh 4
%msh2pcg meth_tet2.msh 4
いずれも一瞬で終了しました。

%ls
material.dat mesh_hex2.msh mesh_tet1_4.fgr mesh_tet2_4.pcg
mesh_hex1.msh mesh_hex2_4.fgr mesh_tet1_4.pcg mesh_tet2_4.pch
mesh_hex1_4.fgr mesh_hex2_4.pcg mesh_tet1_4.pch mesh_tet2_4.trn
mesh_hex1_4.pcg mesh_hex2_4.pch mesh_tet1_4.trn
mesh_hex1_4.pch mesh_hex2_4.trn mesh_tet2.msh
mesh_hex1_4.trn mesh_tet1.msh mesh_tet2_4.fgr

%cd ../fromTetMesh
%msh2pcg data01.msh 4
2秒くらいで終了。
%msh2pcg box0.msh 4
一瞬で終了。
%msh2pcg box1.msh 4
8秒くらいで終了。
%msh2pcg box2.msh 4
14秒くらいで終了。
%msh2pcg nozzle.msh 18
failed rearrangement
と表示されます。20, 10, 36でも試してみましたが、いづれも失敗です。
%msh2pcg pot01.msh 4
2秒くらいで正常終了。
%ls
box0.msh box1_4.fgr box2_4.pcg data01_4.pch material.dat pot01_4.pch
box0_4.fgr box1_4.pcg box2_4.pch data01_4.trn nozzle.msh pot01_4.trn
box0_4.pcg box1_4.pch box2_4.trn data01_6.fgr nozzle_4.fgr
box0_4.pch box1_4.trn data01.msh data01_6.pcg pot01.msh
box0_4.trn box2.msh data01_4.fgr data01_6.pch pot01_4.fgr
box1.msh box2_4.fgr data01_4.pcg data01_6.trn pot01_4.pcg

%cd ../fromTriPatch
%msh2pcg data01.msh 4
1秒くらいで終了しました。
%msh2pcg data02.msh 4
4秒くらいで終了しました。
%ls
data01.msh data01_4.pch data02_4.fgr data02_4.trn
data01_4.fgr data01_4.trn data02_4.pcg material.dat
data01_4.pcg data02.msh data02_4.pch

7.3.3 境界条件設定

7.3.3.1 GUIツールの立ち上げ

%cd ../original
%bcGUI mesh_hex1_4.pch mesh_hex1_4.pcg&

起動は問題ありません。

7.3.3.2 変位拘束と面荷重の設定

(1)シフトキーを押しながらマウスを左クリックして節点を選択する。
(2)マウスの右クリックで節点に隣接する面を順番に選択できる。(Y軸に垂直な面でYが小さい方)
(3)メニューで
BC > Add Displacement
(4)現れたダイアログボックスで取り敢えずX,Y,Z全てをチェックする。
(5)OKボタンをクリックする。
(6)さっきとは別の面を選択する。
(7)メニューで
BC > Add Load
(8)現れたダイアログボックスで適当な方向(例えばX)をチェックして、荷重の大きさ(例えば50.)を入力する。Zに垂直な面でZが大きい方にせん断荷重を負荷しました。

7.3.3.3 境界条件の保存

(1)メニューで
File > Save Condition

mesh_hex1_4

を入力するとmesh_hex1_4.cndが作成された。

7.3.3.4 境界条件の確認

(1)メニューで
View > Boundary Condition > View Load

荷重を設定した面がワインカラーで表示される。

(2)メニューで
View > Boundary Condition >View Displacement

荷重を設定した面が濃い緑色で表示される。

7.3.4 一体型モデル生成

%cd
%cd adventure/samples/bcToolSample
%makefem mesh_hex1.msh mesh_hex1_4.fgr mesh_hex1_4.cnd material.dat mesh_hex1_4.adv -t mesh_hex1_4.trn
一瞬で終了した。

7.3.5 結果確認

%ls mesh_hex1*
mesh_hex1.msh mesh_hex1_4.cnd mesh_hex1_4.pcg mesh_hex1_4.trn
mesh_hex1_4.adv sampel1_4.fgr mesh_hex1_4.pch

7.3.6 他のデータでも実行

他のデータでも同じことを順に実行する。

(1)AdvBcTool >mesh_hex2

%bcGUI mesh_hex2_4.pch mesh_hex2_4.pcg&

底面完全固定。荷重は上面にZ軸方向に100.のせん断荷重を負荷する。mesh_hex2_4.cndで保存。

%makefem mesh_hex2.msh mesh_hex2_4.fgr mesh_hex2_4.cnd material.dat mesh_hex2_4.adv -t mesh_hex2_4.trn
一瞬で終了した。

(2)AdvBcTool >mesh_tet1

%bcGUI mesh_tet1_4.pch mesh_tet1_4.pcg&

Z軸に垂直な面を完全固定。荷重は上面にY軸方向に100.の垂直荷重を負荷する。mesh_tet1_4.cndで保存。

%makefem mesh_tet1.msh mesh_tet1_4.fgr mesh_tet1_4.cnd material.dat mesh_tet1_4.adv -t mesh_tet1_4.trn
一瞬で終了した。

(3)AdvBcTool >mesh_tet2

%bcGUI mesh_tet2_4.pch mesh_tet2_4.pcg&

上面を完全固定。荷重は底面にY軸方向に100.の垂直荷重を負荷する。mesh_tet2_4.cndで保存。

%makefem mesh_tet2.msh mesh_tet2_4.fgr mesh_tet2_4.cnd material.dat mesh_tet2_4.adv -t mesh_tet2_4.trn
一瞬で終了した。
%cd ../fromTetMesh

(4)AdvTetMesh > data01

%bcGUI data0_4.pch data0_4.pcg&

L字型の1つの端部を完全固定。荷重は他方の端部に面に垂直(Y軸方向)に100.の大きさのものを負荷する。data01_4.cndで保存。

%makefem data01.msh data01_4.fgr data01_4.cnd material.dat data01_4.adv -t data01_4.trn
0.5秒で終了した。

(5)AdvTetMesh > box0

%bcGUI box0_4.pch box0_4.pcg&

底面を完全固定。荷重は上面の窪みにある小さな三角形に与えようとしたが、節点を選択しても
Nothing was selected
と文句を言われてしまった。また
View > Wire
にすると窪みを形成する線が消えてしまう。どうもこれはmsh2pcgを実行する際の180°/4という設定がよくなかったのでしょう。180°/18ぐらいでやりなおしてみましょう。一旦bcGUIは終了。
%msh2pcg box0.msh 18
%bcGUI box0_18.pch box0_18.pcg&
底面の窪みの中心の凹8角形を完全固定。また荷重は上面の窪みの中心の6角形にZ軸方向に100.の垂直荷重を負荷する。box0_18.cndで保存。

%makefem box0.msh box0_18.fgr box0_18.cnd material.dat box0_18.adv -t box0_18.trn
一瞬で終了した。

(6)AdvTetMesh > box1

%bcGUI box1_4.pch box1_4.pcg&

これも面グループ識別のパラメータが小さすぎたようである。一旦bcGUIを終了して、
%msh2pcg box1.msh 18
8秒くらいで終了しました。
%bcGUI box1_18.pch box1_18.pcg&
ワイヤフレーム表示でも上面の窪みの中に線が浮いて見えるが取り敢えず進めてみます。側面の1つを完全固定します。上面の窪み全体をZ軸方向の100.の力で押します。box1_18.cndで保存します。

%makefem box1.msh box1_18.fgr box1_18.cnd material.dat box1_18.adv -t box1_18.trn
4秒くらいで終了した。

(7)AdvTetMesh > box2

%bcGUI box2_4.pch box2_4.pcg&

これも面グループ識別のパラメータが小さすぎたようである。一旦bcGUIを終了して、
%msh2pcg box2.msh 18
15秒くらいで終了しました。
%bcGUI box2_18.pch box2_18.pcg&
底面の窪みの中心の雪印のような多角形を完全固定します。上面の窪み全体にY軸方向の100.のせん断力を負荷します。box2_18.cndで保存します。

%makefem box2.msh box2_18.fgr box2_18.cnd material.dat box2_18.adv -t box2_18.trn
10秒くらいで終了しました。

(8)AdvTetMesh > nozzle

面グループ生成に失敗したので実行しません。

(9)AdvTetMesh > pot01

%bcGUI pot01_4.pch pot01_4.pcg&

ワイヤフレーム表示だと底面と上面のみが表示されます。これはやむを得ないですね。
底面を完全固定します。上面にX軸方向の100.のせん断力を負荷します。pot01_4.cndで保存します。

%makefem pot01.msh pot01_4.fgr pot01_4.cnd material.dat pot01_4.adv -t pot01_4.trn
1秒くらいで終了しました。
%cd ../fromTriPatch

(10)AdvTriPatch > data01

%bcGUI data01_4.pch data01_4.pcg&

L字型のX軸に垂直な端部を完全固定。荷重は固定面に平行な長細い面で凸になっているほうに負荷します。X方向に100.の大きさのものを負荷します。data01_4.cndで保存します。

%makefem data01.msh data01_4.fgr data01_4.cnd material.dat data01_4.adv -t data01_4.trn
0.5秒くらいで終了しました。

(11)AdvTriPatch > data02

%bcGUI data02_4.pch data02_4.pcg&

側面を完全固定します。広い方の側面にZ軸方向の100.の垂直力を負荷します。data02_4.cndで保存します。

%makefem data02.msh data02_4.fgr data02_4.cnd material.dat data02_4.adv -t data02_4.trn
3秒くらいで終了しました。

7.4 AdvMetis

7.4.1 サンプルデータをコピーしてくる

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%ls
bcToolSample/ patchSample/ tetMeshSample/
%mkdir metisSample
%ls
bcToolSample/ metisSample/ patchSample/ tetMeshSample/
%cd metisSample
%mkdir original
%cd original
%cp ~/tmp/adventure/AdvMetis-0.61/sample_data/cube.adv ./
%cd ../
%mkdir fromBcTool
%cd fromBcTool
%cp ../../bcToolSample/original/*.adv ./
%ls
mesh_hex1_4.adv mesh_hex2_4.adv mesh_tet1_4.adv mesh_tet2_4.adv
%cd ..
%mkdir fromTetMesh
%cd fromTetMesh
%cp ../../bcToolSample/fromTetMesh/*.adv ./
%ls
box0_18.adv box1_18.adv box2_18.adv data01_4.adv pot01_4.adv
%cd ..
%mkdir fromTriPatch
%cd fromTriPatch
%cp ../../bcToolSample/fromTriPatch/*.adv ./
%ls
data01_4.adv data02_4.adv
%cd ..

7.4.2 実行

%cd original
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis cube.adv . 200

約30秒で
hostName: Connection refused
が表示されました。仕方ないので強制終了しました。過去の日記でもヒントは得られませんでした。取り敢えずpart数の指定を2から1に減らして見ました。すると

***Cannot bisect a graph with 0 vertices!
***You are trying to partition a graph into too many parts!
と言われました。~/tmp/adventure/AdvMetis-0.61/sample_data/cube.txtの中身を見ると、節点数125で、要素数は64でした。やはりドメインの200は多すぎますね。

更に、GNOMEから出たり、一旦ログアウトしたりしてから
%mpirun -np 2 /home/advp/bin/adventure_metis cube.adv . 50
を実行してみましたがだめです。ふとrshが気になったので
%rsh hostName
を実行したところ同じ30秒後に
hostName: Connection refused
が表示されました。ということでrshを入れます。

次にrpmを実行します。
%su
#rpm -i rsh-server-0.17-2.5.i386.rpm
#exit

更に
%su
#emacs /etc/hosts.equiv

localhost.localdomain
hostName
と書きました。
#exit
依然として
%rsh hostName
は拒否されます。どうもinetdを立ち上げなければいけないようです。
また別の情報によりますと、その前にinetdをインストールしなくてはいけないようです。更にまた別の情報によるとinetdはxinetdに置き換わったみたいです。

xinetdの置き場です。
http://www.xinetd.org/

xinetdの情報のページに従ってインストールします。
$su
#mv xinetd-2.3.3.tar.gz /usr/local/src/
#cd /usr/local/src
#gunzip -c xinetd-2.3.3.tar.gz | tar xvf -
#cd xinetd-2.3.3
#./configure
#make
#make install
#cp ./xinetd/sample.conf /etc/xinetd.conf
xinetd.confを編集します。only_fromはlocalhostだけに変更しておきます。変更部分だけ書きます。
defaults
{

only_from = localhost

}
それ以下はばっさり削除します。そして以下の1行を追加します。
includedir /etc/xinetd.d
#ls /etc/xinetd.d
rexec rlogin rsh rsync
#emacs /etc/xinetd.d/rsh
disable = yesをnoに変更します。変更部分だけ書きます。
service shell
{

disable = no

}
% rpm -qa | grep xinetd
で調べてみましたが、ちゃんとインストールされてないようです。
% ls /etc/rc.d/init.d/
でもそれらしきものが表示されません。
rpmでもう一度やり直してみます。検索してxinetd-2.3.3-1.i386.rpmをダウンロードして来ました
%su
#rpm -ivh xinetd-2.3.3-1.i386.rpm
#exit
%ls /etc/rc.d/init.d/
.... xinetd ...
ようやくインストールできたみたいです。
さて、xinetdを起動します。
%ps axww| grep xinetd
で何も表示されないので、まだ動いてません。
%su
#/etc/rc.d/init.d/xinetd start
Starting xinetd:      [ OK ]
#exit
%ps axww|grep xinetd
20246 ?     S   0:00 xinetd -stayalive -reuse -pidfile /var/run/xinetd.pid
ようやくxinetdは動き出しました。
%rsh hostName
hostName: Connection refused
まだrshは立ち上がってくれません。
%ls /etc/rc.d/init.d/
で表示されるものの中にrshdが含まれていません。これが問題のようです。その前に/etc/xinetd.d/の下のファイルがroot以外では読めないようにしておきます。
%su
#chmod -R 600 /etc/xinetd.d/
結局いろいろ試行錯誤した結果/etc/xinetd.confの中身を修正したら解決しました。
defaults
{

only_from = localhost

}
がいけなかったようです。削除しました。ついでに

disabled = tftp

も削除しました。結局
defaults
{

instances = 25
log_type = FILE /var/log/servicelog
log_on_success = HOST PID
log_on_failure = HOST RECORD

}

includedir /etc/xinetd.d
が全文です。それから/etc/xinetd.d/のなかの設定ファイルを全部開いて必要なもの以外はdisable = yesになっていることを確認しました。
 さてもう一度metisを擬似並列で走らせて見ます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis cube.adv . 50
rank 0 Process ID:20750
rank 1 Process ID:20754
とにかく反応しました。しかししばらくして
***Cannot bisect a graph with 0 vertices!
***You are trying to partition a graph into too many parts!
が表示されました。2つのマシンに分割したので50を25ぐらいに減らした方が良さそうです。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis cube.adv . 25
正常終了したようです。
%ls ./model
advhddm_in_0.adv advhddm_in_1.adv
%cd ../fromBcTool
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex1_4.adv . 100
too many parts!が出ます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex1_4.adv . 50
too many parts!がまだ出ます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex1_4.adv . 15
でようやく成功。
%ls
mesh_hex1_4.adv mesh_hex2_4.adv mesh_tet1_4.adv mesh_tet2_4.adv model
出力ファイルディレクトリ名modelとその中のファイル名が入力ファイル名によらず同じなので名前を変更します。
%mv model mesh_hex1_4_model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex2_4.adv . 15
で成功。
%mv model mesh_hex2_4_model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_tet1_4.adv . 15
%mv model mesh_tet1_4_model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_tet2_4.adv . 15
%mv model mesh_tet2_4_model
%cd ../fromTetMesh
次のモデルは先ほどより大きいです。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis data01_4.adv . 500
しかし3秒以内には終わります。
%mv model data01_4_model
今度のモデルは20万要素ぐらいありますから大きいです。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box1_18.adv . 5000
1分45秒で終了。
%mv model box1_18_model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box2_18.adv . 10000
5分38秒で終了。
%mv model box2_18_model
次は2万要素ぐらいのモデル
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis pot01_4.adv . 500
4秒くらいで終わりました。
%mv model pot01_4_model
%cd ../fromTriPatch
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis data01_4.adv . 500
7秒くらいで終了しました。
%mv model data01_4_model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis data02_4.adv . 1000
13秒で終了しました。
%mv model data01_4_model

7.4.3 結果の確認

例えば
%ls data01_4_model
advhddm_in_0.adv advhddm_in_1.adv

7.4.4 ネットワーク非接続状態での実行テスト

一般ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%cd metisSample
%ls
fromBcTool fromTetMesh fromTriPatch original
%cd original
%rm -R model
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis cube.adv . 15

0.5秒で終了。問題はないようです。

7.5 AdvSolid

7.5.1 サンプルデータをコピーしてくる

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%ls
bcToolSample/ metisSample/ patchSample/ tetMeshSample/
%mkdir solidSample
%ls
bcToolSample/ metisSample/ patchSample/ solidSample/ tetMeshSample/
%cd solidSample
%mkdir original
%cd original
%cp -R ~/tmp/adventure/AdvSolid-0.81b/sample_data/cube_p2d2/model/ ./
%cp ~miyoshi/adventure/AdvSolid-0.81b/sample_data/advsolid.conf ./
%cd ../
%mkdir fromMetis
%cp -R ../metisSample/original/model/ ./fromMetis/
%mkdir fromBcTool
%cp -R ../metisSample/fromBcTool/*model/ ./fromBcTool/
%ls fromBcTool
mesh_hex1_4_model mesh_hex2_4_model mesh_tet1_4_model mesh_tet2_4_model
%mkdir fromTetMesh
%cp -R ../metisSample/fromTetMesh/*model/ ./fromTetMesh/
%ls fromTetMesh
box0_18_model box1_18_model box2_18_model data01_4_model pot01_4_model
%mkdir fromTriPatch
%cp -R ../metisSample/fromTriPatch/*model/ ./fromTriPatch/
%ls
data01_4_model data02_4_model
%emacs advsolid.conf

#MPIRUN=/usr/bin/mpirun

MPIRUN=/usr/local/bin/mpirun

に変更。

DATADIR=cube_p2d2

DATADIR=.

に変更。こうすると./model/の下の入力ファイルが読み込まれるようになってます。

7.5.2 実行

%advsolid -conf advsolid.conf
コンマ秒で終了しました。正常終了のようです。
%ls
advsolid.conf model result run.log
%ls result
advhddm_out_0.adv advhddm_out_1.adv

Metisで提供されたサンプルデータの解析です。
%cd ../fromMetis
%cp ../original/advsolid.conf ./
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
どうも1partあたりの領域数が多すぎるかも知れません。このモデルは64要素しかありません。従って領域数は2ぐらいで良いでしょう。
%cd ../../metisSample/original
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis cube.adv . 2
%cd ../../solidSample/fromMetis/
%cp -R ../../metisSample/original/model ./
%advsolid -conf advsolid.conf
合計で0.05秒で終了。

BcToolで提供されたサンプルデータの解析です。
%cd ../fromBcTool
%cp ../original/advsolid.conf ./
%ls
mesh_hex1_4_model mesh_hex2_4_model mesh_tet1_4_model mesh_tet2_4_model
%mv mesh_hex1_4 model model
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
1partあたりの領域数を減らして作り直します。
%cd ../../metisSample/fromBcTool
要素数27なので2で十分
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex1_4.adv . 2
%rm -R mesh_hex1_4_model
%cp -R model ../../solidSample/fromBcTool/
%mv model mesh_hex1_4_model
%cd ../../solidSample/fromBcTool/
%advsolid -conf advsolid.conf
合計で0.04秒で終了。
%mv model mesh_hex1_model
%mv result mesh_hex1_result

次のモデルです。
%mv mesh_hex2_model model
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
1partあたりの領域数を減らして作り直します。
%cd ../../metisSample/fromBcTool
要素数27なので2で十分
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex2_4.adv . 2
%rm -R mesh_hex2_4_model
%cp -R model ../../solidSample/fromBcTool/
%mv model mesh_hex2_4_model
%cd ../../solidSample/fromBcTool/
%advsolid -conf advsolid.conf
...
[0] Warning!! Element stiffness matrix has negative diagonal at Element x, Subdomain x, Part x
がいくつも出ます。これはBcToolの添付サンプルです。しかし一応解析は終了している。合計1.6秒。
これは六面体要素のモデルです。表面は3x3の正方形に切ってあります。変位拘束は底面完全固定。荷重は上面にZ軸方向に100.のせん断荷重を負荷して ます。これを別のものにやり直してみます。底面完全固定は同じで、上面はY方向に100.の垂直力を負荷します。これをmesh_hex2_4.cond に上書き保存します。そして、一体モデルを作成します。
%cd ../../bcToolSample/original
%makefem mesh_hex2.msh mesh_hex2_4.fgr mesh_hex2_4.cnd material.dat mesh_hex2_4.adv -t mesh_hex2_4.trn
出来上がった*.advモデルをmetisSample/の方に移動します。
%cp mesh_hex2_4.adv ../../metisSample/fromBcTool/
領域分割を行います。
%cd ../../metisSample/fromBcTool
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex2_4.adv . 2
古いモデルは削除
%rm mesh_hex2_4_model
出来たばかりのモデルをsolidSample/の方にコピーします。
%cp -R model/ ../../solidSample/fromBcTool/
%mv model mesh_hex2_model
%cd ../../solidSample/fromBcTool/
%rm -R mesh_hex2_model
%advsolid -conf advsolid.conf
やはり
[0] Warning!! Element stiffness matrix has negative diagonal at Element x, Subdomain x, Part x
が出ます。境界条件では解決しなさそうです。今度は領域数を1に減らしてMetisをかけてみます。
%mv model mesh_hex2_model
%rm -R mesh_hex2_result
%mv result mesh_hex2_result
%cd ../../metisSample/fromBcTool
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_hex2_4.adv . 2
%cp -R model/ ../../solidSample/fromBcTool/
%mv model mesh_hex2_model
%cd ../../solidSample/fromBcTool/
%advsolid -conf advsolid.conf
やはり
[0] Warning!! Element stiffness matrix has negative diagonal at Element x, Subdomain x, Part x
が出ます。モデル自体の問題ではないか。またはWarningは単に無視すれば良いのかも知れない。

次のモデルです。
%mv mesh_tet1_4_model model
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
1partあたりの領域数を減らして作り直します。
%cd ../../metisSample/fromBcTool
要素数44なので2で十分
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_tet1_4.adv . 2
%rm -R mesh_tet1_4_model
%cp -R model ../../solidSample/fromBcTool/
%mv model mesh_tet1_4_model
%cd ../../solidSample/fromBcTool/
%advsolid -conf advsolid.conf
合計で0.01秒で終了。
%mv model mesh_tet1_model
%mv result mesh_tet1_result

次のモデルです。
%mv mesh_tet2_4_model model
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
1partあたりの領域数を減らして作り直します。
%cd ../../metisSample/fromBcTool
要素数78なので2で十分
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis mesh_tet1_4.adv . 2
%rm -R mesh_tet2_4_model
%cp -R model ../../solidSample/fromBcTool/
%cd ../../solidSample/fromBcTool/
%advsolid -conf advsolid.conf
合計で0.08秒で終了。
%mv model mesh_tet2_model
%mv result mesh_tet2_result

TetMeshで提供されたサンプルデータの解析です。
data01_4
%cd ../fromTetMesh
%cp ../original/advsolid.conf ./
%ls
advsolid.conf box1_18_model data01_4_model
box0_18_model box2_18_model pot01_4_model
%mv data01_4_model model
%advsolid -conf advsolid.conf
合計470秒ぐらいで終了しました。
%mv model data01_4_model
%mv result data01_4_result

box0_18
%mv box0_18_model model
%advsolid -conf advsolid.conf
...
Error on reading domain data
[0]On part 0 domain 1, number of elements is 0!!!
1partあたりの領域数を減らして作り直します。
%cd ../../metisSample/fromTetMesh
Metisで領域分割したときのパラメータがちゃんとメモされてませんでした。2736要素なので25領域でやってみます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box0_18.adv . 25
%rm -R box0_18_model
%cp -R model ../../solidSample/fromTetMesh/
%cd ../../solidSample/fromTetMesh/
%advsolid -conf advsolid.conf
3208秒実行しても収束しないので中止しました。モデルに問題があるのでしょう。TetMesh_Pを使わなくてはいけないようです。
%mv model box0_18_model
%mv result box0_18_result

box1_18
%mv box1_18_model model
%advsolid -conf advsolid.conf
[0] Warning!! Element stiffness matrix has negative diagonal at Element x, Subdomain x, Part x
が出ました。結果も作られませんでした。
%mv model box1_18_model
%mv result box1_18_result

box2_18
%mv box2_18_model model
%advsolid -conf advsolid.conf
[0] Warning!! Element stiffness matrix has negative diagonal at Element x, Subdomain x, Part x
が出ました。それ以外に
p1_7755: p4_error: net_recv read: probable EOF on socket: 1
などが表示されました。結果も作られませんでした。
%mv model box2_18_model
%mv result box2_18_result


pot01_4
%mv pot01_4_model model
%advsolid -conf advsolid.conf
2台の擬似並列で計算しました。1台目のuser time は185秒、2台目は177秒でした。正常終了のようです。
%mv model pot01_4_model
%mv result pot01_4_result

TriPatchで提供されたサンプルデータの解析です。
%cd ../fromTriPatch
%mv data01_4_model model
%cp ../original/advsolid.conf ./
%advsolid -conf advsolid.conf
2台の擬似並列で計算しました。1台目のuser time は232秒、2台目は244秒でした。正常終了のようです。
%mv model data01_4_model
%mv result data01_4_result

次のモデルです。
%mv data02_4_model model
%advsolid -conf advsolid.conf
2台の擬似並列で計算しました。1台目のuser time は605秒、2台目は600秒でした。正常終了のようです。
%mv model data02_4_model
%mv result data02_4_result

7.5.3 ネットワーク非接続状態での実行テスト

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%cd solidSample
%ls
fromBcTool fromMetis fromTetMesh fromTriPatch original
%cd original
%ls
advsolid.conf model result run.log
%rm -R result/
%rm run.log

2partのモデルです。

%advsolid -conf advsolid.conf

合計0.04秒で正常終了。

7.6 AdvVisual

7.6.1 サンプルデータをコピーしてくる

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%ls
bcToolSample/ metisSample/ patchSample/ solidSample/ tetMeshSample/
%mkdir visualSample
%ls
bcToolSample/ patchSample/ tetMeshSample/
metisSample/ solidSample/ visualSample/
%cd visualSample
%mkdir fromBcTool
まずBcToolで提供されたmesh_hex2モデルの解析結果を表示してみます。これは解析時に変なWarningが出たものです。(後でソルバーが六面体二次要素に対応してないことが原因だと言うことが分りました)
%cd fromBcTool
%cp -R ../../solidSample/fromBcTool/mesh_hex2_model/ ./model
%cp -R ../../solidSample/fromBcTool/mesh_hex2_result/ ./result
%ls model/
advhddm_in_0.adv advhddm_in_1.adv
%ls result/
%advhddm_out_0.adv advhddm_out_1.adv
他のサンプルもコピーします。
%cp -R ~tmpadventure/AdvVisual-0.2b/examples/test/ ./original/
%mkdir fromSolid
%cp -R ../solidSample/original/model/ ./fromSolid/
%cp -R ../solidSample/original/result/ ./fromSolid/
%mkdir fromMetis
%cp -R ../solidSample/fromMetis/model/ ./fromMetis/
%cp -R ../solidSample/fromMetis/result/ ./fromMetis/
%mv fromBcTool mesh_hex2
%mkdir fromBcTool
%mv mesh_hex2 fromBcTool
%mkdir fromBcTool/mesh_hex1
%cp -R ../solidSample/fromBcTool/mesh_hex1_model fromBcTool/mesh_hex1/model
%cp -R ../solidSample/fromBcTool/mesh_hex1_result fromBcTool/mesh_hex1/result
%mkdir fromBcTool/mesh_tet1
%cp -R ../solidSample/fromBcTool/mesh_tet1_model fromBcTool/mesh_tet1/model
%cp -R ../solidSample/fromBcTool/mesh_tet1_result fromBcTool/mesh_tet1/result
%mkdir fromBcTool/mesh_tet2
%cp -R ../solidSample/fromBcTool/mesh_tet2_model fromBcTool/mesh_tet2/model
%cp -R ../solidSample/fromBcTool/mesh_tet2_result fromBcTool/mesh_tet2/result
%mkdir fromTetMesh
%mkdir fromTetMesh/data01_4
%cp -R ../solidSample/fromTetMesh/data01_4_model fromTetMesh/data01_4/model
%cp -R ../solidSample/fromTetMesh/data01_4_result fromTetMesh/data01_4/result
%mkdir fromTetMesh/pot01_4
%cp -R ../solidSample/fromTetMesh/pot01_4_model fromTetMesh/pot01_4/model
%cp -R ../solidSample/fromTetMesh/pot01_4_result fromTetMesh/pot01_4/result
%mkdir fromTriPatch
%mkdir fromTrPatch/data01_4
%cp -R ../solidSample/fromTriPatch/data01_4_model fromTriPatch/data01_4/model
%cp -R ../solidSample/fromTriPatch/data01_4_result fromTriPatch/data01_4/result
%mkdir fromTriPatch/data02_4
%cp -R ../solidSample/fromTriPatch/data02_4_model fromTriPatch/data02_4/model
%cp -R ../solidSample/fromTriPatch/data02_4_result fromTriPatch/data02_4/result

7.6.2 sysファイルとinpファイルの準備

*.sys

%cd ..
%cp ~/tmp/adventure/AdvVisual-0.2b/examples/SAMPLE_adv-visual.sys adv-visual.sys
%emacs adv-visual.sys&

adv-visual.sysの名前は固定です。このファイルはadvvisを起動するディレクトリに置かなくてはいけません。完全に書き直します。

11111
33333
1
hostName
/usr/local/adventure/bin/advvis_server

inpファイルを作ります。

%cd fromBcTool
%emacs adv-vis.inp

2
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv
/home/auser/adventure/samples/visualSample/fromBcTool/result/advhddm_out_0.adv
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_1.adv
/home/auser/adventure/samples/visualSample/fromBcTool/result/advhddm_out_1.adv

7.6.3 実行

%cd ..
%advvis

メニュー

File > Open

ファイルダイアログで*.inpファイルを選択して、OKをクリック。

メニュー

Server > Initialize

Master Serverの選択肢はhostNameしかないが、選択しないと次のHost Listテキストフィールドが入力可能にならない。

Host Listの下のテキストフィールドにマウスポインタを当てる。

studio01

をテキストフィールドに入力してinsertボタンをクリック。Number of Slavesが2なのでstudio01をもう一回入力する。

既に入力したstudio01をクリックすると、同じ文字列がテキストフィールドに書かれる。そこでInsertボタンをクリックするとstudio01がリストに追加される。OKボタンをクリックしてダイアログを閉じる。

メニュー

Server > Control

新たにダイアログが開かれる。

Startボタンをクリックする。Connectボタンをクリックする。

Connecting Server
Initialization is successfuly completed.
=============================================
ADVNETURE_Visual 0.2
=============================================
Slave[0]:studio01 PID=6733
Slave[1]:studio01 PID=6736

Read Analysis Model Datasetボタンをクリック

Server Control Dialogの窓に
=====
=====

?=/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv
?=/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_1.adv

コンソールの方の出力は
error: open
error: open
Slave: unknown element_type[3DQuadraticHexahedron]
Slave: unknown element_type[3DQuadraticHexahedron]
ADVENTURE_Visual/Server sid:17
でした。どうもAdvvisualは六面体に対応してないようです。(後でソルバーが六面体二次要素に対応してないことが原因だと言うことが分りました)

他の解析結果を表示します。
AdvVisualが提供しているサンプルデータです。
%cd original
%emacs SAMPLE.inp&
5
/home/auser/adventure/samples/visualSample/original/model/advhddm_in_0.adv
/home/auser/adventure/samples/visualSample/original/result/advhddm_out_0.adv
/home/auser/adventure/samples/visualSample/original/model/advhddm_in_1.adv
/home/auser/adventure/samples/visualSample/original/result/advhddm_out_1.adv
/home/auser/adventure/samples/visualSample/original/model/advhddm_in_2.adv
/home/auser/adventure/samples/visualSample/original/result/advhddm_out_2.adv
/home/auser/adventure/samples/visualSample/original/model/advhddm_in_3.adv
/home/auser/adventure/samples/visualSample/original/result/advhddm_out_3.adv
/home/auser/adventure/samples/visualSample/original/model/advhddm_in_4.adv
/home/auser/adventure/samples/visualSample/original/result/advhddm_out_4.adv
%cd ..
%advvis
以下は同様なので必要なところしか説明しません。
Connectボタンをクリックします。
Connecting Server
Initialization is successfuly completed.
=============================================
ADVNETURE_Visual 0.2
=============================================
Slave[3]:studio01 PID=1150
Slave[2]:studio01 PID=1148
Slave[4]:studio01 PID=1154
Slave[0]:studio01 PID=1141
Slave[1]:studio01 PID=1144

Read Analysis Model Datasetボタンの右隣のParallel ModeをチェックしてからRead Ana...をクリックします。(VineのときにはParallel onでないと不安定のように書きましたがオフでも取り敢えず動きます。今は擬似パラレルなのでOnでもOffでも表示スピードは変わりません。)
L字型が表示されました。Server Control Dialogには以下のような表示が追加されます。
OK. Server[0]:host=studio01 type=HDDM, domain=5
OK. Server[1]:host=studio01 type=HDDM, domain=5
OK. Server[2]:host=studio01 type=HDDM, domain=5
OK. Server[3]:host=studio01 type=HDDM, domain=5
OK. Server[4]:host=studio01 type=HDDM, domain=5
Read Results Datasetボタンをクリック

7.6.3.1 変位(ベクトル)表示

新しいVisualization Data Setting Panelというダイアログで
AllNodeVariable:Displacement:v3
を選択。このときにその下のVextorというラベルのついたチョイスボックスに表示された成分が読み込まれます。
Loadボタンをクリック。
このときメインウィンドーのVisualizationというラベルのチョイスボックスの選択肢がSurfaceになっているとLoadボタンのクリックと同時に変位のコンター図が表示されます。
Cancelボタンをクリック。

成功。Vectorの各成分をロードすると即座にコンター表示が変化する。

7.6.3.2 応力(テンソル)表示

AllNodeVariable:NodalStress:t3
を選択します。応力はテンソルなのでLoadボタンをクリックすると、今度はTensorというラベルのついたチョイスボックスに表示された成分が読み込 まれます。同じ応力でもAllElementVariable:Stress:t3はLoadボタンをクリックしても表示に失敗します。機能が盛り込まれ てないみたいです。
AllNodeVariable:NodalEquivalentStress:s
も表示可能です。

7.6.3.3 反力(ベクトル)表示

AllNodeVariable:ReactionForce:v3
を選択します。ベクトルのラベルのチョイスボックスで成分を指定します。

7.6.3.4 変形図表示

変 形図はメインウィンドーのVisualizationというラベルのチョイスボックスの選択肢がSurfaceになっているときにそのいくつか下の Deformationというラベルの入力欄を使って表示できます。右の数字が変形倍率です。適当な数字を入れて下さい。10,000のように大きくない と変形が分らない場合がありますから注意して下さい。数字を入力してからDeformationというラベルの左のトグルスイッチをクリックすると変形し ます。一度変形をOnにしてから数字を変更するときは数字を変更して[Enter]をたたきます。

7.6.3.5 断面コンター図表示

メインウィンドーのVisualizationというラベルのチョイスボックスの選択肢をCut Planeにします。次にそのずっと下のCross Sectionという横長のボタンをクリックします。するとSampling Plane Dialogという小窓が新たに表示されます。最初に左上のInitというボタンをクリックして初期化します。するとViewボタンが有効になります。
 X,YまたはZのスライダーをずらして断面を指定します。それぞれX軸に垂直な面、Y軸に垂直な面、Z軸に垂直な面ということです。1つしか指定できま せん。スライダーは左に行くほど数字が大きくなるので注意して下さい。またスライダーを動かしてから、Viewボタンをクリックして初めて、断面コンター が表示されます。

7.6.3.6 その他の結果の表示

AdvSolidが提供しているサンプルデータです。
%cp fromBcTool/mesh_hex2/adv-vis.inp fromSolid/
%emacs fromSolid/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromSolid/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromSolid/adv-vis.inpを選択します。立方体の1つの面を圧縮する問題のようです。六面体要素でした。色々表示して見ました。
AdvMetisが提供しているサンプルデータです。
%cp fromBcTool/mesh_hex2/adv-vis.inp fromMetis/
%emacs fromMetis/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromMetis/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromSolid/adv-vis.inpを選択します。立方体の1つの面を圧縮する問題です。先ほどは側面に荷重してましたが今回は上面です。本質的 には同じです。六面体要素でした。色々表示して見ました。断面図も表示してみました。断面図はわりと重いです。
AdvBcToolが提供しているサンプルデータです。
mesh_hex1
%cp fromBcTool/mesh_hex2/adv-vis.inp fromBcTool/mesh_hex1/
%emacs fromBcTool/mesh_hex1/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromBcTool/mesh_hex1/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromBcTool/mesh_hex1/adv-vis.inpを選択します。Y軸に垂直な面でYが小さい方を固定し、 Zに垂直な面でZが大きい方にX方向のせん断荷重を負荷しました。Y軸回りのねじりのような変形になってます。六面体1次要素でした。
mesh_tet1
%cp fromBcTool/mesh_hex2/adv-vis.inp fromBcTool/mesh_tet1/
%emacs fromBcTool/mesh_tet1/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromBcTool/mesh_tet1/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromBcTool/mesh_tet1/adv-vis.inpを選択します。Z軸に垂直な面を完全固定。荷重は上面にY軸方向に100.の垂直荷重を負荷してます。Y方向のせん断変形が起きてます。四面体1次要素でした。コンター図のときOpacity = 0.5でも表示してみました。半透明で内部の分布がわかるような感じがします。でも良く見てもいまいち中が分かりません。
mesh_tet2
%cp fromBcTool/mesh_hex2/adv-vis.inp fromBcTool/mesh_tet2/
%emacs fromBcTool/mesh_tet2/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromBcTool/mesh_tet2/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromBcTool/mesh_tet2/adv-vis.inpを選択します。立方体の1つの面を完全固定して、その対面に圧縮荷重(Y方向)を与え てます。圧縮が主体の荷重です。四面体二次要素でした。一様荷重でもいびつに変形しています。78要素のモデルです。
AdvTetMeshが提供しているサンプルデータです。
data01_4
%cp fromBcTool/mesh_hex2/adv-vis.inp fromTetMesh/data01_4/
%emacs fromTetMesh/data01_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/data01_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromTetMesh/data01/adv-vis.inpを選択します。L字型の1つの端部を完全固定。荷重は他方の端部に面に垂直(Y軸方向)に 100.の大きさのものを負荷しました。固定端に接する部材に曲げ変形が生じています。とても分りやすい変形です。四面体2次要素でした。
pot01_4
%cp fromBcTool/mesh_hex2/adv-vis.inp fromTetMesh/pot01_4/
%emacs fromTetMesh/pot01_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/pot01_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromTetMesh/pot01_4/adv-vis.inpを選択します。モデル形状の表示に失敗しました。2partのうち1partしか表示し ません。一旦Shutdownボタンをクリックしてから再度モデル形状を読み込みましたが今度はadvvisが落ちてしまいました。再度advvisを立 ち上げましたがConnectに失敗します。コンソールを見るとSockInetServer:accept: Invalid argument
MasterServer: cannot accept clientl
と表示されます。こういうときは前回のゾンビ(死んだ筈のプロセス)が残ってます。ちゃんと消しましょう。何度かpartの読み込みに失敗しましたが、とにかく読めました。失敗する理由は良く分かりません。
底面を完全固定し、上面にX軸方向の100.のせん断力を負荷しました 。変形は分りやすいです。応力の断面図も見てみました。四面体2次要素でした。
AdvTriPatchが提供しているサンプルデータです。
data01_4
%cp fromBcTool/mesh_hex2/adv-vis.inp fromTriPatch/data01_4/
%emacs fromTriPatch/data01_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTriPatch/data01_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromTetMesh/data01_4/adv-vis.inpを選択します。L字型のX軸に垂直な端部を完全固定。荷重は固定面に平行な長細い面で 凸になっているほうに負荷します。X方向に100.の大きさの荷重です。固定端に接する部材に曲げ変形が生じています。荷重を加えた部材も若干曲げ変形が 起きてます。四面体2次要素でした。
data02_4
%cp fromBcTool/mesh_hex2/adv-vis.inp fromTriPatch/data02_4/
%emacs fromTriPatch/data02_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromBcTool/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTriPatch/data02_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
advvis
File > Openを選んで
fromTetMesh/data02_4/adv-vis.inpを選択します。直方体の端部(X軸に垂直な面)を完全固定します。Z軸に垂直な面(Zの大きい方)にZ軸方向の100.の垂直力を負荷します。曲げ変形が生じています。四面体2次要素でした。

7.6.4 ネットワーク非接続状態での実行テスト

ユーザauserでログイン

%tcsh
%cd adventure
%cd samples
%cd visualSample
%ls
adv-visual.sys fromMetis fromTetMesh original
fromBcTool fromSolid fromTriPatch
%advvis
File > Openを選んで
original/SAMPLE.inpを選択します。

モデルの読み込みも解析結果の読み込みも成功しました。Parallel Modeであっても、そうでなくても成功しました。

7.6.5 メッシュに問題があったサンプルのTetMesh_Pを使ったやり直し

7.6.5.1 AdvTriPatch提供のサンプルで問題があったもの

ユーザauserでログイン

nozzle
パッチの修正
%tcsh
%cd adventure
%cd samples
%cd tetMeshSample
%cd fromTriPatch
nozzleでTetMesh_Mに失敗したので、こちらをTetMesh_Pに通して見ます。
%advtmesh8p nozzle -d -p
途中inner iteration not convergedという警告が出たのですがどの程度問題なのか良く分かりません。109秒で終了しました。nozzle_c.wrlというVRMLファ イルができていたのでざっと見てみたところ、前にあったパッチのでこぼこがなくなっていました。それでは今度はTetMesh_Mをとおしてみます。修正 したパッチのファイル名はnozzlec.pch、節点密度はnozzlec.ptnです。
メッシュ生成
%advtmesh8m nozzlec -s -p
約12分で終了しました。要素数222,426、節点数365,656。特に問題のあるようなメッセージは出てません。nozzlec_e.wrlを見てみました。特に変なものはみつかりませんでした。
面グループ抽出
%cd ../../bcToolSample
%cd fromTriPatch
%cp ../../tetMeshSample/fromTriPatch/nozzlec.msh ./
%msh2pcg nozzlec.msh 18
19秒で終了しました。
境界条件設定
%bcGUI nozzlec_18.pch nozzlec_18.pcg&
サーフェス表示するとさすがに重いです。
X=最小値のところにあるリング型の面を完全固定します。ワイヤフレームで見ると少し変な線が見えます。X=最大値のところにある円筒面の内面にZ方向の大きさ100.の荷重を負荷します。
Adv一体モデル作成
%makefem nozzlec.msh nozzlec_18.fgr nozzlec_18.cnd material.dat nozzlec_18.adv -t nozzlec_18.trn
10秒で終了。
Adv領域分割
%cd ../../metisSample
%cd fromTriPatch/
%cp ../../bcToolSample/fromTriPatch/nozzlec_18.adv ./
%mpirun -np 5 /usr/local/adventure/bin/adventure_metis nozzlec_18.adv .750
1領域の要素数として20要素から100要素という目安がありますのでそれに基づいて750という数字を決めました。45秒で終了しました。
ソルバー実行
%cd ../../solidSample
%cd fromTriPatch
%cp -R ../../metisSample/fromTriPatch/model ./
%ls model/
advhddm_in_0.adv advhddm_in_2.adv advhddm_in_4.adv
advhddm_in_1.adv advhddm_in_3.adv
%emacs advsolid.con&
MPIOPTS="-np 2"

MPIOPTS="-np 5"
に変更。
%advsolid -conf advsolid.conf
エラーが出ます。
Starting /home/advp/bin/advsolid-p (Version: 0.81(beta))
Date: Sat Dec 1 19:40:18 2001
Options: -result --disp --str --stra .
[0] got num_parts = 5 from ./model/advhddm_in_0.adv
[0] Host: studio01, Rank 0, Group: 1, RankInGroup: 0, System PID: 1982
[1] Host: studio01, Rank 1, Group: 1, RankInGroup: 1, System PID: 1986
[2] Host: studio01, Rank 2, Group: 1, RankInGroup: 2, System PID: 1990
[3] Host: studio01, Rank 3, Group: 1, RankInGroup: 3, System PID: 1994
[0] Start reading ./model/advhddm_in_0.adv, time 0.748757
[4] Host: studio01, Rank 4, Group: 1, RankInGroup: 4, System PID: 1998
[0] Finish reading ./model/advhddm_in_0.adv, time 1.76663
[1] Start reading ./model/advhddm_in_1.adv, time 1.39995
[1] Finish reading ./model/advhddm_in_1.adv, time 2.46369
[2] Start reading ./model/advhddm_in_2.adv, time 2.45366
[2] Finish reading ./model/advhddm_in_2.adv, time 3.2611
[3] Start reading ./model/advhddm_in_3.adv, time 3.25023
[3] Finish reading ./model/advhddm_in_3.adv, time 4.14665
[4] Start reading ./model/advhddm_in_4.adv, time 4.13703
[4] Finish reading ./model/advhddm_in_4.adv, time 5.05321
[0] Start sending material data, time 5.49807
[0] End sending material data (1), time 5.49826
[2] Got material data (1)
[1] Got material data (1)
[3] Got material data (1)
[4] Got material data (1)
Start solver, time 5.70523
rm_l_1_1987: p4_error: net_recv read: probable EOF on socket: 1
rm_l_3_1995: p4_error: net_recv read: probable EOF on socket: 1
p0_1982: p4_error: net_recv read: probable EOF on socket: 1
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
Connection failed for reason: : Connection refused
/usr/local/bin/mpirun: line 1: 1982 パイプが切断されました /home/advp/bin/advsolid-p "-result" "--disp" "--str" "--stra" "." -p4pg /home/auser/adventure/samples/solidSample/fromTriPatch/PI1834 -p4wd /home/ryo/adventure/samples/solidSample/fromTriPatch
2partで領域分割しなおして再度ソルバーに通します。
領域分割のコマンドは省略します。advsolid.confのMPIOPTS="-np 5"を2に戻します。やはりそっくりなエラーが出ます。ちなみに他のモデルはソルバーは走るので通信が急におかしくなった訳ではありません。
np=5で分割を増やしてみます。
%cd ../../metisSample/fromTriPatch
%mpirun -np 5 /usr/local/adventure/bin/adventure_metis nozzlec_18.adv . 1500
57秒かかりました。
%cd ../../solidSample/fromTriPatch/
%cp -R ../../metisSample/fromTriPatch/model ./
%emacs advsolid.conf&
MPIOPTS="-np 2"

MPIOPTS="-np 5"
に変更する。
%advsolid -conf advsolid.conf
同じく失敗しました。もっと領域数を増やします。途中略。
%mpirun -np 5 /usr/local/adventure/bin/adventure_metis nozzlec_18.adv . 3000
81秒。途中略。
%advsolid -conf advsolid.conf
失敗。TetMesh提供のnozzleはやや要素数が少ないのですが、2 x 4000の分割でも成功してます。part数が多いとオーバーヘッドが多くてメモリを食うのかも知れません。np=2に減らします。途中略。
%mpirun -np 2/usr/local/adventure/bin/adventure_metis nozzlec_18.adv . 8000
174秒。途中略。
%emacs advsolid.conf&
MPIOPTS="-np 5"

MPIOPTS="-np 2"
に変更する。
%advsolid -conf advsolid.conf
Out of Memory
%mpirun -np 2/usr/local/adventure/bin/adventure_metis nozzlec_18.adv . 10000
214秒。
%advsolid -conf advsolid.conf
Xを落としてコンソールで実行して9.3時間で終了しました。
結果表示
%cd ../../visualSample/fromTriPatch
%mkdir nozzlec_18
%cp -R ../../solidSample/fromTriPatch/model/ nozzlec_18/
%cp -R ../../solidSample/fromTriPatch/result/ nozzlec_18/
%mv ../../solidSample/fromTriPatch/model/ ../../solidSample/fromTriPatch/nozzlec_18_model/
%mv ../../solidSample/fromTriPatch/result/ ../../solidSample/fromTriPatch/nozzlec_18_result/
%cp data01_4/adv-vis.inp nozzlec_18/
%emacs nozzlec_18/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromTriPatch/data01_4/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTriPatch/nozzlec_18/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
%cd ..
%advvis
File > Openを選んで
fromTriPatch/nozzlec_18/adv-vis.inpを選択します。なぜかParallel ModeでRead Analysis Model Datasetを実行したらadvvisがCore dumpで落ちました。
Z方向変位のコンター画像を保存します。(下図参照)をクリックして、ファイル名に.ppm拡張子をつけて保存します。ちょっと変形拡大率が大きすぎたかも知れません。

TriPatch提供のnozzleモデルZ方向変位のコンター画
図 TriPatch提供のnozzleモデルZ方向変位のコンター画

7.6.5.2 AdvTetMesh提供のサンプルで問題があったもの

ユーザauserでログイン

box0
パッチの修正
%tcsh
%cd adventure
%cd samples
%cd tetMeshSample
%cd original
box0には表面に全然節点がないのでTriPatchだけでは忠実に表面が形成できません。表面パッチをTetMesh_Pに通して見ます。
%advtmesh8p box0 -d -p
1秒で終了。box0_c.wrlをVRMLビューアで確認しました。まともな直方体になってます。それでは今度はTetMesh_Mをとおします。
メッシュ生成
%advtmesh8m box0c -s -p
3秒で終了。
面グループ抽出
%cd ../../bcToolSample
%cd fromTetMesh
%cp ../../tetMeshSample/original/box0c.msh ./
%msh2pcg box0c.msh 4
コンマ秒で終了しました。
境界条件設定
%bcGUI box0c_4.pch box0c_4.pcg&
底面(Y=最小値)を完全固定します。細い方の側面に+Xに垂直力100.を負荷します。box0c_4.cndで保存します。
Adv一体モデル作成
%makefem box0c.msh box0c_4.fgr box0c_4.cnd material.dat box0c_4.adv -t box0c_4.trn
コンマ秒で終了。
Adv領域分割
%cd ../../metisSample
%cd fromTetMesh/
%cp ../../bcToolSample/fromTetMesh/box0c_4.adv ./
10633要素なので2part x 100領域で行ってみます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box0c_4.adv .100
1.4秒で終了しました。
ソルバー実行
%cd ../../solidSample
%cd fromTetMesh
%mkdir box0
%cp -R ../../metisSample/fromTetMesh/model ./box0/
%emacs advsolid.conf&
PROGOPTS="-result --disp --str -stra"

PROGOPTS="-result --disp --reac --estr-n --str-n"
に変更。
%cp advsolid.conf box0/
%cd box0
%advsolid -conf advsolid.conf
147秒で終了。
結果表示
%cd ../../visualSample/fromTetMesh
%mkdir box0c_4
%cp -R ../../solidSample/fromTetMesh/box0/model/ box0c_4/
%cp -R ../../solidSample/fromTetMesh/box0/result/ box0c_4/
%cp nozzle/adv-vis.inp box0c_4/
%emacs box0c_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromTetMesh/nozzle/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/box0c_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
%cd ..
%advvis
File > Openを選んで
fromTetMesh/box0c_4/adv-vis.inpを選択します。なぜかParallel ModeでRead Analysis Model Datasetを実行したらadvvisが落ちました。予想どおりの変形です。応力は固定した底面の近傍に集中してます。

box1
パッチの修正
%tcsh
%cd adventure
%cd samples
%cd tetMeshSample
%cd original
box1には表面に全然節点がないのでTriPatchだけでは忠実に表面が形成できません。表面パッチをTetMesh_Pに通して見ます。
%advtmesh8p box1 -d -p
2.8秒で終了。box1_c.wrlをVRMLビューアで確認しました。box0と同じ直方体ですが、一番広い側面に節点密度分布があります。それでは今度はTetMesh_Mをとおします。
メッシュ生成
%advtmesh8m box1c -s -p
27秒で終了。
面グループ抽出
%cd ../../bcToolSample
%cd fromTetMesh
%mkdir box
%cp ../../tetMeshSample/original/box1c.msh ./
%msh2pcg box1c.msh 4
5秒くらいで終了しました。
境界条件設定
%bcGUI box1c_4.pch box1c_4.pcg&
底面(Y=最小値)を完全固定します。上面に+Z方向にせん断力100.を負荷します。box1c_4.cndで保存します。
Adv一体モデル作成
%makefem box1c.msh box1c_4.fgr box1c_4.cnd material.dat box1c_4.adv -t box1c_4.trn
3秒で終了。
Adv領域分割
%cd ../../metisSample
%cd fromTetMesh/
%cp ../../bcToolSample/fromTetMesh/box1c_4.adv ./
72823要素なので2part x 700領域で行ってみます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box1c_4.adv .700
11秒で終了しました。
ソルバー実行
%cd ../../solidSample
%cd fromTetMesh
%mkdir box1
%cp -R ../../metisSample/fromTetMesh/model ./box1/
%cp advsolid.conf box1/
%cd box1
%advsolid -conf advsolid.conf
1434秒で終了。
結果表示
%cd ../../visualSample/fromTetMesh
%mkdir box1c_4
%cp -R ../../solidSample/fromTetMesh/box1/model/ box1c_4/
%cp -R ../../solidSample/fromTetMesh/box1/result/ box1c_4/
%cp box0c_4/adv-vis.inp box1c_4/
%emacs box1c_4/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromTetMesh/box0c_4/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/box1c_4/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
%cd ..
%advvis
File > Openを選んで
fromTetMesh/box1c_4/adv-vis.inpを選択します。Parallel ModeでRead Analysis Model Datasetを実行したらpartが1つしか読み込めません。変形は予想通りです。下にYY応力成分を表示します。透明度0.5にしてみました。

YY応力成分コンター図(Opacity = 0.5)
図 box1 YY応力成分コンター図(Opacity = 0.5)

box2
パッチの修正
%tcsh
%cd adventure
%cd samples
%cd tetMeshSample
%cd original
box2には表面に全然節点がないのでTriPatchだけでは忠実に表面が形成できません。表面パッチをTetMesh_Pに通して見ます。
%advtmesh8p box2 -d -p
85秒で終了。box2_c.wrlをVRMLビューアで確認しました。立方体です。各面に密度分布があります。それでは今度はTetMesh_Mをとおします。
メッシュ生成
%advtmesh8m box2c -s -p
11分18秒で終了。
面グループ抽出
%cd ../../bcToolSample
%cd fromTetMesh
%cp ../../tetMeshSample/original/box2c.msh ./
%msh2pcg box2c.msh 4
18秒くらいで終了しました。
境界条件設定
%bcGUI box2c_4.pch box2c_4.pcg&
底面(Y=最小値)を完全固定します。側面(X=最小値)に+Y方向にせん断力100.を負荷します。box2c_4.cndで保存します。
Adv一体モデル作成
%makefem box2c.msh box2c_4.fgr box2c_4.cnd material.dat box2c_4.adv -t box2c_4.trn
12秒で終了。
Adv領域分割
%cd ../../metisSample
%cd fromTetMesh/
%cp ../../bcToolSample/fromTetMesh/box2c_4.adv ./
377533要素なので2part x 4000領域で行ってみます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box2c_4.adv . 4000
148秒で終了しました。
%mkdir ../../solidSample/fromTetMesh/box0
%cp -R ./model/ ../../solidSample/fromTetMesh/box0
ソルバー実行
%cd ../../solidSample
%cd fromTetMesh
%mkdir box2
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cp advsolid.conf box2/
%cd box2
%advsolid -conf advsolid.conf
AdvTriPatchにより提供されたnozzleモデルと同じような落ち方をしました。topを見ながら再度走らせたところメモリ不足みたいです。もう一度領域数を倍に分割してみます。
%cd ../../../metisSample/fromTetMesh
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box2c_4.adv . 8000
245秒かかりました。
%cd ../../solidSample/fromTetMesh
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cd box2
%advsolid -conf advsolid.conf
やはりp4_error: net_recv read: probable EOF on socket: 1が出ました。
更に分割を増やしてみます。
%cd ../../../metisSample/fromTetMesh
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box2c_4.adv . 10000
307秒かかりました。
%cd ../../solidSample/fromTetMesh
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cd box2
%advsolid -conf advsolid.conf
またp4_error: net_recv read: probable EOF on socket: 1が出ました。
更に分割を増やしてみます。
%cd ../../../metisSample/fromTetMesh
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis box2c_4.adv . 10500
307秒かかりました。これ以上の細かい分割はOut of Memoryで実行できませんでした。
%cd ../../solidSample/fromTetMesh
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cd box2
%advsolid -conf advsolid.conf
またp4_error: net_recv read: probable EOF on socket: 1が出ました。
今度はAdvMetisの実行時のpart数を2から4に増やして見ます。ひょっとして使用メモリが減るかも知れません。
%cd ../../../metisSample/fromTetMesh
%mpirun -np 4/usr/local/adventure/bin/adventure_metis box2c_4.adv . 6000
205秒かかりました。
%cd ../../solidSample/fromTetMesh
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cd box2
%emacs advsolid.conf
MPIOPTS="-np 2"

MPIOPTS="-np 4"
へ。
%advsolid -conf advsolid.conf
やはりOut of Memoryです。領域数を増やします。以下コマンドは一部省略。
%mpirun -np 4/usr/local/adventure/bin/adventure_metis box2c_4.adv . 8000
Out of Memory です。
%mpirun -np 5/usr/local/adventure/bin/adventure_metis box2c_4.adv . 6400
224秒で分割終了。
%cd ../../solidSample/fromTetMesh
%cp -R ../../metisSample/fromTetMesh/model ./box2/
%cd box2
%emacs advsolid.conf
MPIOPTS="-np 4"

MPIOPTS="-np 5"
へ。
%advsolid -conf advsolid.conf
やはりOut of Memoryです。絶対的に問題規模が大きすぎるかも知れませんが、Kマトリクスを記憶しないというオプションを見つけました。
%emacs advsolid.conf&
PROGOPTS=
の文字列に
-nokeep-kmat
を追加します。
%advsolid -conf advsolid.conf
Out of Memoryは回避できましたが、1回のiterationにものすごく時間がかかります。
User time合計17.3時間、経過時間は22.2時間で終了しました。
結果表示
%cd
%cd adventure/samples/visualSample/fromTetMesh
%mkdir box2_4
%cp -R ../../solidSample/fromTetMesh/box2/model/ box2_4/
%cp -R ../../solidSample/fromTetMesh/box2/result/ box2_4/
%cp nozzle_9/adv-vis.inp box2c_4/
%emacs box2c_4/adv-vis.inp&
2

5に変更します。
/home/auser/adventure/samples/visualSample/fromTetMesh/nozzle_9/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/box2c_4/model/advhddm_in_0.adv
に変更します。part数5なのであと9行ありますが、同様に修正します。
%cd ..
%advvis
File > Openを選んで
fromTetMesh/nozzle_9/adv-vis.inpを選択します。

box2c_4 yy成分応力
図 box2c_4 yy成分応力

nozzle
パッチの修正
%tcsh
%cd adventure
%cd samples
%cd tetMeshSample
%cd original
面グループの抽出に失敗したのでTetMesh_Pをとおします。
%advtmesh8p nozzle -d -p
46秒で終了。nzozzle_c.wrlをVRMLビューアで確認しました。原子炉圧力容器のコンポーネントの1つです。表面は大丈夫そうです。それでは今度はTetMesh_Mをとおします。
メッシュ生成
%advtmesh8m nozzlec -s -p
8分で終了。
面グループ抽出
%cd ../../bcToolSample
%cd fromTetMesh
%cp ../../tetMeshSample/original/nozzlec.msh ./
%msh2pcg nozzlec.msh 18
15秒くらいで終了しました。
境界条件設定
%bcGUI nozzlec_18.pch nozzlec_18.pcg&
X=最小値のリング面を完全固定します。X=大きい側の円筒の内面全部に横方向の力を負荷しようとしましたが、円筒内面が細い短冊に分割されていて内面全 部が選べません。面グループを結合する機能が欲しいです。msh2pcgのパラメータを18より小さくすると面グループが粗くなるかも知れません。
%msh2pcg nozzlec.msh 9
でやってみました。
%bcGUI nozzlec_9.pch nozzlec_9.pcg&
ワイヤフレーム表示したらずっとすっきりしました。
X=最小値のリング面を完全固定します。X=大きい側の円筒の内面全部に大きさ100.のY軸方向の力を負荷します。nozzlec_9.cndで保存します。
Adv一体モデル作成
%makefem nozzlec.msh nozzlec_9.fgr nozzlec_9.cnd material.dat nozzlec_9.adv -t nozzlec_9.trn
9秒で終了。
Adv領域分割
%cd ../../metisSample
%cd fromTetMesh/
%cp ../../bcToolSample/fromTetMesh/nozzlec_9.adv ./
197,242要素なので2part x 2000領域で行ってみます。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis nozzlec_9.adv . 2000
83秒で終了しました。
%mkdir ../../solidSample/fromTetMesh/nozzle
%cp -R ./model/ ../../solidSample/fromTetMesh/nozzle
ソルバー実行
%cd ../../solidSample
%cd fromTetMesh
%mkdir nozzle
%cp -R ../../metisSample/fromTetMesh/model ./nozzle/
%cp advsolid.conf nozzle/
%cd nozzle
%advsolid -conf advsolid.conf
AdvTriPatchにより提供されたnozzleモデルと同じような落ち方をしました。領域分割を4000にしてみます。
%cd ../../metisSample
%cd fromTetMesh/
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis nozzlec_9.adv . 4000
85秒かかりました。
%cp -R ./model/ ../../solidSample/fromTetMesh/nozzle
%cd ../../solidSample
%cd fromTetMesh/nozzle
%advsolid -conf advsolid.conf
userタイムの合計6.7時間で終了しました。(スピードアップのためXを落として実行しました。)メモリは919MB使用してました。かなりぎりぎりでした。
結果表示
%cd ../../visualSample/fromTetMesh
%mkdir nozzle_9
%cp -R ../../solidSample/fromTetMesh/nozzle/model/ nozzle_9/
%cp -R ../../solidSample/fromTetMesh/nozzle/result/ nozzle_9/
%cp data01_4/adv-vis.inp nozzle_9/
%emacs nozzle_9/adv-vis.inp&
/home/auser/adventure/samples/visualSample/fromTetMesh/data01_4/model/advhddm_in_0.adv

/home/auser/adventure/samples/visualSample/fromTetMesh/nozzle_9/model/advhddm_in_0.adv
に変更します。part数2なのであと3行ありますが、同様に修正します。
%cd ..
%advvis
File > Openを選んで
fromTetMesh/nozzle_9/adv-vis.inpを選択します。なぜかParallel ModeでRead Analysis Model Datasetを実行したらadvvisが落ちました。(もう一度試しましたがやはり落ちました。topを調べましたがメモリはそんなに使ってないようで す。)固定した底面の近傍にだけ応力が発生していました。
Y方向変位のコンター画像を保存します。(下図参照)をクリックして、ファイル名に.ppm拡張子をつけて保存します。
もう一枚相当応力のコンター図を保存しようとしましたが、保存される画面領域がずれてました。

nozzle Y方向変位コンター図

図nozzle Y方向変位コンター図

サンプル提供モジュール ファイル名 形状 要素 備考
AdvVisual 無し L字 四面体?
AdvSolid 無し 立方体 六面体?次
AdvMetis 無し 立方体 六面体?次
AdvBcTool mesh_hex1 立方体 六面体一次
mesh_hex2 立方体 六面体ニ次 ソルバーが対応してない。解析不可能。
mesh_tet1 立方体 四面体一次
mesh_tet2 立方体 四面体二次
AdvTetMesh box0 直方体 四面体二次 TetMesh_Pがないとまともなメッシュが切れない。TetMesh_Pをとおしたら立方体の形状再現に成功。解析も成功。
box1 直方体 四面体二次 TetMesh_Pがないとまともなメッシュが切れない。TetMesh_Pをとおしたら立方体の形状再現に成功。解析も成功。
box2 立方体 四面体二次 TetMesh_Pがないとまともなメッシュが切れない。TetMesh_Pをとおしたら立方体の形状再現に成功。メモリ不足でソルバーの結果がでないのでKマトリクスを記憶しないオプションで解析したら遅くはなったが解析成功。結果表示も成功。
data01_4 L字 四面体二次
nozzle ノズル 四面体二次 TetMesh_Pがないと面グループ抽出ができない。TetMesh_Pをとおしたら解析迄成功。但しメモリオーバーの危険性あり。領域数を増やすとメモリを減らせる。
pot01_4 四面体二次
AdfTriPatch data01_4 L字 四面体二次
data02_4 直方体 四面体二次
nozzle ノズル 四面体二次 TetMesh_Pがないとメッシュが切れない。それを解決するもソルバーでストップ。領域数とpart数両方を何度も調節して解析に成功。part数が多すぎるとメモリを食うようである。

7.7 インサイトオリジナルサンプル

7.7.1 形状

形状

7.7.2 パッチ生成

ファイル
Buhin.igs:IGESファイル
Buhin.ptn:節点密度情報ファイル
auserでログイン
%cd adventure/samples/byInsight/buhin
%ls
Buhin.igs Buhin.ptn
%ADVENTURE_TriPatch Buhin Buhin
6秒くらいです。節点数4,252、要素数8,524です。
%vrmlview Buhin_c_mcp.wrl&

パッチ生成

次はパッチの修正です。
%advtmesh8p Buhin -d -p
失敗です。
Vertex density control start
error--plane equation:not a plane
x1= -3.000E+01 1.6450595E+00 3.8243195E+01
x2= ....
x3= ...
メッシュ生成に行きます。
%advtmesh8m Buhin -s -p
成功しました。24秒。要素数18,513、要素数33,277。
%vrmlview Buhin_n.wrl&

面グループ抽出

面グループ抽出です。
%msh2pcg Buhin.msh 8
1秒ぐらいです。
%bcGUI Buhin_8.pch Buhin_8.pcg&

底面の変位を固定

図に示すように底面の変位を固定します。次の図に荷重の負荷面を示します。Y軸方向に-100.の荷重を加えます。

境界条件をBuhin_8.cndとして保存

境界条件をBuhin_8.cndとして保存しました。次は一体解析モデルの作成です。material.datは他のサンプルのものを流用します。
%makefem Buhin.msh Buhin_8.fgr Buhin_8.cnd material.dat Buhin_8.adv -t Buhin_8.trn
コンマ秒で終わりました。1領域平均30要素として300領域 x 2 partにします。
%mpirun -np 2 /usr/local/adventure/bin/adventure_metis Buhin_8.adv . 300
3秒くらいで終了しました。
advsolid.confをコピーしてきます。
%cp ../../solidSample/fromTetMesh/box1/advsolid.conf
%advsolid -conf advsolid.conf
user時間の合計284秒で終了しました。
%cp ../../visualSample/adv-visual.sys ../
%cp ../../visualSample/fromTetMesh/box0c_4/adv-vis.inp ./
%emacs adv-vis.inp&
/visualSample/fromTetMesh/box0c_4/

/byInsight/buhin/
に変更。
%cd ..
advvis
File > Openを選んで
buhin/adv-vis.inpを選択します。Y方向変位です。

Y方向変位

7.8 番外編

7.8.1 省メモリソルバ

TetMeshモジュール添付のbox2モデルが大きすぎてKマトリクスを記憶しないオプションでしか解けなかったところ、AdvSolid-0.92には並列CGソルバが入ってより少ないメモリで解けるとのことなので試して見ました。
まずMetisでpart数をPE数と等しく置き、part内の領域数を1で分割します。分割に少なくとも30分以上かかりました。ちょっと記録を取りそびれて時間が分りません。次に
%mpirun -np 2 /home/auser/tmp/adventure/AdvSolid-0.92/bin/advsolid-p -solver cg -result --disp --reac --estr-n --str-n .
で実行しました。14.6時間でCGは収束したのですが、最後に結果を書き込むときか何かに、メモリ不足で落ちたみたいです。最後にメモリで落ちるのは辛いですね。

7.8.2 フロンティア神代(Kondara 2.0)マシンとの速度比較

Kondaraマシンで作った実行形式をRed Hat 7.1で走らせて速度を比較する。
(1)AdvSolid
./advsolid-s.Kondara -no-result bm.1-30
user 8.64秒/8.59/8.61秒
advsolid-s -no-result bm.1-30
user 9.57/9.56/9.61秒

実行形式 実行マシン
Kondara2.0
実行マシン
RedHat7.1
S社/RedHat7.1でbuild 7.31/440MF 9.58/330MF 31%
フ社/Kondara2.0でbuild 6.03/530MF 8.61/360MF 43%
21% 11% ?

(2)yamasaoベンチマーク

for(k=0;k<10000000;k++){
 for(i=0;i<24;i++){
  for(j=0;j<24;j++){
   ebe_a[j]+=ebe_e[24*i+j]*ebe_c[i];
  }
 }
}

実行形式 実行マシン
Kondara2.0
実行マシン
RedHat7.1
フ社/Kondara2.0でbuild yamasao-O3unrol
STANDARD 1.969000e+01
STANDARD 1.044000e+01
STANDARD 9.690000e+00
STANDARD 8.540000e+00
----------------------------
STANDARD 9.350000e+00
STANDARD 9.950000e+00
STANDARD 9.200000e+00
STANDARD 8.470000e+00
S社/RedHat7.1でbuild yamasao-O3unrol
STANDARD 1.259000e+01
STANDARD 1.171000e+01
STANDARD 1.014000e+01
STANDARD 8.630000e+00
----------------------------
STANDARD 1.886000e+01
STANDARD 1.018000e+01
STANDARD 1.008000e+01
STANDARD 8.640000e+00

:このベンチマークによる比較ではあまり速度差がないということを感じました。即ちマシン自体の性能はあまり差はないのではないかと思います。


このページの内容に関するご質問はこちらまで。

作成者: 株式会社インサイト 三好昭生
Insight
info(at)meshman.jp 050-8885-4787
スカイプでのお問合せ
akio_miyoshi
株式会社 インサイト
Copyright (c) Insight Inc, 2000-2008 All Right Reserved.