平均応力を求める 関数は、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);
}