OpenSees のコマンド、elementでTrussを設定した場合(たとえば、下記の様なコマンド)
element Truss 1 1 4 10.0 1
での各要素での剛性マトリクスは、
Truss.cppのgetTangentStiff( )で 求めています。
Truss::getTangentStiff(void)
{
if (L == 0.0) { // - problem in setDomain() no further warnings
theMatrix->Zero();
return *theMatrix;
}
double E = theMaterial->getTangent();
// come back later and redo this if too slow
Matrix &stiff = *theMatrix;
int numDOF2 = numDOF/2;
double temp;
double EAoverL = E*A/L;
for (int i = 0; i < dimension; i++) {
for (int j = 0; j < dimension; j++) {
temp = cosX[i]*cosX[j]*EAoverL;
stiff(i,j) = temp;
stiff(i+numDOF2,j) = -temp;
stiff(i,j+numDOF2) = -temp;
stiff(i+numDOF2,j+numDOF2) = temp;
}
}
return stiff;
}
たとえば、2次元2自由度の場合は
numDOF2 は 2
dimensionは2
が入っています
cosX[0]がcos
cosX[1]がsin
です
L: 長さ
A:断面積
E:ヤング率
stiff(i,j) = temp;
は(0,0)(0,1)(1,0)(1,1)
stiff(i+numDOF2,j) = -temp;
は(2,0)(3,0)(2,1)(3,1)
stiff(i,j+numDOF2) = -temp;
は(0,2)(0,3)(1,2)(1,3)
stiff(i+numDOF2,j+numDOF2) = temp;
は(2,2)(2,3)(3,3)(3,2)
の、剛性マトリクス成分に値が入ります。
そのため、 下記(3.33)の [K] が作成されることになります
(坂田弘安 島崎和司著 学芸出版社 建築構造力学 II P67参照)
OpenSees のソースコード解析に挑戦してみる : 目次 |
0 件のコメント:
コメントを投稿