| 466 | } |
| 467 | |
| 468 | void |
| 469 | PressureDependMultiYield::elast2Plast(void) |
| 470 | { |
| 471 | int loadStage = loadStagex[matN]; |
| 472 | int numOfSurfaces = numOfSurfacesx[matN]; |
| 473 | |
| 474 | if (loadStage != 1 || e2p == 1) return; |
| 475 | e2p = 1; |
| 476 | |
| 477 | if (currentStress.volume() > 0.) { |
| 478 | //opserr << "WARNING:PressureDependMultiYield::elast2Plast(): material in tension." << endln; |
| 479 | currentStress.setData(currentStress.deviator(),0); |
| 480 | } |
| 481 | |
| 482 | // Active surface is 0, return |
| 483 | if (currentStress.deviatorLength() == 0.) return; |
| 484 | |
| 485 | // Find active surface |
| 486 | while (yieldFunc(currentStress, committedSurfaces, ++committedActiveSurf) > 0) { |
| 487 | if (committedActiveSurf == numOfSurfaces) { |
| 488 | //opserr <<"WARNING:PressureDependMultiYield::elast2Plast(): stress out of failure surface"<<endln; |
| 489 | deviatorScaling(currentStress, committedSurfaces, numOfSurfaces); |
| 490 | initSurfaceUpdate(); |
| 491 | return; |
| 492 | } |
| 493 | } |
| 494 | |
| 495 | committedActiveSurf--; |
| 496 | initSurfaceUpdate(); |
| 497 | } |
| 498 | |
| 499 | |
| 500 | int |
nothing calls this directly
no test coverage detected