← Back to team overview

yade-users team mailing list archive

Re: [Question #293790]: ForceEngine on facets and spheres

 

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

    Status: Answered => Open

Alejandro Jiménez is still having a problem:
Thank you both for your answers and I am sorry I didn't provide any
example before, this is my first question in the forum. Here it is now,
to better clarify my point, you can see that there is no contact and
therefore no load transfer between the lateral boxfacets and the
spheres:

###Import libraries
from yade import geom,pack,plot


###Materials definition
mat_bri = O.materials.append(CpmMat(young=9.792e9,             #[Pa]
                                    frictionAngle=radians(30),       #[rad]       *hint ---> radians(degrees value)
                                    poisson=.17,              #[-]
                                    density=2000*1.91,             #[kg/m3]
                                    sigmaT=2e6,               #Initial cohesion [Pa]
                                    relDuctility=100,          #Ductility of bonds in normal direction
                                    epsCrackOnset=2.38e-4))

##Facet material
mat_fac = O.materials.append(FrictMat(young=210e9, poisson=.15, density=3000,  frictionAngle=1))

##Box material
kwBoxes = {'color':[1,1,0],'wire':False,'dynamic':False, 'material':1}

###Geometry definition
##Wall geometry parameters
r=.0025  
pComp = 1e6 #Pre-compression in Pa


spheres=[]
for i in range(0, trunc(.2*10000-r*10000), trunc(r*20000)):
	for k in range(0, trunc(.3*10000-r*10000),trunc(r*20000)):
		O.bodies.append(sphere([r+i/10000.,0.0,r+k/10000.],radius=r, material=mat_bri))


left_load = O.bodies.append(utils.geom.facetBox((.225,0,.15), Vector3(.025,r/2.,.15), orientation=Quaternion((1,0,0),0), wallMask=63, **kwBoxes))

right_load = O.bodies.append(utils.geom.facetBox((-.025,0,.15), Vector3(.025,r/2.,.15), orientation=Quaternion((1,0,0),0), wallMask=63, **kwBoxes))
 
dis_ele_1 = O.bodies.append(utils.geom.facetBox((.1,0,.325), Vector3(.025,r/2.,.025), orientation=Quaternion((1,0,0),0), wallMask=63, **kwBoxes))

fix_ele_1 = O.bodies.append(utils.geom.facetBox((.025,0,-.025),
Vector3(.025,r/2.,.025), orientation=Quaternion((1,0,0),0), wallMask=63,
**kwBoxes))

fix_ele_1 = O.bodies.append(utils.geom.facetBox((.175,0,-.025),
Vector3(.025,r/2.,.025), orientation=Quaternion((1,0,0),0), wallMask=63,
**kwBoxes))


###Engines definition
O.engines = [ForceResetter(),
  	     InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), 
             InteractionLoop([Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor = 1.1),Ig2_Facet_Sphere_ScGeom()], 
                             [Ip2_CpmMat_CpmMat_CpmPhys(), Ip2_FrictMat_CpmMat_FrictPhys(), Ip2_FrictMat_FrictMat_FrictPhys()],
                             [Law2_ScGeom_CpmPhys_Cpm(), Law2_ScGeom_FrictPhys_CundallStrack()]),
		ForceEngine(dead = False,
			    force = [pComp * r * .01,0,0],
			    ids = left_load,
			    label = 'precompre_left'),
		ForceEngine(dead = False,
			    force = [-pComp * r * .01 ,0,0],
			    ids = right_load,
			    label = 'precompre_right'),
		NewtonIntegrator(damping=.4,gravity=[0,0,-9.81]),
		CpmStateUpdater(realPeriod=.5),
		TranslationEngine(translationAxis=[0,0,1],
                               velocity = -7.e-3,
                               ids = dis_ele_1,
                               dead = False,
                               label='translat'),
		PyRunner(command='CallForce()', iterPeriod=500)
]

O.dt = 1e-6

##Ploting Force against displacement
def CallForce():
	fc=0
	for b in dis_ele_1:
		fc += O.forces.f(b)[2]

	dt = O.time
	disp = dt*7.e-6*1000
	plot.addData(force=fc, displacement=disp)

plot.plots = {'displacement':('force')}
plot.plot()

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