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); }