| 1793 | } |
| 1794 | |
| 1795 | Matrix MixedBeamColumn3d::getNld_hat(int sec, const Vector &v, double L, bool geomLinear) { |
| 1796 | double xi[MAX_NUM_SECTIONS]; |
| 1797 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1798 | |
| 1799 | double x, C, E, F; |
| 1800 | Matrix Nld_hat(NDM_SECTION,NDM_NATURAL); |
| 1801 | Nld_hat.Zero(); |
| 1802 | |
| 1803 | x = L*xi[sec]; |
| 1804 | |
| 1805 | C = 1/L; |
| 1806 | E = -4/L + 6*x/(L*L); |
| 1807 | F = -2/L + 6*x/(L*L); |
| 1808 | |
| 1809 | if (geomLinear) { |
| 1810 | |
| 1811 | Nld_hat(0,0) = C; |
| 1812 | Nld_hat(1,1) = E; |
| 1813 | Nld_hat(1,3) = F; |
| 1814 | Nld_hat(2,2) = E; |
| 1815 | Nld_hat(2,4) = F; |
| 1816 | |
| 1817 | } else { |
| 1818 | |
| 1819 | double A,B; |
| 1820 | A = 1 - 4 * ( x / L ) + 3 * pow ( ( x / L ) , 2 ); |
| 1821 | B = - 2 * ( x / L ) + 3 * pow ( ( x / L ) , 2 ); |
| 1822 | |
| 1823 | Nld_hat(0,0) = C + C*C*v(0); |
| 1824 | Nld_hat(0,1) = A*A*v(1) + A*B*v(3); |
| 1825 | Nld_hat(0,2) = A*A*v(2) + A*B*v(4); |
| 1826 | Nld_hat(0,3) = A*B*v(1) + B*B*v(3); |
| 1827 | Nld_hat(0,4) = A*B*v(2) + B*B*v(4); |
| 1828 | Nld_hat(1,1) = E; |
| 1829 | Nld_hat(1,3) = F; |
| 1830 | Nld_hat(2,2) = E; |
| 1831 | Nld_hat(2,4) = F; |
| 1832 | } |
| 1833 | |
| 1834 | return Nld_hat; |
| 1835 | } |
| 1836 | |
| 1837 | Matrix MixedBeamColumn3d::getNd2(int sec, double P, double L) { |
| 1838 | double xi[MAX_NUM_SECTIONS]; |
no test coverage detected