MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / addPDeltaStiff

Method addPDeltaStiff

SRC/element/twoNodeLink/LinearElasticSpring.cpp:1277–1374  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1275
1276
1277void LinearElasticSpring::addPDeltaStiff(Matrix &kLocal, const Vector& qBasic)
1278{
1279 int dirID;
1280 double N = 0.0;
1281
1282 // get axial force
1283 for (int i=0; i<numDIR; i++) {
1284 if (dir(i) == 0)
1285 N = qBasic(i);
1286 }
1287
1288 if (N != 0.0) {
1289 for (int i=0; i<numDIR; i++) {
1290 dirID = dir(i); // direction 0 to 5;
1291
1292 // switch on dimensionality of element
1293 switch (elemType) {
1294 case D2N4:
1295 if (dirID == 1) {
1296 double NoverL = N/L;
1297 NoverL *= 1.0-Mratio(2)-Mratio(3);
1298 kLocal(1,1) += NoverL;
1299 kLocal(1,3) -= NoverL;
1300 kLocal(3,1) -= NoverL;
1301 kLocal(3,3) += NoverL;
1302 }
1303 break;
1304 case D2N6:
1305 if (dirID == 1) {
1306 double NoverL = N/L;
1307 NoverL *= 1.0-Mratio(2)-Mratio(3);
1308 kLocal(1,1) += NoverL;
1309 kLocal(1,4) -= NoverL;
1310 kLocal(4,1) -= NoverL;
1311 kLocal(4,4) += NoverL;
1312 }
1313 else if (dirID == 2) {
1314 kLocal(2,1) -= Mratio(2)*N;
1315 kLocal(2,4) += Mratio(2)*N;
1316 kLocal(5,1) -= Mratio(3)*N;
1317 kLocal(5,4) += Mratio(3)*N;
1318 }
1319 break;
1320 case D3N6:
1321 if (dirID == 1) {
1322 double NoverL = N/L;
1323 NoverL *= 1.0-Mratio(2)-Mratio(3);
1324 kLocal(1,1) += NoverL;
1325 kLocal(1,4) -= NoverL;
1326 kLocal(4,1) -= NoverL;
1327 kLocal(4,4) += NoverL;
1328 }
1329 else if (dirID == 2) {
1330 double NoverL = N/L;
1331 NoverL *= 1.0-Mratio(0)-Mratio(1);
1332 kLocal(2,2) += NoverL;
1333 kLocal(2,5) -= NoverL;
1334 kLocal(5,2) -= NoverL;

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected