| 553 | |
| 554 | |
| 555 | void |
| 556 | CorotCrdTransf3d::compTransfMatrixBasicGlobal(void) |
| 557 | { |
| 558 | // extract columns of rotation matrices |
| 559 | int i, j, k; |
| 560 | |
| 561 | //opserr << "comprTransfMatrixBasicGlobal: *****************************\n"; |
| 562 | static Vector r1(3), r2(3), r3(3); |
| 563 | static Vector e1(3), e2(3), e3(3); |
| 564 | static Vector rI1(3), rI2(3), rI3(3); |
| 565 | static Vector rJ1(3), rJ2(3), rJ3(3); |
| 566 | |
| 567 | for (k = 0; k < 3; k ++) |
| 568 | { |
| 569 | r1(k) = Rbar(k,0); |
| 570 | r2(k) = Rbar(k,1); |
| 571 | r3(k) = Rbar(k,2); |
| 572 | |
| 573 | e1(k) = e(k,0); |
| 574 | e2(k) = e(k,1); |
| 575 | e3(k) = e(k,2); |
| 576 | |
| 577 | rI1(k) = RI(k,0); |
| 578 | rI2(k) = RI(k,1); |
| 579 | rI3(k) = RI(k,2); |
| 580 | |
| 581 | rJ1(k) = RJ(k,0); |
| 582 | rJ2(k) = RJ(k,1); |
| 583 | rJ3(k) = RJ(k,2); |
| 584 | } |
| 585 | |
| 586 | // compute the transformation matrix from the basic to the |
| 587 | // global system |
| 588 | static Matrix I(3,3); |
| 589 | |
| 590 | // A = (1/Ln)*(I - e1*e1'); |
| 591 | for (i = 0; i < 3; i++) |
| 592 | I(i,i) = 1; |
| 593 | |
| 594 | for (i = 0; i < 3; i++) |
| 595 | for (j = 0; j < 3; j++) |
| 596 | A(i,j) = (I(i,j) - e1(i)*e1(j))/Ln; |
| 597 | |
| 598 | Lr2 = this->getLMatrix (r2); |
| 599 | Lr3 = this->getLMatrix (r3); |
| 600 | |
| 601 | static Matrix Sr1(3,3), Sr2(3,3), Sr3(3,3); |
| 602 | static Vector Se(3), At(3); |
| 603 | |
| 604 | // T1 = [ O', (-S(rI3)*e2 + S(rI2)*e3)', O', O']'; |
| 605 | // T2 = [(A*rI2)', (-S(rI2)*e1 + S(rI1)*e2)', -(A*rI2)', O']'; |
| 606 | // T3 = [(A*rI3)', (-S(rI3)*e1 + S(rI1)*e3)', -(A*rI3)', O']'; |
| 607 | // |
| 608 | // T4 = [ O', O', O', (-S(rJ3)*e2 + S(rJ2)*e3)']'; |
| 609 | // T5 = [(A*rJ2)', O', -(A*rJ2)', (-S(rJ2)*e1 + S(rJ1)*e2)']'; |
| 610 | // T6 = [(A*rJ3)', O', -(A*rJ3)', (-S(rJ3)*e1 + S(rJ1)*e3)']'; |
| 611 | |
| 612 | T.Zero(); |
no test coverage detected