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

Method setPressureLoadAtNodes

SRC/element/UWelements/SSPquadUP.cpp:1277–1337  ·  view source on GitHub ↗

LM change nodes numbering 4-----3 | | | | 1-----2 UpperSide - 34 LowerSide - 12 LeftSide 14 RightSide - 23

Source from the content-addressed store, hash-verified

1275// 1-----2
1276// UpperSide - 34 LowerSide - 12 LeftSide 14 RightSide - 23
1277void
1278SSPquadUP::setPressureLoadAtNodes(void)
1279{
1280 pressureLoad.Zero();
1281
1282 if (pressureUpperSide == 0.0 && pressureLowerSide == 0.0 && pressureLeftSide == 0.0 && pressureRightSide == 0.0) {
1283 return;
1284 }
1285
1286 const Vector &node1 = theNodes[0]->getCrds();
1287 const Vector &node2 = theNodes[1]->getCrds();
1288 const Vector &node3 = theNodes[2]->getCrds();
1289 const Vector &node4 = theNodes[3]->getCrds();
1290
1291 double x1 = node1(0);
1292 double y1 = node1(1);
1293 double x2 = node2(0);
1294 double y2 = node2(1);
1295 double x3 = node3(0);
1296 double y3 = node3(1);
1297 double x4 = node4(0);
1298 double y4 = node4(1);
1299
1300 double dx12 = x2-x1;
1301 double dy12 = y2-y1;
1302 double dx23 = x3-x2;
1303 double dy23 = y3-y2;
1304 double dx34 = x4-x3;
1305 double dy34 = y4-y3;
1306 double dx41 = x1-x4;
1307 double dy41 = y1-y4;
1308
1309 double pressureOver12 = pressureLowerSide*mThickness/2.0;
1310 double pressureOver23 = pressureRightSide*mThickness/2.0;
1311 double pressureOver34 = pressureUpperSide*mThickness/2.0;
1312 double pressureOver41 = pressureLeftSide*mThickness/2.0;
1313
1314 // Contribution from side 12
1315 pressureLoad(0) += pressureOver12*dy12; // horizontal node 1 load
1316 pressureLoad(3) += pressureOver12*dy12; // horizontal node 2 load
1317 pressureLoad(1) += pressureOver12*-dx12; // vertical node 1 load
1318 pressureLoad(2) += pressureOver12*-dx12; // vertical node 2 load
1319
1320 // Contribution from side 12
1321 pressureLoad(3) += pressureOver23*dy23; // horizontal node 2 load
1322 pressureLoad(6) += pressureOver23*dy23; // horizontal node 3 load
1323 pressureLoad(4) += pressureOver23*-dx23; // vertical node 2 load
1324 pressureLoad(7) += pressureOver23*-dx23; // vertical node 3 load
1325
1326 // Contribution from side 12
1327 pressureLoad(6) += pressureOver34*dy34; // horizontal node 3 load
1328 pressureLoad(9) += pressureOver34*dy34; // horizontal node 4 load
1329 pressureLoad(7) += pressureOver34*-dx34; // vertical node 3 load
1330 pressureLoad(10) += pressureOver34*-dx34; // vertical node 4 load
1331
1332 // Contribution from side 12
1333 pressureLoad(9) += pressureOver41*dy41; // horizontal node 4 load
1334 pressureLoad(0) += pressureOver41*dy41; // horizontal node 1 load

Callers 2

setDomainMethod · 0.95
updateParameterMethod · 0.95

Calls 2

getCrdsMethod · 0.80
ZeroMethod · 0.45

Tested by

no test coverage detected