New question #656657 on Yade:
https://answers.launchpad.net/yade/+question/656657
Hello,
I am trying to write a tension test script on a grid, so i can calibrate my
grid parameters,
My script is based on the example :
trunk/examples/grids/CohesiveGridConnectionSphere.py
The problem is that the velocity is applied instantly not permanently, so the
force in my grid go through an oscillation once the velocity is applied, even
if the iterperiod is set to 1,
The tension force in my grid does not cumulate; it goes through the same value
and then return to the initial state for every velocity application,
Therefore, I cannot reach the rupture state,
Anyone can help my with this problem?
This is my script,
# materials properties
O.materials.append(CohFrictMat(young=20e5,poisson=0.3,density=3e2,frictionAngle=radians(10),normalCohesion=8.5e6,shearCohesion=8.5e6,momentRotationLaw=True,label='spheremat'))
# functions and laws
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_GridConnection_Aabb()]),
InteractionLoop([Ig2_GridNode_GridNode_GridNodeGeom6D()],
[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False)],
[Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]),
GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.7),
NewtonIntegrator(gravity=(0,0,-10),damping=0.9,label='newton'),
PyRunner(command='history1()',iterPeriod=100,label='recorder',dead=True),
PyRunner(iterPeriod=20,command='myAddPlotData()',label='recorder1',dead=True)
]
L=0.6 #length[m]
l=0.21 #width[m]
nbL=21
nbl=8
r=0.006
nodesIds=[]
color=[255./255.,102./255.,0./255.]
for i in range(0,nbL):
for j in range(0,nbl):
nodesIds.append(O.bodies.append(gridNode([0,j*l/(nbl-1),-i*L/(nbL-1)],r,wire=False,fixed=False,material='spheremat',color=color)))
#Create connection between the nodes
for i in range(0,len(nodesIds)):
for j in range(i+1,len(nodesIds)):
dist=(O.bodies[i].state.pos - O.bodies[j].state.pos).norm()
if(dist<=(L/(nbL-1))*1.01):
O.bodies.append(gridConnection(i,j,r,color=color))
#nodes fixe :
for i in range (0,72):
O.bodies[i].state.blockedDOFs='xyzXYZ'
#apply the tension force :
def history1():
global Fn,Ft
if O.iter>5000:
for i in range (len(nodesIds)-72,len(nodesIds)):
O.bodies[i].state.dynamic=False
O.bodies[i].state.vel[2]=-0.0002
plot.plots={'epz':('Fz')}
#plot tension force in grid :
def myAddPlotData():
F=(abs(O.forces.f(64)[2])+abs(O.forces.f(65)[2])+abs(O.forces.f(66)[2])+abs(O.forces.f(67)[2])+abs(O.forces.f(68)[2])+abs(O.forces.f(69)[2])+abs(O.forces.f(70)[2])+abs(O.forces.f(71)[2]))/(210)
s1=O.bodies[68]
s2=O.bodies[100]
ep=((s2.state.pos-s1.state.pos).norm()-(4*0.03))*100/(4*0.03)
plot.addData(Fz=F,epz=ep)
#plot.saveDataTxt('dataFile.txt.bz2',vars=('Fz','epz'))
plot.plot()
recorder.dead=False
recorder1.dead=False
O.run(100000,True)
--
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