| 2404 | } |
| 2405 | |
| 2406 | void |
| 2407 | ForceBeamColumnCBDI2d::computew(Vector &w, Vector &wp, double xi[], |
| 2408 | const Vector &kappa, const Vector &gamma) |
| 2409 | { |
| 2410 | double L = crdTransf->getInitialLength(); |
| 2411 | |
| 2412 | Matrix ls(numSections, numSections); |
| 2413 | |
| 2414 | Matrix Ginv(numSections, numSections); |
| 2415 | this->getGinv(numSections, xi, Ginv); |
| 2416 | |
| 2417 | Matrix H(numSections, numSections); |
| 2418 | |
| 2419 | bool isGamma = false; |
| 2420 | for (int i = 0; i < numSections; i++) { |
| 2421 | if (gamma(i) != 0.0) |
| 2422 | isGamma = true; |
| 2423 | } |
| 2424 | isGamma = CSBDI && isGamma; |
| 2425 | |
| 2426 | this->getHk(numSections, xi, H); |
| 2427 | ls.addMatrixProduct(0.0, H, Ginv, 1.0); |
| 2428 | w.addMatrixVector(0.0, ls, kappa, L*L); |
| 2429 | |
| 2430 | if (isGamma) { |
| 2431 | this->getHg(numSections, xi, H); |
| 2432 | ls.addMatrixProduct(0.0, H, Ginv, 1.0); |
| 2433 | w.addMatrixVector(1.0, ls, gamma, L); |
| 2434 | |
| 2435 | this->getHkp(numSections, xi, H); |
| 2436 | ls.addMatrixProduct(0.0, H, Ginv, 1.0); |
| 2437 | wp.addMatrixVector(0.0, ls, kappa, L); |
| 2438 | |
| 2439 | this->getHgp(numSections, xi, H); |
| 2440 | ls.addMatrixProduct(0.0, H, Ginv, 1.0); |
| 2441 | wp.addMatrixVector(1.0, ls, gamma, 1.0); |
| 2442 | } |
| 2443 | } |
| 2444 | |
| 2445 | void |
| 2446 | ForceBeamColumnCBDI2d::computedwdq(Matrix &dwidq, const Vector &q, |
no test coverage detected