2014年3月 1日 (土)

【書籍】オープンCAE「Salome-Meca」ではじめる構造解析

Salome-Mecaによる構造解析入門に最適な本が出版されました。

『オープンCAE「Salome-Meca」ではじめる構造解析』 
柴田 良一 【著】
ISBN9784777518166 税込価格2,625円、 工学社

Salome-Mecaをすぐに試してみたい、という方がすぐに使えるよう、DEXCS-SalomeのLiveDVD(32bit版)が付属しています。

DEXCS-Salomeは、Linuxのシステム構築が苦手な方のために、Salome-Mecaやその他の便利なツール類を、Linux(ubuntu) 上にインストール・環境設定済みで、それを丸ごとまとめてインストールできる、大変ありがたいパッケージです。

更にこのDVDに収められているSalome-Meca(2013.1)は、著者の柴田先生、CAE懇話会Salome-Meca活用研究会日本語分科会、その他協業者の方の活動成果によって日本語化されています。

オープンCAEのハードルとして、「外国語」、「Linux」、「WEBでの情報収集」等がありますが、この書籍によって、これらのハードルがぐっと下がったのではないかと思います。

私も早速購入し、最初の結果が得られる2章まで進めてみました。

その過程ですが、特にここで改めて説明する必要は無いようです。本書に沿って進めていけば、結果が得られます。

ただし、本書の進め方は付属のDVD起動で例題を実行していきますが、私は「附録A」に従い、仮想PC(VMware)にインストールして進めました。仮想PCへのインストールについても、附録Aに沿っていけば問題ないと思います。

DEXCSインストール後、デスクトップのアイコンをクリックすれば、既に日本語化されたSalome-Meca2013.1が起動します。

Dexcs11

第2章の、片持ち梁の変位出力の結果です。

Dexcs12

DEXCSのありがたいところは、Salome-Mecaだけでなく、FreeCADやNetgenなどの便利な周辺ツールもインストールされている事です。Linuxのソフトウェアのインストール自体は比較的簡単になってきましたが、何か動作環境の違い等で動かなかったりすると、Linuxに疎い人はそこからどうしようもなくなります。やはり動作確認出来た状態で、そのOS・環境丸ごとインストールできるというのは助かります。

2014年2月20日 (木)

ゴムバンドの摩擦力による動力伝達(テンショナーの追加)

これまでゴム部品の解析事例として、主にゴムバンドを用いた摩擦力による動力伝達をテーマとして進め、2次元モデルによる動力伝達、および3次元モデルによるクラウン効果の検証について、Slome-Mecaによる解析を行う事ができました。

それらの解析は、駆動軸と従動軸という2つの軸しか考慮していませんでしたが、今回は、2次元モデルに、更に張力を保持するためのスプリング式のテンショナーを追加しました。

まずは、結果の動画からご覧下さい。左側が駆動ローラー(Driving roller)、右側が従動ローラー(Driven roller)です。

テンショナーの動きを確認するため、負荷トルクを変動させています。

駆動ローラー(Driving roller)はTime=1で1回転しますが、回転スタート時にはトルクがゼロで、そこから直線的に増加して、半回転後にトルク最大になり、再び直線的に減少して1回転後にゼロに戻ります。この事例では駆動ローラーを2回転しているので、2サイクルの負荷変動が有ります。

Rband1201

スプリング式のテンショナーは、ゴムバンドが負荷によって緩む側のスパンに付けられています。先端のアイドラー(抵抗なしで空回りするローラー)はバネ力によってゴムバンドに押し付けられていますが、負荷の変動によって上下方向の位置が変化します。また、それに伴い、バネ力も変化しています。

負荷がゼロの状態です。
(ゴムバンドの色分けはMises応力、アイドラーの色分けは上下変位です)。
Rband1202

負荷最大の状態です。
Rband1203

負荷最大時には、上側スパンと下側スパンの応力の差が大きくなる事がわかります。また、テンショナー線先端のアイドラーの変位は見ただけではよく分かりませんが、色を見ると、上側へ移動しているようです。つまり、負荷が大きくなると下側スパンが緩もうとするため、その分テンショナーのバネが伸びてアイドラーの位置が上に移動するということです。

