|
![]() ![]() |
モデルデータをファイルに保存する際、モデル本体部分(形状情報)とか、境界条件(計算条件)指定部分とか、全部バラバラの別のファイル名(セット名称)を使うことになる。よって、1コの計算モデルだけで、複数のファイルを生成することになる。他の計算モデルと、ファイル名が、かぶらないように注意。もしくは、1ディレクトリ=1計算モデル の関係で作業を進める。
CalculiXの陽解法について、こちらのサイトで紹介されている棒波の理論値との比較を行った所、なんだか、理論値とCalculiX結果が合わなかったので、保留。Impact Finite Element Programの陽解法ソフトでは、理論値と結果は合いました。
CalculiXインプットファイルの書式は、ABAQUSインプットファイルフォーマットを継承している。しかし、それは基本の記述スタイルを継承しているだけ。各キーワードに設定できるオプションの種類や、それに指定する値、特性値の記述方法まで完全互換ではないので注意。要素タイプ名称(アイソパラメトリックの三角形平面要素)や、梁要素の断面形状、剛体(RIGID BODY)の定義などで微妙に違う。
例えば、梁の円形断面(BEAM SECTION)に関して、ABAQUSでは Radius を指定するのに対して、CalculiXでは Diameter を指定する。このように、値の指定数は同じでも、その値の取り扱いが異なる場合があるので注意したい。
ソフトウェア開発の規模からいって当然であるが、CalculiXよりABAQUSの方が使用できるKeywordが多い。ABAQUSには、大規模構造体を効率よく定義するために、PART , INSTANCE , ASSEMBLY などのKeywordがある。その為、ABAQUSインプットファイルは、cgx に読み込めないことが多い。
以下のアドオンを作ってみた。
アドオンファイルはこちらから。
Blender本体はこちらから。
メッシュデータ生成は、Blender を使った方が良さげなので、cgx のメッシュジェネレータ機能については、ほとんど省略。
CADデータからの変換については、Gmshが良さげ。CADデータからインポートしたNurbsサーフェス上に、Meshを自動生成するソフト。GPLライセンスソフトウェアでありながら、IGES/STEPファイルのインポートに対応している。自分が持っているCADデータをきちんとエラーなく、ほんとにインポートできたGPLライセンスソフトウェアは、このソフトがはじめて。しかし、Mesh生成プロセスが自動すぎて融通がきかないので、業務用途には無理っぽい。四角形要素を奇麗に作成するには、すこしテクが要。
Blenderから、Wavefront OBJ
形式でExportすると、
という形式で書き出される。そのファイルをスクリプトとかで編集して、CalculiXインプットファイルにすると楽。ただし、大規模,複合部品のASSEMBLY構造体まで楽に定義できるとは言いがたい。
Wavefront OBJファイル形式の書式は、こちらが参考になる。
Blender は、Python言語のスクリプトで拡張できる。(Blender内での作業処理,ファイルからの読み込み,ファイルへの書き出し 含む) なので、それを使って、CalculiXインプットファイルフォーマットで出力するようにしても良いかもしれない。前述のWavefront OBJ
Exportも、Python言語のスクリプトによって処理されている。Export時の処理に使用されているスクリプト本体(ASCIIファイル)も、Blenderのインストールディレクトリ内に保存されている。単に書き出す順序とか、テキストフォーマットを変えるだけなので、既存のスクリプトを参考にさせてもらったら簡単に作れるかもしれない。
BlenderでFEMモデリングするには、以下のような問題が残る。
連続して結合されている一定断面の梁要素において。CalculiX v1.6 では、互いに結合されている梁要素が、逆方向の要素方向を向いているとき∗1、その梁要素間での荷重伝達の連続性が損なわれ、応力も分断されたような分布になる。そのとき、解析結果の応力は、理論解∗2 に比べ結果の差異が大きくなり、精度が低下していた。特に NLGEOM をOFFとした場合の、線形解析(変位,応力)時において、途中で梁の結合が分断されたような変な応力分布になる。NLGEOM をON(有効)とすれば、要素方向が揃えられていないモデルでも、理論解との差異は減少する。ただし、要素方向が揃えられている場合に比べれば、理論解との差異は少し大きい。
CalculiX v1.5 の時はこんな変な現象はでなかった。v1.6では、NLGEOM=NO 時の解法が変更されている様子。
他の要素、モードでの要素方向の影響は、まだ未確認。
*NODE 1 , 10.0 , 0.0 , 0.0 2 , 20.0 , 0.0 , 0.0 3 , 30.0 , 0.0 , 0.0 4 , 40.0 , 0.0 , 0.0 5 , 50.0 , 0.0 , 0.0 6 , 60.0 , 0.0 , 0.0 7 , 70.0 , 0.0 , 0.0 *** NodeID , X , Y , Z
*ELEMENT, TYPE=B32, ELSET=BAR_PART 1 , 1 , 2 , 3 2 , 3 , 4 , 5 3 , 5 , 6 , 7 *** ElemID , NODE1 , NODE2 , NODE3
*ELEMENT, TYPE=B32, ELSET=BAR_PART 1 , 1 , 2 , 3 2 , 5 , 4 , 3 3 , 5 , 6 , 7 *** ElemID , NODE1 , NODE2 , NODE3
EQUATION , RIGID BODY について、従属節点の回転成分は拘束されない。
EQUATION では、自由度成分番号 4 , 5 , 6 を使用することは出来ない。
RIGID BODY に、ROT NODE オプションがあるが、これは剛体物体全体としての、回転運動を抑制(従属節点単体でみると、上下左右の並進運動)するもの。従属節点単体で見た場合、節点に接続される要素へ、回転成分の力の伝達(回転拘束)はされないような感じ。
Note : ちなみに、節点順序全部逆でフェイス法線方向が裏返ったソリッド定義であっても、cgx に読み込んだらそれなりに普通に表示されるので気づきにくい。
cgx -c [jobid.inp]
read [jobid.fbd] add
read [jobid.inp] inp add
read [jobid.inp] inp
elty allっぽい。
rot x | rot -x | X軸方向 視点 |
rot z | rot -z | Z軸方向 視点 |
rot y | rot -y | Y軸方向 視点 |
frame
area [セット名称]
volu [セット名称]
ABAQUS (CalculiX) では、複数の要素に対する指示を効率よく行うために、集合
というものを定義できる。集合
には複数の要素や節点が含まれる。また、集合
に、また別の集合
を含めることで階層的な構造を定義することも出来る。
集合
は、ABAQUS (CalculiX) では、セット
と呼ばれ セット名称
文字列 で管理される。インプットファイル内では、*NSET , *ELSET のキーワードで定義される。
セット名称
に使用できる文字制約は、CalculiX CrunchiX USER'S MANUAL の NSET , ELSET の項を参照のこと。尚、ABAQUS/Explicit (v6.7以降では、ABAQUS/Standardにおいても) では、先頭文字がアルファベットでないといけない。
正規表現で書くと ^[a-zA-Z][a-zA-Z0-9_\-]+$
.(ドット)を用いてはいけない。
ERRORとはならないが、.
は予約語の為、セット名称の一部のつもりで扱うと、計算中においてはユーザの認識とは別のセットを参照してしまう危険性がある。.
は、セットを参照する際に利用され、以下のように記述する。
ABAQUSインプットファイルでの例)
*BOUNDARY インスタンス名称 . インスタンス内におけるセット名称
*NSET, NSET=SPC_POINTS 1 , 2 , 3 ... *STEP ... *BOUNDARY SPC_POINTS,1,6,0.0 *END STEP節点 1 , 2 , 3 を完全拘束。(*STEP ~ *END STEP キーワード間で、境界条件を指定する。それ以外の行で、モデル形状/特性 の定義をする。)
集合の定義は可能。
*NODE, NSET=NALL NodeID , X , Y , Z ... *ELEMENT, TYPE=B32, ELSET=BEAM_ELEMENTS ElementID , NodeID1 , NodeID2 , NodeID3 ...
plus n allとかしておくと、全節点がハイライト表示されるので、節点セットを作成するとき、節点を選択しやすいかもしれない。
seta [セット名称] [エンティティタイプ] [番号]
seta nodeset n 100
seta elemset e 100
seta elemset e 100 101また、要素、節点の場合は、番号範囲で指定もできる。( 1 〜 100 番まで、1づつIDを増加し、見つけた 要素, 節点 を含める )
seta nodelist n 1 - 100 1
seta elemlist e 1 - 100 1
新しいセットに、他のセットを含めるには、以下のようにする。
seta setset se elemlist
setr nodeset n 100
setr elemset e 100
setr elemset e 100 101
rnam [セット名称] [新しいセット名称]
del se [セット名称]
qadd [セット名称]
(選択待機状態になる。)
エンティティを選択するには、マウスのクリックとかじゃなくて、
任意のエンティティにマウスポインタを合わせた後、以下のキーを押す。
|
|
q (選択終了)
qrem [セット名称](選択待機状態になる。)
q (選択終了)
prnt se
prnt se [セット名称]
prnt [エンティティタイプ] [ID]
n | 節点 |
e | 要素 |
l | ライン |
qenq
任意のエンティティにマウスポインタを合わせた後、エンティティ選択キーを入力。
|
|
q (選択終了)
plot [エンティティタイプ] [セット名称] | 指定したセット内だけのエンティティを表示。 |
minus [エンティティタイプ] [セット名称] | 表示除く。 |
plus [エンティティタイプ] [セット名称] | 表示追加。 |
n | 節点 |
e | 要素 |
f | フェイス |
plus [エンティティタイプ]d [セット名称] | (lineエンティティの場合、線上の division and bias 表示) |
plus [エンティティタイプ]a [セット名称] | (IDも表示) |
plus [エンティティタイプ]v [セット名称] | (結果値(ポスト)も表示) |
plot [エンティティタイプ] [セット名称] [色符号]
|
|
send [セット名称] [出力フォーマット形式]
send all abq
all.mshのファイル名で、テキスト出力される。
send [セット名称] [出力フォーマット形式] [Loadタイプ] [Loadパラメータ]
send [セット名称] abq spc 123456 send [セット名称] abq pres 0.05 send [セット名称] abq force 1. 20. 0.
[セット名称].[拡張子]のファイル名で、テキスト出力される。
send [セット名称] abq names
save
exitもしくは
quit
Cload指定例
*CLOAD 20 , 1 , 100.0
節点番号=20 の 自由度方向=1 に、100.0 荷重入力。
Boundary指定例
*BOUNDARY 10 , 1 , 6 , 0.0 11 , 1 , , 0.0
節点番号=10 の 自由度方向=1∼6 を拘束。
節点番号=11 の 自由度方向=1 を拘束。
Boundary指定例2
*BOUNDARY 31 , 1 , , 10.0
節点番号=31 の 自由度方向=1 に 10.0 強制変位。
自由度番号 | 方向 | |
1 | X方向 | |
2 | Y方向 | |
3 | Z方向 | |
4 | X軸回りの回転 | 回転量を指定する場合は、tan値で指定。
a = tan(角度)とした場合。a の値を記述する。 |
5 | Y軸回りの回転 | |
6 | Z軸回りの回転 | |
11 | 11 is the temperature degree of freedom. |
*ERROR in bounadd: increase nboun_
*NODE PRINTはダメ。(Errorにはならないが、.dat に何も出力されない。)
*NODE PRINT, NSET=NALLのように、*NODE PRINT , *EL PRINT では、セット(集合)の定義とセット名称が必須。
*EL FILE Sのようにしておくと、シェルの場合、板中立面上にある積分点の応力値が出力される。
*EL FILE, OUTPUT=3D Sのようにしておくと、シェル要素に設定されてある、板厚表面上での応力値が出力される。
*INCLUDE, INPUT=/home/guido/test/beam.spc
File Not Foundとなるので、注意。
*** *** Begin CalculiX input file *** *HEADING モデルタイトル *** *** Define NODES *** *NODE 節点ID と 座標値 *** *** Define ELEMENTS (B32 = BEAM) *** *ELEMENT, TYPE=B32, ELSET=BEAM_PART 要素ID と 構成節点IDのリスト *** *** Define ELEMENTS (S8 = SHELL) *** *ELEMENT, TYPE=S8, ELSET=SHELL_PART 要素ID と 構成節点IDのリスト *** *** Define ELEMENTS (C3D8 = SOLID) *** *ELEMENT, TYPE=C3D8, ELSET=SOLID_PART 要素ID と 構成節点IDのリスト *** *** Define Element Section-Properties *** BEAM要素断面形状の定義 (RECT or CIRC) *** *BEAM SECTION, MATERIAL=MAT_A, ELSET=BEAM_PART, SECTION=CIRC 10.0 , 10.0 --> 梁断面の第1軸方向の径 , 第2軸方向の径(縦方向に同じの場合 横方向は空欄で可)。 1.0 , 1.0 , 1.0 --> 梁断面の第1軸を定義するための単位ベクトル。 *** *** SHELL要素断面形状の定義 *** *SHELL SECTION, MATERIAL=MAT_B, ELSET=SHELL_PART 1.2, --> 板厚の設定 *** *** SOLID要素 の場合は、MATERIAL との関連付けのための中継役 *** *SOLID SECTION, MATERIAL=MAT_A, ELSET=SOLID_PART *** *** Define Materials *** 材料特性の定義 *** *MATERIAL, NAME=MAT_A *DENSITY 質量密度 *ELASTIC 線形弾性特性(縦弾性係数,ポアソン比) *** *MATERIAL, NAME=MAT_B *DENSITY 質量密度 *ELASTIC 線形弾性特性(縦弾性係数,ポアソン比) *PLASTIC 降伏時の真応力 , 対数変換後の塑性ひずみ 真応力1 , 対数変換後の塑性ひずみ1 真応力2 , 対数変換後の塑性ひずみ2 真応力3 , 対数変換後の塑性ひずみ3 ... *** *** Define NSET *** 節点 集合 (セット) の定義。 *** *NSET,NSET=NALL 節点IDのリスト。 *** *** Define ELSET *** 要素 集合 (セット) の定義。 *** *ELSET,ELSET=EALL 要素IDのリスト。 *** *** *** Define Curve (Graph) *** 時間軸を考慮した外力変化(陽解法)時に使用。 *** 一行あたり、4組のデータ(8フィールド目)までが有効。 *** *AMPLITUDE, NAME=ACCEL_CURVE Time1 , Accel1 , Time2 , Accel2 , Time3 , Accel3 , Time4 , Accel4 , Time5 , Accel5 , Time6 , Accel6 , Time7 , Accel7 , Time8 , Accel8 , ..... TimeN , AccelN *** *** *** Define ANALYSIS STEPS *** INC=100 : 最大インクリメント数(コマ数)の制限 *** NLGEOM : 幾何学的非線形性(non-lnear geometric)の考慮を ON *** *STEP , INC=100 , NLGEOM *** *** Start Current ANALYSIS Step *** 陰解法。陽解法。解法の選択と、解法のための定数の設定。 *** *STATIC 時間領域などのパラメータ指定。 *** *** 外力と、拘束の条件。 *** *CLOAD 外力の条件。節点集中力。 *DLOAD 外力の条件。要素面圧力。 *BOUNDARY 拘束条件。強制変位条件。温度条件。 *** *** Output to ∗.frd (CGX file) *** *NODE FILE cgx で閲覧するために出力する結果値の定義 *EL FILE , OUTPUT=3D cgx で閲覧するために出力する結果値の定義 *** *** Output to ∗.dat *** *NODE PRINT , NSET=NALL テキストエディタ で閲覧するために出力する結果値の定義 *EL PRINT , ELSET=EALL テキストエディタ で閲覧するために出力する結果値の定義 *** *** End Current ANALYSIS STEP *** *END STEP *** *** End CalculiX input file ***
Post処理を行うには、以下の二つのパラメータを指定する。
1 | Datasets | どのタイミング(Time / INCREMENT)か。 Stressなのか、Displacementなのか。 |
2 | Entity | 成分 ( X , Y , Z ... ) |
指定には、cgx のコンテキストメニューから
もしくは、
lc コマンドを使用する。
lc [データセット番号] a
lc [データセット番号] e [エンティティ(成分)番号]例)Datasets 1番目のEntity(成分) 1番目のを表示。
lc 1 e 1
|
![]() |
DISPで Animation 中であるときに、
lc 1 a
allentity(成分)になる。
lc 1 2 3 a
lc 1 3 5 a
などとなる。
lc 2 e 7
lc 2 4 6 e 7
lc 2 e 1 2 3
lc 2 4 6 e 1 2 3
min -12.0 | 凡例の最小値を -12.0 に設定 |
max 24.0 | 凡例の最大値を 24.0 に設定 |
steps 12 | 凡例の色分け階層を、12段階に設定 |
scal s [係数] |
表示中の応力分布図の値を係数倍する。 ( MKS単位系モデル(kgf/mm²)から、SI単位(MPa)へ換算するときなどに使う。) |
scal v [係数] |
表示中のベクトル図、テンソル図のベクトル長さを、係数倍する。 |
scal d [係数] |
表示中の変形図の変形量を、係数倍する。 ( Toggle Real-Displacementsが On のときだけ有効。) |
scal d |
倍率(係数)を、初期値(1.0) に戻す。 |
指定した係数は、初期値からの倍率値ではなく、現状の状態からさらに上乗せされる倍率値として扱われる。
RADIATE | 放射 |
Transient | 過渡 : ある状態から他の新しい状態へ移り変わること。また、その過程。「—期」 |