20200223

Calculix 10本ノック: 9本目: exampleの実行 Linear/Mesh1

Calculixとは

フリーの解析ソフト。

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

環境

  • WSL

  • Xming

  • Calculix 2.11

  • gmsh

  • imagimagick

  • pip2

  • matplotlib

データの入手

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

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

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

ノック9本目: exampleの実行 Linear/

Mesh1

アルミ製皿の固有値解析。
ポストのshapes.fblを使うと、複数の固有値のアニメーションを一気に作れる。
要素はIncompatible mode eight-node brick element (C3D8I)らしい。

ディレクトリの移動

cd ~/CalculiX-Examples-2.11/CalculiX-Examples-2.11/Linear/Mesh1

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

実行

cgx -b pre.fbl
ccx modal
cgx -b shapes.fbl

pre.fblの内容

手打ちで作ってみたら、途中、GUIからframeを使わないと、全体が見えなくなった。

frame.png

下記で円弧が出現してた。作成途中でできたD002、D003を通る、中心点D001の円弧の命令?( 14)で書いたline。

line ! D002 D003 D001 14

1/4.png

1/4を作って、コピーで1/1にする。コピーのコマンドは下記。
最後のxは、yz面に対してミラーコピーの意味。yだったらx-z面

copy all new mir x
copy all new mir y

すべてコピーなので、不要な重複が出る。マージで消す。
マージは下記。

merg p all 0.001
merg l all 0.001
merg s all 0.001

all.mshの内容

先ほどのpre.fblの結果、all.mshが出力される。

all.mshには、節点座標とエレメントが使用する節点の情報が書いてある。
エレメントはIncompatible mode eight-node brick element (C3D8I)を使っていた。

メッシュを読んでエレメントセットを用意して、

マテリアルを指定して、

上記マテリアルとエレメントセットをプロパティに設定して、

下記で、固有値計算になる。

*STEP*
frequency
〜省略〜
*END STEP

このmodal.inpが、ccxの解析で使う入力ファイルになる。
ccxで解析された結果は、modal.frdとmodal.datに出力される。

プロパティ設定の下の1は、3次元要素なので要らない気がする。あっても動くが。

shapes.fbl

出力した12個の固有値のアニメーションを自動で作るcgxスクリプト。

はじめに、wihleで使用する変数をvaluで用意している。

次に、readでmodal.frdを読み込んでいる。

次に、rotで角度を整えている。

最後に、whileで、すべてのデータセットのアニメーションを作成していた。
Whileについては以前やったので割愛。
whileendwhileで終わるが、endwhileがテキストエディタの最終行に来たらエラーで止まるのは要注意。

cgxで最短でアニメを描く方法

多分、gifアニメは3行で出力できる。

アニメーションは、moviでフレームを設定したら、dsaオプションで出力される。
多分imagimagickか何かが必要になると思う。出力されるファイルは、リピートされないgifアニメ。

read modal.frd new
movi frames 30
ds 1 a
posted by yuchan at 07:00 | Comment(0) | Calculix

20200220

Calculix 10本ノック: 8本目:Contact/Shell1

Calculix 10本ノック: 8本目:Contact/Shell1

Calculixとは

フリーの解析ソフト。

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

環境

  • WSL

  • Xming

  • Calculix 2.11

  • gmsh

  • imagimagick

  • pip2

  • matplotlib

データの入手

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

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

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

ディレクトリの移動。

cd ~/CalculiX-Examples-2.11/CalculiX-Examples-2.11/Contact/Shell1

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

内容

下のような8節点シェルで作ったモデルの接触解析。
ハニカム(ハチの巣、ハニーコム)構造のサンドイッチの最小構成みたいな形の上に半球。
半球に対して、z方向に-2の強制変位をかけている。

初期設定でうまく流れなかったが、contact pairのmaster,slaveを入れ替えたらうまくいった。

model.png

model2.png

Too many cutbacks

初期.inpのまま解析実行したら、下記エラーで止まった。

too slow convergence; the increment size is decreased to 3.125000e-02
the increment is reattempted

*ERROR: too many cutbacks
best solution and residuals are in the frd file

cutbacksの回数を増やしたら、止まらないんじゃないかと思い、cutbacksを増やす方法を検索。
controlをいじるといいらしい。 controlには引数が多すぎる。cutbackの回数以外は、初期設定にしておいた。
もしかすると、省略したら(何も書かずにコンマで区切ったら)よかったのかも。

下記*control*step(stepの外でも内でもいい?)に追加したら、このエラーは避けられたが…

