|TOP Page|


FEM for St.Venant-Kirchhoff Material

サンブナン体の有限要素法による解法







Last Update:2009年05月15日


目次

St.Venant-Kirchhoff Material

サンブナン体(St.Venant-Kirchhoff Material)とは第二Piola-Kirhhoff応力とGreen-Lagrange歪関係が線形である構成式を持つ等方な物体である。

サンブナン体の構成式は幾何学的非線形性を考慮した中でもっとも単純な構成式を持つ。幾何学的非線形性を考慮しているので大変形(つまり回転)しても大丈夫である。どんな材料の非線形性をを持った物体でも歪が微小な場合は応力-歪関係が線形であり、応力-歪関係が線形であるサンブナン体は歪が小さい時に実際の物質とよく一致する。

つまり、大変形微小歪問題はサンブナン体を良く使う

応力-歪関係が第二Piola-Kirchhoff応力とGreen-Lagrange歪で記述されているため、Total Lagrange法で解析を行う。このときに物質固有の値として必要なのはGreen-Lagrange歪と第二Piola-Kirchhoff応力を対応づける構成式と、歪と応力の微小変化を対応づけるテンソルである。

サンブナン体の構成式はLameの定数を用いて以下のように書くことができる。

S=\lambda(\tr\b{E})\b{I}+2\mu\b{E}

これを、成分表示すると次のとおり、

S_{ij}=\lambda E_{kk}\delta_{ij}+2\mu E_{ij} = \lambda E_{kl}\delta_{kl}\delta_{ij}+2\mu E_{kl}\delta_{ik}\delta_{jl}

よって

S_{ij}=C_{ijkl}E_{kl}

とかける。但し構成則テンソル\b{C}の成分は、C_{ijkl}=\lambda\delta_{kl}\delta_{ij}+2\mu\delta_{ik}\delta_{jl}である。

これををテンソルで表記すると次のようになる

\b{S}=\b{C}:\b{E}

但し\b{C}は4階の単位テンソル\b{I}_4を用いて\b{C}=\lambda(\b{I}\otimes\b{I})+2\mu\b{I}_4とかける

これから応力の微小な増分量についても次が成り立つ

d\b{S}=\b{C}:d\b{E}

\bar{C}_{ghef}=\frac{1}{2}({C}_{ghef}+{C}_{ghfe})=\lambda\delta_{ef}\delta_{gh}+\mu\delta_{ge}\delta_{hf}+\mu\delta_{gf}\delta_{he}

これらを用いれば、Total Lagrange法でサンブナン体を解析することができる。

実装に関して

第二Piola-Kirchhoff応力を作るルーティンと初期剛性行列を作るルーティンの例を以下に示す。

第二Piola-Kirchhoff応力を作るルーティン

S_{ij}=\lambda E_{kk}\delta_{ij}+2\mu E_{ij}

ここで、次のようにプログラムの中で変数が対応づけられているとする。

第二Piola-Kirchhoff応力を求めるルーティンの実装例は以下のとおり

double stress[ndim][ndim];
{  // 第二Piola-Kirchhoff応力を求める 
   double dtmp1 = 0.0;
   for(unsigned int idim=0;idim<ndim;idim++){
      for(unsigned int jdim=0;jdim<ndim;jdim++){
         stress[idim][jdim] = 2.0*myu*strain[idim][jdim];
      }
      dtmp1 += strain[idim][idim];
   }
   for(unsigned int idim=0;idim<ndim;idim++){
      stress[idim][idim] += lambda*dtmp1;
   }
}

初期剛性行列を作るルーティン

数値積分を用いて書くと次のようになる。

[{K_L}_e]^{p,q}_{i,j}=\int_V_e\frac{\partial S_{gh}}{\partial u^q_j}\[B_{gh}\]^p_idV=\int_V_e\bar{C}_{ghef}\[B_{ef}\]^q_j\[B_{gh}\]^p_idV\sime\sum_{\alpha}\omega_{\alpha}\bar{C}_{ghef}\[B_{ef}\]^q_j\[B_{gh}\]^p_iJ_{\alpha}

ここで\bar{C}は簡単な構成式テンソルであったので\bar{C}_{efgh}を配列として持たずに直接的に乗算を行うことができる。

\bar{C}_{ghef}\[B_{ef}\]^q_j\[B_{gh}\]^p_i=(\lambda\delta_{ef}\delta_{gh}+\mu\delta_{ge}\delta_{hf}+\mu\delta_{gf}\delta_{he})\[B_{ef}\]^q_j\[B_{gh}\]^p_i\\ \qquad\qquad\qquad\qquad\qquad=\mu(\[B_{gh}\]^q_j\[B_{gh}\]^p_i+\[B_{hg}\]^q_j\[B_{hh}\]^p_i)+\lambda\[B_{gg}\]^q_j\[B_{hh}\]^p_i

ここで、次のようにプログラムの中で変数が対応づけられているとする。

初期剛性行列を作るルーティンは次のようになる。

// 初期剛性行列を足しこむ
for(unsigned int inoel=0;inoel<nnoel;inoel++){
for(unsigned int jnoel=0;jnoel<nnoel;jnoel++){
   for(unsigned int idim=0;idim<ndim;idim++){
   for(unsigned int jdim=0;jdim<ndim;jdim++){
      { // muの2つの項を足しこむ
         double dtmp1 = 0.0;
         for(unsigned int gdim=0;gdim<ndim;gdim++){
         for(unsigned int hdim=0;hdim<ndim;hdim++){
            dtmp1 += disp2strain[inoel][idim][gdim][hdim]*disp2strain[jnoel][jdim][gdim][hdim]
               +disp2strain[inoel][idim][gdim][hdim]*disp2strain[jnoel][jdim][hdim][gdim];
         }
         }
         emat[inoel][jnoel][idim][jdim] += detwei*myu*dtmp1;
      }
      {  // lambdaの項を足しこむ
         double dtmp1=0.0, dtmp2=0.0;
         for(unsigned int gdim=0;gdim<ndim;gdim++){
            dtmp1+=disp2strain[inoel][idim][gdim][gdim];
            dtmp2+=disp2strain[jnoel][jdim][gdim][gdim];
         }
         emat[inoel][jnoel][idim][jdim] += detwei*lambda*dtmp1*dtmp2;
       }
   }
   }
}

解析例

片持ち梁に重力を掛けて曲げる解析をサンブナン体と線形弾性体について行って様子を確認した。

梁の大きさは1×10で長辺が10分割、短辺が1分割されている。

梁のヤング率は1000、ポアソン比は0.3、応力状態は平面応力を仮定し、梁の密度は1、重力は下向きに5をかけた。

解析メッシュ サンブナン体 線形弾性体
解析ソースコード
>>>>StVenant_UnsTri.zip
解析ソースコード
>>>>LinearSolid_UnsTri.zip

線形弾性体は回転した部分がメッシュが膨張していて非現実的な変形をしているのに対して、サンブナン体ではそのような現象はみられず自然な変形をしている。

参考にしたもの

Links

東京大学新領域創成科学研究科、久田・杉浦研究室、渡邊先生の講義資料
http://www.sml.k.u-tokyo.ac.jp/members/nabe/

Books

非線形有限要素法のためのテンソル解析の基礎 久田俊明 著


Made by Nobuyuki UMETANI  梅谷 信行
n.umetani@gmail.com