← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 3897: example with many cylinders and 2 pFacets

 

------------------------------------------------------------
revno: 3897
committer: Klaus Thoeni <klaus.thoeni@xxxxxxxxx>
timestamp: Fri 2016-06-10 21:13:13 +1000
message:
  example with many cylinders and 2 pFacets
added:
  examples/cylinders/mikado.py


--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== added file 'examples/cylinders/mikado.py'
--- examples/cylinders/mikado.py	1970-01-01 00:00:00 +0000
+++ examples/cylinders/mikado.py	2016-06-10 11:13:13 +0000
@@ -0,0 +1,82 @@
+# encoding: utf-8
+"An example showing how two create cylinders with random length."
+
+from yade.gridpfacet import *
+
+#### Parameters ####
+Lmin=3. # minimum length
+Lmax=6. # maximum length 
+n=10		# number of cylinders in one direction
+r=0.5		# radius of the cylinder element
+phi=30. # friction angle
+E=1e6   # Young's modulus
+
+#### Engines ####
+O.engines=[
+	ForceResetter(),
+	InsertionSortCollider([
+		Bo1_GridConnection_Aabb(),
+		Bo1_PFacet_Aabb(), 
+	]),
+	InteractionLoop([
+		Ig2_GridNode_GridNode_GridNodeGeom6D(),
+		Ig2_GridConnection_GridConnection_GridCoGridCoGeom(),	# cylinder-cylinder interaction
+		Ig2_Sphere_PFacet_ScGridCoGeom(),	# needed for GridNode-pFacet interaction (why is this not included in Ig2_GridConnection_PFacet_ScGeom???)
+		Ig2_GridConnection_PFacet_ScGeom(),	# Cylinder-pFcet interaction
+	],
+	[
+		Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False),
+		Ip2_FrictMat_FrictMat_FrictPhys()
+	],
+	[
+		Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),	# contact law for "internal" cylider forces
+		Law2_ScGridCoGeom_FrictPhys_CundallStrack(),	# contact law for Cylinder-pFacet interaction
+		Law2_GridCoGridCoGeom_FrictPhys_CundallStrack()	# contact law for cylinder-cylinder interaction
+	]
+	),
+	GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.1,label='ts'), 
+	NewtonIntegrator(gravity=(0.,0,-10),damping=0.5,label='newton'),
+	#NewtonIntegrator(gravity=(-1.,0,-10),damping=0.5,label='newton'),
+]
+
+#### Creat materials ####
+O.materials.append( CohFrictMat( young=E,poisson=0.3,density=1000,frictionAngle=radians(phi),normalCohesion=1e10,shearCohesion=1e10,momentRotationLaw=True,label='cMat' ) )  # material to create the gridConnections
+O.materials.append( FrictMat( young=E,poisson=0.3,density=1000,frictionAngle=radians(phi),label='fMat' ) )  # material for general interactions
+
+#### Create cylinders ####
+nodesIds=[]
+cylIds=[]
+ext=12.
+dxy=ext/(n-1)
+dL=Lmax-Lmin
+random.seed( 10 )
+for i in range(0,n):
+	y=-ext/2+i*dxy
+	for i in range(0,n):
+		x=-ext/2+i*dxy
+		L=Lmin+dL*random.random()
+		color=[random.random(),random.random(),random.random()]
+		cylinder((x,y,2*r),(x,y,L+2*r),radius=r,nodesIds=nodesIds,cylIds=cylIds,
+					 fixed=False,color=color,intMaterial='cMat',extMaterial='fMat')
+
+#### Creat ground with pFacets ####
+color=[255./255.,102./255.,0./255.]
+n0=O.bodies.append( gridNode([-10,-10,0],r,wire=False,fixed=True,material='cMat',color=color) )
+n1=O.bodies.append( gridNode([10,-10,0],r,wire=False,fixed=True,material='cMat',color=color) )
+n2=O.bodies.append( gridNode([10,10,0],r,wire=False,fixed=True,material='cMat',color=color) )
+n3=O.bodies.append( gridNode([-10,10,0],r,wire=False,fixed=True,material='cMat',color=color) )
+O.bodies.append( gridConnection(n0,n1,r,color=color,material='fMat') )
+O.bodies.append( gridConnection(n1,n2,r,color=color,material='fMat') )
+O.bodies.append( gridConnection(n2,n0,r,color=color,material='fMat') )
+O.bodies.append( gridConnection(n2,n3,r,color=color,material='fMat') )
+O.bodies.append( gridConnection(n3,n0,r,color=color,material='fMat') )
+O.bodies.append( pfacet(n0,n1,n2,wire=False,material='fMat',color=color) )
+O.bodies.append( pfacet(n0,n2,n3,wire=False,material='fMat',color=color) )
+
+#### For viewing ####
+from yade import qt
+qt.View()
+Gl1_Sphere.stripes=True
+
+#### Allows to reload the simulation ####
+O.saveTmp()