« 入門に役立つリンク | トップページ | ゴムバンドの摩擦力による動力伝達(後編) »

2012年12月 3日 (月)

ゴムバンドの摩擦力による動力伝達(前編)

今回は、2本のローラー間にゴムのバンドを掛けて、その摩擦力でローラーの回転と動力を伝達させるという事例です。設定内容が複雑なため、前編と後編の2回に分けることにします。

利用ソフトウェアは、Salome-Meca2012.2(SALOME 6.5 + Code_Astr 11.2.0)で、OSはdebian6です。接触・摩擦計算が高速化されたCode_aster11.2を使いたかったため、いつものDEXCS-Salomeではなく、この環境になりました。

また、モデル化は2次元(平面ひずみ)としました。はじめから3次元で行うと、試行錯誤に大変な時間がかかるためです。

まず、ローラーとゴムバンドのモデルです。

Rband0101


ゴムバンド(band)は真円の状態が初期形状です。その中に、中空のローラー2個を配置します。向かって左側が駆動ローラー(dr)、右側が従動ローラー(dn)です。drはdriving、dnはdrivenの略です。

寸法は、
・ゴムバンド(外径:260mm、内径:240mm)
・ローラー (外径:100mm、内径:88mm)

従動ローラーの拡大図です。

Rband0102


センター位置をピン固定するためのアームが1本出ているのと、トルクを与えるための突起(高さ2mm)が、内側へ出ています。

上図のように各グループを設定しましたが、それぞれの役割は下記の通りです。

【面グループ】
・band:ゴムバンドの領域設定
・dr, dn:各ローラーの領域設定

【線グループ】
・bandc:ゴムバンドの内面(接触面の定義)
・drc, dnc:各ローラーの外面(接触面の定義)
・trq:従動ローラーに負荷トルクを与えるための圧力荷重面

【点グループ】
・bandp1, bandp2, dnp1:不安定性対策の弱いバネ、および拘束の設定箇所
・drp1, drp2:駆動ローラーの回転変位制御点
・center:従動ローラーの軸荷重点、および回転中心

このモデルについて、下記の手順で計算します。

(1)time 0 -> 1
 駆動ローラーを固定(drp1, drp2を固定)し、従動ローラー中心(center)に右向きの荷重を与え、ゴムバンドを所定の軸荷重で張っていく。

(2)time 1 -> 2
 ゴムバンドを張った状態で、従動ローラーをcenter位置でピン固定し、軸荷重は除去。

(3)time 2 -> 4
 駆動ローラーを反時計回りに2回転させる(time=1あたり1回転)。
 このとき、回転始め~1/4回転迄の間で、従動ローラーのトルクを増加させて所定の値にする。

文章で説明しても分かりにくいので、まずは最終計算結果の動画をご覧下さい。

実は、このような解析が、私がSALOME-Meca導入当初からやりたかった事です(実際はもっと複雑ですが)。のんびりやっていたため、導入・試行を始めてから1年以上かかってしまいました。
今年の春頃から、SALOMEや Code_Asterの様々な機能を検証してきたのですが、その多くがこの解析のための前準備です。

次に、メッシュ分割です。

Rband01mesh_2

全て三角形2次要素で分割しました。
band, dr, dn はそれぞれ別にMesh作成を行い、Compoundでまとめています。
ただし、座標が重なる節点についてのマージは行っていません(回転によってズレていくため)。
もちろん、各グループ名をジオメトリから設定しています。

さて、ここからが今回(前編)の設定内容なのですが、これまでのようにEficasの画面スナップショットを用いると画像が膨大な量になってしまうため、commファイルの内容を用いる事にします(それでもかなり多いですが)。
前編のcommファイル名は「rband01a.comm」です。

前編では、上記の解析手順の(2)まで、つまり、バンドを張った状態で従動ローラーを固定し、それまで与えていた軸荷重を抜くところまでです。残りの回転部分については、後編にて継続計算(POURSUITE)で行います。

