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