next up previous contents
: 表面上の法線方向成分指定の積分 : 表面上の積分 : 表面上の積分   目次

実装

表面上の面積積分の変換子 $J^S$ を評価する 関数は以下のようになる。

/* 表面上の面積積分の変換子 */
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);
}



Hiroshi KAWAI 平成15年8月11日