平均応力を求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* 平均応力:2次元 */ void WH_SolidDeformation2D__sigma_m (double whT_sigma[2][2], double *OUT__sigma_m) /* 入力引数: whT_sigma はテンソルで、応力テンソル 出力引数: OUT__sigma_m はスカラーで、平均応力 */ { WH_Tensor2D__whTr_whT_OUT_s (whT_sigma, OUT__sigma_m); *OUT__sigma_m /= 3; } /* 平均応力:3次元 */ void WH_SolidDeformation3D__sigma_m (double whT_sigma[3][3], double *OUT__sigma_m) /* 入力引数: whT_sigma はテンソルで、応力テンソル 出力引数: OUT__sigma_m はスカラーで、平均応力 */ { WH_Tensor3D__whTr_whT_OUT_s (whT_sigma, OUT__sigma_m); *OUT__sigma_m /= 3; }
偏差応力テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* 偏差応力テンソル:2次元 */ void WH_SolidDeformation2D__whT_sigma_prime (double whT_sigma[2][2], double OUT__whT_sigma_prime[2][2]) /* 入力引数: whT_sigma はテンソルで、応力テンソル 出力引数: OUT__whT_sigma_prime はテンソルで、偏差応力テンソル */ { double sigma_m; double whT_tmp[2][2]; WH_SolidDeformation2D__sigma_m (whT_sigma, &sigma_m); WH_Tensor2D__s_mul_whT_OUT_whT (sigma_m, WH_Tensor2D__whT_I, whT_tmp); WH_Tensor2D__whT_sub_whT_OUT_whT (whT_sigma, whT_tmp, OUT__whT_sigma_prime); } /* 偏差応力テンソル:3次元 */ void WH_SolidDeformation3D__whT_sigma_prime (double whT_sigma[3][3], double OUT__whT_sigma_prime[3][3]) /* 入力引数: whT_sigma はテンソルで、応力テンソル 出力引数: OUT__whT_sigma_prime はテンソルで、偏差応力テンソル */ { double sigma_m; double whT_tmp[3][3]; WH_SolidDeformation3D__sigma_m (whT_sigma, &sigma_m); WH_Tensor3D__s_mul_whT_OUT_whT (sigma_m, WH_Tensor3D__whT_I, whT_tmp); WH_Tensor3D__whT_sub_whT_OUT_whT (whT_sigma, whT_tmp, OUT__whT_sigma_prime); }
第1Piola-Kirchhoff応力テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* 第1Piola-Kirchhoff応力テンソル:2次元 */ void WH_SolidDeformation2D__whT_tau (double whT_sigma[2][2], double whT_F[2][2], double OUT__whT_tau[2][2]) /* 入力引数: whT_sigma はテンソルで、Cauchy応力テンソル whT_F はテンソルで、変形勾配テンソル 出力引数: OUT__whT_tau はテンソルで、 第1Piola-Kirchhoff応力テンソル */ { double J; WH_SolidDeformation2D__J (whT_F, &J); WH_Tensor2D__s_mul_whT_OUT_whT (J, whT_sigma, OUT__whT_tau); } /* 第1Piola-Kirchhoff応力テンソル:3次元 */ void WH_SolidDeformation3D__whT_tau (double whT_sigma[3][3], double whT_F[3][3], double OUT__whT_tau[3][3]) /* 入力引数: whT_sigma はテンソルで、Cauchy応力テンソル whT_F はテンソルで、変形勾配テンソル 出力引数: OUT__whT_tau はテンソルで、 第1Piola-Kirchhoff応力テンソル */ { double J; WH_SolidDeformation3D__J (whT_F, &J); WH_Tensor3D__s_mul_whT_OUT_whT (J, whT_sigma, OUT__whT_tau); }
第2Piola-Kirchhoff応力テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。
/* 第2Piola-Kirchhoff応力テンソル:2次元 */ void WH_SolidDeformation2D__whT_S (double whT_sigma[2][2], double whT_F[2][2], double OUT__whT_S[2][2]) /* 入力引数: whT_sigma はテンソルで、Cauchy応力テンソル whT_F はテンソルで、変形勾配テンソル 出力引数: OUT__whT_S はテンソルで、 第2Piola-Kirchhoff応力テンソル */ { double J; double whT_tmp0[2][2]; double whT_tmp1[2][2]; double whT_tmp2[2][2]; double whT_tmp3[2][2]; WH_SolidDeformation2D__J (whT_F, &J); WH_Tensor2D__whInv_whT_OUT_whT (whT_F, whT_tmp0); WH_Tensor2D__s_mul_whT_OUT_whT (J, whT_tmp0, whT_tmp1); WH_Tensor2D__whT_cdot_whT_OUT_whT (whT_tmp1, whT_sigma, whT_tmp2); WH_Tensor2D__whTrans_whT_OUT_whT (whT_tmp0, whT_tmp3); WH_Tensor2D__whT_cdot_whT_OUT_whT (whT_tmp2, whT_tmp3, OUT__whT_S); } /* 第2Piola-Kirchhoff応力テンソル:3次元 */ void WH_SolidDeformation3D__whT_S (double whT_sigma[3][3], double whT_F[3][3], double OUT__whT_S[3][3]) /* 入力引数: whT_sigma はテンソルで、Cauchy応力テンソル whT_F はテンソルで、変形勾配テンソル 出力引数: OUT__whT_S はテンソルで、 第2Piola-Kirchhoff応力テンソル */ { double J; double whT_tmp0[3][3]; double whT_tmp1[3][3]; double whT_tmp2[3][3]; double whT_tmp3[3][3]; WH_SolidDeformation3D__J (whT_F, &J); WH_Tensor3D__whInv_whT_OUT_whT (whT_F, whT_tmp0); WH_Tensor3D__s_mul_whT_OUT_whT (J, whT_tmp0, whT_tmp1); WH_Tensor3D__whT_cdot_whT_OUT_whT (whT_tmp1, whT_sigma, whT_tmp2); WH_Tensor3D__whTrans_whT_OUT_whT (whT_tmp0, whT_tmp3); WH_Tensor3D__whT_cdot_whT_OUT_whT (whT_tmp2, whT_tmp3, OUT__whT_S); }