Torsion
Torsion Analysis using FEM

■有限要素式■
問題の支配方程式が見つかれば次は重み付け残差法のルールに従って有限要素式を導出すれば解は得られます。 Poisson's Equationを重み付け残差法で展開すると以下になります。重み付け残差法の手続きについては 2次元のFEM を参考にして下さい。 まずPoisson's Equationに重み関数δφを掛け面積積分しIと置きます。未知数のφが厳密解だとI=0になりますが近似解ですからI≠0です。

\begin{eqnarray} I=\iint\left(\frac{\partial^2\phi}{\partial x\partial x}+\frac{\partial^2\phi}{\partial y\partial y}+2G\theta\right)\delta\phi dA=\iint\left(\frac{\partial^2\phi}{\partial x_i\partial x_i}+2G\theta\right)\delta\phi dA \end{eqnarray}

2階微分項に部分積分を施します。すると以下の積分式が出来ます。

\begin{eqnarray} I=\oint{q_n\delta\phi ds}-\iint{\frac{\partial\phi}{\partial x_i}\frac{\partial\delta\phi}{\partial x_i}dA+\iint2G\theta\delta\phi dA} \end{eqnarray}
ここに
\begin{eqnarray} q_n=\frac{\partial\phi}{\partial x_i}n_i \end{eqnarray}

領域内のφ(x,y)を要素を使って下式にように近似します。 \begin{eqnarray} \phi=\left[N\right]\left\{\phi\right\} \end{eqnarray} \begin{eqnarray} \delta\phi=\left[N\right]\left\{\delta\phi\right\} \end{eqnarray} 境界ではqnδφは以下で近似します。 \begin{eqnarray} q_n=\left[M\right]\left\{q_n\right\} \end{eqnarray} \begin{eqnarray} \delta\phi=\left[M\right]\left\{\delta\phi\right\} \end{eqnarray}

例えば領域をBilinear要素で近似すると、[N]と[M]は以下の様になります。 \begin{eqnarray} \left[N\right]=\left[\begin{matrix} N_1 & N_2 & N_3 & N_4 \end{matrix}\right] \end{eqnarray} \begin{eqnarray} \left[M\right]=\left[ \begin{matrix} M_ 1& M_2 \end{matrix} \right] \end{eqnarray}

上の近似式を積分式に代入すると以下の有限要素式が得られます。 詳細については、2次元FEMを参考にして下さい。 \begin{eqnarray} I=\left\{\delta\phi\right\}^T\oint{\left[M\right]^T\left[M\right]ds\left\{q_n\right\}}-\left\{\delta\phi\right\}^T\iint{\left[B\right]^T\left[B\right]dA\left\{\phi\right\}+\left\{\delta\phi\right\}^T2G\theta\iint{\left[N\right]^TdA}} \end{eqnarray} 重み付け残差法のルールでは上の式で完成になっています。 しかし2Gθの項が少し理解に苦しむ形になっています。せめて[N]Tでなく{N}になってほしいですよね。 そこで、2Gθは定数ですが関数として以下の様に表します。 \begin{eqnarray} \left\{G\theta\right\}=G\theta\left[N\right]\left\{1\right\} \end{eqnarray} ここに \begin{eqnarray} \left\{1\right\}=\left\{\begin{matrix}\begin{matrix}1\\1\\\end{matrix}\\\begin{matrix}1\\1\\\end{matrix}\\\end{matrix}\right\} \end{eqnarray} すると2G\thetaの項は以下のようになります。 \begin{eqnarray} 2G\theta\iint{\left[N\right]^TdA}=2G\theta\iint{\left[N\right]^T\left[N\right]dA\left\{1\right\}} \end{eqnarray} [N]T[N]{1}を計算すると以下が得られます。 \begin{eqnarray} \left[N\right]^T\left[N\right]\left\{1\right\}=\left\{\begin{matrix}\begin{matrix}N_1\\N_2\\\end{matrix}\\\begin{matrix}N_3\\N_4\\\end{matrix}\\\end{matrix}\right\} \end{eqnarray}

