next up previous contents
: 三角形 : 二次元 : 二次元   目次

実装

/* 領域での積分点数 */
void WH_Fem__NumInt__Gauss2D__nPoints 
(WH_Fem__Shape2DType shapeType,
 int order,
 int *OUT__nPoints)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
  出力引数:
    OUT__nPoints は整数で、積分点数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE2D__TRI:
    WH_Fem__NumInt__Gauss2D__Tri__nPoints 
      (order,
       OUT__nPoints);
    break;
  case WH_FEM__SHAPE2D__QUAD:
    WH_Fem__NumInt__Gauss2D__Quad__nPoints 
      (order,
       OUT__nPoints);
    break;
  default:
    assert(0);
    break;
  }
}

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

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

/* 境界稜線上での積分点数 */
void WH_Fem__NumInt__Gauss2D__nPoints_Iedge
(WH_Fem__Shape2DType shapeType,
 int order,
 int Iedge,
 int *OUT__nPoints)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iedge は整数で、要素辺ID
  出力引数:
    OUT__nPoints は整数で、積分点数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE2D__TRI:
    WH_Fem__NumInt__Gauss2D__Tri__nPoints_Iedge
      (order, Iedge, 
       OUT__nPoints);
    break;
  case WH_FEM__SHAPE2D__QUAD:
    WH_Fem__NumInt__Gauss2D__Quad__nPoints_Iedge
      (order, Iedge, 
       OUT__nPoints);
    break;
  default:
    assert(0);
    break;
  }
}

/* 境界稜線上での積分点の自然座標 */
void WH_Fem__NumInt__Gauss2D__whV_xi_IedgeIp
(WH_Fem__Shape2DType shapeType,
 int order, 
 int Iedge,
 int Ip,
 double OUT__whV_xi_Ip[2])
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iedge は整数で、要素辺ID
    Ip は整数で、積分点ID
  出力引数:
    OUT__whV_xi_Ip はベクトルで、自然座標
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE2D__TRI:
    WH_Fem__NumInt__Gauss2D__Tri__whV_xi_IedgeIp
      (order, Iedge, Ip,
       OUT__whV_xi_Ip);
    break;
  case WH_FEM__SHAPE2D__QUAD:
    WH_Fem__NumInt__Gauss2D__Quad__whV_xi_IedgeIp
      (order, Iedge, Ip,
       OUT__whV_xi_Ip);
    break;
  default:
    assert(0);
    break;
  }
}

/* 境界稜線上での積分点の重み係数 */
void WH_Fem__NumInt__Gauss2D__w_IedgeIp
(WH_Fem__Shape2DType shapeType,
 int order, 
 int Iedge,
 int Ip,
 double *OUT__w_Ip)
/*
  入力引数:
    shapeType は要素形状のタイプ
    order は整数で、ガウス積分の次数
    Iedge は整数で、要素辺ID
    Ip は整数で、積分点ID
  出力引数:
    OUT__w_Ip はスカラーで、重み係数
*/
{
  switch (shapeType) {
  case WH_FEM__SHAPE2D__TRI:
    WH_Fem__NumInt__Gauss2D__Tri__w_IedgeIp
      (order, Iedge, Ip,
       OUT__w_Ip);
    break;
  case WH_FEM__SHAPE2D__QUAD:
    WH_Fem__NumInt__Gauss2D__Quad__w_IedgeIp
      (order, Iedge, Ip,
       OUT__w_Ip);
    break;
  default:
    assert(0);
    break;
  }
}



Hiroshi KAWAI 平成15年8月11日