Re: [Yade-users] [Question #706764]: How to set up cohesion

2023-06-06 Thread Jérôme Duriez
Question #706764 on Yade changed:
https://answers.launchpad.net/yade/+question/706764

Jérôme Duriez proposed the following answer:
Well, my previous answer was unnecessary complicated.. You just need to
use different CohFrictMat instances, assigning one with  non-zero
cohesive properties to these "rMean7" particles and another one with
zero cohesive properties for the other particles..

You also need to modify your O.engines loop to start with, if you wish
to use a CohFrictMat-based contact model. Using also e.g. another Law2
in addition to the new Ip2.

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #706764]: How to set up cohesion

2023-06-05 Thread Jérôme Duriez
Question #706764 on Yade changed:
https://answers.launchpad.net/yade/+question/706764

Status: Open => Answered

Jérôme Duriez proposed the following answer:
Hi,

Probably Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.setCohesionNow could help. In 
combination with a careful numerical setup to have only interactions regarding 
this "rMean7" when you set the above to True. Playing furthermore with b.mask # 
b being a body
could help in that aspect (interactions are only created when b.mask are 
bit-compatible, see mask doc)

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

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


[Yade-users] [Question #706764]: How to set up cohesion

2023-05-23 Thread Huan
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