/* 領域での積分点数 */
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;
}
}