■メッシュの修正(エッジの方向)

Rband0103

接触や面圧荷重を受けるエッジ(線)の方向を整える設定です。

■弱いバネ要素の作成

Rband0104


初期の不安定な状態において計算の収束性を向上させるため、ゴムバンド2ヶ所、従動ローラー1ヶ所に弱いバネを作成します。駆動ローラー近くで変位が小さい所(bandp1)をspring1、従動ローラー近くで大きく変位する所(bandp1,dnp1)をspring2と二つに分け、バネ定数などの設定を分けられるようにしています。

■要素の種類の設定

Rband0105

ゴムバンド(band)、ローラー(dr, dn,trq)は平面ひずみ「D_PLAN」、バネ(spring1, spring2)は「2D_DIS_T」としました。ここで、負荷トルクのための圧力荷重面(trq)も「D_PLAN」に含める必要がありました(その理由は分かりません)。

■バネ定数の設定

Rband0106

弱いバネのバネ定数の設定です。種類は「K_T_D_N」です。
ここの値の設定は、何度も値を変えての試行錯誤が必要で、かなり苦労しました。
バネが弱すぎると初期の不安定性を抑えきれないし、強すぎるとゴムバンドが大きく伸びたときにバネの影響が出てしまいます。最終的に、spring1, spring2共に“1e-3”で落ち着きました。

私が使っている商用ソフトでは、バネ定数をTimeの関数にして、バネを徐々に消滅させていく事が出来るのですが、Code_Asterにはそのような機能が無いようです(“VALE_F”はあったのですが、Timeの関数には出来ませんでした)。この機能はぜひ入れて欲しいところです。

■材料物性の設定

Rband0107

ゴムバンドはMooney-Rivlin材料としました(「超弾性材料の検証」を参照)。

また、ローラーは剛体にしたかったのですが、「LIAISON_SOLIDEによる剛体は大回転出来ない」の結果から、やむなく変形体として、大きなヤング率(1000[GPa])を設定しました。

■接触の設定

Rband0108

Code_aster 11.0.28以降では、接触・摩擦解析が高速化」の結果から、Code_Aster11.2.0を用い、
 ・ALGO_RESO_FROT=’NEWTON’
 ・ALGO_RESO_CONT=’NEWTON’
を設定しました。

また、ゴムバンドを「マスター」、2つのローラーを「スレーブ」としています。
硬い材料であるローラーをマスターにしたかったのですが、複数のZONEに共通している面がある場合、それをマスターにしないといけないようです(今回の場合はbandです)。

摩擦係数は0.4で、他にはあまり調整したところはありません。

■タイムステップの設定(time=0~1)

Rband0109


pas1aは、従動ローラーを右(X方向)に引っ張り、ゴムバンドを張っていく段階(time=0~1)のタイムステップ定義です。解析初期(time=0.5まで)の不安定なところの刻みを多くしています。

output1は、出力の時間刻み設定です。
これに関しては「結果出力の間隔設定」をご参照ください。
今回は、time=0~1を均等に50分割しています。

pas1bは、pas1aを基本として、タイムステップの自動調整を追加したものです。これについては「時間ステップ幅の自動調整機能」をご参照ください。
今回のような解析は非常に不安定で収束性が悪く、この機能が無ければ、現実的な時間で計算する事が難しかったと思います。

最小時間幅(PAS_MINI)の値は小さめにしています。

また、時間幅を増やす場合の増加割合(PCENT_AUGM)のデフォルトは100(%)なのですが、時間幅が元の2倍になると再び収束しなくなって、もう一度分割される、という非効率な現象が良く起こっていたので、これを50(%)にしました。

■タイムステップの設定(time=1~2)

Rband0110

