| 1857 | } |
| 1858 | |
| 1859 | Matrix MixedBeamColumn3d::getNd1(int sec, const Vector &v, double L, bool geomLinear) { |
| 1860 | double xi[MAX_NUM_SECTIONS]; |
| 1861 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1862 | |
| 1863 | double x = L*xi[sec]; |
| 1864 | |
| 1865 | Matrix Nd1(NDM_SECTION,NDM_NATURAL); |
| 1866 | Nd1.Zero(); |
| 1867 | |
| 1868 | if (geomLinear) { |
| 1869 | |
| 1870 | Nd1(0,0) = 1.0; |
| 1871 | Nd1(1,1) = -x/L + 1.0; |
| 1872 | Nd1(1,3) = x/L; |
| 1873 | Nd1(2,2) = -x/L + 1.0; |
| 1874 | Nd1(2,4) = x/L; |
| 1875 | |
| 1876 | } else { |
| 1877 | |
| 1878 | double A,B; |
| 1879 | |
| 1880 | A = L * ( x/L - 2*pow(x/L,2) + pow(x/L,3) ) * v[1] |
| 1881 | + L * ( -pow(x/L,2) + pow(x/L,3) ) * v[3]; |
| 1882 | |
| 1883 | B = L * ( x/L - 2*pow(x/L,2) + pow(x/L,3) ) * v[2] |
| 1884 | + L * ( -pow(x/L,2) + pow(x/L,3) ) * v[4]; |
| 1885 | |
| 1886 | Nd1(0,0) = 1.0; |
| 1887 | Nd1(1,0) = A; |
| 1888 | Nd1(1,1) = -x/L + 1.0; |
| 1889 | Nd1(1,3) = x/L; |
| 1890 | Nd1(2,0) = B; |
| 1891 | Nd1(2,2) = -x/L + 1.0; |
| 1892 | Nd1(2,4) = x/L; |
| 1893 | } |
| 1894 | |
| 1895 | return Nd1; |
| 1896 | } |
| 1897 | |
| 1898 | void MixedBeamColumn3d::getSectionTangent(int sec,int type,Matrix &kSection, |
| 1899 | double &GJ) { |
no test coverage detected