** cutback 15
*CONTROLS, PARAMETERS=TIME INCREMENTATION
4,8,9,16,10,4,,15,,
0.25,0.5,0.75,0.85,,,1.5,

結局別のエラーが出た。
下記は結局出てきたエラー。

too slow convergence; the increment size is decreased to 7.629395e-06
the increment is reattempted

*ERROR: increment size smaller than minimum
best solution and residuals are in the frd file

これを解消する気にはならなかった。
*controlは消して、別の方法を探った。

contact pairがおかしかった

下記の2行目で、slave,masterを決めていた。

*contact pair, interaction=tool, type=surface to surface
Stopneg,Sind

dependent (slave), independent(master)の順番。

これを、下記のように逆さにしたら収束した。

*contact pair, interaction=tool, type=surface to surface
Sind, Stopneg

ちなみにsindは下記。

ind.png


stopnegは下記。

 topneg.png

結果

表示しているのはds 2 e 23で出せる、最悪主応力(worst Principal Stress)
READMEにある結果と最大値最小値一緒だし、同じ結果でしょ。多分。

result.png

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

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(0) | Calculix

20200211

Calculix 10本ノック: 6本目: exampleの実行 Contact/eyebar

Calculixとは

フリーの解析ソフト。

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

環境

  • WSL

  • Xming

  • Calculix 2.11

  • gmsh

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

  • imagimagick

    hcpyで画像作成するとき、内部でconvertしているので使う。

    sudo apt install imagemagick

    で入手。

  • pip2

  • matplotlib

ノック6本目: exampleの実行 Contact/eyebar

データの入手

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

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

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

Contact

eyebar

いきなり難しいサンプルに手を出してしまった。
アルファベット順でexampleを漁ってはだめっぽい。

まずはディレクトリの移動。

cd ~/CalculiX-Examples-2.11/CalculiX-Examples-2.11/Contact/Eyebar

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

モデル形状

下記が解析する形状。赤点が拘束。青点が鏡面対象拘束。赤文字が、Xプラス方向へ2強制変位。緑が接触を考慮する位置。なんでも、荷重で動かすよりも、強制変位で動かした方が、収束しやすいそうな。

model.png

ラインL004に属する、エレメントのフェイス(S3エッジ)と、
ラインL00Fに属する、エレメントのフェイス(S4エッジ)の接触が、
フェイストゥーフェイスで考慮されている。

line.png

形状でいうと、図で接触しそうなあたり。当たり前ですが。
ちょうど重なって見にくくなってる線部分。

contact parts.png

python2 param.py par.eyebar.fbd

と打つと、eyebar.fbdが作成される。

cgxでeyebar.fbd読むと自動的に、全メッシュの出力、接触に必要なフェイスなどを出力はしてくれる。
それらのファイルは、あらかじめ作ってあった.inpが読み込んでくれるので、
ccxでinpを解析すれば結果は出てくる。やったのはこれだけなので、気付いた事を書いていく。

セットを作っていた。

セットを作って、いろいろ指定していた。セットを作って、別ファイルで出力。.inpでそれを読み込んで、拘束や強制変位や接触の条件に使用するノードや要素を指定するために利用していた。

セット名をまとめて作る方法として、以下のようなことをやっていた。

seto set名
〜ノードやメッシュを作成する操作〜
setc set名

この手法で、seto(オープン)とsetc(クローズ)の間の操作で生成されるノードなどを、セットにしていた。

通常はセットを作るときは、setaを使うようです。

seta a n 1

上記は、セット名aに、ノード番号1を追加するやり方です。
セット名をもう一度setaで定義しても、追加されるだけで、

seta a n 2

としても、1は消えない。なので、aには、1と2が入っている状態になる。

ノード1を消したいときは、setrを使う。

setr a n 1

で、セットaから、ノード1が消える。

plot n a

などとして確認できます。

セット名allは、自動的に作られる、全部入りのセット。

plotのオプションを調べる。

cgxで、「エレメントを表示させたい。」「ノードを表示させたい。」「ノード番号を表示させたい。」などというとき、setが用意されているのであれば、plotが一番簡単なのではないかと思う。

plotには、たくさんのオプションが用意されているので、どれを使ったら何が見れるのか分かりにくい。

plot p all

plot p all.png

plot l all

plot l all.png

plot s all

plot s all.png

plot e all

plot e all.png

plot n all

plot n all.png

plot f all

plot f all.png

cgxは、.inpを作るソフトではなかった。

cgxのコマンドで、解析の細かい設定を書き込んだ.inpを作る方法はないみたい。
プリじゃないじゃん。
.inpは手打ちっぽい。
FemapやAbaqus CAEのようなGUIでの設定を期待してはいけないという事ですか。
それはキツイなぁ〜。全部cgxで、それもマウスクリックで設定したかったなぁ〜。

このフォルダの解析を一通り実行するためには、〜\CalculiX-Examples-2.11\CalculiX-Examples-2.11\Scriptsフォルダ内の、

  • param.py
  • monitor.py

が必要。(monitor.pyは、なくても解析はできる。)

また、post.fbdで、gnuplotを、
monitor.pyでpylabを使用している。

monitor.pyを書き直した

monitor.pyは、cvgファイル(非線形解析をした時のイテレーション回数や残留力などが書かれている)などの情報を図示する。
pylabがうまく動かないので、matplotlib.pyplotに書き換えた。
また、WSL上のmatplotlibは、バックエンドをいじらないと動作しない。

書き直してみた。多分これで動く。

下記コードはhttps://github.com/mkraska/CalculiX-Examplesのscriptを、自分の環境用に書き直したもの。
アドレス書いたし、著作者も特定できるので、問題ないはず。

import sys
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt#import pylab
import numpy
import glob

# print sys.argv[1]
# job = sys.argv[1]
# processing command line arguments, get the
# jobname
if len(sys.argv)==1:
print "No jobname given."
files=glob.glob("*.sta")
if len(files)==1:
print "Found", files[0]
job=files[0][:-4]
else:
print "Available .sta files:"
for f in files:
print " ", f
quit()
if len(sys.argv)>1:
print "Jobname:",sys.argv[1]
job = sys.argv[1]
try:
sta=numpy.genfromtxt(job+'.sta',skip_header=2,delimiter=[6,11,7,6,14,14,14])
except:
# before the first increment is completed, the sta-file is empty, so we
# fake some contents to not crash the
sta=numpy.array([[ 1. , 1. , 1. , 0 , 0 , 0 , 0 ]])
cvg=numpy.genfromtxt(job+'.cvg',skip_header=4)
# ensure 2dim array in case of single data line
if sta.ndim==1:
sta=sta[numpy.newaxis,:]
"""
.sta
0 STEP
1 INC
2 ATT
3 ITRS
4 TOT TIME
5 STEP TIME
6 INC TIME
.cvg
0 STEP
1 INC
2 ATT
3 ITER
4 CONT EL
5 RESID FORCE
6 CORR DISP
7 RESID FLUX
8 CORR TEMP"""
# iteration counter
iters=cvg.shape[0] # number of iterations
it=range(iters) # range for loop over iterations
# increment number for iteration
itinc=cvg.astype(int)[:,1] # increment number for the iterations
itstep=cvg.astype(int)[:,0] # step number for the iteration
itdt=numpy.empty([iters]) # time step for the iteration
itsteptime=numpy.empty([iters]) # Step time for iterations
for i in it:
stp = itstep[i]
inc = itinc[i]
# ccx writes values below 1e-6 as zero
if (cvg[i,5]==0.0):
cvg[i,5]=0.5
for j in range(sta.shape[0]):
if (stp==sta.astype(int)[j,0]) and (inc==sta.astype(int)[j,1]):
itdt[i]=sta[j,6]
itsteptime[i]=sta[j,5]
print i, stp, inc, j, itdt[i],itsteptime[i],cvg[i,5]
imax=i
## Plot force residuals, disp correction and time step
plt.subplot(2,1,1)
plt.title('sta and cvg data of job '+job )
plt.semilogy(it[:imax],itdt[:imax],'-',
it[:imax],cvg[:imax,5],'-',
it[:imax],cvg[:imax,6],'r-')
plt.grid()
plt.legend(['dt','force','disp'],
fontsize='small',framealpha=0.5, loc=2)
# step time and number of contact elements
sp1=plt.subplot(2,1,2)
plt.plot(it[:imax],itsteptime[:imax],'r-',
it[:imax],itsteptime[:imax],'b-',)
plt.legend(['# cont. el.','step time'],
fontsize='small',framealpha=0.5, loc=2)
plt.ylabel('step time')
plt.xlabel('Iteration')
plt.grid()
sp2=sp1.twinx()
plt.plot(it[:imax],cvg[:imax,4],'r-')
plt.ylabel('# of cont. elements')
plt.savefig(job)
plt.show()

eyebarって何。

.inp

eyebar.inpを見た。

*INCLUDE, INPUT= を使って、対象条件、接触条件、観察したいノード番号、強制変位するノードなどを指定するsetが書かれたファイルを読み込んでいた。

control.sur要らん気がするけど、削って試したわけではない。

板厚情報は*SOLID SECTIONで指定

*SOLID SECTION で、板厚を設定していた。外枠が1で、内側が2の板厚。
シェル要素なので断面形状はなし。beam要素だったら*BEAM SECTION,ELSET=Eall,MATERIAL=STEEL,SECTION=Rectとか書いて、断面形状を入力していた。
エレメントのセット名と、マテリアル名を指定するのは、beamと同じ。

接触
*SURFACE INTERACTION, NAME=contact 
*SURFACE BEHAVIOR, PRESSURE-OVERCLOSURE=LINEAR
1000000,0.1,0.01
*CONTACT PAIR, INTERACTION=contact, TYPE=NODE TO SURFACE
Sseye,Sspin

一行目は、contactと書いてあるけど、この段階ではただの名前(表面相互作用の名前)。
2行目からそのcontactが、どう表面相互作用するか書かれていて、
4行目で、接触のペアを、contactで指定した相互作用させると宣言して
5行目に、スレーブ、マスターの順で接触のペアをセット名で指定していた。

強制変位はSTEP内の*boundaryで指定

強制変位は*boundaryでやるようです。
最初、ファイルを見ていて、何で中心の丸が動いているのか分からなかった。
どこに、荷重とか強制変位書いてあるの?
荷重っぽい、DLOADはアスタリスク二個でコメントアウトしてあるし…
→*STEPの中の、

*BOUNDARY
Ncontrol,1,1,2

で指定されていた。

解析結果の見方

データセットは、一番数字が大きい25が最終的な結果(2mm変位させたときの結果)。
.cvgファイルの中の、INC(REMENT)の最大値分25が結果として出力された。

which.png

このデータを見たい場合は、GUIのウィンドウにマウスカーソルを入れたうえで下記を入力。

ds 122 e 7

25番目の中に入っている、122が応力のデータセット名なので、122。7以外の数値にも、いろいろな結果が入っている。

上記画像のGUIから選ぶと、Freeglutのエラーで止まる。

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

上記のようなエラーで。

posted by yuchan at 19:00 | Comment(0) | Calculix

20200209

Calculix 10本ノック: 5本目: cgxを使ってモデル化→解析

Calculixとは

フリーの解析ソフト。

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

ノック5本目: cgxでモデル作成:梁

梁モデルを、cgxだけでモデル化する。コマンドは手打ちする。

今回はコマンドを頻繁に使う。
(重要)必ず、マウスポインターはGUIの中に入れてから、コマンド入力する。
そうでない場合、コマンドラインからの入力を受け付けてくれない。

テキストエディタにコマンドを書いておいて、

cgx -b ファイル名

をすれば、同じ内容になる。

Calculix(だけで行う解析)は、

  1. cgxによるモデル作成

  2. テキストエディタで.inpの作成

の二つが重要になってくると思ったので、やる。

点を打って、z10の所までスイープ→線になる。

pnt ! 0 0 0
seta center p all
swep center py tra 0 10 0

この状態では、何も表示されないので、

​ 点を表示したければ

plot p all

線を表示したければ

plot l all

線の名前も表示したければ、

plot la all

line_name.png

線の再定義

line L001 D001 D002 20

上記の代わりに、前述したswepの所で、

swep center py tra 0 10 0 20
と打っても同じ要素ができた。

要素タイプの選択

elty all be2

CalculiX GraphiX, Version 2.16のUser Manualに載っている要素を表にしてみた。

                 
梁beambe2be2rbe2fbe2dbe3be3rbe3f
平面三角triangletr3tr3utr3etr3str3ctr6tr6utr6etr6str6c
平面四角quadqu4qu4equ4squ4cqu4rqu4erqu4srqu4crqu8qu8equ8squ8cqu8rqu8erqu8srqu8cr
八面体hexahe8he8fhe8ihe8rhe20he20r
三角柱pentape6pe6fpe15pe15r
四面体tetrate4te4fte10te10mte10t

c: axisymmetric軸対象
e: plain strain平面ひずみ
s: plain stress平面応力
u: unstructured mesh訳がすぐに出てこなかった。(これ?),
r: reduced integration低減積分
i: incompatible modes
f: fluid element for ccx,
t: initial temperatures are interpolated linearly within the tet element (ccx:C3D10T)).

この状態では、まだエレメントは作成されていない。

mesh all

と書いて初めてエレメントができる。

