next up previous contents
: 解説 : 変形勾配の極分解 : 変形勾配の極分解   目次

実装

右Cauchy-Green変形テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。

/* 右Cauchy-Green変形テンソル:2次元 */
void WH_SolidDeformation2D__whT_C
(double whT_F[2][2],
 double OUT__whT_C[2][2])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
  出力引数:
    OUT__whT_C はテンソルで、右Cauchy-Green変形テンソル
*/
{
  double whT_tmp[2][2];

  WH_Tensor2D__whTrans_whT_OUT_whT 
    (whT_F,
     whT_tmp);
  WH_Tensor2D__whT_cdot_whT_OUT_whT 
    (whT_tmp, whT_F,
     OUT__whT_C);
}

/* 右Cauchy-Green変形テンソル:3次元 */
void WH_SolidDeformation3D__whT_C
(double whT_F[3][3],
 double OUT__whT_C[3][3])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
  出力引数:
    OUT__whT_C はテンソルで、右Cauchy-Green変形テンソル
*/
{
  double whT_tmp[3][3];

  WH_Tensor3D__whTrans_whT_OUT_whT 
    (whT_F,
     whT_tmp);
  WH_Tensor3D__whT_cdot_whT_OUT_whT 
    (whT_tmp, whT_F,
     OUT__whT_C);
}

左Cauchy-Green変形テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。

/* 左Cauchy-Green変形テンソル:2次元 */
void WH_SolidDeformation2D__whT_B
(double whT_F[2][2],
 double OUT__whT_B[2][2])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
  出力引数:
    OUT__whT_B はテンソルで、左Cauchy-Green変形テンソル
*/
{
  double whT_tmp[2][2];

  WH_Tensor2D__whTrans_whT_OUT_whT 
    (whT_F,
     whT_tmp);
  WH_Tensor2D__whT_cdot_whT_OUT_whT 
    (whT_F, whT_tmp,
     OUT__whT_B);
}

/* 左Cauchy-Green変形テンソル:3次元 */
void WH_SolidDeformation3D__whT_B
(double whT_F[3][3],
 double OUT__whT_B[3][3])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
  出力引数:
    OUT__whT_B はテンソルで、左Cauchy-Green変形テンソル
*/
{
  double whT_tmp[3][3];

  WH_Tensor3D__whTrans_whT_OUT_whT 
    (whT_F,
     whT_tmp);
  WH_Tensor3D__whT_cdot_whT_OUT_whT 
    (whT_F, whT_tmp,
     OUT__whT_B);
}

右ストレッチテンソルから剛体回転テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。

/* 剛体回転テンソル(右ストレッチテンソルから):2次元 */
void WH_SolidDeformation2D__whT_R_from_whT_U
(double whT_F[2][2],
 double whT_U[2][2],
 double OUT__whT_R[2][2])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
    whT_U はテンソルで、右ストレッチテンソル
  出力引数:
    OUT__whT_R はテンソルで、剛体回転テンソル
*/
{
  double whT_tmp[2][2];

  WH_Tensor2D__whInv_whT_OUT_whT 
    (whT_U,
     whT_tmp);
  WH_Tensor2D__whT_cdot_whT_OUT_whT 
    (whT_F, whT_tmp,
     OUT__whT_R);
}

/* 剛体回転テンソル(右ストレッチテンソルから):3次元 */
void WH_SolidDeformation3D__whT_R_from_whT_U
(double whT_F[3][3],
 double whT_U[3][3],
 double OUT__whT_R[3][3])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
    whT_U はテンソルで、右ストレッチテンソル
  出力引数:
    OUT__whT_R はテンソルで、剛体回転テンソル
*/
{
  double whT_tmp[3][3];

  WH_Tensor3D__whInv_whT_OUT_whT 
    (whT_U,
     whT_tmp);
  WH_Tensor3D__whT_cdot_whT_OUT_whT 
    (whT_F, whT_tmp,
     OUT__whT_R);
}

左ストレッチテンソルから剛体回転テンソルを求める 関数は、2次元と3次元について、それぞれ以下のようになる。

/* 剛体回転テンソル(左ストレッチテンソルから):2次元 */
void WH_SolidDeformation2D__whT_R_from_whT_V
(double whT_F[2][2],
 double whT_V[2][2],
 double OUT__whT_R[2][2])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
    whT_V はテンソルで、左ストレッチテンソル
  出力引数:
    OUT__whT_R はテンソルで、剛体回転テンソル
*/
{
  double whT_tmp[2][2];

  WH_Tensor2D__whInv_whT_OUT_whT 
    (whT_V,
     whT_tmp);
  WH_Tensor2D__whT_cdot_whT_OUT_whT 
    (whT_tmp, whT_F, 
     OUT__whT_R);
}

/* 剛体回転テンソル(左ストレッチテンソルから):3次元 */
void WH_SolidDeformation3D__whT_R_from_whT_U
(double whT_F[3][3],
 double whT_V[3][3],
 double OUT__whT_R[3][3])
/*
  入力引数:
    whT_F はテンソルで、変形勾配テンソル
    whT_V はテンソルで、左ストレッチテンソル
  出力引数:
    OUT__whT_R はテンソルで、剛体回転テンソル
*/
{
  double whT_tmp[3][3];

  WH_Tensor3D__whInv_whT_OUT_whT 
    (whT_V,
     whT_tmp);
  WH_Tensor3D__whT_cdot_whT_OUT_whT 
    (whT_tmp, whT_F, 
     OUT__whT_R);
}



Hiroshi KAWAI 平成15年4月19日