NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** */
| 760 | /********* NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** |
| 761 | */ |
| 762 | int |
| 763 | ForceBeamColumnCBDI3d::update() |
| 764 | { |
| 765 | // if have completed a recvSelf() - do a revertToLastCommit |
| 766 | // to get Ssr, etc. set correctly |
| 767 | if (initialFlag == 2) |
| 768 | this->revertToLastCommit(); |
| 769 | |
| 770 | // update the transformation |
| 771 | crdTransf->update(); |
| 772 | |
| 773 | // get basic displacements and increments |
| 774 | const Vector &v = crdTransf->getBasicTrialDisp(); |
| 775 | |
| 776 | static Vector dv(NEBD); |
| 777 | |
| 778 | dv = crdTransf->getBasicIncrDeltaDisp(); |
| 779 | |
| 780 | if (initialFlag != 0 && dv.Norm() <= DBL_EPSILON && numEleLoads == 0) |
| 781 | return 0; |
| 782 | |
| 783 | static Vector vin(NEBD); |
| 784 | vin = v; |
| 785 | vin -= dv; |
| 786 | |
| 787 | double L = crdTransf->getInitialLength(); |
| 788 | double oneOverL = 1.0/L; |
| 789 | |
| 790 | double xi[maxNumSections]; |
| 791 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 792 | |
| 793 | double wt[maxNumSections]; |
| 794 | beamIntegr->getSectionWeights(numSections, L, wt); |
| 795 | |
| 796 | static Vector vr(NEBD); // element residual displacements |
| 797 | static Matrix f(NEBD,NEBD); // element flexibility matrix |
| 798 | |
| 799 | static Matrix I(NEBD,NEBD); // an identity matrix for matrix inverse |
| 800 | double dW; // section strain energy (work) norm |
| 801 | int i, j; |
| 802 | |
| 803 | I.Zero(); |
| 804 | for (i=0; i<NEBD; i++) |
| 805 | I(i,i) = 1.0; |
| 806 | |
| 807 | int numSubdivide = 1; |
| 808 | bool converged = false; |
| 809 | static Vector dSe(NEBD); |
| 810 | static Vector dvToDo(NEBD); |
| 811 | static Vector dvTrial(NEBD); |
| 812 | static Vector SeTrial(NEBD); |
| 813 | static Matrix kvTrial(NEBD, NEBD); |
| 814 | |
| 815 | dvToDo = dv; |
| 816 | dvTrial = dvToDo; |
| 817 | |
| 818 | static double factor = 10; |
| 819 |
no test coverage detected