Jacobian を評価する 関数は以下のようになる。
/* Jacobian 位置の自然座標に関する微分 */
void WH_Fem__Isoparam3D__Volume__whPt_whV_x_whV_xi
(int nNodes,
double whP_N_whV_xi_arrayIn[/* nNodes */][3],
double whV_x_arrayIn[/* nNodes */][3],
double OUT__whPt_whV_x_whV_xi[3][3])
/*
入力引数:
nNodes は整数で、要素節点数
whP_N_whV_xi_arrayIn はベクトルの節点配列で、
形状関数の自然座標に関する微分
whV_x_arrayIn はベクトルの節点配列で、位置(節点座標)
出力引数:
OUT__whPt_whV_x_whV_xi はテンソルで、Jacobian
*/
{
int In;
WH_Tensor3D__assign_whT_OUT_whT
(WH_Tensor3D__whT_O,
OUT__whPt_whV_x_whV_xi);
for (In = 0; In < nNodes; In++) {
double whT_tmp[3][3];
WH_Tensor3D__whV_otimes_whV_OUT_whT
(whP_N_whV_xi_arrayIn[In], whV_x_arrayIn[In],
whT_tmp);
WH_Tensor3D__whT_add_whT_OUT_whT
(OUT__whPt_whV_x_whV_xi, whT_tmp,
OUT__whPt_whV_x_whV_xi);
}
}