Question #295486 on Yade changed: https://answers.launchpad.net/yade/+question/295486
Jan Stránský proposed the following answer: Hello, this model is designed such that on interaction level it has damage in tension and plasticity in shear. To have plasticity on macro-level, you have to adjust parameters somehow (e.g. decrease sigmaT) As a sidenote, periodicity is not a very good idea for inelastic range in compression, because the failure mode is not periodic cheers Jan 2016-06-20 12:51 GMT+02:00 liukeqi <[email protected]>: > New question #295486 on Yade: > https://answers.launchpad.net/yade/+question/295486 > > Hello everyone, > I want to use the concrete material to simulate the hysteretic curve by > loading and unloading in turns. I used the periodic boundary and controlled > the strain. It should have plastic strain when it entered plastic state, > but I found that no matter how large the strain is when I loaded, it always > then returned to zero when I unloaded by making the stress to zero. And if > I wanted to make the stress to zero when I unload by controlling the > stress, I had to make the strain being zero. I cannot find the concrete > damage. Can you give me some suggestions? Thanks a lot. This is my code. > ############################################################ > #!/usr/bin/python # This is server.py file > import string > from yade import plot,qt > from yade.pack import * > from yade import pack, plot > > > > O.materials.append(CpmMat(young=25e9,frictionAngle=.7,poisson=.2,sigmaT=3e6,epsCrackOnset=1e-4,relDuctility=30)) > > initSize=1.2 > > > sp=pack.randomPeriPack(radius=.05,initSize=Vector3(initSize,initSize,initSize)) > > sp.toSimulation() > > > > > O.dt=PWaveTimeStep()/2 > > plot.plots={'ex':('sx',)} > def plotAddData(): > plot.addData( > sx=p3d.stress[0], > ex=p3d.strain[0], > > ) > > EnlargeFactor=1.5 > EnlargeFactor=1.0 > O.engines=[ > ForceResetter(), > > InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=EnlargeFactor,label='bo1s')]), > InteractionLoop( > > [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=EnlargeFactor,label='ig2ss')], > [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm()]), > NewtonIntegrator(), > Peri3dController( > > nSteps=4000, > # how many time steps the simulation will last > # after reaching > nSteps do doneHook action > doneHook='print > "Simulation with Peri3dController finished."; O.pause()', > > # the prescribed > path (step,value of stress/strain) can be defined in absolute values > > # or in relative > values > > # if the goal > value is 0, the absolute stress/strain values are always considered (step > values remain relative)plot.plots={'ex':('sx',)} > > # if ##Path is not > explicitly defined, it is considered as linear function between (0,0) and > (nSteps,goal) > # as in yzPath and > xyPath > # the relative > values are really relative (zxPath gives the same - except of the sign from > goal value - result as yyPath) > > > # variables used > in the first step > label='p3d' > ), > PyRunner(command='plotAddData()',iterPeriod=1), > ] > > p3d.stressMask=0b111110 # prescribed ex,ey,sz,syz,ezx,sxy; > e..strain; s..stress > p3d.goal=(-0.001,0,0,0,0,0) #xx, yy, zz, yz, zx, xy > O.step() > bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1. > O.run(); O.wait() > > > O.engines=[ > ForceResetter(), > > InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.,label='bo1s')]), > InteractionLoop( > > [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.,label='ig2ss')], > [Ip2_CpmMat_CpmMat_CpmPhys()],[Law2_ScGeom_CpmPhys_Cpm()]), > NewtonIntegrator(), > Peri3dController( > > nSteps=4000, > # how many time steps the simulation will last > # after reaching > nSteps do doneHook action > doneHook='print > "Simulation with Peri3dController finished."; O.pause()', > > # the prescribed > path (step,value of stress/strain) can be defined in absolute values > > # or in relative > values > > # if the goal > value is 0, the absolute stress/strain values are always considered (step > values remain relative)plot.plots={'ex':('sx',)} > > # if ##Path is not > explicitly defined, it is considered as linear function between (0,0) and > (nSteps,goal) > # as in yzPath and > xyPath > # the relative > values are really relative (zxPath gives the same - except of the sign from > goal value - result as yyPath) > > > # variables used > in the first step > label='p3d', > strain=p3d.strain > ), > PyRunner(command='plotAddData()',iterPeriod=1), > ] > > p3d.stressMask=0b111110 # prescribed ex,ey,sz,syz,ezx,sxy; > e..strain; s..stress > p3d.goal=(0.001,0,0,0,0,0) #xx, yy, zz, yz, zx, xy > O.run(); O.wait() > > > plot.plot(subPlots=False) > > -- > You received this question notification because your team yade-users is > an answer contact for Yade. > > _______________________________________________ > Mailing list: https://launchpad.net/~yade-users > Post to : [email protected] > Unsubscribe : https://launchpad.net/~yade-users > More help : https://help.launchpad.net/ListHelp > -- You received this question notification because your team yade-users is an answer contact for Yade. _______________________________________________ Mailing list: https://launchpad.net/~yade-users Post to : [email protected] Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp

