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

Method elast2Plast

SRC/material/nD/soil/PressureIndependMultiYield.cpp:293–323  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

291
292
293void PressureIndependMultiYield::elast2Plast(void)
294{
295 int loadStage = loadStagex[matN];
296 double frictionAngle = frictionAnglex[matN];
297 int numOfSurfaces = numOfSurfacesx[matN];
298
299 if (loadStage != 1 || e2p == 1) return;
300 e2p = 1;
301
302 if (currentStress.volume() > 0. && frictionAngle > 0.) {
303 //opserr << "WARNING:PressureIndependMultiYield::elast2Plast(): material in tension." << endln;
304 currentStress.setData(currentStress.deviator(),0);
305 }
306
307 paramScaling(); // scale surface parameters corresponding to initial confinement
308
309 // Active surface is 0, return
310 if (currentStress.deviatorLength() == 0.) return;
311
312 // Find active surface
313 while (yieldFunc(currentStress, committedSurfaces, ++committedActiveSurf) > 0) {
314 if (committedActiveSurf == numOfSurfaces) {
315 //opserr <<"WARNING:PressureIndependMultiYield::elast2Plast(): stress out of failure surface"<<endln;
316 deviatorScaling(currentStress, committedSurfaces, numOfSurfaces);
317 initSurfaceUpdate();
318 return;
319 }
320 }
321 committedActiveSurf--;
322 initSurfaceUpdate();
323}
324
325
326int PressureIndependMultiYield::setTrialStrain (const Vector &strain)

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