表面上の面積積分の変換子
を評価する
関数は以下のようになる。
/* 表面上の面積積分の変換子 */
void WH_Fem__Isoparam3D__Hexa__J_S_Iface
(int Iface,
double whPt_whV_x_whV_xi[3][3],
double *OUT__J_S)
/*
入力引数:
Iface は整数で、要素面ID
whPt_whV_x_whV_xi はテンソルで、Jacobian
出力引数:
OUT__J_S はスカラーで、面積積分の変換子
*/
{
double whP_whV_x_xi[3];
double whP_whV_x_eta[3];
double whP_whV_x_zeta[3];
double whV_tmp[3];
whP_whV_x_xi[0] = whPt_whV_x_whV_xi[0][0];
whP_whV_x_xi[1] = whPt_whV_x_whV_xi[0][1];
whP_whV_x_xi[2] = whPt_whV_x_whV_xi[0][2];
whP_whV_x_eta[0] = whPt_whV_x_whV_xi[1][0];
whP_whV_x_eta[1] = whPt_whV_x_whV_xi[1][1];
whP_whV_x_eta[2] = whPt_whV_x_whV_xi[1][2];
whP_whV_x_zeta[0] = whPt_whV_x_whV_xi[2][0];
whP_whV_x_zeta[1] = whPt_whV_x_whV_xi[2][1];
whP_whV_x_zeta[2] = whPt_whV_x_whV_xi[2][2];
switch (Iface) {
case 5: /* -xi */
case 3: /* +xi */
WH_Tensor3D__whV_times_whV_OUT_whV
(whP_whV_x_eta, whP_whV_x_zeta,
whV_tmp);
break;
case 2: /* -eta */
case 4: /* +eta */
WH_Tensor3D__whV_times_whV_OUT_whV
(whP_whV_x_zeta, whP_whV_x_xi,
whV_tmp);
break;
case 0: /* -zeta */
case 1: /* +zeta */
WH_Tensor3D__whV_times_whV_OUT_whV
(whP_whV_x_xi, whP_whV_x_eta,
whV_tmp);
break;
default:
assert(0);
break;
}
WH_Tensor3D__whLen_whV_OUT_s
(whV_tmp,
OUT__J_S);
}