← Back to team overview

yade-users team mailing list archive

[Question #217304]: contact stiffness in samples

 

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

Dear yade users,

I made a bouncing of 4 spheres with different diameters.
I varied the value of the damping (0.1 and 0.7) and I get the different value of contact stiffness (kn) used in the simulation.
My question:
How do you compute the contact stiffness? Is it kn is computed from the firs contact detected between the spheres?
Your answer would be appreciated. Thank you

I give you my script:

# -*- coding: utf-8 -*-
from yade import pack, plot

# basic simulation showing sphere falling ball gravity,
# bouncing against another sphere representing the support with cohesive contact law

# DATA COMPONENTS

# Geometry parameter to adapt
rad1		= 0.2	
rad2		= 0.4			
rad3		= 0.6			
rad4		= 0.8			
young_val	= 1e7		# normal contact stiffness				(N/m2)
				                # --- young_val= normal_contact_stiffness/radius
pois_val	= 1.0		        # shear contact stiffness				(N/m2)
				                # --- pois_val= shear_contact_stiffness/normal_contact_stiffness
dens_sp		= 2600		# density of the spheres				(kg/m3)
angle_frict	= 30.0		# friction angle					(in degree)
c_normal	= 1e6		# normal cohesion in contact				(N/m2)
c_shear		= 1e6		# shear cohesion in contact				(N/m2)

## create materials for spheres and plates
O.materials.append(CohFrictMat(
	young=young_val,
	poisson=pois_val,
	density=dens_sp,
	frictionAngle=radians(angle_frict),
	normalCohesion=c_normal,
	shearCohesion=c_shear,
	momentRotationLaw=False,
	isCohesive=True,
	alphaKr=0.0,
	alphaKtw=0.0,
	etaRoll=0.0,
	label='spheres'))

# Blocked certain degress of freedom to make 2D-Model in plane-XZ
for k in O.bodies:
 if isinstance(k.shape, Sphere): k.state.blockedDOFs='yXZ'

# add 2 particles to the simulation
# they the default material (utils.defaultMat)
O.bodies.append([
   # fixed: particle's position in space will not change (support)
   utils.sphere(center=(0,0,0),radius=rad1,fixed=True, material='spheres'),
   # this particles is free, subject to dynamics
   utils.sphere((0,0,2),rad2, material='spheres'),
   # this particles is free, subject to dynamics
   utils.sphere((0,0,4),rad3, material='spheres'),
   # this particles is free, subject to dynamics
   utils.sphere((0,0,6),rad4, material='spheres')
])

# FUNCTIONAL COMPONENTS

# simulation loop -- see presentation for the explanation
O.engines=[
   ForceResetter(),
   InsertionSortCollider([Bo1_Sphere_Aabb()]),
   InteractionLoop(
      [Ig2_Sphere_Sphere_ScGeom6D()],        # collision geometry 
      [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow = True, setCohesionOnNewContacts = True)], # collision "physics"
      [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(always_use_moment_law=False)]   # contact law -- apply forces
   ),
   # apply gravity force to particles
   GravityEngine(gravity=(0,0,-9.81)),
   # damping: numerical dissipation of energy
   NewtonIntegrator(damping=0.7)
]

# set timestep to a fraction of the critical timestep
# the fraction is very small, so that the simulation is not too fast
# and the motion can be observed
O.dt=.5e-4*utils.PWaveTimeStep()

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