← Back to team overview

yade-users team mailing list archive

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