| 1637 | |
| 1638 | |
| 1639 | Matrix |
| 1640 | MixedBeamColumn2d::getNd1(int sec, const Vector &v, double L, bool geomLinear){ |
| 1641 | double xi[MAX_NUM_SECTIONS]; |
| 1642 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1643 | |
| 1644 | double x = L * xi[sec]; |
| 1645 | |
| 1646 | theSectionNaturalMatrix.Zero(); |
| 1647 | if (geomLinear) { |
| 1648 | theSectionNaturalMatrix(0,0) = 1.0; |
| 1649 | theSectionNaturalMatrix(1,1) = -x/L + 1.0; |
| 1650 | theSectionNaturalMatrix(1,2) = x/L; |
| 1651 | } else { |
| 1652 | double A; |
| 1653 | A = L * ( x/L - 2*pow(x/L,2) + pow(x/L,3) ) * v[1] |
| 1654 | + L * ( -pow(x/L,2) + pow(x/L,3) ) * v[2]; |
| 1655 | |
| 1656 | theSectionNaturalMatrix(0,0) = 1.0; |
| 1657 | theSectionNaturalMatrix(1,0) = A; |
| 1658 | theSectionNaturalMatrix(1,1) = -x/L + 1.0; |
| 1659 | theSectionNaturalMatrix(1,2) = x/L; |
| 1660 | } |
| 1661 | |
| 1662 | return theSectionNaturalMatrix; |
| 1663 | } |
| 1664 | |
| 1665 | |
| 1666 | void MixedBeamColumn2d::getSectionTangent(int sec,int type,Matrix &kSection) { |
no test coverage detected