NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** */
| 724 | /********* NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** |
| 725 | */ |
| 726 | int |
| 727 | ForceBeamColumnCBDI2d::update() |
| 728 | { |
| 729 | // if have completed a recvSelf() - do a revertToLastCommit |
| 730 | // to get Ssr, etc. set correctly |
| 731 | if (initialFlag == 2) |
| 732 | this->revertToLastCommit(); |
| 733 | |
| 734 | // update the transformation |
| 735 | crdTransf->update(); |
| 736 | |
| 737 | // get basic displacements and increments |
| 738 | const Vector &v = crdTransf->getBasicTrialDisp(); |
| 739 | |
| 740 | static Vector dv(NEBD); |
| 741 | |
| 742 | dv = crdTransf->getBasicIncrDeltaDisp(); |
| 743 | |
| 744 | if (initialFlag != 0 && dv.Norm() <= DBL_EPSILON && numEleLoads == 0) |
| 745 | return 0; |
| 746 | |
| 747 | static Vector vin(NEBD); |
| 748 | vin = v; |
| 749 | vin -= dv; |
| 750 | |
| 751 | double L = crdTransf->getInitialLength(); |
| 752 | double oneOverL = 1.0/L; |
| 753 | |
| 754 | double xi[maxNumSections]; |
| 755 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 756 | |
| 757 | double wt[maxNumSections]; |
| 758 | beamIntegr->getSectionWeights(numSections, L, wt); |
| 759 | |
| 760 | static Vector vr(NEBD); // element residual displacements |
| 761 | static Matrix f(NEBD,NEBD); // element flexibility matrix |
| 762 | |
| 763 | static Matrix I(NEBD,NEBD); // an identity matrix for matrix inverse |
| 764 | double dW; // section strain energy (work) norm |
| 765 | int i, j; |
| 766 | |
| 767 | I.Zero(); |
| 768 | for (i=0; i<NEBD; i++) |
| 769 | I(i,i) = 1.0; |
| 770 | |
| 771 | int numSubdivide = 1; |
| 772 | bool converged = false; |
| 773 | static Vector dSe(NEBD); |
| 774 | static Vector dvToDo(NEBD); |
| 775 | static Vector dvTrial(NEBD); |
| 776 | static Vector SeTrial(NEBD); |
| 777 | static Matrix kvTrial(NEBD, NEBD); |
| 778 | |
| 779 | dvToDo = dv; |
| 780 | dvTrial = dvToDo; |
| 781 | |
| 782 | static double factor = 10; |
| 783 |
no test coverage detected