« 2012年11月 | トップページ | 2013年1月 »

2012年12月

2012年12月29日 (土)

Eficasのマニュアルと、便利な自動翻訳

CAE懇話会の「Salome-Meca活用研究会」で、Sさんから教えて頂いた情報です。

メニューなどが英訳されている「Salome」に比べ、「Eficas」はメニューやボタンがフランス語で、使い方もいまひとつ分かりにくいです。

しかし、SalomeのWizardで出来ない設定はどうしてもEficasを使う必要があるので、私は今まで手探りでなんとなく使ってきました。

しかし、どうやら英文のマニュアルがちゃんとあるようです(私が今まで気が付かなかっただけですが・・・)。

マニュアルの場所は、Salome-Meca2012.2においては下記です。WWWブラウザから下記のローカルファイルを開くと閲覧できます。

/opt/SALOME-MECA-2012.2-LGPL/SALOME/Salome-V6_5_0p1-OT-LGPL-x86_64/modules/EFICAS_V6_5_0p1/share/doc/salome/gui/EFICAS/index.html

このマニュアルの場所は、Salome-Mecaのバージョンによって異なるようですが、概ね似たような場所に保管されているようです。

内容はHTMLで、ブラウザから見る形式になっています。

英語で書かれていて日本人には分かりにくいので、そこはブラウザの自動翻訳を活用すると、分かりやすくなります。

Sさんによると「Google Chrome」がお勧めとの事です。ただし、自動翻訳のためにはインターネットに繋がっている状態である必要があります。

2012年12月 9日 (日)

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

前回(前編)の続きで、2本のローラー間にゴムのバンドを掛けて、その摩擦力でローラーの回転と動力を伝達させるという事例です。

(前編の記事掲載以後、様々な改良を行っていますが、今回はとりあえず改良前のモデルの後編の説明です)

利用ソフトウェアは、Salome-Meca2012.2(SALOME 6.5 + Code_Astr 11.2.0)で、OSはdebian6です。

前編では、ローラーに所定の軸荷重を与えてゴムバンドを張り(time=0~1)、その位置で従動ローラの中心を固定し、軸荷重および安定化の為の拘束を除去したところまで(time=1~2)でした。

後編では、time=2~4で、駆動ローラーを反時計回りに2回転させます。つまり、time=1あたり1回転になります。また、回転はじめから1/4回転までの間で、従動ローラーの内側突起部の側面(trq)に負荷トルクとしての荷重を与えていき、1/4回転からは一定のトルク値を保持します。

以下、後編のcommファイル(rband01b.comm)の説明です。

■計算の継続

Rband0117


前回のデータを読み込み、継続して計算をする場合には「POURSUITE」を用います。
Eficasで新規にcommファイルを作成する際に「POURSUITE」を追加すると、前回のcommファイルを指定するようにメッセージが表示され、ファイルを選択するBOXが開きますので、そこで前回の「rband01a.comm」を選択します。
また、「POURSUITE」から始まるcommファイルを開いたときも同様で、前回のcommファイルを指定します。
この作業によって、前回のcommファイルで定義済みの変数や関数、パラメータなどがそのまま使えるようになります。

■駆動ローラーの回転変位設定(drrot)

Rband0118



time=2~4で、駆動ローラー上の2ヶ所の点(drp1, drp2)に変位を与え、駆動ローラーを反時計回りに回転させる設定です。time=1あたり1回転とします。
2ヶ所の点のx,yの変位を、INST(time)の関数として、それぞれ関数(FORMULE)として定義し、「AFFE_CHAR_MECA」で境界条件「drrot」として設定しました。

このように変形体を回転させる方法についての詳細は「回転体とゴム板の接触」をご参照ください(参照先の制御節点はX軸上に並んでいますが、今回はY軸上に並んでいますので、式の内容は異なります)。

2ヶ所の点は駆動プーリの内径ライン上に位置するので、振幅は内径の半径である「44mm」になります。

■負荷トルクの設定(trq)

Rband0119_2


従動ローラーの内径側に出ている突起の側面(trq面)に面圧荷重を与え、トルクを発生させます(突起の詳細など、モデルについては前編をご覧下さい)。

従動ローラー中心からtrq面中央までの距離が43[mm]、圧力値が1.16[N/mm^2]、trq面の面積が2[mm^2]なので、トルクは、
    43 x 1.16 x 2 = 100 [N・mm] となります。

厳密に言えば、trq面への荷重は半径方向に分布しているので、上記のような計算式ではなく積分計算をする必要がありますが、ここはtrq面が微小であるとして、単純な計算で済ませています。

■接触の設定

Rband0120



