next up previous contents
: 解説 : スカラー積 : スカラー積   目次

実装

テンソルのスカラー積を関数として以下のように実装する。

/* テンソルのスカラー積 */
void WH_Tensor3D__whT_colon_whT_OUT_s
(double whT_X[3][3],
 double whT_Y[3][3],
 double *OUT__a)
/*
  入力引数:
    whT_X, whT_Y はテンソル
  出力引数:
    OUT__aはスカラーで、whT_X と whT_Y のスカラー積
*/
{
  *OUT__a = whT_X[0][0] * whT_Y[0][0]
          + whT_X[0][1] * whT_Y[0][1]
          + whT_X[0][2] * whT_Y[0][2]
          + whT_X[1][0] * whT_Y[1][0]
          + whT_X[1][1] * whT_Y[1][1]
          + whT_X[1][2] * whT_Y[1][2]
          + whT_X[2][0] * whT_Y[2][0]
          + whT_X[2][1] * whT_Y[2][1]
          + whT_X[2][2] * whT_Y[2][2];
}

また、対称テンソルの場合には、以下のようになる。

/* 対称テンソルのスカラー積 */
void WH_Tensor3D__whST_colon_whST_OUT_s
(double whST_X[6],
 double whST_Y[6],
 double *OUT__a)
/*
  入力引数:
    whST_X, whST_Y は対称テンソル
  出力引数:
    OUT__aはスカラーで、whST_X と whST_Y のスカラー積
*/
{
  *OUT__a = whST_X[0] * whST_Y[0]
          + whST_X[1] * whST_Y[1]
          + whST_X[2] * whST_Y[2]
          + (whST_X[3] * whST_Y[3]
           + whST_X[4] * whST_Y[4]
           + whST_X[5] * whST_Y[5]) * 2;
}



Hiroshi KAWAI 平成15年8月11日