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)。
PgDn, PgUpでplotするsetの切り替えができた!
PgDn、PgUpでセット間を行き来できるのは知らなかった。
plot fa allと打った後に、PgDn、PgUpすると、作成した各セットを行き来できるので、いちいちplotコマンドを打たなくていい。作ってる最中に便利かも。
.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(座屈解析)にだけ使用できます。もし、これが指定されると、最後の*STATICstepの剛性マトリックスが参照され、計算に使用されます。
たしかに、直前に*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,Ss1pc-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,Ss1pc-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.0000000000004というのが、式の項の数で、
その下に、ノード番号、拘束方向、変数の係数が書かれている。変数は、ノードの拘束方向の変位。
k1.equを見ると、近い4つのノード同士で式を作っていた。ノードがどうやって選ばれたのかは知らない。
結果
固有値の結果は、.datファイルに出力される。
cgxのwindowの「Time:」って書いてある横の数値は、そのまま周波数として読めそう(CYCLES/TIME)。
*el fileSPgDn, 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は問題なく動くと思う。

https://wakelet.com/wake/MV0he6Rod9nhQpwNuYdkD
https://wakelet.com/wake/yXrIfM3DHVV4G_UIZ_Bs8
https://wakelet.com/wake/8cFzZMU1aIE2BTlfuivaC
https://wakelet.com/wake/_ylzdFN7cvLTB0o_abANC
https://wakelet.com/wake/u2i8E5HLHhEbTR6EAhmna
https://wakelet.com/wake/Y5iHsHPt_fhbGGmkDp3F4
https://wakelet.com/wake/5z-zWj9qF9Laz_PpTaIfa
https://wakelet.com/wake/CkZFCb5IzyJsIFkmk6-Ys
https://wakelet.com/wake/jolF93_v19PBptZBxxoMC
https://wakelet.com/wake/PRfWzkRfi7ST4f3fuWGjt
https://wakelet.com/wake/knDR8kNk6zrgU2WjD0D6I
https://wakelet.com/wake/p3DWSzxVVS5_fnPMSYY8m
https://wakelet.com/wake/KyEU-63llQ80n28RZbN-2
https://wakelet.com/wake/7kGmDfmoELDON2dfO-c-U
https://wakelet.com/wake/MXJl5DZ0pNnqfa3oFI_ap
https://wakelet.com/wake/AeCs2vut3EL2MxxcXNX4T
https://wakelet.com/wake/XdJwMjGcdnSIBaGqX31Iq