NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** */
| 1232 | /********* NEWTON , SUBDIVIDE AND INITIAL ITERATIONS ******************** |
| 1233 | */ |
| 1234 | int |
| 1235 | ForceBeamColumn2d::update() |
| 1236 | { |
| 1237 | // if have completed a recvSelf() - do a revertToLastCommit |
| 1238 | // to get Ssr, etc. set correctly |
| 1239 | if (initialFlag == 2) |
| 1240 | this->revertToLastCommit(); |
| 1241 | |
| 1242 | // update the transformation |
| 1243 | crdTransf->update(); |
| 1244 | |
| 1245 | // get basic displacements and increments |
| 1246 | const Vector &v = crdTransf->getBasicTrialDisp(); |
| 1247 | |
| 1248 | static Vector dv(NEBD); |
| 1249 | |
| 1250 | dv = crdTransf->getBasicIncrDeltaDisp(); |
| 1251 | |
| 1252 | if (initialFlag != 0 && dv.Norm() <= DBL_EPSILON && numEleLoads == 0) |
| 1253 | return 0; |
| 1254 | |
| 1255 | static Vector vin(NEBD); |
| 1256 | vin = v; |
| 1257 | vin -= dv; |
| 1258 | |
| 1259 | double L = crdTransf->getInitialLength(); |
| 1260 | double oneOverL = 1.0/L; |
| 1261 | |
| 1262 | double xi[maxNumSections]; |
| 1263 | beamIntegr->getSectionLocations(numSections, L, xi); |
| 1264 | |
| 1265 | double wt[maxNumSections]; |
| 1266 | beamIntegr->getSectionWeights(numSections, L, wt); |
| 1267 | |
| 1268 | static Vector vr(NEBD); // element residual displacements |
| 1269 | static Matrix f(NEBD,NEBD); // element flexibility matrix |
| 1270 | |
| 1271 | static Matrix I(NEBD,NEBD); // an identity matrix for matrix inverse |
| 1272 | double dW; // section strain energy (work) norm |
| 1273 | int i, j; |
| 1274 | |
| 1275 | I.Zero(); |
| 1276 | for (i=0; i<NEBD; i++) |
| 1277 | I(i,i) = 1.0; |
| 1278 | |
| 1279 | int numSubdivide = 1; |
| 1280 | bool converged = false; |
| 1281 | static Vector dSe(NEBD); |
| 1282 | static Vector dvToDo(NEBD); |
| 1283 | static Vector dvTrial(NEBD); |
| 1284 | static Vector SeTrial(NEBD); |
| 1285 | static Matrix kvTrial(NEBD, NEBD); |
| 1286 | |
| 1287 | dvToDo = dv; |
| 1288 | dvTrial = dvToDo; |
| 1289 | |
| 1290 | //static double factor = 10; |
| 1291 | double factor = subdivideFactor; |
no test coverage detected