yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #26460
[Question #699135]: How to reduce average particle velocity of a packing
New question #699135 on Yade:
https://answers.launchpad.net/yade/+question/699135
Hi,
I'd like to ask that how to reduce the average velocity of all the particles at a confined situation without any change in particle connections.
The following MWE shows the way I came up with to reduce the average velocity: Firstly, carry out the compaction process to reach target confining pressure (100 kPa) with periodic boundary. Then switch to a calmdown process to reduce the average velocity of all the particles by increasing damping coefficient.
However, one problem arises with this calmdown process: there are some particle interactions lost during this process. As you may check by running the MWE (it will take less than 1 minute in general): before the calmdown process, there are 30845 interactions, but after the calmdowm process there are 30766 interactions, Which is not I want.
Do you have any idea about how to reduce the average velocity while keeping the packing fabric the same?
Thanks
Leonard
MWE:
###############
from __future__ import print_function
sigmaIso = -100e3
from yade import pack, qt, plot
mn,mx=Vector3(0,0,0),Vector3(0.07,0.14,0.07)
O.periodic = True
O.cell.setBox(.07,.14,.07)
sp = pack.SpherePack()
sp.makeCloud(mn,mx,-1,0.3333,num=6000, periodic=True)
sp.toSimulation()
particleId=[]
for i in O.bodies:
particleId.append(i.id)
newton=NewtonIntegrator(damping=0.2)
O.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop([Ig2_Sphere_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()]),
PeriTriaxController(
label='triax',
goal=(sigmaIso, sigmaIso, sigmaIso),
stressMask=7,
dynCell=True,
maxStrainRate=(10, 10, 10),
maxUnbalanced=.1,
relStressTol=1e-3,
doneHook='compactionFinished()'
),
newton,
]
O.dt = .5 * PWaveTimeStep()
O.trackEnergy = True
def compactionFinished():
print('compaction finished')
print('Number of interactions before calmDown',len(O.interactions))
triax.doneHook = 'calmDown()'
print('average velocity before calmDown',avgVel_norm(particleId))
newton.damping=0.95
print('Now please click run button to start calmdown process')
def avgVel_norm(idList):
vel=0
avg=0
for i in idList:
vel+=O.bodies[i].state.vel.norm()
avg=vel/len(idList)
return avg
def calmDown():
print('avgVel_norm',avgVel_norm(particleId),'syy',triax.stress[1])
O.run(1000,False)
# print("after run")
if avgVel_norm(particleId) <0.0025:
O.pause()
print('Number of interactions after calmDown',len(O.interactions))
O.run()
--
You received this question notification because your team yade-users is
an answer contact for Yade.