グローバル座標系のテンソルをローカル座標系へ変換する関数、および、 ローカル座標系のテンソルをグローバル座標系へ変換する関数を、 それぞれ以下のように実装する。
/* テンソルをグローバルからローカルへ */
void WH_Tensor3D__globalToLocal_whCS_whT_OUT_whT
(double whCS_LCS[3][3],
double whT_X[3][3],
double OUT__whT_bar_X[3][3])
/*
入力引数:
whCS_LCS はローカル座標系
whT_X はグローバルテンソル
出力引数:
OUT__whT_bar_Xはローカルテンソル
*/
{
double whT_P[3][3]; /* 座標変換テンソル */
double whTrans_whT_P[3][3];
double whT_tmp[3][3];
WH_Tensor3D__transformationTensor
(whCS_LCS,
whT_P);
WH_Tensor3D__whTrans_whT_OUT_whT
(whT_P,
whTrans_whT_P);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whT_P, whT_X,
whT_tmp);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whT_tmp, whTrans_whT_P,
OUT__whT_bar_X);
}
/* テンソルをローカルからグローバルへ */
void WH_Tensor3D__localToGlobal_whCS_whT_OUT_whT
(double whCS_LCS[3][3],
double whT_bar_X[3][3],
double OUT__whT_X[3][3])
/*
入力引数:
whCS_LCS はローカル座標系
whT_bar_X はローカルテンソル
出力引数:
OUT__whT_Xはグローバルテンソル
*/
{
double whT_P[3][3]; /* 座標変換テンソル */
double whTrans_whT_P[3][3];
double whT_tmp[3][3];
WH_Tensor3D__transformationTensor
(whCS_LCS,
whT_P);
WH_Tensor3D__whTrans_whT_OUT_whT
(whT_P,
whTrans_whT_P);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whTrans_whT_P, whT_bar_X,
whT_tmp);
WH_Tensor3D__whT_cdot_whT_OUT_whT
(whT_tmp, whT_P,
OUT__whT_X);
}