| 4201 | } |
| 4202 | |
| 4203 | int |
| 4204 | ForceBeamColumnCBDI3d::commitSensitivity(int gradNumber, int numGrads) |
| 4205 | { |
| 4206 | int err = 0; |
| 4207 | |
| 4208 | double L = crdTransf->getInitialLength(); |
| 4209 | double oneOverL = 1.0/L; |
| 4210 | |
| 4211 | double pts[maxNumSections]; |
| 4212 | beamIntegr->getSectionLocations(numSections, L, pts); |
| 4213 | |
| 4214 | double wts[maxNumSections]; |
| 4215 | beamIntegr->getSectionWeights(numSections, L, wts); |
| 4216 | |
| 4217 | double dLdh = crdTransf->getdLdh(); |
| 4218 | |
| 4219 | double dptsdh[maxNumSections]; |
| 4220 | beamIntegr->getLocationsDeriv(numSections, L, dLdh, dptsdh); |
| 4221 | |
| 4222 | double d1oLdh = crdTransf->getd1overLdh(); |
| 4223 | |
| 4224 | static Vector dqdh(3); |
| 4225 | dqdh = this->computedqdh(gradNumber); |
| 4226 | |
| 4227 | // dvdh = A dudh + dAdh u |
| 4228 | const Vector &dvdh = crdTransf->getBasicDisplSensitivity(gradNumber); |
| 4229 | dqdh.addMatrixVector(1.0, kv, dvdh, 1.0); // A dudh |
| 4230 | |
| 4231 | if (crdTransf->isShapeSensitivity()) { |
| 4232 | //const Vector &dAdh_u = crdTransf->getBasicTrialDispShapeSensitivity(); |
| 4233 | //dqdh.addMatrixVector(1.0, kv, dAdh_u, 1.0); // dAdh u |
| 4234 | } |
| 4235 | |
| 4236 | bool isGamma = false; |
| 4237 | |
| 4238 | Vector kappa(numSections); |
| 4239 | Vector gamma(numSections); |
| 4240 | for (int i = 0; i < numSections; i++) { |
| 4241 | int order = sections[i]->getOrder(); |
| 4242 | const ID &code = sections[i]->getType(); |
| 4243 | for (int j = 0; j < order; j++) { |
| 4244 | if (code(j) == SECTION_RESPONSE_MZ) |
| 4245 | kappa(i) += (vs[i])(j); |
| 4246 | if (code(j) == SECTION_RESPONSE_VY) { |
| 4247 | gamma(i) += (vs[i])(j); |
| 4248 | isGamma = true; |
| 4249 | } |
| 4250 | } |
| 4251 | } |
| 4252 | isGamma = CSBDI && isGamma; |
| 4253 | |
| 4254 | double wi[maxNumSections]; |
| 4255 | Vector w(wi, numSections); |
| 4256 | double wpi[maxNumSections]; |
| 4257 | Vector wp(wpi, numSections); |
| 4258 | wp.Zero(); |
| 4259 | this->computew(w, wp, pts, kappa, gamma); |
| 4260 |
nothing calls this directly
no test coverage detected