« 2013年6月 | トップページ | 2013年8月 »

2013年7月

2013年7月24日 (水)

ゴムバンドの摩擦力による動力伝達(問題点が解決)

The probrem of "Structural analysis of rubber products with contact, friction, and large rotation" was solved by Salome-Meca 2013.2(STA11.4).

In fact, the problem had been solved in STA11.3.22. However, I did not have the skill to update STA11.3 to STA11.3.22. Therefore, I was waiting for the release of salome-meca2013.2. It is easy to install.

半年以上前に実施して、問題点がなかなか解決できなかった事例、

「ゴムバンドの摩擦力による動力伝達」
http://salome-meca.cocolog-nifty.com/blog/2013/01/post-5b53.html

ですが、今回リリースされたSalome-Meca2013.2を用いたところ、問題が解決しました。

まず、【問題点1】(応力分布にムラがあり、ゴムバンドの動きに合わせて動いてしまう。
)ですが、これについてはCode_Asterの問題のようで、実はSTA11.3.22の段階で修正されていたようです。解説は下記URLのテキスト中にある、「Bad computation of the modulus of compressibility in ELAS_HYPER」です。

http://www.code-aster.org/documents/histor/en/11.3.22.txt

 しかし既存のSalome-Meca2013.1のCode_AsterをUpdateする事が私には難しくて出来なかったため、インストールが簡単なSalome-Mecaの最新バージョン公開を待っていました。

 そして先日公開されたSalome-Meca2013.2(Code_Aster11.4)で試したところ、問題が修正されている事が確認できました。

動画です。

負荷トルクが一定になるTime=2.25以降、ゴムバンドの応力や変形状態が定常状態になって回転している事がわかります。以前のような応力ムラや変形のガタツキはありません。

静止画です。
Rband0401

定常状態で回転し、安定しています。

次に【問題点2】(従動ローラーの回転が、駆動ローラから遅れている。)
ですが、これは商用ソフト(Marc)で試したところ、同じような結果になりました。これは問題点ではなく、正しい結果のようです。

以上のように、問題となっていた応力ムラ問題が解決したので、これからゴムと金属の接触、回転物の問題などを継続して進めて行きたいと思います。

Salome-Meca 2013.2

Code_Asterの公式サイトで、Salome-Meca 2013.2のダウンロードが出来るようになりました。

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

これに含まれているSalomeとCode_Asterのバージョンは、下記の通りです。

  • SALOME 6.6.0
  • Code_Aster stable (version STA 11.4)

SALOMEは先日、バージョン7が公開されたので、それになるかと思っていましたが、バージョン6のままのようです。

またCode_Asterは、stableがSTA11.4になり、testingがSTA12.0になったのですが、今のところ両者は同一なので、11.4のみになっているようです。

Salomeが6.6.0のままなので、見たところSalome-Meca2013.1と変わらないような印象です。しかし、Code_Asterが11.3から11.4に変わっており、細かな改良がされていると思います。このあたりは順次確認していきたいと思います。

なお、私の環境の一つ「Virtualbox + debian6」では、なぜかSalomeからASTKを起動する事が出来ませんでした。debian7でも同じです。

仕方が無いので、とりあえずDEXCS-Salome-D1-B1-64(日本語版)の自分のhomeディレクトリに追加インストールして試行しています。

2013年7月20日 (土)

主要記事INDEX作成

これまでSalome-Mecaについて様々な試行や検討を行い、ブログ形式で記事にしてきましたが。ブログだと主要記事がすぐに過去のアーカイブに埋もれてしまいます。

一応、カテゴリ毎のアーカイブもあるのですが、目立たないので、トップページを主要記事のINDEXにしてリンクを作成しました。

1つの記事は複数のカテゴリに属するのが普通なのですが、今回作成したINDEXでは、主なカテゴリ1つのみに属するように分けています。

2013年7月13日 (土)

金属シャフトとリング間へのゴム圧入

今回は、下図のように金属(鉄)シャフトとリングの間に、ゴムのリングを圧入する(押し込む)解析を検討しました。

Ring0101


ここで、上の3つのパーツの寸法は下記の通りです。

