形状関数を体積座標および自然座標で評価する関数は それぞれ以下のようになる。 これは、全節点の形状関数について一度に計算される。
/* 形状関数(体積座標で評価) */
void WH_Fem__Shape3D__Tetra10N__N_arrayIn_atVC
(double L0, double L1, double L2, double L3,
double OUT__N_arrayIn[10])
/*
入力引数:
L0, L1, L2, L3 はスカラーで、体積座標
出力引数:
OUT__N_arrayIn はスカラーの節点配列で、形状関数
*/
{
OUT__N_arrayIn[0] = L0 * (2 * L0 - 1);
OUT__N_arrayIn[1] = L1 * (2 * L1 - 1);
OUT__N_arrayIn[2] = L2 * (2 * L2 - 1);
OUT__N_arrayIn[3] = L3 * (2 * L3 - 1);
OUT__N_arrayIn[4] = 4 * L0 * L1;
OUT__N_arrayIn[5] = 4 * L0 * L2;
OUT__N_arrayIn[6] = 4 * L0 * L3;
OUT__N_arrayIn[7] = 4 * L1 * L2;
OUT__N_arrayIn[8] = 4 * L2 * L3;
OUT__N_arrayIn[9] = 4 * L3 * L1;
}
/* 形状関数(自然座標で評価) */
void WH_Fem__Shape3D__Tetra10N__N_arrayIn
(double whV_xi[3],
double OUT__N_arrayIn[10])
/*
入力引数:
whV_xi はベクトルで、自然座標
出力引数:
OUT__N_arrayIn はスカラーの節点配列で、形状関数
*/
{
double L0, L1, L2, L3;
WH_Fem__Shape3D__Tetra__NaturalToVolume
(whV_xi,
&L0, &L1, &L2, &L3);
WH_Fem__Shape3D__Tetra10N__N_arrayIn_atVC
(L0, L1, L2, L3,
OUT__N_arrayIn);
}