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