接触の設定「DEFI_CONTACT」は既に前編のcommファイル(rband01a.comm)で設定済みなので、それと同じ設定で良ければ、このcommファイルで再設定する必要はありません。しかし今回の試行では、前編の設定のままでは後編の回転部分においてどうしても計算が収束しませんでした。そのため、前編(cont)と異なる名前(cont2)にて再設定しました。

前編と違うところは、「COEF_FROT」の値を「10」にした所です。前編はデフォルト値の「100」でしたので、その1/10になっています。「COEF_FROT」は公式ドキュメント「U4.44.11」でもあまり詳しい記述が無いのですが、おそらく、接触する両面間に相対変位が生じたときに、摩擦力が変位と共に立ち上がるときの傾きのようなものではないでしょうか(これについては自信がありません)。もしそうだとすると、この値が小さくなると、相対変位に対する摩擦力の増加が緩やかになり、収束しやすくなる反面、現実と比べて十分な摩擦力が得られない可能性もあります。

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

Rband0121



pas3aは、回転開始のtime=2から、1/4回転してトルクが所定値に達するtime=2.25までを180分割と細かくし、それからトルクが一定値を保持するtime=4までは315分割と粗くしています。

output3は結果の出力間隔ですが、これは2回転の間を均等に360分割しています。つまり、駆動ローラーが2°回転する毎に結果が出力されます。

pas3bは時間ステップ幅の自動調整です。これは前編とあまり変わりませんが、ステップ幅を増やす判断に用いるNewton法の収束回数基準値を、9回と多めにしました。

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

Rband0122



境界条件は、今回定義した「drrot(駆動ローラー回転変位)」と「trq(従動ローラートルク荷重)」を追加しています。従動ローラーセンターのピン固定は継続です。

ここで、「trq」については追従荷重(TYPE_CHARGE='SUIV')を指定し、ローラーが回転しても、常にtrqは突起側面に垂直になるようにしています。この設定で、常に一定のトルクが作用するようにしています。下の動画をご参照ください。

動画を見られない方は、下の静止画をご覧ください。

Rband0124

また、追従荷重の詳細については、「追従荷重」をご参照ください。

それから、収束条件を残差の相対値「REGI_GLOB_RELA」で、値を「1e-4」にしました。
デフォルトは「1e-6」なのですが、それでは収束しなかったため、緩めの判定値にしました。

■結果の計算と出力

Rband0123



これは特に変わった事はしていません。

以上の設定にて、astkから計算を実行しました。

Rband0125



baseについてですが、前編でデータを「rband01a.base」フォルダに書き出していました。
したがって後編ではそこから読み出しても良いのですが、それでは後編の計算が終わったときに上書きされてしまいます。
後編の計算を何度も試行錯誤したかったので、「rband01b.base」フォルダを別に作り、試行のたびに「rband01a.base」の内容を上書きコピーしてから計算をスタートさせるという方法にしました。

以下は結果の図です(Mises応力)。ローラーの応力は不要なので非表示にしています。

●time=2

Rband0126


引っ張っただけなので、上下対称の変形・応力状態です。

●time=2.25

Rband0127


駆動ローラーが反時計回りに1/4回転した状態で、トルクが所定値に達しています。
両ローラー間でゴムバンドが張られている所(スパン)では、トルクによって、上側が強く張られていて応力も大きい事が分かります。

●time=3

Rband0128


駆動ローラーが反時計回りに1回転した状態です。
しかし従動ローラーは1回転に若干足りていない事が分かります。
これは、ローラーとゴムバンドの「すべり」が原因と思われます。

●time=4

Rband0129


駆動ローラーが反時計回りに1回転した状態です。
従動ローラーは更に遅れています。トルクが一定状態でも「すべり」があるようです。

それに、応力の分布状態に「ムラ」があります。これについては改善が必要です。

改めて結果の動画を載せます。

このように、一応この種の解析が可能である事が分かりました。
しかし、まだ下記のような問題が残っており、実用にはそれらの解決が必要です。

  • 応力や変形が若干いびつになっている。これはバネの影響が残っているか、メッシュが粗すぎるなどの原因が考えられる。
  • 計算が不安定で、タイプステップが制限値まで細かく分割されても収束せず、JOBが止まる事が多い。
  • 計算時間が長く掛かる。これは、ローラーを剛体面扱いできず、変形体として解いている事が大きく影響していると思われる。剛体サーフェスの導入か、せめて剛体結合時にも大回転が出来るようにしてほしい。
  • 接触・摩擦計算については更なる高速化と、安定性が必要。
  • これらの問題については、開発元の対応がない限りどうしようもない事もありますが、自分で改善できそうなところは、出来るだけ詰めていきたいと思います。

今回のデータは下記です(前編と同じです)。

rband01.zip

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

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

« 2012年11月 | トップページ | 2013年1月 »