ベクトル量の勾配を求める 関数は以下のようになる。
/* ベクトル量の勾配 */ void WH_Fem__Isoparam3D__whP_whV_f_whV_x (int nNodes, double whV_f_arrayIn[/* nNodes */][3], double whP_N_whV_x_arrayIn[/* nNodes */][3], double OUT__whP_whV_f_whV_x[3][3]) /* 入力引数: nNodes は整数で、要素節点数 whV_f_arrayIn はベクトルの節点配列で、ベクトル量 whP_N_whV_x_arrayIn はベクトルの節点配列で、形状関数の勾配 出力引数: OUT__whP_whV_f_whV_x はテンソルで、ベクトル量の勾配 */ { int In; WH_Tensor3D__assign_whT_OUT_whT (WH_Tensor3D__whT_O, OUT__whP_whV_f_whV_x); for (In = 0; In < nNodes; In++) { double whT_tmp[3][3]; WH_Tensor3D__whV_otimes_whV_OUT_whT (whV_f_arrayIn[In], whP_N_whV_x_arrayIn[In], whT_tmp); WH_Tensor3D__whT_add_whT_OUT_whT (OUT__whP_whV_f_whV_x, whT_tmp, OUT__whP_whV_f_whV_x); } }