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

Method addPDeltaStiff

SRC/element/twoNodeLink/Inerter.cpp:1374–1471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1372
1373
1374void Inerter::addPDeltaStiff(Matrix &kLocal, const Vector &qBasic)
1375{
1376 int dirID;
1377 double N = 0.0;
1378
1379 // get axial force
1380 for (int i=0; i<numDIR; i++) {
1381 if (dir(i) == 0)
1382 N = qBasic(i);
1383 }
1384
1385 if (N != 0.0) {
1386 for (int i=0; i<numDIR; i++) {
1387 dirID = dir(i); // direction 0 to 5;
1388
1389 // switch on dimensionality of element
1390 switch (elemType) {
1391 case D2N4:
1392 if (dirID == 1) {
1393 double NoverL = N/L;
1394 NoverL *= 1.0-Mratio(2)-Mratio(3);
1395 kLocal(1,1) += NoverL;
1396 kLocal(1,3) -= NoverL;
1397 kLocal(3,1) -= NoverL;
1398 kLocal(3,3) += NoverL;
1399 }
1400 break;
1401 case D2N6:
1402 if (dirID == 1) {
1403 double NoverL = N/L;
1404 NoverL *= 1.0-Mratio(2)-Mratio(3);
1405 kLocal(1,1) += NoverL;
1406 kLocal(1,4) -= NoverL;
1407 kLocal(4,1) -= NoverL;
1408 kLocal(4,4) += NoverL;
1409 }
1410 else if (dirID == 2) {
1411 kLocal(2,1) -= Mratio(2)*N;
1412 kLocal(2,4) += Mratio(2)*N;
1413 kLocal(5,1) -= Mratio(3)*N;
1414 kLocal(5,4) += Mratio(3)*N;
1415 }
1416 break;
1417 case D3N6:
1418 if (dirID == 1) {
1419 double NoverL = N/L;
1420 NoverL *= 1.0-Mratio(2)-Mratio(3);
1421 kLocal(1,1) += NoverL;
1422 kLocal(1,4) -= NoverL;
1423 kLocal(4,1) -= NoverL;
1424 kLocal(4,4) += NoverL;
1425 }
1426 else if (dirID == 2) {
1427 double NoverL = N/L;
1428 NoverL *= 1.0-Mratio(0)-Mratio(1);
1429 kLocal(2,2) += NoverL;
1430 kLocal(2,5) -= NoverL;
1431 kLocal(5,2) -= NoverL;

Callers 1

Inerter.cppFile · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected