« 2012年10月 | トップページ | 2012年12月 »

2012年11月

2012年11月18日 (日)

入門に役立つリンク

SALOME-Mecaをこれから導入していくにあたって、役立つリンク「入門に役立つリンク」をサイドバーに追加しました。

基本的には「OpenCAE Users Wiki」の情報だけで、初心者の状態から十分始められます。
このブログの「導入・環境カテゴリ」を一番初め(一番下)から見て頂くと分かりますが、実際私自身がそうでした。

また、「Code_Aster & Salome-Meca」も、インストールから具体的な活用テクニックまで、詳しい情報がまとめられています。

日本語による入門については、上記2つのサイトを主に参考にしていけば良いと思います。

それから「SALOME-Meca活用研究会の情報公開」は、NPO法人CAE懇話会の「SALOME-Meca」活用研究会内での入門・導入に関する情報の公開です。
動作環境(ハードウェア、OS、導入形態など)や、インストールマニュアルがあります。現時点で上記は暫定サイトなので、今後URLが変更になる可能性があります(サイドバーのリンクはその都度修正します)。

2012年11月11日 (日)

Code_aster 11.0.28以降では、接触・摩擦解析が高速化

Code_asterの公式サイトの記事(下記URL)にて、version 11.0.28以降において接触・摩擦の計算が高速化できるアルゴリズムが導入されている事が書かれています。

http://www.code-aster.org/V2/spip.php?article612

version10までは、接触・摩擦を含む非線形解析において、その計算の中で下記のような5重のループがありました。

ループの外側から順に

1) Loop over time steps
2) Loop on geometry (matching and local base)
3) Loop on the threshold of friction (transformation of the Coulomb problem into a series of Tresca problems)
4) Loop on the status of contact
5) Newton loop (linearization of the problem)

です(技術的に正確に訳す自信が無いので、英語のまま引用しました)。

そのうち、2,3,4が接触・摩擦の計算に関するものですが、version 11.0.28 からは「FORMULATION = ’CONTINUE’」の場合において、3と4のループを省略することが可能になりました。これは、「partial generalized Newton’s method」という新しいアルゴリズムによるものだそうです。

更に、version 11.2.4からは「total Newton generalized method」によって2のループも省略できるらしいのですが、最新のSalome-Mecaである「2012.2」に含まれているのは「version 11.2.0」なので、Code_Asterを単独でインストールする必要があります。

なお、この「generalized Newton」を適用するには、「DEFI_CONTACT」にて下記の設定を行います。

ALGO_RESO_GEOM=’NEWTON’
ALGO_RESO_FROT=’NEWTON’
ALGO_RESO_CONT=’NEWTON’

現在のversion11ではこれがデフォルトになっているそうですが、一応、確認しておくほうが良いと思います。

さて、前回Code_Aster10.5で実施した「回転体とゴムの接触」について、今回の新アルゴリズムにて再計算してみました。

前回使用したDEXCS2011-Salome-A3(64)(SALOME6.3 + Code_Aster 10.5)と同じマシン(仮想PC)に、debian6とSalome-Meca2012.2(SALOME 6.5 + Code_Astr 11.2.0)を入れて、それを用いました。

計算に用いたメッシュファイル(mmed)は前回と同じですが、commファイルはCode_aster11に合わせて多少修正しています。

まず、今回の本題である接触ですが、下図のように「generalized Newton」の使用を明示的に記述しています。

Rigid03201

ただし、この問題は摩擦が無いので、ALGO_RESO_FROT=’NEWTON’はありません(摩擦を含む問題の場合は、これも必要になります)。
また、Code_Asterのバージョンが11.2.0なので、ALGO_RESO_GEOM=’NEWTON’の指定もありません。結局有効なのは、ALGO_RESO_CONT=’NEWTON’のみになります。

また、「CALC_NO」と「CALC_ELEM」をまとめて「CALC_CHAMP」で置き換えました。

Rigid03202


さて、計算時間ですが、下記の通りになりました。

前回(version10.5)   : 13141 (秒)
今回(version11.2.0):  4897 (秒)

同じマシンで計算し、計算時間が前回の37%程度まで短縮されました。
これはかなり大きな効果と言えます。

前回(version10.5) のループのログの一部です(messファイル)。

Rigid03203

表を左から見て、GEOM, CONT, NEWTONのループが回っている事が分かります。

今回(version11.2.0)の方です。

Rigid03204

GEOMとNEWTONのループだけで、CONTのループがありません。
その分、速く計算出来ているようです。

Code_Asterのバージョンは、10が安定版で11がテスト版との位置づけですが、これだけの速さの違いがあるのならば、接触・摩擦問題については安定版にこだわらず、特に問題が無い限りバージョン11を使ったほうが良さそうです。

今回のメッシュファイル(mmed)とcommファイルは下記です。
rigid03-2.zip

2012年11月 3日 (土)

回転体とゴム板の接触

前回の検証で、LIAISON_SOLIDEによる剛体結合は大回転できないことが分かりました。

そこで今回、変形体を用いて回転体の解析を行うことにしました。しかし硬くて変形しない部品を単に回転させるだけでは面白くないので、ゴムとの接触も含めた例題を作成してみました。

