節点(Node)の内、固定されているところは、剛性マトリクスとして、考慮する必要がないので、要素剛性マトリクス算出で算出した、全体の剛性マトリクスから固定されている成分を除いて、固定されていない成分のみの、全体の剛性マトリクスの作成します。
これにより、後に計算する変位の算出(連立方程式を解く)時に、計算量を減らすことができます。
ここで出力される
固定されていない成分のみの、全体の剛性マトリクス
のシンボルは、all_valid_ESmatrix_EK[x][y] です。
最初に、外部から入力されたデータから、固定されているNodeのx成分fix_point_x[ ];、及び y成分fix_point_y[ ];をシーケンシャルに並べますconstraint_IB[ ]。
for (point_index=0; point_index<point_num; point_index++) {
constraint_IB[2*point_index] = fix_point_x[point_index];
constraint_IB[2*point_index+1] = fix_point_y[point_index];
}
次に、シーケンシャルに並べられたconstraint_IB[ ]の中で、値が0のもの(= 固定されている)成分を
差し引いてゆき、constraint_sequence[ ]に詰め込んでいきます。 ここでvalid_point_numには、固定されていない成分の総数が入ります。
for (int i=0; i<all_point_num; i++) {
if(!constraint_IB[i]) {
constraint_sequence[valid_point_num] = i;
valid_point_num++;
}
}
//valid_point_num--; 0-orignなのでいらない
最後に、要素剛性マトリクス算出で 求めたマトリクスall_ESmatrix_EK[ ] [ ] の中から、constraint_sequence[ ]を使用して、計算する必要のない成分(=固定されている成分)のマトリクス成分を抜き去っていき、all_valid_ESmatrix_EK[ ] [ ] を作成します。
for (valid_point_index_x=0; valid_point_index_x<valid_point_num; valid_point_index_x++) {
for (valid_point_index_y=0; valid_point_index_y<valid_point_num; valid_point_index_y++) {
all_valid_ESmatrix_EK[valid_point_index_x][valid_point_index_y]
= all_ESmatrix_EK[constraint_sequence[valid_point_index_x]][constraint_sequence[valid_point_index_y]];
}
}
<有限要素法>固定条件の処理 (まとめ)
「有限要素法における平面トラスの解析」プログラムをC言語で書いてみる : 目次 |
0 件のコメント:
コメントを投稿