OpenSees Blog 日本語 目次

最初に「このブログをみるためのガイド」をご覧ください。

Update中OpenSees コマンド 日本語解説 の 目次 OpenSeesコマンド はじめての方は「ここから
このblogで使用しているOpenSeesコマンド集は「ここ」 Update中
OpenSees のソースコード 解析に挑戦してみる 目次最初のページは「ソースコードのダウンロードとビルド」
Appendix:C言語での 「有限要素法における平面トラスの解析」目次最初のページは「Microsoft Visual Studioの導入方法」







目次の中で、更新したページにはNewがついています

このブログ内の単語を検索したい場合は、左上OpenSeesロゴの上に検索窓から検索できます。


2015年3月10日火曜日

<有限要素法>固定条件の処理


節点(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 件のコメント:

コメントを投稿