結果的に有限要素式は以下の様に記述できます。 \begin{eqnarray} I=\left\{\delta\phi\right\}^T\oint{\left[M\right]^T\left[M\right]ds\left\{q_n\right\}}-\left\{\delta\phi\right\}^T\iint{\left[B\right]^T\left[B\right]dA\left\{\phi\right\}+\left\{\delta\phi\right\}^T2G\theta\iint\left\{N\right\}dA} \end{eqnarray} ∂I/∂{δφ}T=0を計算すると以下が得られます。 これについても2次元FEMを参考にして下さい。 1次元FinalRemarkも参考にして下さい。 \begin{eqnarray} \oint{\left[M\right]^T\left[M\right]ds\left\{q_n\right\}}-\iint{\left[B\right]^T\left[B\right]dA\left\{\phi\right\}+2G\theta\iint\left\{N\right\}dA}=0 \end{eqnarray} 境界ではDirichlet境界条件のφ=0を与えますのでφの変分δφはゼロになります。そして今回の解析領域として1/4Modelまたは1/2Modelを使いますので対称面のNatural Boundary Conditionを与えます。つまり、qn=0になります。 したがって境界積分の項はφ=0かqn=0になりますのでゼロになってしまいます。 \begin{eqnarray} \iint{\left[B\right]^T\left[B\right]dA\left\{\phi\right\}=2G\theta\iint\left\{N\right\}dA} \end{eqnarray} よって上の式を解けばStress Functionの分布を得ることが出来ます。

■プログラム torsion4q.for
節点が4のIso-parametric要素でPoisson's Equationを解くプログラムを書いてみました。[B]T[B]の積分は本サイトの 2次元Stiffness Matrixを参考にして下さい。 {N}の積分はLaplace Equation関連の問題に無いので新しくサブプログラムを作成することになります。プログラムtorsion4q.forのSUBROUTINE SRCTRMが{N}の積分を行ってくれます。 モーメントの計算は下式に示す通り、Stress functionを面積積分して2倍すれば得られます。 \begin{eqnarray} M=2\iint\phi dA \end{eqnarray} これを行うには、要素毎にStress functionを積分し全ての要素での計算を合計(Σ)すれば得られます。下式を参考にして下さい。 \begin{eqnarray} M=2\sum\iint\left[N\right]\left\{\phi\right\}dA \end{eqnarray} 式中の[N]{φ}は要素内のStress functionの分布φ(x,y)を表します。プログラムではSUBROUTINE MOMENTのTORQUEが上式のMに該当します。

以下の表にサブプログラムの名前と役目を示しておきます。なおメインプログラム名はTORSIN4Qで以下のサブプログラムをコールします。

サブプログラム名 役目
GSM 要素毎に[B]T[B]を積分しグローバル“剛性マトリックスRK(I,J)”に足しこみます
INPUT 必要なデータを読み込む
PRINT 計算結果のStress functionをバイナリー形式でファイルSOLUTION4.BINに書き込む。このファイルがグラフィックプログラムで参照される
PRINTG ファイルSOLUTION4.FEMに入力データと計算結果を書き込む
SRCTRM 2Gθ∬{N}dAを計算しSOURCE(I)に格納する
FORMQ RK(I,J)= SOURCE(I)の連立方程式に境界条件と境界値を挿入する
BANDWID RK(I,J)のバンド幅を計算する
SYSTEM RK(I,J)= SOURCE(I) の連立方程式を解く
GRULE Gauss-LegendreのSampling points数Nを指定するとξとwを返す
ISOPARA 形状関数[N]が定義されている
SHAPEF 形状関数[N]をξの点で計算する
DERIV 形状関数[N]の微分を計算する
MOMENT M=2∬φdAを計算する
ELNDPT 要素の節点番号と座標値を結び付けている
STRESS τxzとτyzを計算する
DERIVX Stress functionの微分を計算する
DAREA 要素の面積を計算する

