yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #12944
[Question #295486]: Using concrete to simulate the hysteretic curve
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.