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

Reply via email to