← Back to team overview

yade-users team mailing list archive

[Question #665675]: Facet mesh

 

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

Dear All,

I am trying to understand the interaction between a facetbox and sphere. 

A sphere falls under gravity in a box. The base of the box can be made of finer facetmesh. When the sphere interacts in the box, I expect one real interaction.

The script: 
#--------------------------------------------------
#--------------------------------------------------

from yade import pack, qt, export
import numpy as np

#-----
##Defining Box 
O.periodic=False

O.bodies.append(geom.facetBox(center=(0.5,0.5,0.5),extents = (0.5,0.5,0.5), wallMask=1+2+4+8+32 )) # Facetbox except the base

N_mesh = 1 # Change this to 2,3,.. to refine mesh at the bottom
for iX in range(N_mesh):
	for iY in range(N_mesh):
		O.bodies.append(geom.facetBox(center=( 1.0/float(N_mesh)*(iX+0.5), 1.0/float(N_mesh)*(iY+0.5), 0.5),extents = ( 0.5/float(N_mesh), 0.5/float(N_mesh), 0.5), wallMask=16) )

#-----
O.bodies.append([sphere((0.5,0.5,0.2001),radius=0.2)]) # add a sphere

#-----
##Engine Definition

O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()],allowBiggerThanPeriod=True),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],   
		[Ip2_FrictMat_FrictMat_FrictPhys()], 
		[Law2_ScGeom_FrictPhys_CundallStrack()]   
   ),
	PyRunner(command = 'output()', iterPeriod = 1, label = "checker"),
	NewtonIntegrator(gravity=(0,0,-9.81),damping=0.0)
]
   
#-----

def output():
	if (O.iter < 20):
		count_intrs = 0.0
		for i in O.interactions:
			if i.isReal:
				count_intrs += 1.0
		print "time:", O.time, "Sphere position", (O.bodies[-1].state.pos[2]), "contacts", count_intrs, "force", O.forces.f(O.bodies[-1].id)[2]
	else:
		print "done"
		O.pause()
          
#-----

O.dt = 5e-1*PWaveTimeStep()
O.run()

#--------------------------------------------------
#--------------------------------------------------

When N_mesh = 1 (corresponding to facetbox with 6 sides), I get two interactions of sphere with the bottom. For N_mesh>1 I get 6 interactions. 

* I expect just one 'real' interaction in all cases. How can I achieve this in output?

* The force on the sphere is different for different mesh. What I am doing wrong here?

* I read sometime ago on this launchpad that facetmesh should be fine at the edges and corners for a better result - I can not find it anymore. Someone has an idea about how fine I should make a facet surface?

Look forward to your input.
Thank you
Nishant

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