ソフトウェアは、DEXCS2011-Salome-A3(64)(SALOME6.3 + Code_Aster STA10.5)の利用です。

まず、解析モデルを下図に示します。

Rigid0301


上側の穴の開いた長細い部品が回転体です。これは穴を中心に回転し、下方のゴム板に接触します。本来はこの部品を剛体面または剛体結合として扱いたかったのですが、それが出来なかったため、変形体として扱うことにしました。

ゴム板は荷重が作用していない状態で両端(fix1,fix2)を拘束されており、回転体の接触によって下側へ押されます。

回転体の回転のさせ方ですが、まず、Geometryにおいて下図のように回転体を平面で分割し、分割面と穴の内面の交わる線(2本)を、それぞれ「line1」、「line2」というグループ名にしました。

Rigid0302


この2本の線に変位を与え、回転体を動かします。本来ならば穴の内面の点全てに変位を与えたほうが良いのでしょうが、今回は柔らかいゴムに接触するだけなので、この2本の変位拘束だけで荷重を十分支持できると判断しました。荷重が大きい場合は、回転体の弾性率も大きくする必要があります。

寸法は特に重要ではないのですが、一応下図に示します。
穴の内径は12mm(半径6mm)です。

Rigid0303


次にメッシュですが、回転体は四面体2次要素、ゴム板は六面体2次要素で作成しました(それぞれ別にメッシュ作成し、Compoundで一つにまとめています)。
ゴム板は曲げ変形するため、厚み方向に2層以上は欲しいところですが、今回は例題ですので計算時間を優先し、1層にしています。
もちろん、Geometryから各グループを作成しています。

Rigid0304

続いて、Eficasによるcommファイルの編集です。

複数の面を含む面グループに接触の設定をする場合、「ORIE_PEAU_3D」で面を揃える必要があります(これを結構忘れます)。

Rigid0305

材料物性ですが、回転体は構造用鋼としました。剛体として考えるなら、もっと大きな弾性率のほうが良いかもしれません。ゴムはMooney-Rivlinです。

Rigid0306

接触の設定ですが、摩擦は「なし」にしました。
FORMULATIONはcontinueです。
面の設定ですが、本来は弾性率の大きい回転体の方をマスターにするべきなのでしょうが、メッシュが回転体のほうが細いため、ゴム板のほうをマスターにしました。このあたりの設定によっても、収束性が異なってくるかもしれません。

Rigid0307

時間ステップですが、0秒~1秒の間で回転体が1回転するとして、その1秒間を計算します。
初期時間分割は40分割、結果出力も40分割、ただし、自動時間ステップ調整機能をを用います。

Rigid0308

さて、ここからが今回の本題である、回転させるための境界条件設定ですが、まずは下準備として、line1,line2に対する変位を時間の関数で定義することが必要です。

X-Y平面で見ると、line1, line2の初期配置は下図の通りです。

Rigid0309

この図では穴の中心座標が(0,0)となっていますが、実際には異なります。しかし、与える変位量としては同じことです。
穴の半径 r=6(mm)、周期 T=1秒なので、変位は下式の通りになります。

【line1】
X変位 = 6 * ( cos(2π(t-0.5)) + 1)
Y変位 = 6 * ( sin(2πt) )

【line2】 
X変位 = 6 * ( cos(2πt) - 1)
Y変位 = 6 * ( sin(2π(t-0.5)) )

これらの式を、Eficasで「FORMULE」に関数として、それぞれ設定していきます。
INSTは時間(=t)、piはπ(円周率)です。

Rigid0310

そして、定義した関数を「AFFE_CHAR_MECA_F」にて、それぞれの変位として設定します。
なお、line1,line2共に、Z方向の変位は0としました。これは、AFFE_CHAR_MECA_Fの中に入れても良いし、私のようにAFFE_CHAR_MECAを別に作っても良いようです。

STAT_NON_LINEの設定は下図です。
特に変わったことはしていません。回転体(solid)とゴム板(rubber)は別々に「COMP_INCR」を設定しました。

Rigid0311

一応、fix1,fix2のY方向(上下方向)の反力値も出力するようにしています。

Rigid0312

このような設定で計算を行いました。

結果の動画です。

静止画です

Rigid0313


回転体が回転して、ゴム板を押す様子が計算できました。

ゴム板の固定点(fix1, fix2)の反力も妥当な形で出ています。

Rigid0314


今回、X-Y平面上で4つの自由度を拘束しているため、ちゃんと変位を計算して回転させているつもりでも。計算誤差などによってわずかな変形と応力が発生しているようです。今回は実質的に影響が無いくらい小さいのでOKですが、この点にも注意する必要がありそうです。
本来は自由度3つ(1点のX,Yと、もう一点のXかY)の方が良いのですが、それだと回転の向きが定まらない時点があり、結局4つの自由度拘束になっています。何か、うまい方法は無いものでしょうか。

今回のメッシュファイル(mmed)とcommファイルは下記です。

rigid03.zip

« 2012年10月 | トップページ | 2012年12月 »