time=1~2では境界条件の切り替えを行うだけなので、時間刻み幅を「1」としてます。出力の刻み幅も「1」です。
一応、収束しなかったときのために自動調整機能も入れていますが、実際は動作せず、時間刻み幅は「1」のままでした。

■境界条件の設定

Rband0111


・fix_dr:駆動ローラーの変位固定
・fix_y_c:従動ローラーのセンター位置を、上下(y方向)に固定
・force_dn:従動ローラーを右に引っ張る軸荷重

       10[N]としています。
       平面ひずみ要素を用いているので、厚み(Z方向)が1mmあたりの値になります。

・fix_x_c:従動ローラーのセンター位置を、左右(x方向)に固定
・fix_y_b:弱いバネを設定した節点を、y方向に固定
      バネがあるので本来この条件は不要なはずですが、これを入れないと収束しませんでした。

・force:force_dnを増減させるための関数です。time=0~1では増加します。特に解析初期であるtime=0.5までの増加量を少なくしています。
time=1~2でゼロになります。

■非線形解析の設定(time=0~1)

Rband0112


time=0~1では、駆動ローラーを固定し、従動ローラーに軸荷重(force_dn)を与えてゴムバンドを引っ張っていきます。そのため、「fix_x_c」は使いません。

COMP_INCRでは、ローラー(ELAS)とゴムバンド(ELAS_HYPER)を異なるRELATIONに設定しました。また「異なる「DEFORMATION」設定の混在」も可能なのですが、今回は両方とも「GROT_GDEP」にしています。

NEWTON=_F(REAC_ITER=1,), は、ニュートン法の求解過程において、イテレーション毎に接線剛性を更新するものです。デフォルトではインクリメント(タイムステップ)毎になっているので、非線形性の強い計算では収束性が悪くなります。詳しくは「追従荷重(その2)」を参照ください。

■非線形解析の設定(time=1~2)

Rband0113

time=1~2では、ゴムバンドを引っ張った状態で従動ローラーのセンター位置を固定(fix_x_cの条件を追加)し、軸荷重(force_dn)を除去します。また、後編でのローラー回転に備え、安定化のためのy方向固定(fix_y_b)も除去します。

ここで、従動ローラーのセンター一固定(fix_x_cの条件)については、初期位置から変位した場所で固定するため、「TYPE_CHARGE='DIDI'」の設定が必要になります。これに関しては「荷重を与えて変形させた状態で固定する方法(境界条件の切り替え)」を参照ください。

また、time=1からの継続計算なので、「ETAT_INIT=_F(EVOL_NORI=RESU,)」を設定しています。

■結果の計算と出力設定です。

Rband0114


これは特に問題ないと思います。

--------------------------------------------------------

以上の設定で、ASTKを用いて計算を実行しました。

Rband0115


この後に後編で続きの計算(ローラー回転)を行うので、データを「rband01a.base」フォルダに保存する設定にしておきます。

time=2の時点での結果です(Mises応力)。

Rband0116


ゴムバンドが伸ばされて応力が生じている事が分かります。
現段階では単に引っ張っただけですので、変形や応力状態は上下対称になっています(メッシュによる誤差を除いて)。

なお、ローラーも変形体なので応力が出力されているのですが、評価対象ではないため非表示にしています。そのほうが、ゴムバンドの応力が見やすくなります。

前編はここまでです。

今回のデータは下記です
rband01.zip

メッシュファイル: rband01.mmed
commファイル(前編): rband01a.comm
commファイル(後編): rband01b.comm

« 入門に役立つリンク | トップページ | ゴムバンドの摩擦力による動力伝達(後編) »

回転体」カテゴリの記事

接触・摩擦」カテゴリの記事

条件設定」カテゴリの記事

超弾性」カテゴリの記事

コメント

かなり複雑な計算になってきましたね。
これはVベルトかベルトコンベアですか。
いずれにせよ、実際にある設備に近いモデルになるとインパクトがありますね。
摩擦、接触の設定では勉強させてもらってますので今後の発展を期待してます。

