1 / 20

三角形要素の有限要素法計算

三角形要素の有限要素法計算. 2013 年 9 月 17 日 後 保範. 対象方程式. 2. 三角形要素と要素行列. 要素行列 ( 対称 ). (x3,y3). 右辺 ベクトル. (x2,y2). (x1,y1). 要素行列の計算1. 要素 行列の計算2. 境界要素と右辺ベクトル. l. (x1,y1). (x1,y1). P1. P2. 節点 P1,P2 の値を g として , 対応する右辺ベクトへ. を計算. 境界要素右辺ベクトル計算. l. (x2,y2). (x1,y1). 入力データ1(三角形要素).

claudia-gay
Télécharger la présentation

三角形要素の有限要素法計算

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 三角形要素の有限要素法計算 2013年9月17日 後 保範

  2. 対象方程式 2

  3. 三角形要素と要素行列 要素行列(対称) (x3,y3) 右辺 ベクトル (x2,y2) (x1,y1)

  4. 要素行列の計算1

  5. 要素行列の計算2

  6. 境界要素と右辺ベクトル l (x1,y1) (x1,y1) P1 P2 節点P1,P2の値をgとして,対応する右辺ベクトへ を計算

  7. 境界要素右辺ベクトル計算 l (x2,y2) (x1,y1)

  8. 入力データ1(三角形要素) Element[m][5] Ktbl[] Ftbl[] 配列には 持たない Node[n][3]

  9. 入力データ2(節点) XY[n][2] Node[n] 配列には 持たない Fix[] 0は未知数となる節点

  10. 出力データ1(要素行列) ElMat[m][3][3]: double m ElB[m]: double --- 右辺ベクトル用

  11. 出力データ2(密行列) = x A b Aの形は各種 今回は密行列 作成

  12. 共通領域の確保例(Java) public int Element[][] = new int[1000][5]; public int Node[] = new int[1000]; public double XY[][] = new double[1000][2]; public double ElMat[][][] = new double[1000][3][3]; public double ElB[] = new double[1000]; public double Ktbl[] = new double[100]; public double Ftbl[] = new double[100]; public double Fix[] = new double[100]; public double A[][] = new double[1000][1000]; public double B[] = new double[1000];

  13. 要素行列の計算1(全体) public void SetElM(int m) { int k, nd1, nd2, nd3; double x1,y1, x2,y2, x3, y3, S; double kv, fv; for (k=0; k<m; k++) { 準備計算(節点番号、座標、面積、物性値(k,f))      要素行列の計算(ElMat[k][][], ElB[k]) } }

  14. 要素行列の計算2(準備計算) nd1 = Element[k][0]; nd2 = Element[k][1]; nd3 = Element[k][2]; kv = Ktbl[Element[k][3]]; fv = Ftbl[Element[k][4]]; x1 = XY[nd1][0]; y1 = XY[nd1][1]; x2 = XY[nd2][0]; y2 = XY[nd2][1]; x3 = XY[nd3][0]; y3 = XY[nd3][1]; S = Math.abs(x1*y2 + x2*y3 + x3*y1 - x2*y1 - x3*y2 - x1*y3);//面積*2

  15. 要素行列の計算3(要素行列) kv = kv / (2.0*S); ElMat[k][0][0] = kv*( (x3-x2)*(x3-x2) + (y2-y3)*(y2-y3) ); ElMat[k][1][1] = kv*( (x1-x3)*(x1-x3) + (y3-y1)*(y3-y1) ); ElMat[k][2][2] = kv*( (x2-x1)*(x2-x1) + (y1-y2)*(y1-y2) ); ElMat[k][0][1] = kv*( (x3-x2)*(x1-x3) + (y2-y3)*(y3-y1) ); ElMat[k][0][2] = kv*( (x3-x2)*(x2-x1) + (y2-y3)*(y1-y2) ); ElMat[k][1][2] = kv*( (x1-x3)*(x2-x1) + (y3-y1)*(y1-y2) ); ElB[k] = fv*S/6.0; ElMat[k][1][0] = ElMat[k][0][1]; //対称なの以下は ElMat[k][2][0] = ElMat[k][0][2]; //省略可能 ElMat[k][2][1] = ElMat[k][1][2];

  16. 密行列作成1(全体) public void SetAB(int m, int n) { inti, j, k, IP, JP, IFX, JFX; 行列A,右辺ベクトルのクリア for (k=0; k<m; k++) { for (i=0; i<3; i++) { IP = Element[k][i]; IFX = Node[IP]; if (IFX == 0) {i節点は未知数処理 } } } }

  17. 密行列作成2(i節点は未知数) B[IP] += ElB[k]; // Set B[IP] by f for (j=0; j<3; j++) { JP = Element[k][j]; JFX = Node[JP]; if (JFX == 0) //共に未知数なら行列へ { A[IP][JP] += ElMat[k][i][j]; } else //一方が既知数ならbへ { B[IP] -= Fix[JFX]*ElMat[k][i][j]; } }

  18. 対称帯行列の作成 j M+1 A[i][j]: 密行列 A[i][j-i]: 帯行列 i public double A[][] = new double[1000][1000]; 100: (m+1)以上

  19. 行列作成2(対称帯行列用) B[IP] += ElB[k]; // Set B[IP] by f for (j=i; j<3; j++)  j=0をj=iに変更 { JP = Element[k][j]; JFX = Node[JP]; A[IP][JP]をA[IP][JP-IP]に変更 if (JFX == 0) //共に未知数なら行列へ { A[IP][JP-IP] += ElMat[k][i][j]; } else//他方が既知数ならbへ { B[IP] -= Fix[JFX]*ElMat[k][i][j]; } }

  20. 入力データ3(境界要素) Bound[l][3] 配列には 持たない Node[n][3] Alph[]

More Related