NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** */
| 951 | /********* NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** |
| 952 | */ |
| 953 | int |
| 954 | ForceBeamColumn3d::update() |
| 955 | { |
| 956 | // if have completed a recvSelf() - do a revertToLastCommit |
| 957 | // to get Ssr, etc. set correctly |
| 958 | if (initialFlag == 2) |
| 959 | this->revertToLastCommit(); |
| 960 | |
| 961 | // update the transformation |
| 962 | crdTransf->update(); |
| 963 | |
| 964 | // get basic displacements and increments |
| 965 | const Vector &v = crdTransf->getBasicTrialDisp(); |
| 966 | |
| 967 | static Vector dv(NEBD); |
| 968 | dv = crdTransf->getBasicIncrDeltaDisp(); |
| 969 | |
| 970 | if (initialFlag != 0 && dv.Norm() <= DBL_EPSILON && numEleLoads == 0) |
| 971 | return 0; |
| 972 | |
| 973 | static Vector vin(NEBD); |
| 974 | vin = v; |
| 975 | vin -= dv; |
| 976 | double L = crdTransf->getInitialLength(); |
| 977 | double oneOverL = 1.0/L; |
| 978 | |
| 979 | double xi[maxNumSections]; |
| 980 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 981 | |
| 982 | double wt[maxNumSections]; |
| 983 | beamIntegr->getSectionWeights(numSections, L, wt); |
| 984 | |
| 985 | static Vector vr(NEBD); // element residual displacements |
| 986 | static Matrix f(NEBD,NEBD); // element flexibility matrix |
| 987 | |
| 988 | static Matrix I(NEBD,NEBD); // an identity matrix for matrix inverse |
| 989 | double dW; // section strain energy (work) norm |
| 990 | int i, j; |
| 991 | |
| 992 | I.Zero(); |
| 993 | for (i=0; i<NEBD; i++) |
| 994 | I(i,i) = 1.0; |
| 995 | |
| 996 | int numSubdivide = 1; |
| 997 | bool converged = false; |
| 998 | static Vector dSe(NEBD); |
| 999 | static Vector dvToDo(NEBD); |
| 1000 | static Vector dvTrial(NEBD); |
| 1001 | static Vector SeTrial(NEBD); |
| 1002 | static Matrix kvTrial(NEBD, NEBD); |
| 1003 | |
| 1004 | dvToDo = dv; |
| 1005 | dvTrial = dvToDo; |
| 1006 | |
| 1007 | //static double factor = 10; |
| 1008 | double factor = subdivideFactor; |
| 1009 | double dW0 = 0.0; |
| 1010 |
no test coverage detected