← Back to team overview

yade-users team mailing list archive

[Question #689409]: particles go out of the container

 

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

Hi all,

I'm doing the cone penetration test, which means a cylinder and a cone combined together and then give it a vertical velocity to penetrate into the soil. I also applied a rotational velocity to the cone. 

when the particles go out of the container, most of the time it's related to the timestep. In my code, I already set the maximum timestep. but the particles still go out of the container.

Here is the code:
####################################
from yade import ymport
from yade import pack,export,geom
import itertools
from numpy import *
import numpy as np
from yade import pack, plot, export, utils
import math
target=0.05
young=4e8
finalcompFricDegree=19.5

############################################# sphere particles material properties ########################
sphereMat=O.materials.append(CohFrictMat(young=young,poisson=0.3,frictionAngle=radians(finalcompFricDegree),isCohesive=False,alphaKr=0.2,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True,density=2648))
O.bodies.append(ymport.text("rotation.txt",material = sphereMat))

################################################ create the penetrator and shaft and the cylinder ##############################
facetMat=O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=radians(finalcompFricDegree),density=0))
O.materials.append(FrictMat(young=young,poisson=0.3,frictionAngle=0,density=0,label='walls'))

facets =  O.bodies.append(geom.facetCylinder((200e-3,200e-3,300e-3),200e-3,600e-3,wallMask=6,material='walls',segmentsNumber=100))

x0=0.2;y0=0.2;z0=0.39665
cylinderIDS= O.bodies.append(geom.facetCylinder((x0,y0,z0-0.02-0.0125),
	radius=0.0125,height=0.15,orientation=Quaternion((1, 0, 0), 0),wallMask=7,segmentsNumber=50, angleRange=None,material=facetMat))
coneIDS= O.bodies.append(geom.facetCone((x0,y0,z0-0.085825-0.02-0.0125),
	radiusTop=0.0125,radiusBottom=0.0,height=0.02165,orientation=Quaternion((1, 0, 0), 0),wallMask=7,segmentsNumber=50, angleRange=None,material=facetMat))
conecheck=O.bodies[-1].id
################################################  set the global engine for the simulation##############################
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
	InteractionLoop(
			[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom()],
			[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
					[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')]
	),
	GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8,maxDt = 0.6*PWaveTimeStep()), # here I limited the maximum timestep.
	NewtonIntegrator(gravity=(0,0,-9.81),damping=0.0),
	HelixEngine(angularVelocity=0,linearVelocity=-0.04,rotateAroundZero=True,zeroPoint=(x0,y0,z0),rotationAxis=(0,0,1),ids=cylinderIDS),
	HelixEngine(angularVelocity=(0*(2*pi/60)),linearVelocity=-0.04,rotateAroundZero=True,zeroPoint=(x0,y0,z0),rotationAxis=(0,0,1),ids=coneIDS),
	VTKRecorder(fileName='3d-vtk-',recorders=['all','bstresses'],iterPeriod=50000),
	#PyRunner(command='position_get()',iterPeriod=10000),
	#PyRunner(command='contact_info()',iterPeriod=10000),		
	PyRunner(command='stop_loading()',iterPeriod=10000),
	PyRunner(command='displacement()',iterPeriod=10000),
	#PyRunner(command='coon()',iterPeriod=10000),
]

O.dt=.5*PWaveTimeStep()  # here I set the timestep smaller than the critical timestep.
################################  get the displacement field #####################################################
vtk = export.VTKExporter("displacement")
def displacement():
	vtk.exportSpheres(ids="all",what=[('disp','b.state.displ()')],useRef=True)
########################## stop the simulation ###################################################################
def stop_loading():
	if ((O.bodies[conecheck].state.pos[2]-O.bodies[conecheck].state.refPos[2])*(-1))>target:
		O.pause()

O.run(5000000,True)
O.save('rotation_awn.yade.gz')
O.saveTmp()
#######################################

even though I set the timestep smaller than the critical timestep and also limited the maximum timestep. the particles still go out of the container.

here is a picture when the particles go out.
https://www.dropbox.com/sh/90mkb44qu9efw1h/AAAsgaXK2G0NL66gj3sphEu2a?dl=0

I'm wondering what's the possible reasons that the particles go out the box, except for the timestep.

thank you!
Yong

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