金属シャフト: 内径 - 、外径 20mm、高さ 50mm
ゴムリング : 内径 18mm、外径 62mm、高さ 10mm
金属リング : 内径 60mm、外径 70mm、高さ 20mm

金属シャフトとゴム間で直径2mm分、ゴムと金属リング間も直径2mm分オーバーラップしている事になります。このゴムを2つの金属パーツ間へ押し込みます。

このような問題のFEM解析を行う手法は複数あります。商用ソフトでは、要素を空間内で重ねて作成しておけば、この重なり(オーバーラップ分)を解析の初回インクリメントで自動的にゼロになるように調整してくれる機能や、金属パーツを剛体として扱い、その剛体の大きさを変化させる機能など、様々な工夫があります。

Salome-Meca(Code_Aster)では剛体面が使えないので、全てのパーツを有限要素で作成する必要が有ります。また、要素同士のオーバーラップを調整して圧入応力を生じさせる方法については、有るのかも知れませんが、私はまだ良く分かっていません。

そこで今回は、「熱膨張」を利用して金属シャフトと金属リングのサイズを変更する方法を用いる事にしました。これは、材料に線膨張係数を設定し、温度境界条件を与える事で、パーツの大きさを変える方法です。

ゴムリングの大きさはそのままとして、金属シャフトと金属リングがゴムリングに干渉しない大きさになるよう、初期形状を定めました。作業としては、SalomeのGeometryで本来の寸法で作成した後、Scale Transformで3方向均等に拡大(または縮小)しました。

金属シャフト: 倍率:0.869565(15%膨張させると本来のサイズになる)。
金属リング : 倍率:1.052632( 5%収縮させると本来のサイズになる)。

ここで、本来であれば高さ方向のサイズ変更は必要無い(むしろ避けるべき)だと思うのですが、異方性の線膨張係数を設定する方法が分からなかったので、今回は3方向とも均等にサイズ変更しました。

使用ソフトウェアは、debian6 + Salome-Meca2013.1(SALOME6.6 + Code_Aster STA11.3)の利用です。

また、今回の熱と構造の連成解析方法については、下記サイトの情報を参考にさせて頂きました。

Code_Aster & Salome-Meca 日本語解説

熱構造解析の部分

解析条件ですが、圧入だけでは面白くないので、圧入後、リングは固定したまま、シャフトの上部をX方向へ7mm移動させ、シャフトを傾けました。これにより、ゴムの変形が軸対称ではなくなります。

■結果

まずは結果からご覧下さい。

Time=0~1で圧入
Time=1~2でシャフト傾き

となっています。

静止画です。

初期形状(Time=0)
Ring0102

圧入(Time=1)
Ring0103

シャフト傾き(Time=2)
Ring0104

ゴムと金属間は接着ではないため、シャフトを傾けた結果、シャフトとゴムの間に隙間が生じています。

今回、圧入した時点でゴムと金属を接着する方法も検討したのですが、結局出来ませんでした。シャフトの傾きにより大回転が生じるので、「LIAISON」系は使えません(平行移動だけで大回転さえ生じなければ、LIAISON系の結合が使えるかと思います)。ContactでGLISSIERE='OUI'を指定することにより、接触面が離れないようには出来たのですが、面内でスライドしてしまいます。そこで大きな摩擦係数を設定しましたが、計算が収束しませんでした。商用ソフトのように、大回転に対応した「ボンド結合(貼り合わせ)」が有ると良いと思うのですが、Code_Asterでは良く分かりませんでした。

さて、ここから後は解析設定の詳細説明です。

この解析は「熱解析」と「構造解析」の2段階で行いますが、1ステップ(1インクリメント)毎に熱と構造を交互に行いつつ進めるのではありません。
はじめに熱解析をTime=0から最終時間まで行って、そのデータを一旦baseフォルダに保存します。次に構造解析でそれを読み込んで、温度データを参照しながら再びTime=0から最終時間まで計算します。

ジオメトリとメッシュは熱と構造で共通になります。

■ジオメトリ

○金属シャフト
下図の様になります。サイズは本来の0.869565倍となります。

Ring0105

