| 3691 | } |
| 3692 | |
| 3693 | int |
| 3694 | ForceBeamColumn3d::getResponseSensitivity(int responseID, int gradNumber, |
| 3695 | Information &eleInfo) |
| 3696 | { |
| 3697 | // Basic deformation sensitivity |
| 3698 | if (responseID == 3) { |
| 3699 | const Vector &dvdh = crdTransf->getBasicDisplSensitivity(gradNumber); |
| 3700 | return eleInfo.setVector(dvdh); |
| 3701 | } |
| 3702 | |
| 3703 | // Basic force sensitivity |
| 3704 | else if (responseID == 7) { |
| 3705 | static Vector dqdh(6); |
| 3706 | |
| 3707 | const Vector &dvdh = crdTransf->getBasicDisplSensitivity(gradNumber); |
| 3708 | |
| 3709 | dqdh.addMatrixVector(0.0, kv, dvdh, 1.0); |
| 3710 | |
| 3711 | dqdh.addVector(1.0, this->computedqdh(gradNumber), 1.0); |
| 3712 | //opserr << "FBC2d: " << gradNumber; |
| 3713 | |
| 3714 | return eleInfo.setVector(dqdh); |
| 3715 | } |
| 3716 | |
| 3717 | // dsdh |
| 3718 | else if (responseID == 76) { |
| 3719 | |
| 3720 | int sectionNum = eleInfo.theInt; |
| 3721 | int order = sections[sectionNum-1]->getOrder(); |
| 3722 | |
| 3723 | Vector dsdh(order); |
| 3724 | dsdh.Zero(); |
| 3725 | |
| 3726 | if (numEleLoads > 0) { |
| 3727 | this->computeSectionForceSensitivity(dsdh, sectionNum-1, gradNumber); |
| 3728 | } |
| 3729 | //opserr << "FBC3d::getRespSens dspdh: " << dsdh; |
| 3730 | static Vector dqdh(6); |
| 3731 | |
| 3732 | const Vector &dvdh = crdTransf->getBasicDisplSensitivity(gradNumber); |
| 3733 | |
| 3734 | dqdh.addMatrixVector(0.0, kv, dvdh, 1.0); |
| 3735 | |
| 3736 | dqdh.addVector(1.0, this->computedqdh(gradNumber), 1.0); |
| 3737 | |
| 3738 | //opserr << "FBC3d::getRespSens dqdh: " << dqdh; |
| 3739 | |
| 3740 | double L = crdTransf->getInitialLength(); |
| 3741 | double oneOverL = 1.0/L; |
| 3742 | double pts[maxNumSections]; |
| 3743 | beamIntegr->getSectionLocations(numSections, L, pts); |
| 3744 | |
| 3745 | const ID &code = sections[sectionNum-1]->getType(); |
| 3746 | |
| 3747 | double xL = pts[sectionNum-1]; |
| 3748 | double xL1 = xL-1.0; |
| 3749 | |
| 3750 | for (int ii = 0; ii < order; ii++) { |
nothing calls this directly
no test coverage detected