| 1516 | } |
| 1517 | |
| 1518 | Vector |
| 1519 | MixedBeamColumn2d::getd_hat(int sec, const Vector &v, double L, bool geomLinear){ |
| 1520 | double xi[MAX_NUM_SECTIONS]; |
| 1521 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1522 | |
| 1523 | double x, C, E, F; |
| 1524 | Vector D_hat(NDM_SECTION); |
| 1525 | D_hat.Zero(); |
| 1526 | |
| 1527 | x = L*xi[sec]; |
| 1528 | C = 1/L; |
| 1529 | E = -4/L + 6*x/(L*L); |
| 1530 | F = -2/L + 6*x/(L*L); |
| 1531 | |
| 1532 | if (geomLinear) { |
| 1533 | |
| 1534 | D_hat(0) = C*v(0); |
| 1535 | D_hat(1) = E*v(1) + F*v(2); |
| 1536 | |
| 1537 | } else { |
| 1538 | |
| 1539 | double A,B; |
| 1540 | A = 1 - 4*(x/L) + 3*pow(x/L,2); |
| 1541 | B = - 2*(x/L) + 3*pow(x/L,2); |
| 1542 | |
| 1543 | D_hat(0) = C*v(0) + |
| 1544 | 0.5*A*A*v(1)*v(1) + |
| 1545 | A*B*v(1)*v(2) + |
| 1546 | 0.5*B*B*v(2)*v(2); |
| 1547 | D_hat(1) = E*v(1) + F*v(2); |
| 1548 | |
| 1549 | } |
| 1550 | |
| 1551 | return D_hat; |
| 1552 | } |
| 1553 | |
| 1554 | Matrix |
| 1555 | MixedBeamColumn2d::getKg(int sec, double P, double L) { |
no test coverage detected