■データ作成プログラムsettrs4.for■
入力データを手で作成するのは大変ですので、プログラムを使います。 プログラムtorsion4q.forに必要な全てのデータは少ないパラメータを指定するだけで要素から境界条件までを作成しファイルに書き込みます。 まず下図を見て下さい。 これは全計算領域の1/4です。ここでは1/4モデルと言うことにします。

図では四角形が全体モデル(Full Model)ですが、Iso-parametric要素を使っていますので、円形のモデルでも計算してくれます。 図に出てくる変数の意味は以下になります。

変数 意味
TLX 1/4 Modelのx方向の長さ
TLY 1/4 Modelのy方向の長さ
NEX x方向の要素の分割数(図では4)
NEY y方向の要素の分割数(図では5)

図ではx方向の要素の分割数が4で、y方向の要素の分割数が5になっています。 プログラムではNEXとNEYの入力を要求してきます。 プログラムでは計算を行う上で以下の数値が使われています。

TLX TLY Shear Modulus [Pa] Rate of Twist(θ)
1 1 26538461.5384615 0.0000670055862315403

Shear Modulus は、E=69.×106 [Pa] とポアソン比(ν)=0.3からG=E/(2(1+ν))計算した値です。 そしてRate of Twist(θ)は3次元弾性解析から得られた値を入力データとして使っています。 要素は2次の27節点ヘキサ要素を使いました。詳細については3次元弾性解析で報告します。

settrs4.forの実行より作成されるファイル■
まずsettrs4.forをNEX=10とNEY=10で実行します。すると以下のファイルが作成されます。

出力ファイル名 中身
TRS4DATA.DAT ねじれ解析のPoisson’s Equationを解くためのプログラムtorsion4q.for用のデータが入っている
ELEMENT4.OUT 要素分割図を描くためのデータです。エクセルにドラッグアンドドロップしてデータタグの区切り位置で“コンマや…”を選択し、区切り文字のスペースを選択すると、B列とC列に数値が入ります。B列をx軸、C列をy軸の散布図として図が描けます。下図がそうです

上のELEMENT4.OUTをエクセルで描くと以下になります。

■解析プログラムtorsion4q.forの実行■
続いてtorsion4q.forを実行します。以下のファイルが出力されます。

出力ファイル名 中身
SOLUTION4.FEM テキストファイルですので、メモ帳で中身を見られます。要素情報と節点の座標、計算領域の面積、境界条件とその値、Stress Function (φ)の節点での値、モーメント値(TORQUE)、節点でのせん断応力τzxとτzyが入っています。
SOLUTION4.BIN Stress Function (φ)、τzxとτzyの等高線をプログラムGRA4FILE.FORで描くためのデータです。バイナリーファイルです。

ファイルSOLUTION4.FEMに書き込まれているモーメント値(TORQUE)は以下になります。このサイトでは9-Nodedの要素を使ってプログラムを作成し計算を実行しています。後ほど詳細を報告します。注目して頂きたいのは、モーメント(M) の値です。3次元解析ではG=26538461.5384615[Pa]とモーメントM=4000[Nm]を与えθ=0.0000670055862315403を得ています。3次元解析についても後ほど詳細を報告します。下表を見るとモーメントMがほぼ4000[Nm]に成っています。しかも4-Noded要素より9-Noded要素の方がより4000[Nm]に近い値になっていますよね。

要素 1/4モデルのM [Nm] フルモデル換算のM [Nm]
4-Noded 995.1 3980
9-Noded 998.8 3995

■描画プログラムGRA4FILE.FORの実行■
Stress Function (φ)の等高線を描くことが出来ます。このプログラムを実行すると以下のファイルを出力します。

