← Back to team overview

yade-users team mailing list archive

[Question #706040]: Problem with high value of material density

 

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

I would like to reduce the computational cost (increase the time step) by up-scaling the particle density to 109 kg⁄m^3  but when I launch the simulation, the particles dissapeared after a few iterations. It looks like they doesn't contact with the bottom side of the box. My script is attached below. Please give me any suggestions how I should deal with it. Thanks


############################
from math import pi
import os, datetime
from yade import pack, plot, qt, geom

sector_angle = 2*pi
layers_count = 5

x, y, z = (1, 1, 1)
initialAngle = radians(10)
targetVoid = 1
density = 1e6

frictionAngle = initialAngle
# create the box
O.bodies.append(geom.facetBox((0, 0, 0), (x/2, y/2, z/2), wallMask=31))

# create spheres
sp = pack.SpherePack()
sp.makeCloud((-x/2, -y/2, -z/2), (x/2, y/2, z/2), rMean=.03, rRelFuzz=.5)
# add spheres to simulation
O.materials.append(CohFrictMat(label='mat',
                                young=1e8,
                                poisson=0.2,
                                frictionAngle=radians(17),
                                density=density,
                                isCohesive=True,
                                alphaKr=2,
                                alphaKtw=2,
                                momentRotationLaw=True,
                                etaRoll=0.15))
sp.toSimulation(material='mat')

O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
    InteractionLoop(
            # handle sphere+sphere and facet+sphere collisions
            [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
            [Ip2_FrictMat_FrictMat_FrictPhys()],
            [Law2_ScGeom_FrictPhys_CundallStrack()]
    ),
    NewtonIntegrator(gravity=(0, 0, -9.81*10), damping=0.1),
    TranslationEngine(ids=[],
                      translationAxis=[0, 0, -1],
                      velocity=0.075,
                      dead=True,
                      label='cyl_engine'),
    PyRunner(command='checkPorosity()',
             iterPeriod=1000,
             label='porosity_checker',
             dead=False)
]

def checkPorosity():
    global frictionAngle
    u = utils.porosity()
    ev = u / (1 - u)
    if ev > targetVoid:
        frictionAngle *= 0.9
        utils.setContactFriction(frictionAngle)
    else:
        O.pause()

O.dt = .5 * PWaveTimeStep()

qt.View()


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