next up previous contents
: 2階テンソルのテンソル積 : 座標変換 : 座標変換   目次

実装

グローバル座標系の4階テンソルをローカル座標系へ変換する関数、および、 ローカル座標系の4階テンソルをグローバル座標系へ変換する関数を、 それぞれ以下のように実装する。

/* 4階テンソルをグローバルからローカルへ */
void WH_Tensor3D__globalToLocal_whCS_whT4_OUT_whT4
(double whCS_LCS[3][3],
 double whT4_C[3][3][3][3],
 double OUT__whT4_bar_C[3][3][3][3])
/*
  入力引数:
    whCS_LCS はローカル座標系
    whT4_C はグローバル4階テンソル
  出力引数:
    OUT__whT4_bar_Cはローカル4階テンソル
*/
{
  double whT_P[3][3];   /* 座標変換テンソル */
  int i, j, k, l;
  int r, s, t, u;

  WH_Tensor3D__transformationTensor 
    (whCS_LCS, 
     whT_P);

  for (r = 0; r < 3; r++) {
    for (s = 0; s < 3; s++) {
      for (t = 0; t < 3; t++) {
        for (u = 0; u < 3; u++) {
          double tmp = 0;

          for (i = 0; i < 3; i++) {
            for (j = 0; j < 3; j++) {
              for (k = 0; k < 3; k++) {
                for (l = 0; l < 3; l++) {
                  tmp += whT_P[r][i] * whT_P[s][j] 
                       * whT_P[t][k] * whT_P[u][l] 
                       * whT4_C[i][j][k][l];
                }
              }
            }
          }
          OUT__whT4_bar_C[r][s][t][u] = tmp;
        }
      }
    }
  }
}

/* 4階テンソルをローカルからグローバルへ */
void WH_Tensor3D__localToGlobal_whCS_whT4_OUT_whT4
(double whCS_LCS[3][3],
 double whT4_bar_C[3][3][3][3],
 double OUT__whT4_C[3][3][3][3])
/*
  入力引数:
    whCS_LCS はローカル座標系
    whT4_bar_C はローカル4階テンソル
  出力引数:
    OUT__whT4_Cはグローバル4階テンソル
*/
{
  double whT_P[3][3];   /* 座標変換テンソル */
  int i, j, k, l;
  int r, s, t, u;

  WH_Tensor3D__transformationTensor 
    (whCS_LCS, 
     whT_P);

  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
      for (k = 0; k < 3; k++) {
        for (l = 0; l < 3; l++) {
          double tmp = 0;

          for (r = 0; r < 3; r++) {
            for (s = 0; s < 3; s++) {
              for (t = 0; t < 3; t++) {
                for (u = 0; u < 3; u++) {
                  tmp += whT_P[i][r] * whT_P[j][s] 
                       * whT_P[k][t] * whT_P[l][u] 
                       * whT4_bar_C[r][s][t][u];
                }
              }
            }
          }
          OUT__whT4_C[i][j][k][l] = tmp;
        }
      }
    }
  }
}



Hiroshi KAWAI 平成15年8月11日