テンソルの行列式(3次主不変量)を関数として以下のように実装する。
/* テンソルの行列式 */
void WH_Tensor3D__whDet_whT_OUT_s
(double whT_X[3][3],
double *OUT__a)
/*
入力引数:
whT_X はテンソル
出力引数:
OUT__aはスカラーで、whT_X の行列式
*/
{
*OUT__a = whT_X[0][0] * whT_X[1][1] * whT_X[2][2]
+ whT_X[0][1] * whT_X[1][2] * whT_X[2][0]
+ whT_X[0][2] * whT_X[1][0] * whT_X[2][1]
- whT_X[0][2] * whT_X[1][1] * whT_X[2][0]
- whT_X[0][1] * whT_X[1][0] * whT_X[2][2]
- whT_X[0][0] * whT_X[1][2] * whT_X[2][1];
}
また、対称テンソルの場合には、以下のようになる。
/* 対称テンソルの行列式 */
void WH_Tensor3D__whDet_whST_OUT_s
(double whST_X[6],
double *OUT__a)
/*
入力引数:
whST_X は対称テンソル
出力引数:
OUT__aはスカラーで、whST_X の行列式
*/
{
*OUT__a = whST_X[0] * whST_X[1] * whST_X[2]
+ whST_X[4] * whST_X[5] * whST_X[6] * 2
- whST_X[0] * whST_X[5] * whST_X[5]
- whST_X[1] * whST_X[6] * whST_X[6]
- whST_X[2] * whST_X[4] * whST_X[4];
}