MAEDA さん、こんばんは。

摩擦力だけで力を伝達しようとすると、やはりかなり不安定になるようで、なかなか苦労しています。
出来るだけ安定して解けるような設定を見つけるべく、試行錯誤してますが、摩擦は奥が深いですね・・・。
(この解析事例をまとめた後になって、「SEUIL_INIT」で、ある程度初期の不安定性を抑えることが出来るのが分かりました・・・。)
まだまだ摩擦設定の全貌をとらえきれていません。

また何かお気づきの点がありましたら、ご助力の程お願い申し上げます。

私が思いつく安定化は、ALGO_CONTとALGO_FROTをPENALISATIONに変えることぐらいでしょうか。
私も摩擦ありの接触(特に摩擦係数:0.3以上)はやった経験が少ないので間違っているかもしれません。

もう1つ安定化の方法がありました。
境界条件を、AFEE_CHAR_MECAからAFFE_CHAR_CINEに変えるのも良いようです。

下のURLに、rband01b.commにAFFE_CHAR_CINEを加えたものを置きましたので参考にしてください。
併せて計算の高速化のために、STAT_NON_LINEのソルバーもMUMPSに変えています。(ただ、MUMPSはパラメータの調整が要るので、エラーが出るようでしたら消しても良いです。)

https://sites.google.com/site/codeastersalomemeca/home/temp-files/rband01b_mod.comm?attredirects=0&d=1

上でリンクを貼ったコマンドファイルはAFFE_CHAR_CINEの設定がおかしかったので修正しました。

MAEDA さん、こんばんは。

commファイルのサンプル作成ありがとうございます。
作成して頂いたcommファイル(修正前)で試してみました。
(trqについては、AFFE_CHAR_MECAに修正したのと、AFFE_CAHR_CINEとMUMPSの効果を切り分けるため、両者を別に設定して、計算してみました。)

その結果ですが、残念ながらこのモデルではCINEおよびMumpsの効果は確認出来ませんでした。
安定化の評価については難しいですが、計算時間(収束しやすさ)と、COEF_FROTをどこまで大きく出来るかという点に着目すると、CINEやMumpsを適用した場合も従来とほぼ同じになりました。

この原因ですが、まずCINEについては、このモデルは全体の自由度に対して拘束される自由度の割合が極端に少なく(わずか数点)、自由度の減少の効果がほとんど無いためだと思われます。

また、Mumpsについては、全体の自由度が小さすぎ、Mumpsソルバーの効果があまり発揮されないのでは無いでしょうか。

これについては、また3次元化して全体自由度や拘束される自由度が増えた時に再度試してみます。
どうもありがとうございました。


それから、摩擦のPENALISATIONですが、STANDARDよりも収束しやすく、時間ステップ幅を大きく取れるようです。

ただし、COEF_PENA_FLOTをかなり小さな値にしないと、初回のインクリメントが収束してくれないという問題が有りました。COEF_PENA_FLOTを1ぐらいまで下げると収束しますが、その場合には、摩擦の効きが悪く、バンドが滑ってしまいました。
時間ステップ刻みを非常に細かくすると、収束することもありますが、その場合は計算時間が膨大になって現実的では無くなります。


それに関しては、「SEUIL_INIT」に0.01~0.2程度の値を設定することで、ある程度解決できそうです。今のところ、COEF_PENA_FLOTは200~500ぐらいまで上げることが出来、摩擦も効くようになっています。

あとは、メッシュについて、四角形要素で均等・整然とした分割をするようにして試行しています。

色々とアドバイスありがとうございます。また何か進捗があればご報告いたします。

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1605696/48058448

この記事へのトラックバック一覧です: ゴムバンドの摩擦力による動力伝達(前編):

« 入門に役立つリンク | トップページ | ゴムバンドの摩擦力による動力伝達(後編) »