解析結果から、負荷トルクと、アイドラーの上下変位、テンショナーのバネ力をグラフにしました。

Rband1204

負荷トルクが大きくなると、ゴムバンド下側スパンが緩み、バネが伸びてバネ力(スプリング力)は弱くなり、アイドラーの位置は上に移動していることがわかります。

なお、ゴムバンドとアイドラーの間に摩擦力はありません。

##########################################################

さて、以降はこの解析モデルの説明です。

まず、駆動および従動ローラー、ゴムバンドの形状・寸法や物性値、張力や負荷トルクの与え方などは従来と同じですので省略します。従来の解析は下記URL「ゴムバンドの摩擦力による動力伝達(前編)」から始まる一連の記事をご参照下さい。

http://salome-meca.cocolog-nifty.com/blog/2012/12/post-e977.html

今回の追加部分であるスプリング式のテンショナーですが、下図の通り、「ベース」、「バネ(スプリング)」、「アイドラー」の3つの部品から構成されています。

Rband1205

これらはSalomeで別のパーツとして作成し、メッシュも別々に作成しています。そのため、各パーツ間での共有節点はありません。

Rband1206

そのため、下図のように各部品の部分にグループ名を設定し、Code_Asterで「LIAISON_UNIF(自由度の連結)」を使って、上下方向(Y方向)を連結しています。LIAISON系列は大変形・大回転(GROT_GDEP)には対応していないようなのですが、並進移動だけなら問題無いようなので使っています。これについては「LIAISON_SOLIDEによる剛体は大回転出来ない(http://salome-meca.cocolog-nifty.com/blog/2012/10/liaison_solide-.html)」をご参照下さい。

Rband1207

Rband1208

また、これらの部品は全て横方向(X方向)には動かないので、上のように各点のX方向変位は拘束しています。

要素は、ベースとアイドラーはゴムバンドやローラーと同じD_PLAN(平面ひずみ要素)で、バネは2D_DIS_Tとしました。バネ定数はK_T_D_Lで設定しています(各方向、0.1[N/mm])。

なお、アイドラー部分は空回りするローラーなので、本来はゴムバンドによって回転させられます。しかし今回はアイドラーの負荷が無いため、まじめに回転させる必要は無く、ゴムバンドとの摩擦をゼロにした上で固定してしまっています。つまり、ゴムバンドはアイドラーの表面で滑ります。そのほうが設定が簡単で、おそらく計算時間も短縮できます。

解析手順ですが、従来のモデルと同様に、「(1)ローラーに軸荷重を与えて。ゴムバンドを張る」、「(2)従動ローラーにトルクを与えながら、駆動ローラーを回転させる」という2つの解析(2つのcommファイル)に分けています。具体的には、従来の事例をご参照下さい。

そのうち、(1)の段階(TIme=0~1)にて、ベースの下辺グループ「basel」に上向きに移動する変位を与えてテンショナーを移動させ、ゴムバンドに押し付けています。

Rband1209

Rband1210

また、接触設定については、アイドラー外面とゴムバンド外面のZONE設定を追加しています。ゴムバンド外面には「bandc2」というグループを追加しています。

Rband1211

「LISSAGE="OUI"」は接触面の法線を滑らかにする役目があるようですが、これを入れておいたほうが収束性が良さそうな感じだったので、とりあえず入れています。

(1)に続いて、ローラーを回転させる(2)の段階ですが、これは従来どおり別のcommファイルで「POURSUITE」を用いて継続計算させています。

ただし前述したようにトルクを変動させるように変更しています(従来は、1/4回転で所定値までトルクを上げた後は一定)。またトルクの最大値も従来の2倍に増やしました(従来は1.16[N・m])

Rband1212

後は従来どおり駆動ローラーを回転させるだけなのですが、どうも(2)のJOBの最初のステップで計算が収束しませんでした。どうやら接触問題を2つの「STAT NON LINE」に分けて継続計算する場合、接触状態の引継ぎが上手くいきにくい傾向にあるようです。これは、2つのJOB(commファイル)に分けてJOB自体を分けた場合でも、1つのJOB内で「STAT NON LINE」を分けた場合でも同様のようです。

実は、(1)のテンショナーを押し付ける動作も、当初はゴムバンドを張った後の後続として「STAT NON LINE」を分けて実施しようとしたのですが収束せず、接触設定のペナルティー係数を下げるなど色々試行錯誤しても収束しなかったので、ゴムバンドを張る段階と同時進行としました。

一方、(2)の段階の最初のステップで収束しない問題については、接触設定のペナルティー係数「COEF_PENA_CONT」および「COEF_PENA_FLOT」を下げる事で解決出来ました。これらは(1)の段階では両方とも500だったのですが、(2)の段階では、CONTの方を200、FLOTの方を400まで下げています。

Rband1213

上記の(1)でテンショナーを押し付ける方についてはペナルティー係数の調整でも上手くいかなかったのですが、なぜ(2)の方では上手くいったのかわかりません。このあたりはなかなか奥が深くて難しそうです。

あと、同じく初回ステップの収束性向上に効果が見られる「SEUIL_INIT」も0.1に設定しています。

######################################################

今回の解析は、仮想PC上のDebian7.2.0に、最近リリースされたばかりのSalome-Meca2014.1を入れて実施しています。

Salomeは7.3.0で言語を日本語に設定しています。

Code_Asterは12.1を用いました。
従来の11からの変更点として、STAT_NON_LINEからCOMP_INCRとCOMP_ELASの設定が消え、「COMPORTEMENT」になっています。記述する内容は同様のようなのですが、COMP_INCRとCOMP_ELASの区別をしなくて良くなった分、分かり易くなったのではないかと思います。

Rband1214

######################################################

今回のファイルは下記にzipで圧縮しています。

rband12.zip

rband12.mmed:メッシュファイル
rband12a.comm:前半(ゴムバンドを引っ張るまで)
rband12b.comm:後半(ローラーを回転させる)

2014年2月13日 (木)

Salome-Meca 2014.1リリース (Salome公式日本語化)

5ヶ月ほど更新が滞っておりました。

主課題のゴム部品の解析がなかなか思うように進まず、新しく掲載する内容が出来ていない状況です。

しかし、そうしているうちに、Salome-Mecaの新しいバージョンである「2014.1」がリリースされました。
内容は

Salome: 7.3.0
Code_Aster: 11.5(Stabe), 12.1(Testing)

となっています。

今回リリースされた2014.1版の注目点は、Salomeの日本語化に公式対応した事です。Salome-Meca活用研究会(Japan Salome-Meca Workig Group)の日本語化分科会と、その協力者の方々が開発元のEDF社と協力して実現しました。

私がインストールした環境は、仮想PC(VirtualBox)上のDebian 7.2.0ですが、インストールに関しては、こちらの古いバージョン用に記載されている方法で問題なく完了しました。設定はデフォルトで進めたので、プログラムは自分のhomeディレクトリのしたのsalomeディレクトリに入りました。

最初にSalomeを起動すると英語版で立ち上がりますが、そこで「File」-「Preference」のGeneralタブで、Languageをen(英語)からja(日本語)に変更して、Salomeを再起動する事で日本語化できます。

S2014_101

メニューなどが日本語化されていることが分かります。

S2014_102

Salomeの日本語化については、日本ローカルの先行版として「DEXCS2012-salome」(http://dexcs.gifu-nct.ac.jp/download/)にて実現していましたが、そのときは、ジオメトリの移動やコピー時にデフォルトで設定される名前が日本語になってしまい、そのままではオブジェクトブラウザ上で文字化けするという問題がありました(詳細はこちら)。しかし今回のバージョンではデフォルトの名前は英文字表記に直っており、そのままでも問題ありません。

S2014_103

ただし、今回のSalome-Meca 2014.1では、DEXCSのようにEficasメニューが日本語化されていません。Eficasの日本語化は、Salome-Meca活用研究会による日本ローカルの仕様のためです。そのため、Eficasを含めた日本語化については、次のDEXCS-salomeの公開を待つことになります。

2013年9月 7日 (土)

ゴムバンドの摩擦力による動力伝達(クラウン効果について)

前回、ゴムバンドの摩擦力による動力伝達(3次元)を実施し、ゴムバンドが回転につれてローラーの太い側へ寄っていく「クラウン効果」が再現できる事を確認しました。このクラウン効果についてもう少し考えてみます。

駆動ローラー1回転毎のバンドの動きをGIFアニメーションにしたものを、もう一度下に示します。Time=1で駆動ローラーが1回転しますが、その間にゴムバンドが奥側へ寄っていくのが分かります。

ゴムバンドがどのようにしてローラーの太い側へ寄っていくのか確認するため、下図のように、回転始めにおいてゴムバンド上の1点(点A)を指定しました。

Rband08201


この点AのZ座標(ローラー軸方向)が、回転につれてどう変化するかプロットしました。
また、軸荷重は前回実施の30[N]と、今回新たに50[N]でも実施して付け加えました。

Rband08202


ローラーの外径が約100mm、ゴムバンドの内径が約220mmなので、駆動ローラーが約2.2回転でゴムバンドが1回転する事になります。

そのゴムバンド1回転の間を、上図中の点線でa~eの領域に区切っています。点Aは回転始めに駆動ローラーの中央(領域a)に位置しており、1回転してほぼ同じ位置(領域e)に戻ります。

このプロットから、ゴムバンド上の点はローラー内(領域a,c,e)においてはローラーの細い側へ若干移動し、ローラー間(領域b,d)においてローラーの太い側へ大きく移動していることがわかります。そしてゴムバンド1回転トータルではローラーの太い側へ移動しています。

これを上側から見た図に描くと、下図のようになります(フリーハンドで描いたので、見難くてすみません)。点線は下側(駆動ローラーから従動ローラーへ向かう)、実線は上側(従動ローラーから駆動ローラーへ向かう)です。ゴムバンド上の点は8の字を描くようにしてローラーの太い側へ寄っていきます。

Rband08203_2


何故このような動きをするかというと、ゴムバンドがローラーに進入する際、ローラー軸に対して直角ではなく、直角からある程度の角度傾いて進入するためです。

上図の点線の円で囲んだ部分に注目してください。

Rband08204


A点は、ローラー間ではローラーの太い側へ向かって進んでいますが、ローラーに進入する直前に細い側へ進む向きを変えます。これはローラー面に角度が付いているためです。このため、上図の通りローラー軸直交方向に対してαの角度だけ傾いて進入します。このαを進入角と言います。この挙動はプロットのグラフでも確認できます。

A点はローラー上においてローラーの細い側へ若干滑りますが、その量はそれほど大きくはありません。そして進入角があるため、A点のすぐ後ろの後続点は、A点よりもローラーの太い側において進入します。更に次の後続点はもっと太い側で進入します。このようにして、ローラーへ進入する位置がだんだん太い側へ寄っていくので、ゴムバンド全体が回転につれて太い側へ寄ります。これがゴムバンド移動のメカニズムになります。

また計算結果では、ゴムバンドを張る際の軸荷重が大きいほうが、ゴムバンドの移動速度が遅い事が分かります。これは、ゴムバンドが強く引っ張られると進入角が小さくなるためです。

このように、クラウン効果のメカニズムをSalome-Mecaにて検証することが出来ました。

【参考文献】

(1)大倉・澤田・塚本,ベルト片寄りの基本メカニズムに関する一考察, MPTシンポジウム(伝動装置)講演論文集 巻:2004、 ページ:251-254 (2004)

(2)徳田・大倉,心線撚りによるベルト片寄り現象の解析, 日本機械学会機素潤滑設計部門講演会講演論文集 巻:6th、 ページ:31-34 (2006)

2013年8月31日 (土)

ゴムバンドの摩擦力による動力伝達(3次元)

■概要

これまでずっと取り組んできた「ゴムバンドの摩擦力による動力伝達」ですが、Salome-Meca2013.2を用いて2次元モデルでの問題が解決したので、次は3次元モデルでの試行に取り組みました。

ただし、従来の2次元モデルを厚み方向に伸ばして3次元モデルにするだけでは、3次元化の意味があまり無くて面白くありませんので、ローラーの外径を回転軸方向に変化させ、「クラウン効果」を検証してみることにしました。

「クラウン効果」は、平ベルトやバンドを太さが不均一なプーリーに巻きかけて回転させると、徐々に「太い方」へ寄っていくという現象です。この効果を利用して平ベルトの走行位置を中央に安定させるため、中央部が太くなったプーリー(クラウンプーリ)を用いる事があります。

今回の利用ソフトウェアは、Salome-Meca2013.2(Salome6.6.0 + Code_Aster11.4)、OSはDebian7.1です。インテルPC上にVirtualBoxで仮想PCを構築し、その上にDebian7.1を入れています。

■解析モデル(ジオメトリ)

下図の通りです。基本的には従来の2次元モデルを(サイズは変更していますが)厚み方向に伸ばした形状にしています。ただし、駆動ローラー、従動ローラー共に外径を軸方向で変化させています。
ローラーの幅は100mmで、奥側の外径が102mm、手前側が100mmと、奥側が太くなっています。

Rband0801


Rband0802


Rband0803


Rband0804

図では裏になって見えませんが、「dr_z1」と「dn_z1」は両ローラーの奥側の端面です。これはz=0の境界条件を与える面です

ローラーの内径は88mmです。
ゴムバンドの内径は220mm、外径は230mm(つまりゴムバンドの厚みは5mm)です。

従動ローラーの回転軸付近に小さなブロックを追加していますが、これについては後述します。

■メッシュ

Rband0805


ゴムバンドは六面体2次要素、ローラーは四面体1次要素としています。
ローラーについては応力や変形を評価しないため、精度が必要ないので1次要素としました。
ゴムバンドは2次要素ですがかなり粗いメッシュになっています。本来はもっと細かくするべきですが、今回は試解析ということで、計算時間の短縮を優先させています。

■解析の設定

従来の2次元の解析にほぼ準じているため、今回はcommファイルの詳細説明は省略します。2次元の解析説明の記事をご参照ください。

(2012/12/3)ゴムバンドの摩擦力による動力伝達(前編)
http://salome-meca.cocolog-nifty.com/blog/2012/12/post-e977.html

(2012/12/9)ゴムバンドの摩擦力による動力伝達(後編)
http://salome-meca.cocolog-nifty.com/blog/2012/12/post-02d3.html

(2013/1/3)ゴムバンドの摩擦力による動力伝達(問題点)
http://salome-meca.cocolog-nifty.com/blog/2013/01/post-5b53.html

(2013/7/24)ゴムバンドの摩擦力による動力伝達(問題点が解決)
http://salome-meca.cocolog-nifty.com/blog/2013/07/post-ae04.html

■解析初期における、変位制御と荷重制御の切り替え

今回、解析初期段階における従動側ローラーの制御に、小さなブロックを用いました。この部分が従来の2次元モデルと異なります。

下図の(A): 解析の初期段階においては、従動側ローラーを右に動かして、ゴムバンドを両ローラー間に張っていきます。しかしこの段階ではゴムバンドの剛性がほとんど無いため、すこしの力の増加で大きな変位が生じてしまい、(弱いバネを入れていても)荷重制御では収束しにくいです。
この段階では変位制御が望ましいです。

下図の(B): 一方、ゴムバンドを張り終えるときには、ゴムの伸びによって大きな力がローラーにかかっており、小さな変位で反力が大きく変化するため、変位制御では収束しにくいです。また、所定の軸荷重でゴムバンドを張るためにも、荷重制御が望ましいです。

Rband0806

この変位制御->荷重制御の切り替えは、STAT_NON_LINEを2段階に分けることで行えるのかもしれません。しかし、切り替え時に、変位制御で既に生じている反力を後続の荷重制御にどうやって移行したらよいか分かりません。(逆はOKです。荷重制御の解析の後、後続のSTAT_NON_LINEの変位設定で「TYPE_CHARGE='DIDI'」を用います)。

そこで今回、小さなブロックを従動ローラーのアーム端(ローラーの回転中心)に接して配置し、アーム端と接触を設定しました。そして解析の初期ではブロックに変位条件を与え、それで従動ローラーのアームを押して、変位制御としてゴムバンドを張っていきました。

そして、ある程度反力が生じたところでブロックの移動を停止し、次に従動ローラーのアームに荷重を与えて、所定の荷重値なるまで張りました(荷重制御)。
今回の解析では、ブロックの移動停止と荷重制御への切り替えを、time=0.5の時点で行っています。

この方法により、ゴムバンドを張る段階での収束性が向上しました。

この様子の動画です。

静止画です。

Rband0807

■条件等

今回、Time=2~5の間に、駆動ローラーを3回転させています。つまり、time=1あたり駆動ローラー1回転です。

軸荷重は30[N]、トルクは0.315[N・m]で、これはほとんど無負荷に近い弱いトルクです。
従来の2次元モデルと同様、Time=2~2.25の間にトルクを従動荷重でdn_trq面に与えています。

■結果の動画です。

静止画です。

Rband0808

クラウン効果によるゴムバンドの移動を分かりやすくするため、time=2~5のいて、駆動ローラー1回転ごとの静止画をアニメーションGIFにしました。

ゴムバンドが手前から奥へ移動しているのがわかります。
今回は駆動ローラーを3回転しかしていないので移動量はわずかですが、数十回転もすればローラーの奥の端へ到達してしまうと思います。

また、従動ローラーがゴムバンドの滑りによって駆動ローラーより若干遅れつつあるのが分かります。

クラウン効果については、後日もう少し詳しく評価したいと思います。

今回のデータは下記にzipでまとめています。

rband08.mmed: メッシュ
rband08a.comm: 前半commファイル(ゴムバンドを張るまで)
rband08b.comm: 後半commファイル(ローラー回転)

rband08.zip

2013年8月10日 (土)

Salome-Meca2013.2でASTKが起動しない

私の環境だけかもしれませんが、先月(2013年7月)リリースされた「Salome-Meca2013.2」にて、ASTKが起動できず困っていました。

Linuxに不慣れだと、こういうときに非常に苦労します。

試してみた環境は

(1)インテルマシン(SuSE10)+仮想PC(VirtualBox)+debian7 64bit
(2)インテルマシン(Windows7)+仮想PC(VMware)+debian6 64bit
(3)インテルマシン(Windows7)+仮想PC(VMware)+ubuntu12.04 LTS 64bit

です。

上記のいずれも、Salomeは立ち上がりますが、Asterモジュールのメニューから「Aster」-「Tool」-「Run Astk」をクリックしてもASTKが起動しませんでした。画面上のアイコンをクリックしても無反応です。

Salomeはインストーラーのデフォルト(自分のホーム)にしています。ユーザー名は「cae」にしているので、Salomeの起動は

/home/cae/salome/appli_V6_6_0/runSalomeMeca

をクリックして起動していますが、これを「端末内で実行」すると、端末にメッセージが表示されるので、これを見てみると、astkを起動しようとしたときに下記のエラーが出ていました(debian)。

/home/cae/salome/SALOME-MECA-2013.2-LGPL/tools/Code_aster_frontend_1131final/bin/astk: line 46: wish: コマンドが見つかりません

“wish”というのが無いようです。

debianとubuntuで色々試していましたが、ubuntu12.04上でwishと打ってみたときに、下記のメッセージが出ました。

The program 'wish' can be found in the following packages:
* tk
* tk8.4
* tk8.5
Try: sudo apt-get install <selected package>

なるほど、tkというのを入れると良いようです。
上記のうち新しそうなtk8.5を入れることにしました。

cae@ubuntu:~$ sudo apt-get install tk8.5

何やらズラズラとメッセージが表示されましたが、ちゃんと入ったようです。

その後、もう一度Salomeを立ち上げ、Asterからastkアイコンをクリックすると、無事astkが起動しました(Asterのメニューからでも起動しました)。

また、debian6でもtk8.5を入れた後に試してみると無事起動できました。

なお、DEXCS2012-Salome-D1-B1-64(ubuntu12.04 + Salome-Meca2013.1日本語版)に、追加で2013.2をインストールした場合は、初めからこの問題は起きませんでした。

それならDEXCS2012に追加インストールで良いじゃないかと思うのですが、DEXCS(ubuntu)は一部の仮想PC環境との相性が原因のためか、Geometryの表示画面(OCC)に問題が生じる場合が有り、私としてはdebianを使いたい理由があります。

環境がちょっと違うと動かない事があったりして、Linuxのアプリはなかなか難しいです。

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 (メッシュ)

今回は以上です。

«分離せずにスライドする面同士の接触(GLISSIERE)