| 3502 | } |
| 3503 | |
| 3504 | int |
| 3505 | ForceBeamColumn3dThermal::getResponse(int responseID, Information &eleInfo) |
| 3506 | { |
| 3507 | static Vector vp(6); |
| 3508 | static Matrix fe(6,6); |
| 3509 | |
| 3510 | if (responseID == 1) |
| 3511 | return eleInfo.setVector(this->getResistingForce()); |
| 3512 | |
| 3513 | else if (responseID == 2) { |
| 3514 | double p0[5]; p0[0] = p0[1] = p0[2] = p0[3] = p0[4] = 0.0; |
| 3515 | if (numEleLoads > 0) |
| 3516 | this->computeReactions(p0); |
| 3517 | // Axial |
| 3518 | double N = Se(0); |
| 3519 | theVector(6) = N; |
| 3520 | theVector(0) = -N+p0[0]; |
| 3521 | |
| 3522 | // Torsion |
| 3523 | double T = Se(5); |
| 3524 | theVector(9) = T; |
| 3525 | theVector(3) = -T; |
| 3526 | |
| 3527 | // Moments about z and shears along y |
| 3528 | double M1 = Se(1); |
| 3529 | double M2 = Se(2); |
| 3530 | theVector(5) = M1; |
| 3531 | theVector(11) = M2; |
| 3532 | double L = crdTransf->getInitialLength(); |
| 3533 | double V = (M1+M2)/L; |
| 3534 | theVector(1) = V+p0[1]; |
| 3535 | theVector(7) = -V+p0[2]; |
| 3536 | |
| 3537 | // Moments about y and shears along z |
| 3538 | M1 = Se(3); |
| 3539 | M2 = Se(4); |
| 3540 | theVector(4) = M1; |
| 3541 | theVector(10) = M2; |
| 3542 | V = (M1+M2)/L; |
| 3543 | theVector(2) = -V+p0[3]; |
| 3544 | theVector(8) = V+p0[4]; |
| 3545 | |
| 3546 | return eleInfo.setVector(theVector); |
| 3547 | |
| 3548 | } |
| 3549 | |
| 3550 | else if (responseID == 21) |
| 3551 | return eleInfo.setVector(this->getDampingForce()); |
| 3552 | |
| 3553 | else if (responseID == 22) { |
| 3554 | Vector Sd(NEBD); |
| 3555 | Sd = theDamping->getDampingForce(); |
| 3556 | // Axial |
| 3557 | double N = Sd(0); |
| 3558 | theVector(6) = N; |
| 3559 | theVector(0) = -N; |
| 3560 | |
| 3561 | // Torsion |
nothing calls this directly
no test coverage detected