CAELinuxのツールでFEMの例題を解くいくつかの標準的(でないかもしれないけど)、
手っ取り早く(CalculiXを使ってきた我々にとって)簡単な手順をわかりやすくメモ。
c3D10でのエラー†
エラー内容†
- saleme→Gmesh→pythonとinpファイルを作っていきc3D10のプログラムに入れて節点番号と要素番号を振り分けるところまではうまくいくが、cgxで開くと図が欠けている部分や変形している部分ができ、おかしくなっている。
SalomeからCalculiXのinpファイルを生成†
諸注意†
- Salomeのデフォールト状態で長さ「1」と入力した数値は、Gmshにインポートしてinp形式にエクスポートすると、1kmになる。
- 安直には、Salome上で1mの長さを入れたい場合は0.001とか、km単位で入れてしまう。そうするとすごく小さく表示されるのでマウスのスクロールで拡大して作業する。これをGmsh経由でinpに出力すると確かに1mになっている。
- File→Properties→Length Unitで「m」を選択:これは自分用メモで関係ない
- Salomeのスケールを変えるには、Operations→Transformation→Scale Transfomで、Scale Factor を0.001にすれば、Salome上で長さ1のものが、Gmsh経由のinpファイルで1mになるかな? →変わってないっぽい。(この方法は要調査)解決できた人はここに補足してください。
Salomeでメッシュを切ったunvファイルからCalculiXのinpに変換†
Salomeでメッシュを切ったunvファイルをGmshを使ってCalculiXのinpに変換†
- 今のところ直方体要素の人はこちらを推奨
- S6シェル要素でもできそう
Gmshのinp出力はそのままでは使えないので、プログラムを作って微修正する必要がある。
今のところ、直方体要素C3D8用とシェル要素S6用に対応。
Salomeで2種類以上の材料を使う場合†
- Geometry→New→New Entity→Primitives等で材料ごとにモデルを作る。
- New Entity→create groupで境界面のグループを作る kyoukaimenが出来る
- 二つのモデルをfuse fuseが出来る
- Operations→partition objects : fuse tool objects : kyoukaimen を入力 partition1が出来る
- partition1を適当にメッシュを切る(たぶん四面体じゃないと切れない)
- あとはunv形式でexportしてG-mshでinp形式にする
- &link(ccxc3d4p.f90,http://www.str.ce.akita-u.ac.jp/~gotouhan/takita/moderu/ccxc3d4p.f90)とかを使ってinpファイルを作る
- cgxで材料をごとに要素をグループ分けする(cgxメモなどを参考)、ついでに節点のグループ分けもする。
- ccxc3d4p.inpのいらないところを消してccxで計算する
Salomeではメッシュを切らずにGmshで切ったメッシュをgi2ci.pyで修正する方法†
今のところ、シェル要素の人はこちら。
以下の要素に対応
- C3D10(10節点四面体要素)
- C3D4(4節点四面体要素)
- S6(6節点シェル要素)
salome†
- Geometry→New→New Entity→Primitives辺りで円筒とかを適当に設定
- Object Browserで対象構造物(円筒)を選択状態(白くなる)にして、
- File→Export→File of typeをSTEP Filesにして保存
Gmsh†
- File→Openで、上でエクスポートしたstepファイルを読み込む
- プルダウンメニューをGeometryからMeshにする
- Define→Element size at pointsで画面にSelect pointsと表示されたら、周辺を細かくしたい節点を選択。複数選択したい場合はCntlを押しながら領域選択
- 選択されると赤くなる
- Element size at pointsの数字は小さくするほど細かくなる
- 画面モードでeを押すと「A scripting command is going to be....」と出たら、Proceed as isをクリック
- Element size at pointsウィンドウを消して、画面上でqを押して、プルダウンメニューの左矢印を押して、対象構造が3次元だったら3Dをクリック
- set orderで2をクリック
- File→Save asでFormatをAbaqus INPにして名前をつけて保存
C3D4であれば、このinpファイルを微修正して利用すればよいが、
C3D10やS6など中間節点が必要な場合は、以下のPythonスクリプトを用いてinpファイルを修正する。
gi2ci.py†
C3D10やS6など中間節点が必要な場合は、
- (
C3D4要素をC3D10D要素に変換したい場合:
python gi2ci2.py gmsh.inp calc.inp 3 C3
C2D3要素をS6要素に変換したい場合:
python gi2ci2.py gmsh.inp calc.inp 2 S
cgxを使ってinpファイルの拘束節点番号、載荷節点番号を出力する方法†
ただし、面載荷用の.dloファイルの節点番号は点載荷用には使えないので、
拘束面の名前を変えて載荷面用の載荷節点を出せばよい。
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にする