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

Method addPDeltaStiff

SRC/element/twoNodeLink/TwoNodeLink.cpp:1671–1768  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1669
1670
1671void TwoNodeLink::addPDeltaStiff(Matrix &kLocal, const Vector& qBasic)
1672{
1673 int dirID;
1674 double N = 0.0;
1675
1676 // get axial force
1677 for (int i=0; i<numDIR; i++) {
1678 if ((*dir)(i) == 0)
1679 N = qBasic(i);
1680 }
1681
1682 if (N != 0.0) {
1683 for (int i=0; i<numDIR; i++) {
1684 dirID = (*dir)(i); // direction 0 to 5;
1685
1686 // switch on dimensionality of element
1687 switch (elemType) {
1688 case D2N4:
1689 if (dirID == 1) {
1690 double NoverL = N/L;
1691 NoverL *= 1.0-Mratio(2)-Mratio(3);
1692 kLocal(1,1) += NoverL;
1693 kLocal(1,3) -= NoverL;
1694 kLocal(3,1) -= NoverL;
1695 kLocal(3,3) += NoverL;
1696 }
1697 break;
1698 case D2N6:
1699 if (dirID == 1) {
1700 double NoverL = N/L;
1701 NoverL *= 1.0-Mratio(2)-Mratio(3);
1702 kLocal(1,1) += NoverL;
1703 kLocal(1,4) -= NoverL;
1704 kLocal(4,1) -= NoverL;
1705 kLocal(4,4) += NoverL;
1706 }
1707 else if (dirID == 2) {
1708 kLocal(2,1) -= Mratio(2)*N;
1709 kLocal(2,4) += Mratio(2)*N;
1710 kLocal(5,1) -= Mratio(3)*N;
1711 kLocal(5,4) += Mratio(3)*N;
1712 }
1713 break;
1714 case D3N6:
1715 if (dirID == 1) {
1716 double NoverL = N/L;
1717 NoverL *= 1.0-Mratio(2)-Mratio(3);
1718 kLocal(1,1) += NoverL;
1719 kLocal(1,4) -= NoverL;
1720 kLocal(4,1) -= NoverL;
1721 kLocal(4,4) += NoverL;
1722 }
1723 else if (dirID == 2) {
1724 double NoverL = N/L;
1725 NoverL *= 1.0-Mratio(0)-Mratio(1);
1726 kLocal(2,2) += NoverL;
1727 kLocal(2,5) -= NoverL;
1728 kLocal(5,2) -= NoverL;

Callers 1

TwoNodeLink.cppFile · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected