← Back to team overview

yade-users team mailing list archive

[Question #708634]: Enforcing velocity of particle in a periodic cell

 

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

Dear sir/ madam,

As part of a larger setup, I have an issue in enforcing motion of particles in a periodic cell.

When running the simulation without the periodic cell, the particle moves at the specified velocity for infinite iterations.
However, when the periodic boundary conditions are activated, the simulation runs for some iterations and can then no longer proceed (without pausing or error prompt)
Is there some way to work around this issue or an explanation why this is happening?

In order to summarize the problem, I have attached a shorter script, I kindly ask you to comment and uncomment the periodic boundary section to see the effect.
Looking forward to your reply...

###########################################################################
from yade import qt, ymport, pack, plot, qt, wrapper
import numpy as np

Mat1 = O.materials.append(FrictMat(young=70e9, frictionAngle=0.8, poisson=0.17,density=2650, label='Mat1'))
rad = 0.001
O.bodies.append([utils.sphere((4*rad, 0.001+rad, 4*rad), radius=rad, color=(1,0,0),material = 'Mat1')])
O.bodies.append(utils.wall( Vector3(0,0.001,0), axis = 1, sense=0, material = 'Mat1'))  

vel = 0.01
L = 20*rad
w = 10*rad
h = 5*rad

# setup the periodic boundary (comment and uncomment)
O.periodic = True
O.cell.hSize = Matrix3(L, 0, 0, 0, h, 0, 0, 0, w)

O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb()], allowBiggerThanPeriod = True, label="collider"),
    InteractionLoop(
            [Ig2_Sphere_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],
            [Ip2_FrictMat_FrictMat_MindlinPhys()],
            [Law2_ScGeom_MindlinPhys_Mindlin()],    
    ),
    NewtonIntegrator(damping=0.1),
    PyRunner(iterPeriod=1, command='init(vel)', label='init'),
]
O.dt = 0.8*utils.PWaveTimeStep()
qt.View()
O.pause()

def init(vel):
        O.bodies[0].state.vel = [vel,0,0]

###########################################################################

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