MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / elast2Plast

Method elast2Plast

SRC/material/nD/soil/PressureDependMultiYield.cpp:468–497  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

466}
467
468void
469PressureDependMultiYield::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
500int

Callers

nothing calls this directly

Calls 4

volumeMethod · 0.80
deviatorMethod · 0.80
deviatorLengthMethod · 0.80
setDataMethod · 0.45

Tested by

no test coverage detected