← Back to team overview

yade-dev team mailing list archive

Re: [Bug 666246] Re: periodic boundary don't work with ViscEl classes

 

(on bug list, sorry...)
> This way I can get shearVel, but I need normalVel too.
> Could not we just cache incidentVel in ScGeom without double calc it 
> here and here?
>
It might be done... at the price of additional attribute, or additional 
conditional. Let me think about it.
Make sure your code works first, the cpu cost of calling 
getIncidentVelocity is not that bad honestly, you can do that for now.

Bruno

-- 
periodic boundary don't work with ViscEl classes
https://bugs.launchpad.net/bugs/666246
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.

Status in Yet Another Dynamic Engine: Fix Committed

Bug description:
Periodic boundary don't work with Ig2_Facet_Sphere_ScGeom and Ig2_Sphere_Sphere_ScGeom functors.


#=============BEGIN SCRIPT TEST PERIODIC WITH Ig2_Sphere_Sphere_ScGeom==========
# -*- coding: utf-8

from yade import utils

sphereRadius=0.1
tc=0.001# collision time 
en=0.3  # normal restitution coefficient
es=0.3  # tangential restitution coefficient
density=2700
frictionAngle=radians(35)# 
params=utils.getViscoelasticFromSpheresInteraction(tc,en,es)
sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params))


# Spheres
sphId=O.bodies.append([
	utils.sphere( (i*0.2+0.1,0.5,0.2), 0.1, material=sphereMat) for i in range(5)
	])
O.bodies[sphId[-1]].state.vel=(0.5,0.5,0)

## Engines 
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom()],
		[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
		[Law2_ScGeom_ViscElPhys_Basic()],
	),
	NewtonIntegrator(damping=0),
]

O.periodic=True
O.cell.refSize=Vector3(1,1,1)

O.dt=.01*tc

O.saveTmp()
#==========================END======================


#=============BEGIN SCRIPT TEST PERIODIC WITH Ig2_Facet_Sphere_ScGeom==========
# -*- coding: utf-8

from yade import utils

sphereRadius=0.1
tc=0.001# collision time 
en=0.3  # normal restitution coefficient
es=0.3  # tangential restitution coefficient
density=2700
frictionAngle=radians(35)# 
params=utils.getViscoelasticFromSpheresInteraction(tc,en,es)
facetMat=O.materials.append(ViscElMat(frictionAngle=frictionAngle,**params)) 
sphereMat=O.materials.append(ViscElMat(density=density,frictionAngle=frictionAngle,**params))

floor
n=5.
s=1./n
for i in range(0,n):
	for j in range(0,n):
		O.bodies.append([
			utils.facet( [(i*s,j*s,0.1),(i*s,(j+1)*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat),
			utils.facet( [(i*s,j*s,0.1),((i+1)*s,j*s,0.1),((i+1)*s,(j+1)*s,0.1)],material=facetMat),
		])

# Spheres
sphId=O.bodies.append([
	utils.sphere( (0.5,0.5,0.2), 0.1, material=sphereMat),
	])
O.bodies[sphId[-1]].state.vel=(0.5,0,0)

## Engines 
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
	InteractionLoop(
		[Ig2_Facet_Sphere_ScGeom()],
		[Ip2_ViscElMat_ViscElMat_ViscElPhys()],
		[Law2_ScGeom_ViscElPhys_Basic()],
	),
	GravityEngine(gravity=[0,0,-9.81]),
	NewtonIntegrator(damping=0),
]

O.periodic=True
O.cell.refSize=Vector3(1,1,1)

O.dt=.01*tc

O.saveTmp()
#==========================END======================





References