Green-Lagrange歪みテンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* Green-Lagrange歪みテンソル:2次元 */
void WH_SolidDeformation2D__whT_E
(double whT_Z[2][2],
double OUT__whT_E[2][2])
/*
入力引数:
whT_Z はテンソルで、変位勾配テンソル
出力引数:
OUT__whT_E はテンソルで、Green-Lagrange歪みテンソル
*/
{
double whT_tmp0[2][2];
double whT_tmp1[2][2];
double whT_tmp2[2][2];
double whT_tmp3[2][2];
WH_Tensor2D__whSym_whT_OUT_whT
(whT_Z,
whT_tmp0);
WH_Tensor2D__whTrans_whT_OUT_whT
(whT_Z,
whT_tmp1);
WH_Tensor2D__s_mul_whT_OUT_whT
(0.5, whT_tmp1,
whT_tmp2);
WH_Tensor2D__whT_cdot_whT_OUT_whT
(whT_tmp2, whT_Z,
whT_tmp3);
WH_Tensor2D__whT_add_whT_OUT_whT
(whT_tmp0, whT_tmp3,
OUT__whT_E);
}
/* Green-Lagrange歪みテンソル:3次元 */
void WH_SolidDeformation3D__whT_E
(double whT_Z[3][3],
double OUT__whT_E[3][3])
/*
入力引数:
whT_Z はテンソルで、変位勾配テンソル
出力引数:
OUT__whT_E はテンソルで、Green-Lagrange歪みテンソル
*/
{
double whT_tmp0[3][3];
double whT_tmp1[3][3];
double whT_tmp2[3][3];
double whT_tmp3[3][3];
WH_Tensor3D__whSym_whT_OUT_whT
(whT_Z,
whT_tmp0);
WH_Tensor3D__whTrans_whT_OUT_whT
(whT_Z,
whT_tmp1);
WH_Tensor3D__s_mul_whT_OUT_whT
(0.5, whT_tmp1,
whT_tmp2);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whT_tmp2, whT_Z,
whT_tmp3);
WH_Tensor3D__whT_add_whT_OUT_whT
(whT_tmp0, whT_tmp3,
OUT__whT_E);
}
Almansi歪みテンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* Almansi歪みテンソル:2次元 */
void WH_SolidDeformation2D__whT_A
(double whT_Y[2][2],
double OUT__whT_A[2][2])
/*
入力引数:
whT_Y はテンソルで、現時刻における変位勾配テンソル
出力引数:
OUT__whT_A はテンソルで、Almansi歪みテンソル
*/
{
double whT_tmp0[2][2];
double whT_tmp1[2][2];
double whT_tmp2[2][2];
double whT_tmp3[2][2];
WH_Tensor2D__whSym_whT_OUT_whT
(whT_Y,
whT_tmp0);
WH_Tensor2D__whTrans_whT_OUT_whT
(whT_Y,
whT_tmp1);
WH_Tensor2D__s_mul_whT_OUT_whT
(0.5, whT_tmp1,
whT_tmp2);
WH_Tensor2D__whT_cdot_whT_OUT_whT
(whT_tmp2, whT_Y,
whT_tmp3);
WH_Tensor2D__whT_sub_whT_OUT_whT
(whT_tmp0, whT_tmp3,
OUT__whT_A);
}
/* Almansi歪みテンソル:3次元 */
void WH_SolidDeformation3D__whT_A
(double whT_Y[3][3],
double OUT__whT_A[3][3])
/*
入力引数:
whT_Y はテンソルで、現時刻における変位勾配テンソル
出力引数:
OUT__whT_A はテンソルで、Almansi歪みテンソル
*/
{
double whT_tmp0[3][3];
double whT_tmp1[3][3];
double whT_tmp2[3][3];
double whT_tmp3[3][3];
WH_Tensor3D__whSym_whT_OUT_whT
(whT_Y,
whT_tmp0);
WH_Tensor3D__whTrans_whT_OUT_whT
(whT_Y,
whT_tmp1);
WH_Tensor3D__s_mul_whT_OUT_whT
(0.5, whT_tmp1,
whT_tmp2);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whT_tmp2, whT_Y,
whT_tmp3);
WH_Tensor3D__whT_sub_whT_OUT_whT
(whT_tmp0, whT_tmp3,
OUT__whT_A);
}