next up previous contents
: 四面体 : 三次元 : 三次元   目次

実装

/* 領域での積分点数 */
void WH_Fem__NumInt__Gauss3D__nPoints 
(WH_Fem__Shape3DType shapeType,
 int order,
 int *OUT__nPoints)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
  出力引数:
    OUT__nPoints は整数で、積分点数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__nPoints 
      (order,
       OUT__nPoints);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__nPoints 
      (order,
       OUT__nPoints);
    break;
  default:
    assert(0);
    break;
  }
}

/* 領域での積分点の自然座標 */
void WH_Fem__NumInt__Gauss3D__whV_xi_Ip
(WH_Fem__Shape3DType shapeType,
 int order, 
 int Ip,
 double OUT__whV_xi_Ip[3])
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Ip は整数で、積分点ID
  出力引数:
    OUT__whV_xi_Ip はベクトルで、自然座標
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__whV_xi_Ip
      (order, Ip, 
       OUT__whV_xi_Ip);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__whV_xi_Ip
      (order, Ip, 
       OUT__whV_xi_Ip);
    break;
  default:
    assert(0);
    break;
  }
}

/* 領域での積分点の重み係数 */
void WH_Fem__NumInt__Gauss3D__w_Ip
(WH_Fem__Shape3DType shapeType,
 int order, 
 int Ip,
 double *OUT__w_Ip)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Ip は整数で、積分点ID
  出力引数:
    OUT__w_Ip はスカラーで、重み係数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__w_Ip
      (order, Ip,
       OUT__w_Ip);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__w_Ip
      (order, Ip,
       OUT__w_Ip);
    break;
  default:
    assert(0);
    break;
  }
}

/* 境界表面上での積分点数 */
void WH_Fem__NumInt__Gauss3D__nPoints_Iface
(WH_Fem__Shape3DType shapeType,
 int order,
 int Iface,
 int *OUT__nPoints)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iface は整数で、要素面ID
  出力引数:
    OUT__nPoints は整数で、積分点数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__nPoints_Iface
      (order, Iface, 
       OUT__nPoints);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__nPoints_Iface
      (order, Iface, 
       OUT__nPoints);
    break;
  default:
    assert(0);
    break;
  }
}

/* 境界表面上での積分点の自然座標 */
void WH_Fem__NumInt__Gauss3D__whV_xi_IfaceIp
(WH_Fem__Shape3DType shapeType,
 int order, 
 int Iface,
 int Ip,
 double OUT__whV_xi_Ip[3])
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iface は整数で、要素面ID
    Ip は整数で、積分点ID
  出力引数:
    OUT__whV_xi_Ip はベクトルで、自然座標
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__whV_xi_IfaceIp
      (order, Iface, Ip,
       OUT__whV_xi_Ip);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__whV_xi_IfaceIp
      (order, Iface, Ip,
       OUT__whV_xi_Ip);
    break;
  default:
    assert(0);
    break;
  }
}

/* 境界表面上での積分点の重み係数 */
void WH_Fem__NumInt__Gauss3D__w_IfaceIp
(WH_Fem__Shape3DType shapeType,
 int order, 
 int Iface,
 int Ip,
 double *OUT__w_Ip)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iface は整数で、要素面ID
    Ip は整数で、積分点ID
  出力引数:
    OUT__w_Ip はスカラーで、重み係数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE3D__TETRA:
    WH_Fem__NumInt__Gauss3D__Tetra__w_IfaceIp
      (order, Iface, Ip,
       OUT__w_Ip);
    break;
  case WH_FEM__SHAPE3D__HEXA:
    WH_Fem__NumInt__Gauss3D__Hexa__w_IfaceIp
      (order, Iface, Ip,
       OUT__w_Ip);
    break;
  default:
    assert(0);
    break;
  }
}



Hiroshi KAWAI 平成15年8月11日