New question #706764 on Yade:
https://answers.launchpad.net/yade/+question/706764
Hello,
I want to set up cohesion value for rMean7 which is my asphalt binder with
value of 0.2MPa. I found out that I have to use this
"Ip2_CohFrictMat_CohFrictMat_CohFrictPhys," but I'm confuse if I can set up
cohesion value for only rMean7 to have cohesion.
##Here is my code##
import random
import math
from yade import geom, pack, utils, plot, ymport
# Define material properties
youngModulus = 1e7
poissonRatio = 0.25
density = 2700
frictionAngle =0.7
# Create material
material = O.materials.append(FrictMat(young=youngModulus,
poisson=poissonRatio, density=density))
material1 = O.materials.append(FrictMat(young=youngModulus,
poisson=poissonRatio, density=density, frictionAngle=frictionAngle))
# Define cylinder with funnel parameters
center = (0, 0, 0)
diameter = 0.102
height = 0.18
# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height,
segmentsNumber=80, wallMask=6)
# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = material
# add cylinder to simulation
O.bodies.append(cylinder)
# Define cylinder with funnel parameters
center1 = (0,0,height/2)
dBunker = 0.4
dOutput = 0.102
hBunker = 0
hOutput = 0.15
hPipe = 0
# create funnel as a bunker with diameter 0.102 m, height 0.064 m
funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput,
hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4)
# assign material to each body in the funnel
for body in funnel:
body.bodyMat = material
# add funnel to simulation
O.bodies.append(funnel)
# define sphere parameters and number of spheres
rMean1 = (0.0125+0.019)/4
rRelFuzz1 = (0.019-0.0125)/4/rMean1
num1 = 13
rMean2 = (0.0095+0.0125)/4
rRelFuzz2 = (0.0125-0.0095)/4/rMean2
num2 = 51
rMean3 = (0.00475+0.0095)/4
rRelFuzz3 = (0.0095-0.00475)/4/rMean3
num3 = 563
rMean4 = (0.00236+0.00475)/4
rRelFuzz4 = (0.00475-0.00236)/4/rMean4
num4 = 5101
rMean5 = (0.00118+0.00236)/4
rRelFuzz5 = (0.00236-0.00118)/4/rMean4
num5 = 18369
rMean6 = 0.00118/4
num6 = 950584
rMean7 = 0.0003/4
num7 = 4003898
#create empty sphere packing
sp = pack.SpherePack()
# generate randomly sphere
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean1, rRelFuzz = rRelFuzz1, num = num1)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean2, rRelFuzz = rRelFuzz2, num = num2)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean3, rRelFuzz = rRelFuzz3, num = num3)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean4, rRelFuzz = rRelFuzz4, num = num4)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean5, rRelFuzz = rRelFuzz5, num = num5)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean6, num = num6)
sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height),
rMean = rMean7, num = num7)
# add the sphere pack to the simulation
sp.toSimulation(material = material1)
for body in O.bodies:
if not isinstance(body.shape, Sphere):
continue
if body.shape.radius >= rMean1 :
body.shape.color = (0,0,1) #blue
if body.shape.radius <= rMean1 and body.shape.radius > rMean2:
body.shape.color = (0,0,1) #blue
if body.shape.radius <= rMean2 and body.shape.radius > rMean3:
body.shape.color = (1,0,0) #red
if body.shape.radius <= rMean3 and body.shape.radius > rMean4:
body.shape.color = (0,1,0) #green
if body.shape.radius <= rMean4 and body.shape.radius > rMean5:
body.shape.color = (1,1,0) #yellow
if body.shape.radius <= rMean5 :
body.shape.color = (1,0,1) #magenta
if body.shape.radius <= rMean6 :
body.shape.color = (1,1,1) #white
if body.shape.radius <= rMean7 :
body.shape.color = (0,0,0) #black
O.engines = [
ForceResetter(),
# sphere, facet, wall
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb(),
Bo1_Wall_Aabb()]),
InteractionLoop(
# the loading plate is a wall, we need to handle sphere+sphere,
sphere+facet, sphere+wall
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom(),
Ig2_Wall_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0, 0, -1000), damping=0.3),
# the label creates an automatic variable referring to this engine
# we use it below to change its attributes from the functions called
PyRunner(command='checkUnbalanced()', realPeriod=2, label='checker'),
]
O.dt = PWaveTimeStep()
# enable energy tracking; any simulation parts supporting it
# can create and update