出力ファイル名 中身
TORSION4.OUT Stress Function (φ)の等高線を描くためのデータです。エクセルにドラッグアンドドロップします。後は要素分割図と同じ手順です。
STRESSZX4.OUT τzxの等高線を描くためのデータです。エクセルにドラッグアンドドロップします。後は要素分割図と同じ手順です。
STRESSZY4.OUT τzyの等高線を描くためのデータです。エクセルにドラッグアンドドロップします。後は要素分割図と同じ手順です。

下図はStress Function (φ)の等高線です。座標(0,0)でφ=1049[Pa.m]でした。

下はτzxとτzyの等高線図です。

上の図だと等高線の高さが判別しにくいので、エクセルが提供している等高線で描くと以下になります。 左がτzxで右がτzyです。

3次元解析の結果も下に表示しておきます。詳細については 3次元弾性解析を見て下さい。 左がτXYで右がτXZです。

■断面が円形の場合■
これまではシャフトの断面が2m×2mの矩形(1/4Modelでは1m×1m)でしたが、ここでは断面が円形のStress Functionを計算してみます。断面の大きさですが、Saint Venant theoryに従い矩形のモーメントと円形のモーメントが同じになるように決めました。 矩形の断面積は2m×2m=4m2のとき、円形の断面積はA=3.7647m2でした。この場合の半径が下図のように1.09469mになります。 入力データは、settrs4-one-fourth-circle.for で作成できます。薄い色で描かれている要素分割は矩形断面の2m×2mです。

円形断面の計算結果SOLUTION4.FEMを見るとM=997[Nm]になっています。これをフルモデルに換算するとM=3988.5[Nm]です。2m×2mの矩形断面のモーメントがM=3980[Nm]でしたから、ほぼ同じですね。Saint Venant theoryの通りの計算結果になっています。

■9-Noded解析プログラムtorsion9q.for
一通りTorsion問題は解けました。ここでは、解析精度を向上させるために、2次要素を使って計算を行ってみます。要素は、下図に示す節点が9つあるIso-parametric です。

この要素を使ってTLX=1, TLY=1, NEX=10, NEY=10で分割すると以下のようになります。この要素は要素内に節点が1つ有るのが特徴です。要素の境界上には節点が3つありますので2次の要素ということになります。

入力データ TRS9DATA.DAT は、settrs9.forで作成できます。 torsion9q.forによる計算結果は、SOLUTION9.FEMに入ります。

Stress Function、τzx、τzyのエクセル用の描画データは GRA9FILE.FOR で作成できます。下はGRA9FILE.FORが出力したデータを使って描いたStress Functionです。4-Noded要素の計算結果より線がスムースですね。

エクセルの等高線を使って上のデータでプロットしてみました。これは 2次元Torsionの概念 で表示したものと同じです。

下図の示す様に9-Nodedと4-Nodedでに結果を重ねて描くとさほど結果に差が無いことに気付くと思います。モーメントの値は前に示した通りフルモデル換算でM=3995[Nm]です。

9-Nodedでも円形断面の計算をやってみました。データは settrs9-one-fourth-circle.for で作成しました。計算結果はSOLUTION9.FEM に有ります。描画ですが、左が要素分割で右がStress Functionです。

結果を見るとモーメントは1/4ModelでM=1002.77[Nm]になっています。M=1000が理論値ですのでSaint Venant theoryが正しく計算されていることになります。 計算結果のτzxとτzyですが、要素図のy=x付近では要素形状がいびつになっているため、y=x付近では正しく計算されていません。 他の領域では正常に計算されています。 理由は、Stress Functionの微分を節点で計算しているため、|[J]|=0になるためです。 対策として、要素の中央付近でStress Functionの微分を計算するという手が有ります。

これで有限要素法の話は終わりにしておきます。


Menu Theory-Torsion FEM-Torsion BEM-Torsion 3DIM-Torsion

Internet College of Finite Element Method