形状関数を体積座標および自然座標で評価する関数は それぞれ以下のようになる。 これは、全節点の形状関数について一度に計算される。
/* 形状関数(体積座標で評価) */ void WH_Shape__Tetra10Nodes__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_Shape__Tetra10Nodes__N_arrayIn (double whV_xi[3], double OUT__N_arrayIn[10]) /* 入力引数: whV_xi はベクトルで、自然座標 出力引数: OUT__N_arrayIn はスカラーの節点配列で、形状関数 */ { double L0, L1, L2, L3; WH_Shape__Tetra__NaturalToVolume (whV_xi, &L0, &L1, &L2, &L3); WH_Shape__Tetra10Nodes__N_arrayIn_atVC (L0, L1, L2, L3, OUT__N_arrayIn); }