| 3581 | } |
| 3582 | |
| 3583 | int |
| 3584 | ForceBeamColumnCBDI3d::getResponse(int responseID, Information &eleInfo) |
| 3585 | { |
| 3586 | static Vector vp(6); |
| 3587 | static Matrix fe(6,6); |
| 3588 | |
| 3589 | if (responseID == 1) |
| 3590 | return eleInfo.setVector(this->getResistingForce()); |
| 3591 | |
| 3592 | else if (responseID == 2) { |
| 3593 | double p0[6]; |
| 3594 | p0[0] = 0.0; p0[1] = 0.0; p0[2] = 0.0; |
| 3595 | p0[3] = 0.0; p0[4] = 0.0; p0[5] = 0.0; |
| 3596 | if (numEleLoads > 0) |
| 3597 | this->computeReactions(p0); |
| 3598 | theVector(3) = Se(0); |
| 3599 | theVector(0) = -Se(0)+p0[0]; |
| 3600 | theVector(2) = Se(1); |
| 3601 | theVector(5) = Se(2); |
| 3602 | double V = (Se(1)+Se(2))/crdTransf->getInitialLength(); |
| 3603 | theVector(1) = V+p0[1]; |
| 3604 | theVector(4) = -V+p0[2]; |
| 3605 | return eleInfo.setVector(theVector); |
| 3606 | } |
| 3607 | |
| 3608 | else if (responseID == 7) { |
| 3609 | return eleInfo.setVector(Se); |
| 3610 | } |
| 3611 | |
| 3612 | else if (responseID == 19) { |
| 3613 | return eleInfo.setMatrix(kv); |
| 3614 | } |
| 3615 | |
| 3616 | // Chord rotation |
| 3617 | else if (responseID == 3) { |
| 3618 | vp = crdTransf->getBasicTrialDisp(); |
| 3619 | return eleInfo.setVector(vp); |
| 3620 | } |
| 3621 | |
| 3622 | // Plastic rotation |
| 3623 | else if (responseID == 4) { |
| 3624 | this->getInitialFlexibility(fe); |
| 3625 | vp = crdTransf->getBasicTrialDisp(); |
| 3626 | vp.addMatrixVector(1.0, fe, Se, -1.0); |
| 3627 | static Vector v0(6); |
| 3628 | this->getInitialDeformations(v0); |
| 3629 | vp.addVector(1.0, v0, -1.0); |
| 3630 | return eleInfo.setVector(vp); |
| 3631 | } |
| 3632 | |
| 3633 | // Point of inflection |
| 3634 | else if (responseID == 5) { |
| 3635 | double LI = 0.0; |
| 3636 | |
| 3637 | if (fabs(Se(1)+Se(2)) > DBL_EPSILON) { |
| 3638 | double L = crdTransf->getInitialLength(); |
| 3639 | |
| 3640 | LI = Se(1)/(Se(1)+Se(2))*L; |
nothing calls this directly
no test coverage detected