| 275 | } |
| 276 | |
| 277 | int |
| 278 | BeamFiberMaterial2dPS::commitSensitivity(const Vector &depsdh, int gradIndex, |
| 279 | int numGrads) |
| 280 | { |
| 281 | static Vector dstraindh(6); |
| 282 | |
| 283 | const Matrix &PStangent = theMaterial->getTangent(); |
| 284 | |
| 285 | static Matrix dd22(1,1); |
| 286 | dd22(0,0) = PStangent(1,1); |
| 287 | |
| 288 | static Matrix dd21(1,2); |
| 289 | dd21(0,0) = PStangent(1,0); |
| 290 | dd21(0,1) = PStangent(1,2); |
| 291 | |
| 292 | static Vector sigma2(1); |
| 293 | sigma2.addMatrixVector(0.0, dd21, depsdh, -1.0); |
| 294 | |
| 295 | const Vector &PSstress = theMaterial->getStressSensitivity(gradIndex, true); |
| 296 | //opserr << PSstress; |
| 297 | sigma2(0) -= PSstress(1); |
| 298 | |
| 299 | //const Vector &PSstress2 = theMaterial->getStressSensitivity(gradIndex, false); |
| 300 | //opserr << PSstress2; |
| 301 | //sigma2(0) += PSstress2(1); |
| 302 | |
| 303 | static Vector strain2(1); |
| 304 | dd22.Solve(sigma2,strain2); |
| 305 | |
| 306 | dstraindh(0) = depsdh(0); |
| 307 | dstraindh(1) = strain2(0); |
| 308 | dstraindh(2) = depsdh(1); |
| 309 | |
| 310 | return theMaterial->commitSensitivity(dstraindh, gradIndex, numGrads); |
| 311 | } |
| 312 | |
| 313 | const Matrix& |
| 314 | BeamFiberMaterial2dPS::getTangent() |
nothing calls this directly
no test coverage detected