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

Method addPDeltaForces

SRC/element/twoNodeLink/Inerter.cpp:1281–1371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1279
1280
1281void Inerter::addPDeltaForces(Vector &pLocal, const Vector &qBasic)
1282{
1283 int dirID;
1284 double N = 0.0;
1285 double deltal1 = 0.0;
1286 double deltal2 = 0.0;
1287
1288 for (int i=0; i<numDIR; i++) {
1289 dirID = dir(i); // direction 0 to 5;
1290
1291 // get axial force and local disp differences
1292 if (dirID == 0)
1293 N = qBasic(i);
1294 else if (dirID == 1 && numDIM > 1)
1295 deltal1 = ul(1+numDOF/2) - ul(1);
1296 else if (dirID == 2 && numDIM > 2)
1297 deltal2 = ul(2+numDOF/2) - ul(2);
1298 }
1299
1300 if (N != 0.0 && (deltal1 != 0.0 || deltal2 != 0.0)) {
1301 for (int i=0; i<numDIR; i++) {
1302 dirID = dir(i); // direction 0 to 5;
1303
1304 // switch on dimensionality of element
1305 switch (elemType) {
1306 case D2N4:
1307 if (dirID == 1) {
1308 double VpDelta = N*deltal1/L;
1309 VpDelta *= 1.0-Mratio(2)-Mratio(3);
1310 pLocal(1) -= VpDelta;
1311 pLocal(3) += VpDelta;
1312 }
1313 break;
1314 case D2N6:
1315 if (dirID == 1) {
1316 double VpDelta = N*deltal1/L;
1317 VpDelta *= 1.0-Mratio(2)-Mratio(3);
1318 pLocal(1) -= VpDelta;
1319 pLocal(4) += VpDelta;
1320 }
1321 else if (dirID == 2) {
1322 double MpDelta = N*deltal1;
1323 pLocal(2) += Mratio(2)*MpDelta;
1324 pLocal(5) += Mratio(3)*MpDelta;
1325 }
1326 break;
1327 case D3N6:
1328 if (dirID == 1) {
1329 double VpDelta = N*deltal1/L;
1330 VpDelta *= 1.0-Mratio(2)-Mratio(3);
1331 pLocal(1) -= VpDelta;
1332 pLocal(4) += VpDelta;
1333 }
1334 else if (dirID == 2) {
1335 double VpDelta = N*deltal2/L;
1336 VpDelta *= 1.0-Mratio(0)-Mratio(1);
1337 pLocal(2) -= VpDelta;
1338 pLocal(5) += VpDelta;

Callers 2

getResponseMethod · 0.95
Inerter.cppFile · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected