← Back to team overview

yade-users team mailing list archive

[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.