next up previous contents
: スカラー未知数 : ベクトル量の勾配 : ベクトル量の勾配   目次

実装

ベクトル量の勾配を求める 関数は以下のようになる。

/* ベクトル量の勾配 */
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);
  }
}



Hiroshi KAWAI 平成15年8月11日