| 1619 | } |
| 1620 | |
| 1621 | int |
| 1622 | ComponentElement3d::getResponse (int responseID, Information &eleInfo) |
| 1623 | { |
| 1624 | double N, M1, M2, V; |
| 1625 | double L = theCoordTransf->getInitialLength(); |
| 1626 | this->getResistingForce(); |
| 1627 | static Vector vect4(4); |
| 1628 | static Vector vect2(2); |
| 1629 | static Matrix kb(6,6); |
| 1630 | |
| 1631 | switch (responseID) { |
| 1632 | case 1: // stiffness |
| 1633 | return eleInfo.setMatrix(this->getTangentStiff()); |
| 1634 | |
| 1635 | case 2: // global forces |
| 1636 | return eleInfo.setVector(this->getResistingForce()); |
| 1637 | |
| 1638 | case 3: // local forces |
| 1639 | // Axial |
| 1640 | N = q(0); |
| 1641 | P(3) = N; |
| 1642 | P(0) = -N+p0[0]; |
| 1643 | // Moment |
| 1644 | M1 = q(1); |
| 1645 | M2 = q(2); |
| 1646 | P(2) = M1; |
| 1647 | P(5) = M2; |
| 1648 | // Shear |
| 1649 | V = (M1+M2)/L; |
| 1650 | P(1) = V+p0[1]; |
| 1651 | P(4) = -V+p0[2]; |
| 1652 | return eleInfo.setVector(P); |
| 1653 | |
| 1654 | case 4: // basic forces |
| 1655 | return eleInfo.setVector(q); |
| 1656 | |
| 1657 | case 5: // basic forces |
| 1658 | vect4.Zero(); |
| 1659 | if (end1zHinge != 0) { |
| 1660 | vect4(0) = end1zHinge->getStrain(); |
| 1661 | vect4(1) = end1zHinge->getStress(); |
| 1662 | } |
| 1663 | if (end2zHinge != 0) { |
| 1664 | vect4(2) = end2zHinge->getStrain(); |
| 1665 | vect4(3) = end2zHinge->getStress(); |
| 1666 | } |
| 1667 | return eleInfo.setVector(vect4); |
| 1668 | |
| 1669 | case 6: // basic forces |
| 1670 | if (end1zHinge != 0) { |
| 1671 | vect2(0) = end1zHinge->getTangent(); |
| 1672 | } |
| 1673 | if (end2zHinge != 0) { |
| 1674 | vect2(1) = end2zHinge->getTangent(); |
| 1675 | } |
| 1676 | return eleInfo.setVector(vect2); |
| 1677 | |
| 1678 | case 19: |
nothing calls this directly
no test coverage detected