| 1588 | } |
| 1589 | |
| 1590 | Matrix MixedBeamColumn2d::getNld_hat(int sec, const Vector &v, double L, bool geomLinear) { |
| 1591 | double xi[MAX_NUM_SECTIONS]; |
| 1592 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1593 | |
| 1594 | double x, C, E, F; |
| 1595 | |
| 1596 | x = L*xi[sec]; |
| 1597 | C = 1/L; |
| 1598 | E = -4/L + 6*x/(L*L); |
| 1599 | F = -2/L + 6*x/(L*L); |
| 1600 | |
| 1601 | theSectionNaturalMatrix.Zero(); |
| 1602 | if (geomLinear) { |
| 1603 | theSectionNaturalMatrix(0,0) = C; |
| 1604 | theSectionNaturalMatrix(1,1) = E; |
| 1605 | theSectionNaturalMatrix(1,2) = F; |
| 1606 | } else { |
| 1607 | double A,B; |
| 1608 | A = 1 - 4 * ( x / L ) + 3 * pow ( ( x / L ) , 2 ); |
| 1609 | B = - 2 * ( x / L ) + 3 * pow ( ( x / L ) , 2 ); |
| 1610 | theSectionNaturalMatrix(0,0) = C + C*C*v(0); |
| 1611 | theSectionNaturalMatrix(0,1) = A*A*v(1) + A*B*v(2); |
| 1612 | theSectionNaturalMatrix(0,2) = A*B*v(1) + B*B*v(2); |
| 1613 | theSectionNaturalMatrix(1,1) = E; |
| 1614 | theSectionNaturalMatrix(1,2) = F; |
| 1615 | } |
| 1616 | |
| 1617 | return theSectionNaturalMatrix; |
| 1618 | } |
| 1619 | |
| 1620 | Matrix |
| 1621 | MixedBeamColumn2d::getNd2(int sec, double P, double L){ |
no test coverage detected