| 1707 | } |
| 1708 | |
| 1709 | Vector MixedBeamColumn3d::getd_hat(int sec, const Vector &v, double L, bool geomLinear) { |
| 1710 | double xi[MAX_NUM_SECTIONS]; |
| 1711 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1712 | |
| 1713 | double x, C, E, F; |
| 1714 | Vector D_hat(NDM_SECTION); |
| 1715 | D_hat.Zero(); |
| 1716 | |
| 1717 | x = L*xi[sec]; |
| 1718 | C = 1/L; |
| 1719 | E = -4/L + 6*x/(L*L); |
| 1720 | F = -2/L + 6*x/(L*L); |
| 1721 | |
| 1722 | if (geomLinear) { |
| 1723 | |
| 1724 | D_hat(0) = C*v(0); |
| 1725 | D_hat(1) = E*v(1) + F*v(3); |
| 1726 | D_hat(2) = E*v(2) + F*v(4); |
| 1727 | |
| 1728 | } else { |
| 1729 | |
| 1730 | double A,B; |
| 1731 | A = 1 - 4*(x/L) + 3*pow(x/L,2); |
| 1732 | B = - 2*(x/L) + 3*pow(x/L,2); |
| 1733 | |
| 1734 | D_hat(0) = C * v(0) + 0.5 * ( C*C*v(0) ) * v(0) + |
| 1735 | 0.5 * ( A*A*v(1) + A*B*v(3) ) * v(1) + |
| 1736 | 0.5 * ( A*A*v(2) + A*B*v(4) ) * v(2) + |
| 1737 | 0.5 * ( A*B*v(1) + B*B*v(3) ) * v(3) + |
| 1738 | 0.5 * ( A*B*v(2) + B*B*v(4) ) * v(4); |
| 1739 | D_hat(1) = E*v(1) + F*v(3); |
| 1740 | D_hat(2) = E*v(2) + F*v(4); |
| 1741 | |
| 1742 | } |
| 1743 | |
| 1744 | return D_hat; |
| 1745 | } |
| 1746 | |
| 1747 | Matrix MixedBeamColumn3d::getKg(int sec, double P, double L) { |
| 1748 | double xi[MAX_NUM_SECTIONS]; |
no test coverage detected