グループ設定は下記の通りです。
高さ方向がz、リング・シャフトの半径方向がx,yとなります。

sft : シャフト本体
sft_c : 接触する面
sft_lx : x方向への移動を拘束する線
sft_ly : y方向への移動を拘束する線
sft_pt : シャフトの傾きを制御する点(x方向変位)
sft_pb: z方向への移動を拘束する点

○金属リング
下図の様になります。サイズは本来の1.052632倍となります。

Ring0106


ring : 金属リング本体
ring_c : 接触する面
ring_fz : z方向への移動を拘束する面
ring_lx : x方向への移動を拘束する線
ring_ly : y方向への移動を拘束する線

○ゴムリング
下図の様になります。サイズは本来の値そのままです。

Ring0107


rubr : ゴムリング本体
rubr_c1 : 接触する面(内側)
rubr_c1 : 接触する面(外側)
rubr_fz : z方向への移動を拘束する面
rubr_lx : x方向への移動を拘束する線
rubr_ly : y方向への移動を拘束する線

■メッシュ

全てのパーツを四面体2次要素にてメッシュ分割しました。

Ring0108


各パーツそれぞれメッシュ作成した後、「Mesh」-「Build Compound」で一つにまとめて、mmedファイルにエクスポートしました。

Ring0109


これは上から見たところ(z軸に平行な視点)ですが、3つのパーツが初期状態で離れている事が分かります。

■commファイル内容(熱解析)

commファイルの内容の説明です。まずは、第一段階の熱解析です。
ファイル名は「ring01a.comm」です。

Ring0110

AFFE_MODELEにて、要素の種類を3次元ソリッド要素「3D」、解析の種類を熱解析「THERMIQUE」にしました。

物性値の設定(DEFI_MATERIAU)は熱伝導率(LAMBDA)と比熱(RHO_CP)になるのですが、今回の解析は温度を強制的に指定して変化させるだけですので、これらの値はダミーで構わない事になります。これらの値は「DEFI_FONCTION」で温度依存値に指定できますが、今回は「1」一定にしました。

AFFE_MATERIAUにて、この物性値を全ての要素に適用しました。

###

Ring0111

温度境界条件です。この後の「THER_NON_LINE」にて、時間(INST)の関数「fonc」と、各条件の値を掛けたものが温度になります。

「ther0」はゴムの温度ですが、初期値0℃で変化させません。
そもそも、ゴム材料(ELAS_HYPER)には線膨張係数を設定できないので、寸法の変化を計算できません。

「ther1」は金属シャフトの温度で、Time=0のときの初期値を0℃として、Time=1で15℃、Time=2でも同じく15℃にしています。これは第2段階の構造解析で、線膨張係数を0.01(1℃上昇すると1%膨張する)に設定する予定であり、シャフトは本来の形状になるのに15%膨張する必要があるためです。

「ther2」は金属リングの温度で、こちらは収縮させる必要が有るので、Time=0で0℃から、Time=1で-5℃、Time=2でも-5℃としています。

###

Ring0112

pas1aは計算の時間刻み幅です。
Time=0~2の2秒間を、均等に40分割しています。
つまり、金属の寸法変化による圧入過程が20ステップ、シャフトの傾き過程が20ステップとなります。
温度を強制的に変化させるだけなので、収束の失敗は無いと思い、自動時間分割は使っていません。
出力の刻み幅(output)も同じにしています。

###

Ring0113

非線形の熱伝導解析の設定です。
温度境界条件では、ther0が固定なので、FONC_MULT無し、他の二つは時間によって温度変化するのでFONC_MULT=foncにしています。

■astkによるJOB実行

Ring0114

astkによるJOB実行時に、解析結果を保存するbaseフォルダを指定しました。
(「ring01.base」という名前の空フォルダを、現在のbath pathの下に作成しておきます。)

■熱解析結果

結果の動画です。

Time=0から1の間で温度変化をして、金属シャフトは15℃に、金属リングは-5℃になっています。ゴムは0℃のままです。
その後、Time=2までは変化ありません。

静止画です(Time=2の最終状態のみ)。

Ring0115

###

■構造解析