ノード、エレメントの表示

エレメントができたので、ノードもできたはず。
いちいちコマンドを入力しなければ、表示されない。

plotコマンドで表示しようとすると、以前のplot結果が消えてしまうため、plusコマンドを使う。

plus n all
plus e all

node.png

出力

.inpに読ませるメッシュファイル(all.mshファイル)の出力のやり方は、

send all abq

これで、all.mshが、カレントフォルダに出力される。

all.mshには下記が書かれている。

  • ノード
    • ノードのセット名
    • ノード座標
  • エレメント
    • エレメントのエレメントタイプ
    • エレメントセット名
    • エレメントが使用しているノード番号
*NODE, NSET=Nall
1,0.000000000000e+00,0.000000000000e+00,0.000000000000e+00
2,0.000000000000e+00,0.000000000000e+00,1.000000000000e+01
3,0.000000000000e+00,0.000000000000e+00,2.000000000000e+01
4,0.000000000000e+00,0.000000000000e+00,3.000000000000e+01
5,0.000000000000e+00,0.000000000000e+00,4.000000000000e+01
6,0.000000000000e+00,0.000000000000e+00,5.000000000000e+01
7,0.000000000000e+00,0.000000000000e+00,6.000000000000e+01
8,0.000000000000e+00,0.000000000000e+00,7.000000000000e+01
9,0.000000000000e+00,0.000000000000e+00,8.000000000000e+01
10,0.000000000000e+00,0.000000000000e+00,9.000000000000e+01
11,0.000000000000e+00,0.000000000000e+00,1.000000000000e+02
*ELEMENT, TYPE=B31, ELSET=Eall
1, 1, 2
2, 2, 3
3, 3, 4
4, 4, 5
5, 5, 6
6, 6, 7
7, 7, 8
8, 8, 9
9, 9, 10
10, 10, 11



全部まとめると下記のようになった。

pnt ! 0 0 0
seta center p all

swep center py tra 0 0 10 10

##line L001 D001 D002 10

elty all be2

mesh all
send all abq

inpファイルの作成。

メッシュができたので、このまま.inpの編集をする。
全部手打ち。
サンプルファイルのコピペもありだと思う。

先ほどのcgx作業で完成したall.mshを読み込むために、下記を記入。

*INCLUDE, INPUT=all.msh

カレントフォルダになければ、アドレスを入力するしかない。

境界条件は下記で、「ノード1を1から6まで完全固定」になると思う。

*BOUNDARY1 ,1, 6

材質は、名前がSTEELで、ヤング率210000、ポアソン比0.3。

*MATERIAL,NAME=STEEL*ELASTIC210000,0.3

梁要素の断面特性は、断面を適用する要素のセット名をEall(all.mshファイル内で、定義されているエレメントのセット名)、材料は上記で設定したSTEEL、断面形状は矩形。

*BEAM SECTION,ELSET=Eall,MATERIAL=STEEL,SECTION=Rect15,151, 0, 0

解析条件は、

*step

*end step

の間に書く。

静解析の場合、書くことは

  • 静解析の指定
  • 荷重

  • 出力要求(ノード)

  • 出力要求(エレメント)

静解析の指定は下記。

*static

集中荷重は下記で、「ノード11を、1方向(X方向)へ、1000の荷重を付加」

*CLOAD11, 1, 1000.0

出力ファイルへの出力要求は、ノードの結果の場合下記で、「U (変位)」

*NODE FILEU

出力ファイルへの出力要求は、エレメントの結果の場合下記で、「S (応力)」

*el file, output=1DS

まとめるとこうなった。

*INCLUDE, INPUT=all.msh

*BOUNDARY
1 ,1,6

*MATERIAL,NAME=STEEL
*ELASTIC
210000,0.3

*BEAM SECTION,ELSET=Eall,MATERIAL=STEEL,SECTION=Rect
15,15
1., 0, 0

*step

*static

*CLOAD
11,1,1000.0

*node file
U
*el file, output=1D
S

*end step

上記をsolve.inpと名前を付けたら、下記コマンドで解析実行。

ccx solve

job finishedと出たら、

cgx -read solv.frd

マウスポインターをGUIの中に入れてから、
全変位を見たければ、下記コマンド入力する。

ds 1 e 4

もしくは、ミーゼス応力を見たければ

ds 2 e 7

hcpy_1.png

う〜ん不便。cgxでのメッシュ作成、ccx用の.inpファイル作成、全部不便。

GUIって便利だなと改めて思った。

posted by yuchan at 19:00 | Comment(0) | Calculix