next up previous contents
: 四辺形 : 形状関数の微分 : 形状関数の微分   目次

実装

形状関数の微分を面積座標および自然座標で評価する関数は それぞれ以下のようになる。 これは、全節点の形状関数について一度に計算される。

/* 形状関数の面積座標 L0 についての微分(面積座標で評価) */
void WH_Fem__Shape2D__Tri6N__whP_N_L0_arrayIn_atAC
(double L0, double L1, double L2,
 double OUT__whP_N_L0_arrayIn[6])
/*
  入力引数:
    L0, L1, L2 はスカラーで、面積座標
  出力引数:
    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] =  4 * L1;
  OUT__whP_N_L0_arrayIn[4] =  0;
  OUT__whP_N_L0_arrayIn[5] =  4 * L2;
}

/* 形状関数の面積座標 L1 についての微分(面積座標で評価) */
void WH_Fem__Shape2D__Tri6N__whP_N_L1_arrayIn_atAC
(double L0, double L1, double L2,
 double OUT__whP_N_L1_arrayIn[6])
/*
  入力引数:
    L0, L1, L2 はスカラーで、面積座標
  出力引数:
    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] =  4 * L0;
  OUT__whP_N_L1_arrayIn[4] =  4 * L2;
  OUT__whP_N_L1_arrayIn[5] =  0;
}

/* 形状関数の面積座標 L2 についての微分(面積座標で評価) */
void WH_Fem__Shape2D__Tri6N__whP_N_L2_arrayIn_atAC
(double L0, double L1, double L2,
 double OUT__whP_N_L2_arrayIn[6])
/*
  入力引数:
    L0, L1, L2 はスカラーで、面積座標
  出力引数:
    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] =  4 * L1;
  OUT__whP_N_L2_arrayIn[5] =  4 * L0;
}

/* 形状関数の自然座標についての微分(自然座標で評価) */
void WH_Fem__Shape2D__Tri6N__whP_N_whV_xi_arrayIn
(double whV_xi[2],
 double OUT__whP_N_whV_xi_arrayIn[6][2])
/*
  入力引数:
    whV_xi はベクトルで、自然座標
  出力引数:
    OUT__whP_N_whV_xi_arrayIn はベクトルの節点配列で、
      形状関数の自然座標に関する微分
*/
{
  double L0, L1, L2;

  WH_Fem__Shape2D__Tri__NaturalToArea
    (whV_xi,
     &L0, &L1, &L2);

  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] =  4 * (L0 - L1);
  OUT__whP_N_whV_xi_arrayIn[4][0] =  4 * L2;
  OUT__whP_N_whV_xi_arrayIn[5][0] = -4 * L2;

  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] = -4 * L1;
  OUT__whP_N_whV_xi_arrayIn[4][1] =  4 * L1;
  OUT__whP_N_whV_xi_arrayIn[5][1] =  4 * (L0 - L2);
}



Hiroshi KAWAI 平成15年8月11日