← Back to team overview

yade-users team mailing list archive

[Question #684181]: Spheres are passing through in a new model when they interact

 

New question #684181 on Yade:
https://answers.launchpad.net/yade/+question/684181

Hi all,

I'm trying to implement a new  contact model in Yade referring to following paper,

https://www.dropbox.com/sh/xf5j80hke2s4gd5/AAAoiDIrGHk4YMp0nOe60QQca?dl=0

Initially, I tried to develop tension damage only.But after compiling the code I ran a simple simulation with 2 spheres and when I see the simulation, one sphere is passing through remaining sphere and  it did not give any normal or shear force.

The .hpp file and  .cpp file regarding the model can be found in following link,

https://www.dropbox.com/sh/50mzxm4s8yrsff9/AAASIoCvDHnKRbCl4M-56A9Sa?dl=0


Could you please help me on this problem?

A minimum working example as follows,

Thanks
Chanaka

MWE-----

from yade import plot,qt
nh=O.materials.append(NhuMat(young=1e6,poisson=.25,frictionAngle=30,TensileStrength=1e5,Cohesion=1e5,DilatancyAngle=3,NormalSoftening=0.1,ShearSoftening=0.1,density=3000))

s1=utils.sphere((0,0,0),radius=1,color=[1,0,0],material=nh,fixed=True)
s2=utils.sphere((0,0,2),radius=1,color=[0,1,0],material=nh)

O.bodies.append(s1)
O.bodies.append(s2)

Gl1_Sphere.quality=3
# engines definition
O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.3,label='bo1s')]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=1.3,label='ig2ss')],
        [Ip2_NhuMat_NhuMat_NhuPhys()],
        [Law2_ScGeom_NhuPhys_Nhumodel()]
    ),
    TranslationEngine(ids=[s2.id],translationAxis=[0,0,1],velocity=.001), #z direction movement
    NewtonIntegrator(damping=0.4),
    PyRunner(iterPeriod=1,command='addPlotData()',label='plotData'),
]
O.dt=0.4*PWaveTimeStep()
O.step()
bo1s.aabbEnlargeFactor=ig2ss.interactionDetectionFactor=1.
def addPlotData():
    plot.addData(i=O.iter,
                 displacement_n=O.bodies[1].state.refPos[2]-O.bodies[1].state.pos[2],
                 NF=O.interactions[0,1].phys.normalForce.norm(),
                 SF=O.interactions[0,1].phys.shearForce.norm(),
                 )

plot.plots={'i':('NF'),
           'displacement_n ':('NF'),
	   'i  ':('SF'),
	  }
plot.plot()
O.run()






-- 
You received this question notification because your team yade-users is
an answer contact for Yade.