| 450 | } |
| 451 | |
| 452 | int |
| 453 | RockingBC::initialize(Node *nodeIPointer, Node *nodeJPointer) |
| 454 | { |
| 455 | int error; |
| 456 | |
| 457 | nodeIPtr = nodeIPointer; |
| 458 | nodeJPtr = nodeJPointer; |
| 459 | |
| 460 | if ((!nodeIPtr) || (!nodeJPtr)) |
| 461 | { |
| 462 | opserr << "\nRockingBC::initialize"; |
| 463 | opserr << "\ninvalid pointers to the element nodes\n"; |
| 464 | return -1; |
| 465 | } |
| 466 | |
| 467 | // get element length and orientation |
| 468 | if ((error = this->compElemtLengthAndOrient())) |
| 469 | return error; |
| 470 | |
| 471 | fr_calc(); |
| 472 | |
| 473 | k1 = 1.0 / fr(2, 2); |
| 474 | k2 = fr(2, 1) / fr(2, 2); |
| 475 | frr(0, 0) = fr(0, 0); |
| 476 | frr(1, 1) = fr(1, 1) - fr(1, 2) * fr(2, 1) / fr(2, 2); |
| 477 | |
| 478 | dw1_due = Vector(6); dw1_due(2) = 1.0; |
| 479 | dr_due = Vector(6); dr_due(4) = 1.0 / L; dr_due(1) = -1.0 / L; |
| 480 | dw2_due = Vector(6); dw2_due(5) = 1.0; |
| 481 | |
| 482 | durth_due = Matrix(2, 6); |
| 483 | durth_dW = Matrix(2, Nw); |
| 484 | |
| 485 | CC = Matrix(Nw, 2); |
| 486 | for (int i = 0; i != Nw; i++) { |
| 487 | CC(i, 0) = 1.0; |
| 488 | CC(i, 1) = Yw(i); |
| 489 | } |
| 490 | |
| 491 | BB(0, 0) = 1. / b; |
| 492 | BB(1, 1) = 1.; |
| 493 | |
| 494 | CB = CC*BB; |
| 495 | |
| 496 | dutar_due = Matrix(2, 6); |
| 497 | dutar_dW = Matrix(2, Nw); |
| 498 | |
| 499 | TF1(0, 0) = 1; |
| 500 | TF1(1, 1) = b; |
| 501 | TF1(2, 1) = -b; |
| 502 | TF1(2, 2) = -L; |
| 503 | TF = b*w*TF1*E; |
| 504 | |
| 505 | return 0; |
| 506 | } |
| 507 | |
| 508 | int |
| 509 | RockingBC::compElemtLengthAndOrient(void) |
no test coverage detected