続いて、第2段階である構造解析のcommファイル説明です。
ファイル名は「ring01b.comm」です。

Ring0116

継続実行を示す「POURSUITE」を記述しています。

「MODI_MAILLAGE」は接触面の向きを揃えるものであり、接触を扱う場合には基本的に入れておきます。

「AFFE_MODELE」で、要素を3次元ソリッド要素(3D)、解析の種類を構造解析(MECANIQUE)にしました。

###

Ring0117

材料物性は、金属(鉄)は線形弾性「ELAS」として、線膨張係数(ALPHA)に「0.01」を指定しました。これは、温度1℃の変化で、長さが1%変化します。
ゴムはムーニーリブリン材料です。

これを「AFFE_MATERIAU」の「AFFE」で各パーツに設定しました。
また、「AFFE_VARC」にて、熱解析の結果「RESU」を参照しています。この値と、 VALE_REFの値(今回は0)の差分に線膨張係数を掛けた値が熱による膨張率となります。
(この部分は、こちらを参考にしています)。

###

Ring0118

接触の設定です。
今回は簡単に済ませるため、摩擦は無しにしました。
また、ALGO_REZO_GEOMはPOINT_FIXEにしました。Code_Aster STA11.3のデフォルトはNEWTONだったと思いますが、私の環境ではPOINT_FIXEのほうが高速です。

また、材料の硬い金属の方をマスター面(MAIT)にしました。

###

Ring0119

計算時間幅(時間刻み)の設定です。
接触を使用するので、自動時間増分機能を使っています。

pas2a:Time=0~1の時間刻み(均等20分割)
pas2b:pas2aに自動増分を適用して再定義したもの
pas3a:Time=1~2の時間刻み(均等20分割)
pas3b:pas3aに自動増分を適用して再定義したもの

###

Ring0120

境界条件の設定です。
ジオメトリでグループ設定した面、辺、点にそれぞれ拘束を設定しました。

時間(INST)の関数として変化するのは「char1」のsft_ptのみです、この点はTime=1~2の間にx方向に7mm移動し、シャフトが傾きます。

###

Ring0121

非線形構造解析の設定ですが、今回はTime=1の時点で二つに分割しています(STAT_NON_LINEを2つ重ねている)。
これには下記の事情があったためです。

始めはSTAT_NON_LINEをTime=0~2の間で一つにしていました。そのとき、金属パーツ(RELATION=ELAS)のDEFORMATIONは、シャフトの傾きによる大回転を考慮し「GROT_GDEP」にしていました。ところが、この設定ではTime=1時点の熱変形後の金属パーツのサイズが、本来の寸法と異なった値になっていました。シャフトは正確に15%膨張、リングも正確に5%縮小してほしかったのですが、それぞれ若干異なった値になってしまいました。

この原因ですが、DEFORMATION=PETITにしなければ、予定の寸法にならないようです。大回転への対応は譲れないところなので、大回転可能なGDEF_LOGやSIMO_MIEHEも試しましたが、どれも寸法が異なってしまいました。PETITしかないようです。

そのため、回転の生じない熱変形過程のTime=0~1においてはPETIT、シャフトが大回転するTime=1~2においてはGROT_GDEPを用いる事にしました。
このような理由で、STAT_NON_LINEを二つに分けることになりました。
(ゴムは両方ともGROT_GDEPです)。

なお、STAT_NON_LINEの結果は、「RESU2」として、熱解析の結果「RESU」と分けています。

###

Ring0122


結果出力の部分は、特に変わったことはしていません。

■astkによるJOB実行

Ring0123

astkによるJOB実行時に、熱解析の結果データである「ring01a.base」フォルダを読み込み専用(Dのみチェック)で指定しました。Rにチェックすると、JOB完了時に上書きされるので注意が必要です。

■構造解析の結果

 結果は一番初めに示したとおりです。

■今回のデータ

下記にzipでひとまとめにしています。

ring01.zip

ring01a.comm(第一段階・熱)
ring01b.comm(第二段階・構造)
ring01.mmed (メッシュ)

今回は以上です。

« 2013年6月 | トップページ | 2013年8月 »