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

Method elast2Plast

SRC/material/nD/soil/MultiYieldSurfaceClay.cpp:357–387  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

355
356
357void MultiYieldSurfaceClay::elast2Plast(void)
358{
359 int loadStage = loadStagex[matN];
360 double frictionAngle = frictionAnglex[matN];
361 int numOfSurfaces = numOfSurfacesx[matN];
362
363 if (loadStage != 1 || e2p == 1) return;
364 e2p = 1;
365
366 if (currentStress.volume() > 0. && frictionAngle > 0.) {
367 //opserr << "WARNING:MultiYieldSurfaceClay::elast2Plast(): material in tension." << endln;
368 currentStress.setData(currentStress.deviator(),0);
369 }
370
371 paramScaling(); // scale surface parameters corresponding to initial confinement
372
373 // Active surface is 0, return
374 if (currentStress.deviatorLength() == 0.) return;
375
376 // Find active surface
377 while (yieldFunc(currentStress, committedSurfaces, ++committedActiveSurf) > 0) {
378 if (committedActiveSurf == numOfSurfaces) {
379 //opserr <<"WARNING:MultiYieldSurfaceClay::elast2Plast(): stress out of failure surface"<<endln;
380 deviatorScaling(currentStress, committedSurfaces, numOfSurfaces);
381 initSurfaceUpdate();
382 return;
383 }
384 }
385 committedActiveSurf--;
386 initSurfaceUpdate();
387}
388
389
390int MultiYieldSurfaceClay::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