20200216

Calculix 10本ノック: 7本目:exampleの実行 Contact/Shellassembly

Calculixとは

フリーの解析ソフト。

  • ccx ソルバー
  • cgx プリポスト

環境

  • WSL

  • Xming

  • Calculix 2.11

  • gmsh

    gmshの機能を使ってメッシングすることがある。

  • imagimagick

    hcpyで画像作成するとき、convertするので使う。

  • pip2

  • matplotlib

データの入手

公式サイトからのリンクで行けるGithubのexample

下記サイトのリンクから、自分のCalculixのバージョンにあったファイルを探す。

https://github.com/mkraska/CalculiX-Examples/releases

ノック7本目: exampleの実行 Contact/Shellassembly

Contact

shell_assembly

4種類の.inpが入っていた。

  • ペナルティ法でnode to surfaceの接触
  • ペナルティ法でsurface to surfaceの接触
  • *tieを使ったMPC接触
  • *equationを使ったMPC接触

固有値計算してる。

他のサイトでは、「接触を考慮した固有値解析はできない」と書いてある。 )
不安になるが、まぁ、できるんならいいんじゃない…?
いや、良くないのかなぁ。「接触 固有値」でググると、皆、いろいろ工夫してるみたいだし。

どうやら、.inpファイルのstep, perturbationに鍵があるらしい。

READMEざっくり訳

*tieとペナルティ法を使った、MPC接触は、シェルのエッジとシェルの表面の間の、硬い接続(?)になります。 *tieを使った、Node to surfaceペナルティ法やMPC接触は似た結果になります。 ペナルティ接触の固有値の周波数は、ふつう、MPC接触を使った場合よりもきわめて低く、もっともらしいです。ペナルティ接触はcomplianceを足しているからです。

Surface to surface接触は、MPC接触とは全く異なった固有周波数になります。0付近に5つの周波数しかありません(6つの剛体モードがあるべき)。

(surface to surfaceもnode to surfaceのどちらも)ペナルティ接触は、モード解析が必要です。モード解析は、静的なstepに先立って摂動ステップとして行われます。 摂動解析の最初の結果のインクリメントはモードシェイプではないことに気を付けてください。

*equationを使ったMPC接触は、シェルとフェイス接触を、ヒンジ接続にします。(7剛体モード)

う〜ん分からない。訳が合ってるのかも不安。

まずはディレクトリの移動。
cd ~/CalculiX-Examples-2.11/CalculiX-Examples-2.11/Contact/

「~」は、サンプルを解凍した場所のアドレス。

最新版だとShell0に入っているサンプル。

操作
cgx -b pre.fbd
ccx tie
cgx tie.frd

こんな感じでtieの部分をequ、pc-ss、pc-nsに替えて実行する。

pre.fbd

seto〜setcを使ってセットを作っていた。

上側のプレート1をswepで作って、

下側のプレート2をswepで作って、

qu4(inpでいうs4(4節点シェルエレメント))を指定してメッシュ作成して(all.mshにS4と記入される)、

プレート1のサーフェイスを出力して(S1.sur)、

プレート2のエッジ(L007 )を出力して(k1.sur)、

すべてのメッシュを出力してして(all.msh)、

プレート1のサーフェイスとプレート2のエッジ(L007)を123456のMPCとして出力していた(k1.equ)。

line_name.png

PgDn, PgUpでplotするsetの切り替えができた!

PgDn、PgUpでセット間を行き来できるのは知らなかった。

plot fa all

と打った後に、PgDn、PgUpすると、作成した各セットを行き来できるので、いちいちplotコマンドを打たなくていい。作ってる最中に便利かも。

12.gif

.inpを見る

tie.inp

*tie,name=t1,position tolerance=0.1
Sk1,Ss1

とあった

pc-ss.inp

stepの部分
*step,nlgeom
*static
*end step
*STEP,perturbation
*frequency
~~~
~~~
*END STEP

と書いてあった。
「PERTUBATIONってなんだ?」となったので、取説を検索すると、

The parameter PERTURBATION is allowed for FREQUENCY and BUCKLE steps only. If it is specified, the last *STATIC step is taken as reference state and used to calculate the stiffness matrix.

パラメーターPERTURBATION は*FREQUENCY(固有値解析) *BUCKLE(座屈解析)にだけ使用できます。もし、これが指定されると、最後の *STATIC stepの剛性マトリックスが参照され、計算に使用されます。

たしかに、直前に*staticしてるstepがある。その結果を読み込んで、固有値計算をしているらしい。

接触の部分
*surface interaction, name=Klebung
*surface behavior, pressure-overclosure=tied
1.E7
*friction
1,1.E7
*contact pair, interaction=Klebung, type=surface to surface, adjust=1
Sk1,Ss1

pc-ss.inpとは、pressure-overclosure=tiedと、type=surface to surfaceが違う。

*frictionの下の数値が、摩擦係数と粘性slopeらしい。取説には下の様に書いてある。

For face-to-face penalty contact with PRESSURE-OVERCLOSURE=TIED the value of the friction coefficient is irrelevant.

PRESSURE-OVERCLOSURE=TIEDを使ったface to faceペナルティ接触にとっては、摩擦係数は無関係です。

とあるので、1っていう数字は要らないんじゃないかと思ったが、なきゃ無いでエラーが起こるのでそのままにした。

pc-ss.inp

接触の部分
*surface interaction, name=Klebung
*surface behavior, pressure-overclosure=linear
1.E7,10000,10000
*friction
1,1.E7
*contact pair, interaction=Klebung, type=node to surface, adjust=1
Sk1,Ss1

pc-ns.inpとは、pressure-overclosure=linearと、type=node to surfaceが違う。

equ.inp

これは、下記で読み込んでいる、k1.equにの条件が書かれているところに特徴があった。

*include, input=k1.equ

*equation を使って、MPCの式が書かれていた。

*EQUATION4
4
6,1,-1.000000000000
2,1,0.800000000000
11,1,0.200000000000
12,1,0.000000000000

4というのが、式の項の数で、
その下に、ノード番号、拘束方向、変数の係数が書かれている。変数は、ノードの拘束方向の変位。

k1.equを見ると、近い4つのノード同士で式を作っていた。ノードがどうやって選ばれたのかは知らない。

node_all.png

結果

固有値の結果は、.datファイルに出力される。

cgxのwindowの「Time:」って書いてある横の数値は、そのまま周波数として読めそう(CYCLES/TIME)。

*el fileS
PgDn, PgUpでplotするdatasetの切り替えができた!

plotコマンドのところでも書いたが、dsコマンドでも、PgDn, PgUpデータセットの切り替えができる。
下記コマンド等、適当に入力後、PgDn, PgUpで、データセットを切り替えられる。

ds 1 e 1

問題点

cgxのオプション

cgxを使って結果の読取りをする際、cgxの起動時に -bオプションををつけると結果が表示されない。何もつけない(自動)か、-readで出てくると思う。

cgxのdataset

cgxのGUIからdatasetを選択すると、アプリケーションが勝手に終了して下記の表示が出た。

freeglut (cgx): Menu manipulation not allowed while menus in use.

表示させるためには、コマンドから下記の様に入力。

ds 1 e 4

データセット1の4番目の結果を表示。何番に何が入っているかは、出力要求によって違う。

windows版ならGUIは問題なく動くと思う。

posted by yuchan at 07:00 | Comment(1) | Calculix