← Back to team overview

yade-users team mailing list archive

Re: [Question #181608]: Viscous damping of clumps

 

Question #181608 on Yade changed:
https://answers.launchpad.net/yade/+question/181608

Klaus Thoeni gave more information on the question:
Back to the clump formulation in yade. I provide an example which might
show a BUG, but I need some more advice. If you run the script with
different moduli of elasticity you will see that the sphere and the
clump do not behave similar (see comments). Please have a look and tell
me your opinion.

Thanks!


# -*- coding: utf-8 -*-
from yade import plot
#from numpy import *

#### some parameters
a=1.0	# dimension of facets
z=0.0	# facet mid point height
r=0.15	# radius of block
h=1.00	# drop height

#### material property
#E=1e6	# everything is fine
#E=2e5	# clump overlap bigger than particle diameter
E=1e5	# clump runs through (even if smaller time step is used)

#### parameter and material for facets
debri = {'color':(0.41,0.41,0.41),'mat':FrictMat(young=E,poisson=0.15,frictionAngle=radians(30),label='debri')}
debriMat = O.materials.append(debri['mat'])

#### define facets
facets=O.bodies.append([facet([[-a,a,0],[0,0,z],[a,a,0]], fixed=True, wire=False, color=(0,1,1)),facet([[a,a,0],[0,0,z],[a,-a,0]], fixed=True, wire=False, color=(0,1,1))])
O.bodies[facets[0]].shape.color=debri['color']
O.bodies[facets[0]].mat=debri['mat']
O.bodies[facets[1]].shape.color=debri['color']
O.bodies[facets[1]].mat=debri['mat']

#### create blocks
sMat = O.materials.append(FrictViscoMat(young=E,poisson=0.15,frictionAngle=radians(30),density=100.,label='sphere'))
cMat = O.materials.append(FrictViscoMat(young=E,poisson=0.15,frictionAngle=radians(30),density=1.41372/((4./3.*pi*0.01**3)*1749.),label='clump'))
s1=O.bodies.append(sphere((0,a/2,0.2),radius=r,wire=False,highlight=False,color=[1,0,0],material=sMat))
c1,cs1=O.bodies.appendClumped(pack.regularOrtho(inSphere((a/2,0,0.2),r),radius=0.01,gap=0,color=(0,0,1),material=cMat))

#### block rotation
O.bodies[s1].state.blockedDOFs='XYZ'
O.bodies[c1].state.blockedDOFs='XYZ'

#### change initial velocity of block
O.bodies[s1].state.vel=(0,0,-sqrt(2*9.81*(h-0.2)))
O.bodies[c1].state.vel=(0,0,-sqrt(2*9.81*(h-0.2)))

#### define data to plot
def addPlotData():
	plot.addData(t=O.time, us=O.bodies[s1].state.pos[2]-0.15, vs=O.bodies[s1].state.vel[2], fs=sumForces([0],(0,0,1)), uc=O.bodies[c1].state.pos[2]-0.15, vc=O.bodies[c1].state.vel[2], fc=sumForces([1],(0,0,1)))

#### define engines
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), 
	InteractionLoop([Ig2_Sphere_Sphere_ScGeom(label='Ig2ssGeom'),Ig2_Facet_Sphere_ScGeom(label='Ig2fsGeom')],
		[Ip2_FrictMat_FrictMat_FrictPhys()],
		[Law2_ScGeom_FrictPhys_CundallStrack()]),
	GravityEngine(gravity=[0,0,-9.81],label='gravity'),
	NewtonIntegrator(damping=0),
	PyRunner(initRun=True,iterPeriod=10,command='addPlotData()'),
]

#### time step definition for simulation
O.dt = 1.e-6

from yade import qt
v = qt.Controller()
v = qt.View()
plot.plots={'t':[('vs','r-'),('vc','b-'),None,('fs','r--'),('fc','b--')]}
plot.plot(noShow=False, subPlots=False)

-- 
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.