← Back to team overview

yade-users team mailing list archive

[Question #657225]: Intraction between particles

 

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

Hi there!

I  am trying to model a single sand particle under uniaxial load but my result is very low than my expectation because I  know my interaction is not enough (i =18). So, I need to know how can I increase interaction in my script ( my Max load result is just 6N but I need to increase it to 60 or more). 

My script:

from yade import pack
from math import *
from yade import plot
from yade import qt

vitesse=0.1
cohN=50e5
cohT=35e5
E=50e9
nu=0.3
d=2310
phi=35
rayon_s=0.005
rayon_g=0.05
rayon_boite=rayon_g+0.0001
espace=0.0
gravity=0

O.materials.append(CohFrictMat(young=E,poisson=nu,density=d,frictionAngle=radians(phi),normalCohesion=cohN,shearCohesion=cohT,label='sol'))
O.materials.append(CohFrictMat(young=10e13,poisson=0,density=10000,frictionAngle=radians(10),normalCohesion=0,shearCohesion=0,label='walls'))

mn,mx=(-rayon_boite*2,-rayon_boite,-rayon_boite*2),(rayon_boite*2,rayon_boite,rayon_boite*2)
walls=utils.aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

sp=pack.regularHexa(yade._packPredicates.inSphere(center=(0,0,0),radius=rayon_g),gap=espace,radius=rayon_s,material='sol')
O.bodies.append(sp)

def plotAddData():
    f = O.forces.f(3)[1]
    d = 2*rayon_g
    load = f/pow(d,2)
    plot.addData(
        dspl = O.bodies[3].state.displ()[1],
        load = load,
    )

O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1),Bo1_Box_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1),Ig2_Box_Sphere_ScGeom6D()],
        [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),Ip2_FrictMat_FrictMat_FrictPhys()],
        [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
        ),
    GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=5,timestepSafetyCoefficient=0.8, defaultDt=utils.PWaveTimeStep()),
    TranslationEngine(
    translationAxis=(0,-1,0),
    ids=[3],
    label='tl',
    velocity=vitesse
    ),
    NewtonIntegrator(damping=0.3, gravity=[0, gravity, 0]),
    PyRunner(iterPeriod=10,command='plotAddData()'),
]

O.step()
for i in O.interactions:
 i.phys.unp = i.geom.penetrationDepth
print len([i for i in O.interactions])

O.dt=utils.PWaveTimeStep()
O.usesTimeStepper=True

qt.Controller()
qt.View()

plot.plots = {'dspl': 'load'}
plot.plot()

O.saveTmp()


Best regards
sam

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