|TOP Page|
サンブナン体(St.Venant-Kirchhoff Material)とは第二Piola-Kirhhoff応力とGreen-Lagrange歪関係が線形である構成式を持つ等方な物体である。
サンブナン体の構成式は幾何学的非線形性を考慮した中でもっとも単純な構成式を持つ。幾何学的非線形性を考慮しているので大変形(つまり回転)しても大丈夫である。どんな材料の非線形性をを持った物体でも歪が微小な場合は応力-歪関係が線形であり、応力-歪関係が線形であるサンブナン体は歪が小さい時に実際の物質とよく一致する。
つまり、大変形微小歪問題はサンブナン体を良く使う
応力-歪関係が第二Piola-Kirchhoff応力とGreen-Lagrange歪で記述されているため、Total Lagrange法で解析を行う。このときに物質固有の値として必要なのはGreen-Lagrange歪と第二Piola-Kirchhoff応力を対応づける構成式と、歪と応力の微小変化を対応づけるテンソルである。
サンブナン体の構成式はLameの定数を用いて以下のように書くことができる。

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

よって

とかける。但し構成則テンソル
の成分は、
である。
これををテンソルで表記すると次のようになる

但し
は4階の単位テンソル
を用いて
とかける
これから応力の微小な増分量についても次が成り立つ


これらを用いれば、Total Lagrange法でサンブナン体を解析することができる。
第二Piola-Kirchhoff応力を作るルーティンと初期剛性行列を作るルーティンの例を以下に示す。

ここで、次のようにプログラムの中で変数が対応づけられているとする。
、myu=
、strain[i][j]=
第二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} [{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}](46454D20666F722053742E56656E616E742D4B69726368686F6666204D6174657269616C_eq0017.gif)
ここで
は簡単な構成式テンソルであったので
を配列として持たずに直接的に乗算を行うことができる。
![\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 \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](46454D20666F722053742E56656E616E742D4B69726368686F6666204D6174657269616C_eq0020.gif)
ここで、次のようにプログラムの中で変数が対応づけられているとする。
、myu=

、stress[g][h]=
、
初期剛性行列を作るルーティンは次のようになる。
// 初期剛性行列を足しこむ
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 |
線形弾性体は回転した部分がメッシュが膨張していて非現実的な変形をしているのに対して、サンブナン体ではそのような現象はみられず自然な変形をしている。
| 非線形有限要素法のためのテンソル解析の基礎 |
久田俊明 著 |