Salomeの基本的な使い方†
卒論の4年生、創造工房の3年生は、ここにSalomeの基本的な使い方を
どんどんメモしていって下さい。
Salome-Mecaチュートリアル†
code-aster 説明書†
(2024/2/22)code-asterのサイトのURLがいつの間にか変わっていたので、新しいものをこちらに載せました.
code-asterの説明書 (英語,フランス語で書かれているので翻訳サイトを使って読んでください.)
code-aster質問ページ(説明書読んでも分からなかったら,このページで調べてみるといいかも.ただし,英語でキーワード等を入力する必要があります。)
code-asterによる解析 step-by-step(Asterstudyでのプログラムの組み方の流れが書かれています.)
構造要素の概要 (1D,2D要素の説明,3D要素以外の要素を使う方は一度読んでみてください.)
公式ページの検証問題をトレースする†
Code_Asterは非常に多くの問題を検証し、公開していますが、
これを再現するのにこの説明ではあまりに不親切では……
と思っていたら、Aster Study -> Operations -> Import a testcase でここにある)難しい問題でも簡単に再現できるようです(確認済み)。
Salome-Mecaを単体でインストール†
新しいPCにCAELinuxをインストールすると、SalomeのGeometryで線や点がちゃんと表示されない。なので、Salome-Mecaを試しに単体でインストールしてみた。
インストール†
- Code_Asterのページから、"~/kouzou/.Salome-Meca"あたりにダウンロード。
- "$ tar xvzf SALOME-MECA-2015.2-LGPL-2.tgz"で、展開。
- "$ ./SALOME-MECA-2015.2-LGPL.run"で、インストール開始、
- "Enter the salome_meca install directory [default=/home/kouzou/salome_meca] :"は、後でディレクトリごと動かせばいい(?)ので、とりあえず"Enter".
- "salome_meca is in English, do you want to be in French ? [y/N] :"は、英語がいいので"N".
- インストールが終わってから、"/home/kouzou/salome_meca/appli_V2015_2/salome"をドラッグ&ドロップでパネルに追加。アイコンはわかりやすく、"/home/kouzou/salome_meca/V2015_2/icon.png"あたりにする。
Windows版†
Windows版が出ていたようです。
面白いことにAbaqusやNastranの形式も読み込めるとか。
- インストール方法
- ここからダウンロードする(例えば、一番上にある緑の Download Salome-Meca 2019 win64 とか)。
- 右クリック → 解凍(適当なところに解凍する)
- sm-2019-w64-0.3 にある run_salome.bat をクリックすれば、salome-mecaが起動する。
- (Salome-Meca 2018をダウンロードした場合は、sm-2018-w64-0-3 → WORK → run_salome.bat で起動。)
Salome-Meca2019†
- Ver1は2019/09にアップロードされたが、(Ubuntu18.04ではg++のバージョンの問題で)インストールがすんなりできなかった。2019/12にアップロードされたVer3だとUbuntu18.04にも問題なくインストールできる。
- Geometryの他にShaperなるものができています!
Salome-Meca2018†
2018/07/13リリース。アイコンが一新されたが、操作方法は2017と比べてそれほど変わらないみたい。
起動時のエラー†
グラフィックカードとlibstdc++の相性によって起動しないことがあるらしい。この時、
LD_PRELOAD='/usr/$LIB/libstdc++.so.6' DISPLAY=:0 ~/salome_meca/appli_V2018/salome
というふうにして毎回端末から起動するか、あるいはそれが手間であれば
cd ~/salome_meca/V2018/prerequisites/debianForSalome/lib
mkdir kari
mv libstdc++* kari
として、原因のファイルをどけてやれば、アイコンからでも問題なく起動するSalomeメモの片持ち梁で動作確認済み)。
Salome-Meca2017について†
- 9/1リリース。インストール方法はこちら。
- 試しに「許可番号:工資15-6049」のPCにインストールしたので使ってみて。アプリケーション->教育・教養->salome_meca V2017
- Asterがなくなり、commファイルの編集も同じウィンドウでできるAsterStudyというものに変わった。Eficasとどちらがいいだろうか?実際の使っている様子は、この辺の動画を参照。何となく市販のソフトっぽいインターフェース。
- というか、Eficas自体のインターフェースもまるっきり変わってしまったので、テキストエディターでcommファイルを編集するのでなければ、いずれにせよ新しく操作方法を覚えなければならない。
- この辺も参考になる:http://ofbkansai.sakura.ne.jp/archives/124352
unicode decode error†
日本語環境のUbuntuで計算を実行しようとすると&link(この人(オープンCAE勉強会の人),https://twitter.com/mmer547/status/903788754506309632)と同じエラーが発生する。どうやら自動でlogの名前に実行日時が書き込まれるのだが、グルー言語としてPython2.7(Python2系はデフォルトではutf-8に対応していない)が使われているため、実行日時の曜日が日本語であることによってエラーが出るらしい。
Salome-Meca2016について†
- 7/12リリース
- サイズが1Gbくらいある
- 2015と同様Post-ProはなくなりParaVisを使う
- パッチを使わなくても日本語化可能
Salome-Meca2015.2について†
Salomeの日本語化†
- 新しい(?)バージョンのcode-asterは、エラーメッセージも英語化できるらしい。
DEXCSのSalomeについて†
- http://dexcs.gifu-nct.ac.jp/pukiwiki/index.php?%A4%C9%A4%A6%C6%B0%A4%AB%A4%B9%A4%CE
- http://dexcs.gifu-nct.ac.jp/download/
- LinuxなりWindowsなりの仮想環境VMWare上に、UbuntuベースのDEXCSをインストールするという利用方法のようなので、Ubuntuパソコン上で直接Salomeを起動するよりも、動作の快適性は落ちるのでは。我々みたいに細かいメッシュで自由度が膨大な解析をするには、厳しいのでは。
- DEXCSを仮想環境上ではなく、パソコンに直接インストールして利用できればいいのだが、そういう利用例が見当たらない(実験してみてもいいが)。
- DEXCSのベースOSとなっているUbuntuのバージョンが、現行サポート中の新しいUbuntuなのか、サポート終了したUbuntuなのか、微妙。
- DEXCS2007/2008-VMwareのときが、Ubuntu-7.10-Desktop.vmxとなっているので、サポート終了した古いUbuntuがベースになっている可能性もあるかと思ったら、
- DEXCS2012がUbuntu12.04なので、Ubuntuのバージョン的には大丈夫だが、日本語とかTeXとかの環境は、インストールし直す必要はある。
- オープンソースと言いながら、非営利限定とか、氏名や所属やメールを登録しないと利用できないのは、あまりいい感じはしない。
- 研究目的なら非営利かもしれないが、例えば県発注の木橋の設計チェックの目的で解析したりしたら営利目的になるのでは。やはり、何にでも無条件で使えるツールでないと困る。
- 2016/1/20時点でDEXCSのダウンロードページを見ても、営利目的ダメとうい記述は見当たらない。この辺、要調査。
- 柴田良一『「Salome-Meca」ではじめる構造解析』のp.29,30の図中には「非営利目的の使用のみ」と書かれていますが、VMWare Playerのことを指しているのだと思います。ちなみに、code-asterのエラーメッセージはフランス語のままでした。(2016/1/21近藤)
- Salomeの日本語化であれば、パッチのインストールとかで、既にできたりするのでは?
インポート†
FreeCADとSalomeを使って、調査してみる。
STEPおよびBREP†
充実立体として、そのままSalomeにインポートして、計算にかけられるので一番取り扱いしやすそうな形式。しかし、AUTOCADからはエクスポートできない。
IGES†
&link(AUTOCADからエクスポートできる形式,http://docs.autodesk.com/ACD/2014/JPN/index.html?url=files/GUID-81A5EE76-39A7-40A4-A5C5-E4921C03B33A.htm,topicNumber=d30e317617)。ほとんどの場合、表面の情報しか持っていないようなので、そのままでは数値計算できない。Salomeにインポートした後に、次の作業が必要。
- Geometry-->New Entity-->Build-->Shell :面からシェルを作る。
- Geometry-->New Entity-->Build-->Solid :シェルからソリッドを作る。
- Geometry-->New Entity-->Group-->Create:充実立体・面・線・点のグループを作る。
stl†
3Dプリンター関係で使用する形式。表面の情報しか持っていないし、そのままSalomeのGeometryにインポートすることはできない(Meshにはインポートできるけど、ShellにもSolidにもなっていないので、全く役に立たない)。Salomeにインポートするには以下のようにFreeCADを経由する必要がある。
FreeCAD†
- stlファイルを開く
- partにて
- 部品→メッシュから形状を作成する
- 部品→シェイプビルダー→シェルからソリッドを作成
- ソリッドを選択したまま……ファイル→エクスポート→BREP format(*.brep *.brp)でsave
Salome†
- geometoryにて
- ファイル→インポート→先ほどのbrepファイルをインポート
- measures→basic propertiesで、volumeを確認して、値が正になっていればOK
- volumeが負の値の時は、もう一度freecadに戻って、
- ソリッドを選択したまま……部品→図形を反転
- 反転したソリッドを選択したまま……ファイル→エクスポート→BREP format(*.brep *.brp)でsave
- これをインポートすると、多分volumeが正の値になっている。
- あとは、普通にcreate groupして、meshに切れば、asterで解ける。
stl(追記)†
Salome-Meca2016になってから、FreeCADを経由しなくても、次のようにすれば充実立体に変換して、メッシュを切って、計算できるようになった。
- geometry-->File-->Import-->STL
- インポートしたstlの物体を選択-->New Entity-->Build-->Shell
- シェルにした物体を選択-->New Entity-->Build-->Solid
とはいえ、stlはすべての面を三角形で形作っているので、面の選択が非常に大変(一つの面を選択したいだけなのに、沢山の細かな三角形を一個一個選択しなければならない)なため、今までどおりFreeCADを経由した方が楽そう。
salome-mecaにスクリプトを使って節点座標をインポートする。†
- まずはインポートしたい店の座標をLbre ofice でx,y,zで座標をインポートする。
インポートしたらダミー文字を座標の前や後に入れてあげる。それは写真で示している感じ。
ダミー文字列は
,AA, | → | P |
,BB, | → | =geompy.MakeVertex( |
,CC, | → | , |
,DD, | → | , |
,EE, | → | ) |
になる
上記の文字列を写真のように入れたら、csvファイルで保存する。
csvファイルで保存したら今度はテキストエディターで開く。その後ダミー文字列を置換する。
表示スクリプトの作成†
Lbre ofice等の表計算ツールで作成する。以下の写真のようになる。
-
B列には座標の通し番号を記述する。Cにはそれに関連した番号を記述する。基本は写真のようになるのではと。。。
そしたらダミー文字を写真のように入れてあげる。今回は点のみであるため全ては使っていない。
ダミー文字列は
,CC, | → | geompy.addToStudy(line |
,DD, | → | ,'line |
上記の文字列を写真のように入れたら、csvファイルで保存する。
csvファイルで保存したら今度はテキストエディターで開く。その後ダミー文字列を置換する。
スクリプトを統括する†
- 適当な.pyのファイルを作る 例えばtamesi.pyみたいな.
- ヘッダーに以下のものを入れる
import sys
import salome
salome.salome_init()
theStudy = salome.myStudy
import GEOM
import geompy
import math
import SALOMEDS
geompy.init_geom(theStudy)
それであとは作ったものを貼り付ければ良い。
salome-meca にスクリプトでインポート†
salome-meca を開いてファイルからスプリクトを読み込むを選択 > あとはファイルを選択すればいい。
salome user's guide†
- ここにいろいろ載ってます、暇な人は翻訳してください
salomeの3Dモデル作成手順†
- ①アプリケーション→グラフィック→salome
- ②モードのSalome-MecaをGeometryに変更
- ③新しく作成する場合はnewを選択、既存のモデルを読み込む場合はopenを選択
salomeの基本操作†
- ①座標の拡大・縮小→スクロールでできる
- ②基準の座標移動→ctrl+スクロールを押しながらマウスで移動もしくは上の方にあるマウスボタンをクリック(左クリック)
- ③基準の座標回転→ctrl+右クリックしながらマウスで移動もしくは上の方にあるマウスボタンをクリック(左クリック)
モデル作成に関して(特に複雑なモデルを作成する方へ)†
- 現在(2017/01/18)多分殆どの人がsalome-meca2013を使っていると思うけど、モデル作成に関しては2015以降のバージョンが格段に作業しやすいので難しいモデルを作る人は新しいバージョンを使うことをお勧めします。また使用しているAsterが古く、対応していない(2013だとver10か11だったかな。最新は13.~)場合、新しいバージョンのSalomeでモデルを作成し、brepファイルにして移動させて(少なくとも2016と2013の互換性あり)計算させましょう。そのほうが早い
点から(中身が詰まっていない)直方体を作る†
- New entity→basic→pointで四角形の元となるように4箇所点を打つ。
- New entity→basic→lineで点と点を繋ぎ、四角形の枠を作る。
- 図の中で点を選択しようとすると、既に作られたlineの方が選択されてしまうような場合は、Object Browser内の該当する点(Vertex_4とか)を選択する。
- New entity→build→faceで4つのlineを選択し、面を作る。
- operations→transformation→transrationで面を複製、
- operations→transformation→rotationで面を立ち上げる、等により直方体を完成させる。
Salome-Meca2019で4点から面を作る。†
- 新しいエンティティ→ブロック→四角形フェースで4点を選択する
面から(中身が詰まっている)直方体を作る†
- New entity→Build→Shellであらかじめ作った直方体を構成する面をObject BrowserからSHFT+CNTLで6面選択する。
- New entity→Build→Solidで先程作ったShellを選択し、中身を詰める。
中身が詰まった三角錐を作る†
- New entity→basic→pointで頂点の座標を打つ。
- New entity→basic→lineで点と点を繋ぎ、三角錐の枠を作る。
- New entity→build→faceで3つのlineを選択し、面を作る。1面ずつしか作れない
- あとは直方体の作り方と同じ
物体を切り抜いて孔を空ける†
- 大きめのボックスから小さめのボックスを切り抜くとする
- まず、ボックスBox_1を作る
- 次に切り抜く小さめのボックスBox_2を作る
- 操作→変形→変換で「オブジェクトの移動」
- オブジェクトにBox_2を選び、孔を空ける位置までDx,Dy,Dzで移動→適用して閉じる
- translation_1ができる
- 操作→ブーリアン→カットで「オブジェクトの切り抜き」
- メインオブジェクトにBox_1を、ツールオブジェクトにtranslation_1を選び、適用して閉じる
geometryで部材に色を付ける。†
- 発表用ツールを作るとするとモデルの図は必要になってくる!どうやって色を付けれないいのだろうと思うんではないであろうか。
geometryのBOX1とかに色を付けたい場合は、モデルを選択して右クリックして色を選択すればいいと思う。それで色を選択すると色が変わってくれる。鋼材とか木材とかゴムだとかいろんな材料を使っている場合は便利な機能である。
Fuseした場合は一気に全部色が変わってしまうため、別々で色を変えてあげる必要がある。
体積を求める†
後藤メモ(2014/11/6)
直方体は割と正確に(有効数字10桁以上)出るけど、球や円錐は有効数字1桁しか出ない(メッシュを細かくしても)。曲面のない角柱や角錐はどうでしょう? 誰か、調査して下さい。
後藤メモ(2014/11/7)
昨夜、自宅のマシンで計算してみたら、精度が悪かったのだが、大学のマシンでメッシュを細かくしてみたら、球でも有効数字3桁ぐらいの精度が出た。
昨晩、家で計算したときは円錐の体積が\( \pi \)になるようにと思って、
半径を100, 高さを333.3333とかと入れたのだけど、3で割るんだから高さは300にすべきですね。それで精度が悪いと思い込んでおりました。
昨夜は、酒もあんまり飲んでなかったはずなので(ビール200\( \sim \)300m\( \ell \))、
ちょっとぼけてきたのかもしれません。
追記(2014/12/16)
SalomeのGeometry操作中に求めたいオブジェクトを選択してMeasuresからBasicPropertiesをクリックすれば体積が求まりました。球の体積も有効数字8桁ぐらいの精度が出ました。
追記(2016/10/21)
メッシュの体積も求めることができます
物体の色を変更する†
物体を木材などの色に変更したいとき
- 変更したい物体(例:box_1)をshowしておく。
- box_1のところで右クリックして、colorを選択して変更する。
Colorが出ない人は……†
- 右クリックで Material Properties → Physical のチェックを外す。
- 設定は↓これくらいだと、見た目に反映される。
色を物体ごとに変えたい時†
- 変えたい物体(box_1,box2)ごとにcreate groupしておく。
- 全体(fuse_1)の色をbox_1の色に変更する。
- create groupのツリーの中のbox_2のみをshow onlyする。
- create groupのツリーの中のbox_2で右クリックcolorを選択し、変更したい色を選ぶ。
- fuse_1をshowしてから、ツリーのbox_2をshowすると2色になる。
2つの画面で物体を見比べるには†
例えば、Mesh_1とMesh_2を見比べたり、Post-Proの結果を見比べたいとき
- Window→New Window→VTK 3D view
- viewer:1とviewer:2で見比べたいものをshowにする
- Window→Split Vertically(横に並ぶ)
- Window→Split Horizontally(縦に並ぶ)
2材料の場合(Aster Study)†
- Material -> DEFI_MATERIAUを2つ作成し,それぞれヤング率とポアソン比を入力
- 名前は自分で分かるように適当に決める(鋼材=kou, 木材=mokuとか)
- Material -> AFFE_MATERIAUは1つだけ
- Material assignementの+をクリック -> edit -> 「Exactly One」 -> Group of elementで鋼材の材料定数を割り当てるグループを全て選択
- Material -> さっき作成したDEFI_MATERIAUのうち,kouを選択 -> OK
- Material assignementをもうひとつ増やしクリック -> 「Exactly One」 -> Group of elementで木材の材料定数を割り当てるグループを全て選択
- Material -> さっき作成したDEFI_MATERIAUのうち,mokuを選択 -> OK -> OK
2材料を解くためsalomeでグルーピングするには†
材料が2つのとき
- 例えば部材がbox_1の上にbox_2が乗っかっているモデルだとする。
- SALOME↓のプルダウンメニューからGeometryを選択→New
上部タスクバーのNew Entity→Primitive→Boxを選択。
- 寸法は好きなようにする。Box_1ができる。
- operations-transformation-translationで、Box_1を動かし、Box_1の上にちょうど乗っかるようにする。Create a copyのチェックはつけたままにする。(チェックボタンは他も弄らなくてよい)
- Box_2ができる。
- box_1とbox_2の境界面をpartitionで区切らなければいけないため、create groupを行う。
- ツリーのbox_1を右クリックし、Create Groupを選ぶ。
- ラジオボタンで、□(面)を選び、Main Shapeに面を指定する物体を選ぶ。(box_1とする)
- Geometryにbox_1だけを表示させて、box_2と接している面をクリックして、Add-Apply and Close 。ツリーのbox_1の下に、Group_1ができる。
- これでpartitionのための設定が終わる。
- box_1とbox_2を一体化させてメッシュを切るので、Fuseする。
- Operations-Boolean-fuse で、object 1 - box_1 、object 2 - box_2 と選び、apply and Close。Fuse1ができる。
- Fuse1をpartitionで区切る。Operations-Partition を選び、Objects - Fuse1 と指定し、
Tool Objectsには、ツリーのbox_1の下できているGroup_1を選び、Apply and Close。
- Partition_1ができる。
- Mesh画面にいき、Partition_1を選択してメッシュを切る。(ここでMesh_1ができるとする)
- メッシュを切ったら、グルーピングを行う。Fuseしたモデルを切ったMesh_1を右クリックしてCreate Groupをクリック。
- Mesh - Mesh_1、Element Type - Volume、Name は(かぶらなければ)好きなようにつける。まあ、Group_1mとする。(Groupの名前はGeometryにあるものとかぶっても問題はなさそうだけど。)
- Group type ではGroup on filterにチェックを入れる。すると、Set Filterボタンが現れるので、クリックする。
- Filterの設定画面が出るので、Add 。
- 今回は、Geometry のモデルでフィルターをかけるので、Criterion - Belong to Geom 、Compare - Equal to を選ぶ。
- そして、Threshold の中の空白をクリックしたら、ツリーの中からbox_1を選択。良ければApply&closeしてGroup設定画面もApply&close。
- これで、box_1の部分のメッシュがすべてGroup_1mに入れられたことになる。
- もう一度Create Groupする。今度はbox_2の部分のメッシュをグルーピングする。
- MeshにMesh_1、Element Type にVolume、NameはGroup_2mとかにする。
- Group type ではGroup on filterにチェックを入れる。すると、Set Filterボタンが現れるので、クリックする。
- Filterの設定画面が出るので、とりあえずAdd をクリック。
- Criterion - Belong to Geom 、Compare - Equal to を選ぶ。
- Threshold の中の空白をクリック、ツリーの中からbox_2を選択。Apply&closeしてGroup設定画面もApply&close。
- これで、box_2の部分のメッシュがすべてGroup_2mに入れられたことになる。
- unvファイルを保存したい場合は、Mesh_1を右クリックして、unvファイルを保存する。
- 要素数が多ければ多いほど、グルーピングにかかる時間が増える(ものすごく重くなる)
ので、性能のいいPCを使ったほうがいい。当然、Salome以外の余計なものを開いているならグルーピングの前に消しとく(大事なデータは保存しとく)ほうがいい。
- 以下のModel Definitionの設定を2材料の場合に書き換えていきましょう
- Model Definition -> Assign finite element
- メッシュ : mesh(LIRE_MAILLAGE) (Read a mesh で付けた名前)が自動的に選ばれる(ちなみに、LIRE MAILLAGEはRead a meshのフランス語)
- At Least One -> Finite element にチェック
- "0 items +"の+をクリックすると、"1 item"に変わり、
- Exactly One : Everywhere : Yes (1材料なら)
- (2材料以上なら):Group of element -> Edit -> …
- Phenomenon -> Mechanicを選択すると、
- "0 items +"が現れるので、"+"のところをクリックすると、"1 item +"に変わり、その下に空欄と▽プルダウンが現れるので、▽プルダウンをクリックすると、
- プルダウンメニューが現れるので3D (立体要素なら)を選択
- OKをクリックすると、プルダウンが消えて"At Least One"の画面に戻るので、もう1回OKをクリックすると
- 左側のData Settingsに"model"が追加される。
salomeで.unvをつくり、プログラムで.inpにする方法†
- メッシュを切るときは、事前に、SalomeのMesh画面で、
File-Preferences-Mesh-General-のSize limit(elements)の数を、
50000からNo limitにするか99999999とかにして、
Mesh InformationのAutomatic nodes compute limitも同様にしておくと、
computeした時のメッシュが多くなりすぎるよ、というエラーが出なくなる。
四面体要素C3D4†
メッシュを切る手順†
- SALOME↓のプルダウンメニューからGeometryを選択→New
- 上部タスクバーのNew Entity→Primitive→Boxを選択
- DX:100, DY:200, DZ:1000とかにしてApply and close(梁は軸がz, たわみ方向がy)
- Geometry↓のプルダウンメニューからMeshを選択
- MeshのCreate Meshを選択。C3D4でメッシュを切るので
Assign a set of hypothesesから3D Automatic tetrahedralization(tetrahedron (netgen) を選択
- Create meshウィンドウで、Geometryの脇の矢印をクリックしてから、
左のObject Browser内のBox_1をクリックするとGeometryにBox_1が選択される。
- Apply and close
- 左のObject Browser窓内のMeshを右クリックしてComputeを選択するとメッシュ分割
- Mesh computation succeedウインドウに書かれたNodes, Edges, Faces, Volumesの数は、c3d4unv.f90を使うときに使うので適宜、メモしておく(ウインドウを開いたままにしておく)
- できたMesh_1とかを右クリックしてunvファイル保存
- ccx_2.5 mesh_1 でmesh_1.inpの入力データをCalculiXで解く
- mesh_1.datに計算された節点変位等が出力されている。
直方体要素C3D8で切る手順†
- 普通にモデルを作ったあと、Mesh-Create Meshから、
- Assign a set of hypothesesから3D Automatic Hexahedralization を選択。
- Number of Segments で 分割数を決める。
- Type of distrubution-は、Equidistant,Scale,Distribution with table,
Distribution with analitic densityの4つがある。
- Distribution~はf(t)=[]となどの関数指定系。
(このType of distrubution-について有用なことを知っている人は詳しく書いてください。)
salomeでダイヤカットを作る†
c3d4or3dプリンタ用†
- new entity-basic-circleで円を作る
- new entity-basic-pointを選択
- 真ん中の直方体みたいなのを選んぶ
- by parameterを選ぶ
- Edgeにさっき作ったcircleを選ぶ
- parameterを0~1まで変化させるとそれに対応した点をcircle上に打てる
- 1を周方向分割数で割った数ずつ変化させて点を打つ
- もう一個circleを作る
- それをoperations-transformation-translationで
- 高さ方向に動かす
- さっきと同じように点を打つが始まりのparameterを
- 0ではなく1を周方向分割数の2倍で割った数にしてはじめて
- 1を周方向分割数で割った数ずつ増やしていく
- 上の作業を半径を小さく下circleを使って同じように行う
- new entity-build-edgeで辺を作る
- 上と下の面の辺を new entity-build-wireでつくる
- 内側は内側、外側は外側のedgeをつなげるといい
- できたら wireを二つ使って new entity-build-wire
- これを上の面としたの面を作る
- 三角形の面のedgeをwireにしていく
- wireにしたらそれをfaceにする。
- fuseして内側と外側の面を作る
- できたものをfuseしていく
- 全部fuseしたらnew-entity-build-shellでshellにする
- できたshellをsolidにする new-entity-build-solid
s6用†
- new entity-basic-circleで円を作る
- new entity-basic-pointを選択
- 真ん中の直方体みたいなのを選んぶ
- by parameterを選ぶ
- Edgeにさっき作ったcircleを選ぶ
- parameterを0~1まで変化させるとそれに対応した点をcircle上に打てる
- 1を周方向分割数で割った数ずつ変化させて点を打つ
- もう一個circleを作る
- それをoperations-transformation-translationで
- 高さ方向に動かす
- さっきと同じように点を打つが始まりのparameterを
- 0ではなく1を周方向分割数の2倍で割った数にしてはじめて
- 1を周方向分割数で割った数ずつ増やしていく
- new entity-build-edgeで辺を作る
- new entity-build-faceで面を作る
- 作ったfaceをfuseでくっつける
- くっつけた奴をoperations-transformation-mirror imageで反転させる
- objectにfuseしたモデルを選び
- point mirror x=0 y=0 z=一段分の高さの点をnew entityで作り選ぶ
- それでできた形とfuseしたものとをfuseで合わせる
- これでダイヤカットの基本形ができたので
- あとはこれをoperations-transformation-translationで
- 動かしてfuseを繰り返して自分の作りたい形を作る
Salomeモデリング上の注意†
- Salomeでモデリングの際に入力した座標はinpファイルにすると1000倍大きい値になる
- 1000倍にならなくなっている
- E-003とかついてるところは文字がおおくて読めないので何文字か消さないと行けない
計算結果をcsvファイルで出力†
- Asterの.commファイル作成まで進める
- Object BrowserのAsterを展開→linear-static展開→Data展開→hoge.commを右クリック
→Run Eficas→OK
- Commandeの下の方IMPR_RESU:を展開→RESU:展開→b_extrac展開→NOM_CHAM選択→Valeur(s) possibles(s)から結果が欲しい項目を選択して左向きの指差しボタンをクリック(デフォルトであるのはSIGM_NOEU(応力テンソル),SIEQ_NOEU(相当応力),DEPL(変位量))→Validerで完了→フロッピーのアイコンをクリックで保存→閉じる
- Asterで計算→計算後フォルダの中に「linear-static.rmed」というファイル作られるので
- (
$cp linear-static.rmed linear-static.med
- )
とかで拡張子を.medに変更する
- SALOMEのプルダウンメニューからParaViSを選択
- メニューバーFile→Open Paraview File...→「linear-static.med」を選択
- 真ん中左のApplyをクリック→SurfaceとあるプルダウンメニューからPointsを選択
- 画像の位置にある「Select Points Through」を選択→クリック&ドラッグで結果の欲しい節点を選択する(現れる矩形にオブジェクト全部入れてしまえばいいと思う)
- メニューバーFilters→Data Analysis→Plot Data→画面左のPipeline BrowserにPlotDataができる→それを選択してすぐ下のApplyをクリック
- 現れたグラフの右上の「日」をクリック→出てきたCreate ViewからSpreadsheet Viewを選択→結果の数値が表で出現
- メニューバーFile→Export→名前をつけてOK→完了
New Entity†
Primitive†
- syrinder 円缶の作成
- box 直方体の作成
- cone 円柱~円錐の作成
- Disk 円の面
- rectangle 四角の面
- sphere 球
basic†
Delete all?が出たら†
Salomeを閉じるときにたまに出るやつ.
これが出たら「はい」を押そう.「いいえ」を押すとAster Studyのコマンドファイルが消えてしまう.
fieldmatの個数制限†
fieldmatのMaterial assignementの数とGroup of elementの中の個数が20個までに制限されている.
SALOMEで形状生成 → Netgenでメッシュ切り → cgxで境界条件設定 → CalculiXで計算†
SALOME†
- 任意の形状を作る
- メニューバーFile→Export→Files of typeをSTEP Filesにして保存
Netgen†
- メニューバーFile→Load Geometry→さっきつくったhoge.stepを選択
- メニューバー一段下のGenerate Meshを一回クリック→メッシュが切れる
- メニューバーRefinement→Refine Uniformをクリックしただけ細かくメッシュが切れる
(細かく設定できるみたいだけどひとまずおいておく)
- File→Export Filetype→Abaqus Formatを選択
- File→Export Mesh→hoge.inpで保存
cgx†
- (
$cgx -c hoge.inp
- )
を実行でさっきつくったhoge.inpを開く
以下のcgxコマンドは全部「CalculiX Graphix」ウィンドウ(以下cgxウィンドウ)が手前にある状態で入力
- (
plot n all
- )
で全節点を表示
- cgxウィンドウのオブジェクトが映っている枠の外で左クリック押しっぱなし→Orientation→適当な面で左クリック離す
- hageという名前で拘束する節点を決定していく
- (
qadd hage
- )
を実行
- cgxウィンドウ内でaキーを打つ→
- (
mode:a
- )
と表示される
- cgxウィンドウ内でrキー入力→ポインタを動かしてr入力→節点を選択するための矩形が表示される
- 例えばいわゆる片持ち梁にするときは図のようにして拘束したい節点を矩形の中に入れてnキーを入力(奥行き方向の節点が全部選択される)
- qキーで選択終了→
- (
plot n hage
- )
で確認
- 次にhigeという名前で載荷面を決定していく
拘束点と同じように
- (
plot f all
- )
で全面を表示後、同じくqadd→mode:a→r,r→fキーで面を選択(ピンク色に変わる)
- たぶん選択面が厚くなるので
- (
plot f hige
qrem hige
- )
を実行後、r,r→削りたい領域を矩形の中に入れる→fキー→qキー→
- (
plot e all
plus n hage
plus f hige
- )
で最終確認後、
- (
send hage abq nam
- )
で拘束点をhage.namというabaqus形式で出力、次に
- (
send hige abq pres 10000
- )
で載荷面をhige.dlo(面載荷の場合は拡張子が.dloみたい)というabaqus形式で出力(presは面載荷、数字は荷重)
- エディタでhoge.inpをひらく
- (
Node†
Node, NSET=Nall†
Element, type=C3D4, ELSET=PART1†
荷重のかけ方†
- (
send hige abq force 1. 2. 3.
- )
- 節点ごとに荷重を加える場合はforceにする
- 最後の値はそれぞれx,y,z方向の荷重を表している
- 点荷重の場合はCLOADにする
直方体に直方体メッシュを切って、拘束、載荷する手順†
- SALOME↓のプルダウンメニューからGeometryを選択→New
- 上部タスクバーのNew Entity→Primitive→Boxを選択
- DX:100, DY:200, DZ:1000とかにしてApply and close
- Geometry↓のプルダウンメニューからMeshを選択
- MeshのCreate Meshを選択
- Assign a set of hypothesis から Hexahedralizationを選択
- Number of segments を10とかに選択
- 左のObject Browser窓内のMeshを右クリックしてComputeを選択するとメッシュ分割される
- ↓プルダウンメニューをGeometryにしてNew Entity→Group→Create
- まずは拘束面の指定
- Shape of typeで面だったら□のところにチェック
- 左のObject Browser窓内のBoxを選択して、Main shapeの更新矢印をクリックして選択(自動的に選ばれている場合は不要)
- マウスを選ぶ面のところに持っていって輪郭線が青になったらクリックすると白くなる
- Add→Apply and close
- 左のObject Browser窓内にGroup1ができてる
- 次に載荷面の指定:上記のNew Entity→Group→Create以下を繰り返す
- 左のObject Browser窓内にGroup2ができてる
- モデルを画面内で上下左右に動かす場合は、Panning(四方矢印)ボタンをクリック
- Geometry↓のプルダウンメニューからAsterを選択
- 上部ツールバーのAsterからWizards→Linear elasticを選択
- Model definitionで3Dを選択→Next
- Mesh selectionで左のObject Browser窓内のMesh+をクリックして
- Mesh_1を表示させて選択し、Mesh selection窓内の更新ボタンをクリックして選択しNext
- ヤング率とポアソン比を入れる→Next
- Boundary Conditionで拘束面(Group1)についての拘束条件(u=0,v=0,w=0)を入れてNext
- 載荷面(Group2)についての載荷条件(Pressureしか選べない)を設定してNext
- コマンドファイル保存画面が出るのでhoge.commを保存
- 左のObject Browser窓内のAster+をクリックしてLinear elasticを出して右クリック
- ↓のプルダウンメニューからPost-Proを選択
- 左のObject Browser窓内のPost-Proの+を順次展開していって、
- Linear elastic→MAIL→Fieldsの辺りに変位や応力の結果表示?が入っている
SalomeからCalculiXのinpファイルを生成†
SalomeのunvファイルをCalculiXのinpに変換†
- (
$/opt/caelinux/unv2x.py hoge.unv
- )
を実行すると、
- (
/opt/caelinux/unv2x.py: line 17: class: コマンドが見つかりません
/opt/caelinux/unv2x.py: line 18: a simple FEM object structure: コマンドが見つかりません
/opt/caelinux/unv2x.py: line 19: 期待してない token `(' のあたりにシンタックスエラー
/opt/caelinux/unv2x.py: line 19: ` def __init__(self):'
- )
のエラー。
unv2x.pyはバグがあるとのことで、CAELinuxのサイトのどこかにあるアップデート版を
使うとうまくいくのかもしれないが、教室会議...
SalomeのmedファイルをCalculiXのinpに変換†
- http://www.caelinux.org/wiki/index.php/Proj:MedAba
zipファイルをダウンロードして解答してインストールしようとするとうまくいかないが、
バイナリーが最初からCAELinuxに入っているので、
以下のように実行。
- (
$/opt/Calculix/MEDABA/medaba10-64bit hoge.med
- )
すると、
- (
argc=2
Lecture du fichier hoge.med.med
ERREUR : les fichier hoge.med.med n'est pas au format HDF V5
マニュアル和訳†
計算サーバーのsalomeを使う手順†
- ssh -CX ユーザー名@hogehoge.hoge.jp
として、計算サーバーにログイン(アドレスは柴田さんが知ってる)
- salome& でサロメを起動(同時に何人ぐらいまで使えるかは不明)
- salomeを終了してもちゃんと終了していないことがあるので、
- ps ux|grep salome を実行して、salome関係のスクリプトで走ったままのものがないかどうかを調べる。すると、
- (
ユーザー名 3721 0.1 0.2 143332 7308 ? Sl 16:31 0:00 notifd -c /usr/local/bin/SALOME5/V5_1_3/KERNEL_V5_1_3/share/salome/resources/kernel/channel.cfg -DFactoryIORFileName /tmp/gakusei_rdifact.ior -DChannelIORFileName /tmp/gakusei_rdichan.ior -DReportLogFile /tmp/gakusei_notifd.report -DDebugLogFile /tmp/gakusei_notifd.debug
ユーザー名 3887 0.0 0.0 2800 804 pts/2 S+ 16:32 0:00 grep --color=auto salome
- )
みたいに表示されて、salome関係で走っているプロセスが表示されるので、
殺すべきプロセス番号を
- (
kill -KILL 3721
- )
みたいにして殺していったら、また ps ux|grep salomeをやって、grep だけのプロセスに
なったら、logoutまたはexitでlogoutする。
- コマンドプロンプトがちゃんと戻ってこなかったらcntl+c
動作状況等†
&link(Salome,http://www.salome-platform.org/)5.1.3のバイナリー版は、
Vine5.1上では、起動はするが、Geometryなどの新規作成をして、ちょっと動作させようとすると、
&link(ここ,http://salome-meca.cocolog-nifty.com/blog/2012/02/30-f8fd.html)
と同じ事をやろうとするとメッシュを切るまでは問題なく進むが、
そのあとAsterに切り替えた瞬間に
Fatal error
SIGSEGV 'segmentation violation'detected Address 18
と表示され動かなくなる(Address 0 も確認)。Terminalでどんなエラーが出力されるかよく見る必要がある。
salomeを再起動後、再度計算を試みた。
Linear elastic -> 3D までは問題ない。
次のselect a mesh from the salome object browser で、
作ったMesh_1を選択しても
The selected entry is not a mesh or the SMESH component must be activated
と言われてしまう。
salomeのフォーラム(古いけど)を見る限り、有効な解決策はないみたい。
- NVIDIA no driver wo iretara douka
code-asterの基本的な使い方(線形弾性)†
code-asterにはかなりたくさんの機能がある。詳しい使い方は&link(ここ,http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2)に載っている。
code-asterコマンドリスト†
http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?plugin=attach&refer=SALOME-Meca%A4%CE%BB%C8%CD%D1%CB%A1%B2%F2%C0%E2&openfile=00-00.pdf
- 3.設定→荷重の設定 FOACEは間違い 正しくは○FORCE
「geometry」で固定や載荷をするところをつくる†
- 目的とする物体(box1とか)を右クリックして、「create group」
- 立体・面・線・点のどれかにチェックをいれて、固定や載荷をするところを選択
- 後で何度もここを選択するので、fixとかkoteiとかの分かりやすい名前のほうがいい
- 超重要:バージョンによるかもしれないが、名前は8文字以下にしないと原因不明のエラーが出る!!
- add→apply(and close)
- 一つのツリーにまとまっていればOK
- 注:後でひずみのグラフを見るときのため、(軸方向-見たい変位方向)の関係が(x-y)か(y-z)か(z-x)になるように、載荷するところをつくる。
- たとえば、z軸方向に軸をとったとき、x軸方向に荷重をかける
「mesh」でメッシュ分割†
- (固定面や載荷線などを含んだ)ツリーの元を選択して、create mesh で好きなようにメッシュ分割し、compute
- ちなみに、メッシュ分割後も右クリックで「create group」できる。
- meshを右クリックして、「convert to quadratic」をクリックし、applyすると、(中間節点を設けた)2次要素になるので新井メッシュでも精度がよくなる。
「aster」で条件を入力†
- aster→wizards→linear erastic
- 「3D」NEXT
- 計算したい物体(メッシュ)を選び、境界条件を
- meshで作ったグループで指定したい場合は、「Use mesh groups」に
- geometryで作ったグループで指定したい場合は、「Use geometrical groups」に
- チェックを入れて、NEXT
- ヤング率とポアソン比(この数値はあとで変えられる)を入力して、NEXT
- 支点の選択をして、NEXT
- groupをダブルクリックすると、支点を選択できる。
- 「+」、「-」をクリックすると支点を追加したり、消したりすることができる。
- 拘束条件は後で変えられるので「DX,DY,DZ」はあまり気にしなくてもいい。
- 同様に、載荷箇所と荷重を指定して、NEXT
- これも後で、荷重の種類・大きさ・方向等を変えられる。
- commファイルに分かりやすい名前を付けて保存する。
「commファイル」で各条件を編集†
- 単位
長さ | 応力 | (集中)荷重 | 線荷重 | 面荷重 |
m | Pa | N | N/m | N/m\( ^2 \) |
mm | MPa | N | N/mm | N/mm\( ^2 \) |
- 材料定数
- (
MA=DEFI_MATERIAU(ELAS=_F(E=206000000000.0,
NU=0.3,),);
- )
ヤング率E,ポアソン比NUなどの材料定数の値をここで書き直せる。
- 複合材料の場合、MAを消してMA1,MA2(名前は何でもいい)とかを書き足せばいい。例えば、
- (
MA1=DEFI_MATERIAU(ELAS=_F(E=206000000000.0,
NU=0.3,),);
MA2=DEFI_MATERIAU(ELAS=_F(E=69000000000.0,
NU=0.33,),);
- )
- 材料の対応
- (
MATE=AFFE_MATERIAU(MAILLAGE=MAIL,
AFFE=_F(TOUT='OUI',
MATER=MA,),);
- )
- ここの「TOUT」は、全てを材料指定の対象としているので、材料が一つだけの時に使える。
- ここの「MATER=」を先ほどの材料定数の名前と対応させる。
- また、複合材料の場合、例えば次のように書き足せばいい。
- (
MATE=AFFE_MATERIAU(MAILLAGE=MAIL,
AFFE=_F(GROUP_MA='part1',
MATER=MA1,),
_F(GROUP_MA='part2',
MATER=MA2,),);
- )
- ここの「GROUP_MA=」では、体積・面・線のグループで材料を指定している。これをsalome-mecaのasterで選んだ物体の名前と対応させる。
- 境界条件、荷重条件(片持ち梁を例に)
- (
CHAR=AFFE_CHAR_MECA(MODELE=MODE,
DDL_IMPO=
_F(GROUP_MA='fix',
DX=0.0,
DY=0.0,
DZ=0.0,),
FORCE_FACE=
_F(GROUP_MA='load_f',
FX=3183098.862,),
);
- )
- 「DDL_IMPO」は変位の設定で、境界条件を体積・面・線にかける場合「GROUP_MA」でグループを指定する。
- 'fix'はgroupで作った固定端の名前。ローラ支持の場合、「DX=0.0」とかを消す。
- ここでは面荷重なので「FORCE_FACE=」(単位面積当たり)になっているが、荷重の種類によって、「FORCE_ARETE」(単位長さあたり)や「FORCE_NODALE」(点に載荷)に変える。例えば、
- (
FORCE_NODALE=_F(GROUP_NO='load_n',
FX=1000.0,),);
- )
は点載荷だが、これを断面積A=0.01\( ^2 \)πで割ったものが、先ほどの面載荷で、実際にたわみはほぼ同じになる。
- 'load_f'と'load_n'はそれぞれgroupで作った載荷面と載荷点の名前。
- ここでは「FX」でX方向に載荷しているが、軸の方向に気を付けて適宜「FY」、「FZ」を使う。
- 「MX」、「MY」、「MZ」でモーメント力も入れられるようです。
- ちなみに部品の連結とかの条件をいれたい場合も「CHAR=AFFE_CHAR_MECA(MODELE=MODE,」の中に書き加える。
- salome-mecaのasterに戻って、「linear-static」を右クリックして、RUN
- 成功していたら、その下に「post-pro」ができる
- 「post-pro」ができていなかったとき、「linear-static.mess」や「linear-static.resu」というファイルを見ると、どこでエラーが起きたかが確認できる。
要素数が多くて計算が出来なかったときの対処方法†
- 「linear-static.mess」を確認すると一番下にtotalの計算時間が出ているのにも関わらず、「post-pro」が出来ていないとき
- メッシュが細かくて、要素数が多いとcommファイルが適切に書かれていても、計算が途中で終わってこうなる。
- aster→linear-staticを右クリック→edit
- 下の方にスクロールすると、「total memory=256MB」と「time=120s」があるので、この値を大きくする
- 例えば、榎戸正一 『開発現場で活用できるオープンソースCAE①』では、複雑な構造物に対して、「total memory=500MB,time=500s」に変更している。
「post-pro」で結果の表示†
- *linear-static.rmed→fields
- 変位(色と見た目)
- resu___depl→mail→0を右クリックして「deformed shape and scalar map」
- 「deformed shape and scalar map」の「scale factor」で変位の見た目の大きさを変更
- 「scalar bar」の「scalar mode」を見たい変位方向にチェックを入れて、OK
- OKを押したあとでも、再び「deformed shape and scalar map」を右クリックして、editを押すと諸量を変更することができる。
- ちなみに、「deformed shape and scalar map」を右クリックして、sweepを押すと、変形の動画が見れる。
- 変位(各節点の数値)
- resu___depl→mail→0を右クリックして「values laveling」
- メッシュが細かいと文字同士が重なって見えないうえ、salomeの拡大・回転の動作が著しく遅くなるので、予め読み取りたい節点について拡大表示してからするといい。
- 見たい断面があるなら、
- resu___depl→mail→0を右クリックして「cut planes」して、
- 切りたい平面をorientationで選択し(//Z-X とか)、
- その平面をrotationsで回転させ(普通 0のまま)、
- 切りたい面の数をnumber of planesで選択し(普通 1)、
- set defaultのチェックを外し、切りたい箇所の座標(平面がZ-XならY座標)を入力し、
- okをクリックしてから、見る。
- 見たい線があるときも同様に、
- resu___depl→mail→0を右クリックして「cut segment」
- 変位(グラフと表)
- グラフ1(ある断面を複数の線で)
- resu___depl→mail→0を右クリックして「cut lines」
- 「plane of lines」の「orientation」が「軸方向-変位方向」になるように選ぶ(例えばz-x)
- 「cut planes」の「orientation」を軸方向を含む平面を選ぶ(先にz-xを選んだ場合はy-z)
- 「cut planes」の「number planes」を切りたい数に指定しOK
- グラフ2(座標指定した単一の線で)
- resu___depl→mail→0を右クリックして「cut segment」
- 「cut segment」の「segment」を見たい線の始点と終点の座標を入れる
- 「scalar bar」の「scalar mode」の方向を指定してOK
- 表
- 「cut lines/cut segment」の左の「+」をクリックすると「table」がでる
- 「table」を右クリックして、「show table」
- メッシュが粗いと、変位に空白の欄が多くなる。
- ちなみに、「export table」でcsvファイルにエクスポートできる。
- X:切った線の全体を1.0としたときの割合、Y○:切った線ごとの変位とか(4面体要素なので、ほとんど",,"で欠落している)
- 応力
- resu___sieq→mail→0を右クリックして「deformed shape and scalar map」→「scalar bar」
- 「scalar mode」を出力したい応力
- ミーゼス応力なら、[1]vmis
- 引張と圧縮で符号を付けたミーゼス応力(本当はない?)なら、[6]vmis_sg
- 最小主応力なら、[3]prin_1
- 最大主応力なら、[5]prin_3
- にチェックをいれてOK
- 各方向の応力
- resu___sigm→mail→0を右クリックして「deformed shape and scalar map」→「scalar bar」
- 「scalar mode」を出力したい応力
- [1]sixx\( =\sigma_{xx} \)
- [2]sixy\( =\tau_{xy}=\tau_{yx} \)
- [3]siyy\( =\sigma_{yy} \)
- [4]sixz\( =\tau_{xz}=\tau_{zx} \)
- [5]siyz\( =\tau_{yz}=\tau_{zy} \)
- [6]sizz\( =\sigma_{zz} \)
- にチェックをいれてOK
「paravis」で結果の表示†
- rmedファイルを開く
- filterから、任意の箇所のグラフがつくれる。
rmedファイル(結果)をテキストファイルにするには†
commファイルの編集(unvファイル)†
初期状態では、commファイルの一番下が、
- (
IMPR_RESU(FORMAT='MED',
UNITE=80,
RESU=_F(MAILLAGE=MAIL,
RESULTAT=RESU,
NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL',),),);
- )
と、なっているので、この1行目を
- (
IMPR_RESU(FORMAT='IDEAS',
- )
- 追記:'IDEAS'よりも、'RESULTAT'にしたほうが、かなり見やすいです。
に変えて、asterをrunすると、いつも通り同ディレクトリにlinear-static.rmedができている。名前は、med形式になっているが、viで中身を開いてみると、ちゃんとunv形式になっている。デフォルトでは、viでunvファイルを開いて、次のように打てば節点情報が見れる。
- 変位: "/DEPL" +Enter(+n) ,さらに節点番号○○で指定する場合 "/N○○" +Enter
- 並びは、"DX DY DZ DRX DRY DRZ"の順。
- 主応力: "/PRIN" +Enter(+n) ,さらに節点番号で指定する場合 "/N○○" +Enter
- 並びは、"? VMIS ? PRIN_1 PRIN_2 PRIN_3"の順。
- ミーゼス応力: "/VMIS_SG" +Enter(+n) ,さらに節点番号で指定する場合 "/N○○" +Enter
- 応力テンソル: "/SIGM" +Enter(+n) ,さらに節点番号で指定する場合 "/N○○" +Enter
- 並びは、"SIXX SIXY SIYY SIXZ SIYZ SIZZ"の順。
ちなみに、載荷線or面などのグループの節点番号を調べたい場合は、
- 1."/ 2477"で「グループ情報のヘッダー」へ行くと、
- グループ名の下の行に"8 線or面or要素番号 0 0"が書かれているので、
- astkでunvファイルを出力すると、"7 節点番号 0 0"というように直接節点番号が出るみたい。
- 2."/ 2412"で「線、面、要素情報のヘッダー」へ行き、
- 3."/ 線or面番号"を調べると、
その下に節点番号が書かれている。
Gmsh経由(posファイル)†
ぱっと見、節点番号が表示されていない気がしますが……。
- Gmshでrmedファイルを読み込んで、"Save As..."からGmsh Mesh-based(*.pos)形式でエクスポートすれば中身が見れる模様。
直方体要素での解析方法†
https://sites.google.com/site/codeastersalomemeca/home/salome-meca-chutoriaru1/meshmojuru#TOC-6-Geometry-を参照した
- Meshモジュールで[Mesh]を選択
- [Create mesh]
- [Geometry]に作成した図形を選択する
- [Assign a set of hypotheses]を開き、[3D Automatic Hexahedralization]を選択する
- [Number of Segments]のウィンドウでは[Cancel]を押して何もしない
- タブを[1D]に切り替える
- [Hypothesis]の歯車ボタンを押して、[Max Size]を選択する
- [Length]を設定して[OK]を押す
- [Apply and Close]
- [Compute]して、計算させると下図のような「!」がついてしまう。
- Asterモジュールでこの[!Mesh_2]を選択するとエラーメッセージが出る。「寸法が一致していない」という意味だと思うが・・・
(解決したらここに方法を書く)†
熱関係†
asterで熱を解くやり方(材料一つ)†
- まず、メッシュの切り方が重要である。試したところ、四面体要素では解析できなかったので、次のように設定して解くことをおすすめする。もしかしたら、四面体でできるかもしれない。
- 3Dタグでalgorithmをhexahedron(i,j,k)にする。
- 2Dタグでalgorithmをquadrangle(mapping)にする。
- 1Dタグでalgorithmをwire discretisation、hypothesisでlocal lengthを設定する。local lengthを設定するとメッシュの細かさを変更できる。たしか、lengthで変更できる。また、precision(精密というのだが)はよくわからないが参考として1e-07で良い。
- add.hypothesisをquadratic meshに設定する。これは解析の精度を上げるための設定なので、設定しなくても問題ない。
- 以上でメッシュの設定は終わり。
- つづいて、eficasの設定をする。
- まず、DEFI_MATERIAUの設定をする。
ここでは材料諸元の設定ができる。
ELASでEがヤング率、NUがポアソン比である。
ここで、線膨張率を加える。
ELASをクリックをすると、右側のajouter mot-clefが表示されるので、
ここでALPHAをクリックしてvaliderで追加する。
最後にDEFI_MATERIAUをクリックし、
nommer conceptで材料名を入力して設定する。
- 次にAFFE_MODELEをクリックし、nouvelle commandeタブでCREA_CHAMPを追加する。
そして、これによってどの部材をどのくらいの温度まで上昇させるかを設定する。
TYPE_CHAMをNOEU_TEMP_Rに設定する。
CREA_CHAMPをクリックし、OPREATIONを追加してAFFEに設定する。
b_affeをクリックし、MODELEを追加してMODEを設定する。
AFFEでTOUTとあるがこれは対象構造物全体を表す。
今回は材料一つなのでこれを使う。
このTOUTをOUIに設定する。
NOM_CMPではnommer conceptタブでTEMPを入力して設定する。
VALEを追加し、何度まで上昇させるかを設定する。
最後にCREA_CHAMPでクリックし、nommer conceptタブでtempSを入力する。
たぶん、ここの入力何でもいいと思うが参考にした資料はこれを入力していた。
- AFFE_MATERIAUの設定をする。
ここは材料の初期条件にあたる。
AFFEではTOUTをOUI、MATERで材料諸元で設定した材料名を設定する。
次にAFFE_MATERIAUをクリックし、AFFE_VARC追加する。
そして、TOUTをOUI、NOM_VARCをTEMP、CHAMP_GDをtempS、VALE_REFは初期温度を設定する。
- AFFE_CHAR_MECAを設定する。
今回は熱に関して解くだけなので、荷重の部分であるPLES_LEPは削除する。削除する方法は削除したい項目を右クリックして出てきた項目をクリックすれば良い。
- 以上で設定は終わり。あとはRUNすればよい。
- eficasの完成形
シェル要素†
- この辺↓が詳しい。
- シェルとソリッドの組み合わせは、この辺↓とか。
接触解析(摩擦あり)†
座屈解析†
- buckv10.comm
- ここのページの円柱の座屈をv10用に書き換えてみた。ついでに、立体要素でも確認しやすいように境界条件は片持ち梁(n=1/4)に変えてある。モデルは、pythonスクリプトで読み込んだものに対応。
- オイラー座屈の公式:Pcr=\( \frac{1}{4}\frac{\pi^{2}EI}{\ell^{2}} \)=10.1739N に対して、Code_Aster:Pcr=10.1829N .
- 座屈の次数以外のパラメータは謎.
- buckv12.comm
- 河原さんの座屈解析用commファイルをv12用に翻訳したもの.Warningは出るものの,一応v12で計算できる.
- 以前からだが,出力結果は負の値で出力される.同時に正の値も出力されることもあるが,恐らくそれは逆方向に載荷した時の座屈荷重だと思われる.
直交異方性材料†
Aster Studyの設定方法†
- 基本的には等方性の解き方のときと一緒の設定です。
- 違うところはDEFI_MATERIAU(材料特性の設定)
DEFE_MATERIAU(Define a material)†
*ELAS_ORTHを選択する。†
- EN(軸方向のヤング率) -ET,EL(軸直角方向) -NULT(ポアソン比) -Glt(せん断弾性係数)
ポアソン比†
Code_Asterでの直交異方性材料のポアソン比がよく分からない(梁の変位にほとんど影響しないので確かめていない,とか)とのことだったので,構造解析関係のプログラム置き場にある&link(ccxonsaito.f90,http://www.str.ce.akita-u.ac.jp/~gotou/programoj/ccx/ccxonsaito.f90)の異方性材料の設定をもとに,CalculiXとCode_Asterで同じ計算をして確かめてみた(計算に使ったものは&link(こちら,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2017/kondo/tyousa/ortho/)).
- LTNとポアソン比の関係は次のようになる.
- ただし,せん断弾性係数については確認していない.
- 下は,木材を例として繊維方向にz軸をとって,\( E_{z} \)=7.5GPaとしたときの例.
- (
MA=DEFI_MATERIAU(ELAS_ORTH=_F(E_L=3.0e8, #\( E_{x} \)
E_T=3.0e8, #$E_{y}$
E_N=7.5e9, #$E_{z}$
NU_LT=0.016, #$nu_{xy}
NU_LN=0.016, #$nu_{xz}
NU_TN=0.016, #$nu_{yz}
G_LT=5.0e8, #$G_{xy}$
G_LN=5.0e8, #$G_{xz}$
G_TN=5.0e8, #$G_{yz}$
),
);
- )
- ということは,ポアソン比\( \nu_{yx}=0.016 \)や\( \nu_{zx}=\nu_{zy}=0.4 \)は対称条件から勝手に計算されるのかもしれない.
局所座標系†
Code_Asterで斜めになっている物体を直交異方性材料として計算するのが難しいという問題が(トラス橋や屋根付橋などで)あったが,部材の向きごとに局所座標系を決めれば比較的簡単に計算できる.
- 1.局所座標(オイラー角)の設定を以下のように追加する.
- (
CARA_EL=AFFE_CARA_ELEM(MODELE=MODE, #"CARA_EL"は好きな名前でいい
MASSIF=(_F(GROUP_MA='moto', #例えば,全体座標系と一致している物体
ANGL_EULER=(0.0,0.0,0.0,), #(\psi,\theta,\phi)
),
_F(GROUP_MA='alp330', #例えば,$\theta_{x}=330$度傾いている物体
ANGL_EULER=(0.0,330.0,270.0,), #(\psi,\theta,\phi)
),
_F(GROUP_MA='bt30', #例えば,$\theta_{y}=30$度傾いている物体
ANGL_EULER=(90.0,30.0,270.0,), #(\psi,\theta,\phi)
),
),
);
- )
- オイラー角については,マニュアル↓のp.56を参照.色々あるので別にオイラー角以外の設定でもいいけど.
- ttp://code-aster.org/doc/v12/en/man_u/u4/u4.42.01.pdf
- 2.いつもの線形計算の設定のところに先程設定した局所座標系の設定(CARA_EL)を追加する.
- (
RESU=MECA_STATIQUE(MODELE=MODE,
CHAM_MATER=MATE,
CARA_ELEM=CARA_EL, #<--ここだけ追加."CARA_ELEM="は自分でつけた名前に合わせる.
EXCIT=_F(CHARGE=CHAR,),);
- )
- 確認に使ったメッシュファイルとcommファイルはこちら
- 全体座標系と同じ向きの片持ち梁・x軸周りに330度傾いた片持ち梁・y軸周りに30度傾いた片持ち梁の3つに同じ大きさの荷重を軸直角方向にかけると,梁先端の変位が同じになる(梁理論とも合う).名前が分かりにくいかもしれませんが.
シェル要素の異方性†
- シェル要素の異方性はDEFI_COMPOSITEの設定が必要(?)
- DEFI_COMPOSITEのデフォルトの名前だとエラーになることがある(?)
- そのため名前を新たに設定することを推奨.(画像では「aaa」)
回転対称性・横方向等方性(円筒座標系)†
- salome_meca2019の設定
AFFE_CARA_ELEM > MASSIF(ここに座標系変換がある) > ANGL_AXE (回転角の設定)、ORIG_AXE(軸の設定)
デフォルトでは異方性の設定の(L,T,N)=(X,Y,Z)である。
そのため軸方向に設定しているZはNになるため、通常の異方性の設定では角度変更しなくても良い。
円弧アーチの場合は円のどの部分をとっても同じ異方性が適応されているため、
横方向が等方性という考え方になるのだと思う。
今回の設定では
円筒の軸方向がZ軸の設定になっているため、例題に上げているCOMMファイルは90度回転している。
http://www.str.ce.akita-u.ac.jp/~gotouhan/j2020/oikawa/archihou.comm
elemprop = AFFE_CARA_ELEM(MASSIF=_F(ANGL_AXE=(0.0, 90.0),
GROUP_MA=('Partition_3', ),
ORIG_AXE=(0.0, 14500.0, 10000.0)),
MODELE=model)
mater = DEFI_MATERIAU(ELAS_ORTH=_F(E_L=375.0,
E_N=7500.0,
E_T=375.0,
G_LN=500.0,
G_LT=500.0,
G_TN=500.0,
NU_LN=0.016,
NU_LT=0.016,
NU_TN=0.016))
弾塑性解析†
- bou2tu.unvをメッシュでインポートして、
- bou2tu.commで計算。commファイル中の「時間」やら"time"はstepの意味なので、頭の中で置き換えて下さい。
- ここのページの箱を棒部材の問題に書き換えてみて、計算出来るかどうかを確認してみた。材料定数と断面を変えずに引き延ばしただけなので、何とも想像しずらいモデル。
20mmの角棒の片端を固定して引っ張ったときの先端の伸び 20mmの角棒を片持ち梁として曲げたときの先端のたわみ
- 荷重-変位の曲線が非線形になり、一方(COMP_ELAS)は同じ曲線を通って元の形状に戻り、他方(COMP_INCR)は塑性化して形状を保つ。
- v10のマニュアル↓がフランス語しかないので、
- ttp://www.code-aster.org/doc/v10/fr/man_u/u4/u4.51.11.pdf
- 代わりにv11の英語版マニュアル↓(p.55)を見てみると、
- ttp://www.code-aster.org/doc/v11/en/man_u/u4/u4.51.11.pdf
- COMP_ELASは
- DEFORMATION='PETIT' : 微小ひずみを使っている。変位・回転・ひずみ(約5%未満)が小さいとき
- DEFORMATION='GROT_GDEP' : グリーンひずみを使っている。変位・回転が大きいが、ひずみが小さいとき
- の2つが使えて、COMP_INCRはこれらに加えて
- DEFORMATION='PETIT_REAC' : (同じ条件だと収束せず)
- DEFORMATION='SIMO_MIEHE' : 大変形のとき(参考:公式マニュアル↓)
- ttp://www.code-aster.org/doc/v11/en/man_r/r5/r5.03.21.pdf
- DEFORMATION='GDEF_HYPO_ELAS' : 超弾性の大変形(名前が超弾性だから試していない)
- DEFORMATION='GDEF_LOG' : 対数ひずみを使っている。大変形のとき(同じ条件だと収束せず)
- などが使えるようだ。PETIT_REACとGDEF_〇〇については公式マニュアル↓参照。
- ttp://www.code-aster.org/doc/v11/en/man_r/r5/r5.03.24.pdf
- この辺↓も詳しい。
- 比較用にCalculiX(&link(hippari.inp,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/hippari.inp),&link(mage.inp,http://www.str.ce.akita-u.ac.jp/~gotouhan/j2016/kondo/aster/danso/mage.inp))でも同じ要素分割・荷重増分で計算(等方硬化則)してみたところ、値が一番 DEFORMATION='SIMO_MIEHE' と近くなった。ちなみに、CalculiXは弾塑性解析(*PLASTIC)をするときに、自動で幾何学非線形(NLGEOM)になる。
斜張橋等のケーブルの疲労解析†
- salome-mecaでケーブル要素使えるかどうかを探してみたらsalome-mecaにもケーブル要素はありました。
つりあい解析(二段階解析)のやり方†
つりあい解析とは、事前に解析した構造解析の結果(1段階目の解析)を、次に解析したいモデルにその結果を入れて解析を回すこと(2段階目の解析)を指す。
横軸時間をとる時刻歴解析やモデルを先に変形させてから力を与えることもできる。(あるモデルに張力を与えて,その後に衝撃を与えるとか。後者の解析は現在確認中)
大きなメリットとして,解析時間の短縮が挙げられる.そして,段階的に解析を行えることから,例え長時間掛かる解析でも重複する部分があれば、その部分を1段階目の解析とすれば,改めて解析をする必要がなくなる。
ここではビーム要素(1D)を用いたモデルを例に説明するが、ソリッド・シェルでも同じ設定でできると思われる。
・使用モデル
卒論で扱ったケーブル1本の簡易モデルからケーブル(C1)をなくしたモデル
・解析条件
荷重は死荷重とケーブルから得られた張力を掛けている.
時刻歴応答解析 解析時間は115s,100sまで荷重等をゆっくり載荷させ,そこから110sまでモデルを安定させて,その後にケーブルに掛けている張力を0に落とす.
109sまでを1段階目,109sから2段階目の解析を行う。
・設定法
写真のようにStageを2種類用意する。
chainanalysisが1段階目,chainanalysis-2が2段階目用のStageである。
1段階目 commファイルはこちら
基本的に自分が行っている解析のaster-codeをいつもどおり組めばよい。
時刻歴解析の場合,区切る時間(今回は109s)までの解析をここで行うこと。
2段階目 commファイルはこちら
AFFE_MODELEやDEFI_MATERIAUなど1段階目の解析と共通するものはStage2に入れなくてよい。
Stage1で設定したものがそのまま使えます。
使用するaster-code
絶対:Analysisに含まれるもの ,Output IMPR_RESU
人によって変わる:Functions and Listsに含まれるもの (時刻歴使うなら絶対にいる), BC and Loads AFFE_CHAR_MECA(2段階目で載荷条件を変える場合)CALC_CHAMP
ここでは時刻歴応答解析を行っているため,以下のように設定した。
1段階目の解析終了地点から解析を再開しないと,1段階目の結果が引き継がれないので,注意!
そのため,解析時間は109sからスタートする。
Analysisでは,それぞれのaster-codeに入っているコマンド:ETAT_INITを加える。
現在わかっていることとしては、1段階目の解析の終了時間から2段階目の解析を始めるときはETAT_INITのみでOK
1段階目の解析の時間の途中から2段階目の解析を始めるときはETAT_INITとINST_INITが必要。(ex:1段階目の解析が0〜30sであり、2段階目の解析を20sから始めたいときはETAT_INIT内にあるINST_INITに20を入力する。)
(静的解析を行う場合,STAT_NON_LINEで。MECA_STATICSにはその設定が存在しない。また,固有振動数を求めるときに使う?CALC_MODEにも存在しないが,その場合のつりあい解析のやり方は模索中)
また、MODELEやCARA_ELEMといった選択式で入力するところはStage1で設定したものがそのまま使えるため、それを入れる。
RESULTATに1段階目のAnalysisで用いたものを入れる。
EVOL_NOLIに1段階目のAnalysisで用いたものを入れる。
OUTPUTは1段階目と異なる.medの名前をつける。
RESUにはNOM_CHAMの設定とTOUT_OREDEとTOUT_CMPをOUIにする。
・解析の回し方
写真のようにstage同士をつなげることでつりあい解析が可能となる。
初めて回す際、一気に2段階目まで解析を行おうとすると,2段階目でエラーが出たら1段階目の解析もやり直しになってしまうため,別々に分けてやることをおすすめします。
まず,1段階目の解析を回したいので,2段階目の解析に赤い四角マーク(skipという意味)を押してからRunする。
解析が回ったら、1段階目の解析に青いチェックマーク(再利用という意味)を入れ,2段階目の解析にプラスボタンを押してRunする。Runすると,上の写真ようにStage同士を繋げることができる。
・1段階目の解析結果が考慮さえているかの判断
Paravisで2段階目の解析で行った結果ファイルを開く。
写真のように、2段階目の解析結果のスタート地点の出力した値(DEPLとか)が0になっていなければ成功!
つりあい解析を行った場合と行わない場合での結果を比較したところ、お互い同じ結果が得られた!
Aster Study1の設定†
AFFE-CARA-ELEMの設定 いつものソリッド要素のときに3Dと設定しているところをスクロールしていくと"CABLE"というがある。
CABLEを設定するとSECTION で断面積 N_INITでケーブルの初期張力を設定する。
その他の設定はまだわかっていない。破壊挙動を再現することはどうしたらいいのかわからない。さて..............
ひずみの出力(v12)†
commファイルの一番下のところを以下の(1),(2)のように修正する.
- (
・
・
・
resu=CALC_CHAMP(reuse =resu,
RESULTAT=resu,
CONTRAINTE='SIGM_NOEU',
DEFORMATION='EPSI_NOEU', #----(1)
CRITERES='SIEQ_NOEU',);
IMPR_RESU(FORMAT='MED',
UNITE=80,
RESU=_F(MAILLAGE=MAIL,
RESULTAT=resu,
NOM_CHAM=('SIGM_NOEU','SIEQ_NOEU','DEPL','EPSI_NOEU',),),); #----(2)
ParaViSで梁要素や板要素の変位図を描く†
立体要素とは違い、回転自由度を持つ梁要素や板要素のDEPLは1節点につき6成分あるため、そのままでは Warp By Vector で変位図を描けない。
このとき、PropertiesのGenerateVectorsにチェックを入れ、Applyすると、DEPLの最初の3成分(DX・DY・DZ)だけ取り出したベクトル(DEPL_Vector)が作られるため、 Warp By Vector で変位図を描けるようになる。
ParaViSで板要素の板厚を反映させる(要確認)†
ParaViSでMEDファイルを読み込んでも、自動では板厚を考慮したモデルとして描画されない。そのため、与えた板厚が正しいかどうかや、厚さ方向の(積分点とかの?)応力やひずみの分布等を視覚的に確認できない。このとき、以下略(そのうちに書く。というか誰か書いて)……
部材をブーリアン結合で結合する方法とコンパウンドで一つのモデルにする方法†
- ketugou.hdf
- 2つの部材を結合するにはジオメトリ上で結合する方法とコンパウンドで部材ごとを一つのモデルとしてAster studyで結合を指定する方法がある。
- 新しいエンティティ ービルド ーコンパウンドで一つのモデルにする方法はジオメトリで合わせる部材を選択しコンパウンドを選択する。高度なオプションのグループとサブオブジェクトを継承する。にチェックをする。そのまま適用して閉じる。一つのモデルになる。この時点では結合されていないため、メッシュを切ってそのまま計算かけても部材ごとの結果になるか、失敗する。
- ジオメトリの段階で結合する部材の結合面をグループにしておく。
- Aster study BC and load Liaison-Mail で設定を行う。
- group MA は結合されるソリッド group-MA-Eは結合するソリットの結合面 あとは適用して終了
詳細設定をしてメッシュをきる方法†
- 通常通りメッシュを作成するを選択する。ジオメトリは要素分割したいモデル、メッシュタイプはAny、
3DのアルゴリズムをNETGEN3D > 2DのアルゴリズムをNETGEN1D-2Dにする。
2Dの画面の詳細設定の右にある歯車マークをクリックしてNETGEN 2D Paranetersを選択する。
最大サイズと最小サイズを設定する。(ジオメトリを選択して詳細設定を開くと最大最小の数値が表示される、最小サイズは選択したモデルのメッシュを切ることができる最小のサイズなためその数値を超えないようにする。)
その設定が終わったらOKで戻って適用して閉じる。あとはいつも通りメッシュを切る。
salome-mecaでメモリーが足りないと言われたら†
! <S> Exception user raised but not interceptee. !
! The bases are fermees. !
! Type of the exception: error !
! !
! Error during the dynamic allocation. It was not possible to allocate !
! a memory zone length 263 Mo, one exceeds the maximum limit !
! built-in with 1293 Mo and one occupies already 1059 Mo. !
! The last operation of memory deallocation made it possible to recover 0 Mo
- このようなエラーメッセージが出てきたら以下のようにしてください。
-
ranの画像の部分のメモリーを増やせばいいです。メモリーのMAXsizeはコンピューターのメモリの最大から1G程度引いた数字を入れればいい。
paravisで試験体の色をセットする方法†
paravisを開いた後,パイプブラウザでファイルを開く.Solid Colorを選択して色をつけた後,左側にカラーマップエディタが出てくるのでそこをカスタムする.
Salome-Mecaで各断面定数を算出する方法†
- salome-mecaで作成したモデルの断面定数を算出したい・・・特に手計算では難しいねじれ定数とかそこらへん
計算できないかなと思ったらSalome-Mecaでできました。
計算方法†
ジオメトリーで行うこと†
- xy平面に計算した面を作る。(作成したソリッドモデルの展開で面を選択すればできる)
- 作った平面の境界線のグループを作る。
- 平面の中で任意の点のグループを作る。(四隅のどこかでもいい)
あとはメッシュ
メッシュで行うこと†
- メッシュを切る
- ジオメトリグループを適用させる。
- メッシュをmedファイルでエクスポートする。
AsterStudyで行うこと†
- メッシュを適用する
- model Definition → Maca_cara_poutre → mesh (作ったメッシュ)
→ Group of node (作成した任意の点) → Group_MA_BORD(4の四辺)
- コマンドファイルをエクスポートする。
コマンドファイルの例†
DEBUT(LANG='EN')
table1 = MACR_CARA_POUTRE(GROUP_MA_BORD=('kyoukai', ),
GROUP_NO=('ten', ),
INFO = 2)
FIN()
- GROUP_MA_BORDはジオメトリで設定した境界線,GROUP_NOはジオメトリで設定した任意の点,INFOは2
計算を行う。プラグイン†
- ツール → プラグイン → Code_aster → Ran_ASTK
でこの画面が開く
- ここに作成したメッシュと作成したコマンドファイルを適用させる。
- base ファイルのところにメッシュファイルとコマンドファイルがあるディレクトリのパスを記入する。
- 一番上のところにメッシュファイルを適用させる。
./ファイル名.med
- 真ん中はコマンドファイル
./ファイル名.comm
- 一番下は書き出しファイル
./ファイル名.ruse
ここができたらあとは横のRANを押せばいい。
- 上の画面もツール → プラグイン → Code_aster → Ran_ASTKで出てくる。
これのRefreshのボタンを押せば計算される。
あとは書き出しファイルを開けば計算された断面定数が計算されている。
-
https://www.code-aster.org/V2/doc/v11/en/man_u/u4/u4.42.02.pdf
- 3.1 References used for the geometrical characteristicsを参考に計算結果を見る
Aはなにか・・・とかとか