Re: [Yade-users] [Question #706221]: Use of ChatGPT 4 for coding new YADE DEM constitutive laws

2023-04-20 Thread Xue
Question #706221 on Yade changed:
https://answers.launchpad.net/yade/+question/706221

Xue posted a new comment:
Thank you very much for your response!
xue

-- 
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 #706332]: Reduce or remove rebound after contact

2023-04-20 Thread Huan
New question #706332 on Yade:
https://answers.launchpad.net/yade/+question/706332

import random
import math
from yade import geom, pack, utils
import pandas as pd

# Define cylinder parameters
center = (0, 0, 0)
cyl_radius = 0.102
cyl_height = 0.064

# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=cyl_radius, 
height=cyl_height, segmentsNumber=80, wallMask=6)

# define material properties
mat = utils.PolyhedraMat()
mat.density = 2600  # kg/m^3
mat.young = 1E6  # Pa
mat.poisson = 2 / 1E6
mat.frictionAngle = 0.6  # rad

# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = mat

# add cylinder to simulation
O.bodies.append(cylinder)

# Define box dimensions
box_dimensions = (0.1, 0.1, 0.1)

# Create box at origin
box = geom.facetBox(center=(0,0,0), extents=box_dimensions, wallMask=31)

# Define material properties for box
mat = O.materials.append(FrictMat(density=2600, young=1E6, poisson=0.3, 
frictionAngle=0.6))

# Assign material to each facet of box
for body in box:
body.bodyMat = mat

# Add box to simulation
O.bodies.append(box)

# define sphere parameters and number of spheres
radius = 0.01575
num = 6
radius1 = 0.01175
num1 = 7
radius2 = 0.011
num2 = 8
radius3 = 0.01025
num3 = 8
radius4 = 0.0083125
num4 = 31
radius5 = 0.007125
num5 = 31
radius6 = 0.0059375
num6 = 32
radius7 = 0.0041525
num7 = 25
radius8 = 0.003555
num8 = 26
radius9 = 0.0029575
num9 = 26
radius10 = 0.002065
num10 = 25
radius11 = 0.00177
num11 = 26
radius12 = 0.001475
num12 = 26
radius13 = 0.001035
num13 = 155
radius14 = 0.00089
num14 = 155
radius15 = 0.000745
num15 = 156
radius16 = 0.00045
num16 = 9735

## create empty sphere packing
sp = pack.SpherePack()
sp1 = pack.SpherePack()
sp2 = pack.SpherePack()
sp3 = pack.SpherePack()
sp4 = pack.SpherePack()
sp5 = pack.SpherePack()
sp6 = pack.SpherePack()
sp7 = pack.SpherePack()
sp8 = pack.SpherePack()
sp9 = pack.SpherePack()
sp10 = pack.SpherePack()
sp11 = pack.SpherePack()
sp12 = pack.SpherePack()
sp13 = pack.SpherePack()
sp14 = pack.SpherePack()
sp15 = pack.SpherePack()
sp16 = pack.SpherePack()

# generate randomly sphere
sp.makeCloud((-0.055,-0.055,0.0105), (0.055,0.055,0.0105), rMean=radius, 
rRelFuzz=0, num=num)
sp1.makeCloud((-0.055,-0.055,0.0380), (0.055,0.055,0.0380), rMean=radius1, 
rRelFuzz=0, num=num1)
sp2.makeCloud((-0.055,-0.055,0.0608), (0.055,0.055,0.0608), rMean=radius2, 
rRelFuzz=0, num=num2)
sp3.makeCloud((-0.055,-0.055,0.0820), (0.055,0.055,0.0820), rMean=radius3, 
rRelFuzz=0, num=num3)
sp4.makeCloud((-0.0605,-0.0605,0.1006), (0.0605,0.0605,0.1006), rMean=radius4, 
rRelFuzz=0, num=num4)
sp5.makeCloud((-0.0615,-0.0615,0.1160), (0.0615,0.0615,0.1160), rMean=radius5, 
rRelFuzz=0, num=num5)
sp6.makeCloud((-0.0605,-0.0605,0.1291), (0.0605,0.0605,0.1291), rMean=radius6, 
rRelFuzz=0, num=num6)
sp7.makeCloud((-0.0605,-0.0605,0.1392), (0.0605,0.0605,0.1392), rMean=radius7, 
rRelFuzz=0, num=num7)
sp8.makeCloud((-0.0605,-0.0605,0.1469), (0.0605,0.0605,0.1469), rMean=radius8, 
rRelFuzz=0, num=num8)
sp9.makeCloud((-0.0605,-0.0605,0.1534), (0.0605,0.0605,0.1534), rMean=radius9, 
rRelFuzz=0, num=num9)
sp10.makeCloud((-0.0605,-0.0605,0.1584), (0.0605,0.0605,0.1584), 
rMean=radius10, rRelFuzz=0, num=num10)
sp11.makeCloud((-0.0605,-0.0605,0.1622), (0.0605,0.0605,0.1622), 
rMean=radius11, rRelFuzz=0, num=num11)
sp12.makeCloud((-0.0605,-0.0605,0.1655), (0.0605,0.0605,0.1655), 
rMean=radius12, rRelFuzz=0, num=num12)
sp13.makeCloud((-0.0605,-0.0605,0.1680), (0.0605,0.0605,0.1680), 
rMean=radius13, rRelFuzz=0, num=num13)
sp14.makeCloud((-0.0605,-0.0605,0.1699), (0.0605,0.0605,0.1699), 
rMean=radius14, rRelFuzz=0, num=num14)
sp15.makeCloud((-0.0605,-0.0605,0.1715), (0.0605,0.0605,0.1715), 
rMean=radius15, rRelFuzz=0, num=num15)
sp16.makeCloud((-0.0605,-0.0605,0.1727), (0.0605,0.0605,0.1727), 
rMean=radius16, rRelFuzz=0, num=num16)

# add interaction of gravity of sphere and cylinder
O.engines = [ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0,0,-9.81), damping=0.4),
]
O.dt = 0.1 * PWaveTimeStep()

# run the simulation for 1000 steps
O.run(1000, wait=True)

for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.shape.radius == radius: #SP
   body.shape.color = (0,0,1) #blue
   if body.shape.radius == radius1: #SP1
   body.shape.color = (1,0,0) #red
   if body.shape.radius == radius2: #SP2
   body.shape.color = (0,1,0) #green
   if body.shape.radius == radius3: #SP3
   body.shape.color = (1,1,1) #white
   if body.shape.radius == radius4: #SP4
   body.shape.color = (1,1,0) #yellow
   

Re: [Yade-users] [Question #706332]: Reduce or remove rebound after contact

2023-04-20 Thread Huan
Question #706332 on Yade changed:
https://answers.launchpad.net/yade/+question/706332

Description changed to:
import random
import math
from yade import geom, pack, utils
import pandas as pd

# Define cylinder parameters
center = (0, 0, 0)
cyl_radius = 0.102
cyl_height = 0.064

# create cylindrical body with radius 0.102 m and height 0.064 m
cylinder = geom.facetCylinder(center=center, radius=cyl_radius, 
height=cyl_height, segmentsNumber=80, wallMask=6)

# define material properties
mat = utils.PolyhedraMat()
mat.density = 2600  # kg/m^3
mat.young = 1E6  # Pa
mat.poisson = 2 / 1E6
mat.frictionAngle = 0.6  # rad

# assign material to each body in the cylinder
for body in cylinder:
body.bodyMat = mat

# add cylinder to simulation
O.bodies.append(cylinder)

# Define box dimensions
box_dimensions = (0.1, 0.1, 0.1)

# Create box at origin
box = geom.facetBox(center=(0,0,0), extents=box_dimensions, wallMask=31)

# Define material properties for box
mat = O.materials.append(FrictMat(density=2600, young=1E6, poisson=0.3, 
frictionAngle=0.6))

# Assign material to each facet of box
for body in box:
body.bodyMat = mat

# Add box to simulation
O.bodies.append(box)

# define sphere parameters and number of spheres
radius = 0.01575
num = 6
radius1 = 0.01175
num1 = 7
radius2 = 0.011
num2 = 8
radius3 = 0.01025
num3 = 8
radius4 = 0.0083125
num4 = 31
radius5 = 0.007125
num5 = 31
radius6 = 0.0059375
num6 = 32
radius7 = 0.0041525
num7 = 25
radius8 = 0.003555
num8 = 26
radius9 = 0.0029575
num9 = 26
radius10 = 0.002065
num10 = 25
radius11 = 0.00177
num11 = 26
radius12 = 0.001475
num12 = 26
radius13 = 0.001035
num13 = 155
radius14 = 0.00089
num14 = 155
radius15 = 0.000745
num15 = 156
radius16 = 0.00045
num16 = 9735

## create empty sphere packing
sp = pack.SpherePack()
sp1 = pack.SpherePack()
sp2 = pack.SpherePack()
sp3 = pack.SpherePack()
sp4 = pack.SpherePack()
sp5 = pack.SpherePack()
sp6 = pack.SpherePack()
sp7 = pack.SpherePack()
sp8 = pack.SpherePack()
sp9 = pack.SpherePack()
sp10 = pack.SpherePack()
sp11 = pack.SpherePack()
sp12 = pack.SpherePack()
sp13 = pack.SpherePack()
sp14 = pack.SpherePack()
sp15 = pack.SpherePack()
sp16 = pack.SpherePack()

# generate randomly sphere
sp.makeCloud((-0.055,-0.055,0.0105), (0.055,0.055,0.0105), rMean=radius, 
rRelFuzz=0, num=num)
sp1.makeCloud((-0.055,-0.055,0.0380), (0.055,0.055,0.0380), rMean=radius1, 
rRelFuzz=0, num=num1)
sp2.makeCloud((-0.055,-0.055,0.0608), (0.055,0.055,0.0608), rMean=radius2, 
rRelFuzz=0, num=num2)
sp3.makeCloud((-0.055,-0.055,0.0820), (0.055,0.055,0.0820), rMean=radius3, 
rRelFuzz=0, num=num3)
sp4.makeCloud((-0.0605,-0.0605,0.1006), (0.0605,0.0605,0.1006), rMean=radius4, 
rRelFuzz=0, num=num4)
sp5.makeCloud((-0.0615,-0.0615,0.1160), (0.0615,0.0615,0.1160), rMean=radius5, 
rRelFuzz=0, num=num5)
sp6.makeCloud((-0.0605,-0.0605,0.1291), (0.0605,0.0605,0.1291), rMean=radius6, 
rRelFuzz=0, num=num6)
sp7.makeCloud((-0.0605,-0.0605,0.1392), (0.0605,0.0605,0.1392), rMean=radius7, 
rRelFuzz=0, num=num7)
sp8.makeCloud((-0.0605,-0.0605,0.1469), (0.0605,0.0605,0.1469), rMean=radius8, 
rRelFuzz=0, num=num8)
sp9.makeCloud((-0.0605,-0.0605,0.1534), (0.0605,0.0605,0.1534), rMean=radius9, 
rRelFuzz=0, num=num9)
sp10.makeCloud((-0.0605,-0.0605,0.1584), (0.0605,0.0605,0.1584), 
rMean=radius10, rRelFuzz=0, num=num10)
sp11.makeCloud((-0.0605,-0.0605,0.1622), (0.0605,0.0605,0.1622), 
rMean=radius11, rRelFuzz=0, num=num11)
sp12.makeCloud((-0.0605,-0.0605,0.1655), (0.0605,0.0605,0.1655), 
rMean=radius12, rRelFuzz=0, num=num12)
sp13.makeCloud((-0.0605,-0.0605,0.1680), (0.0605,0.0605,0.1680), 
rMean=radius13, rRelFuzz=0, num=num13)
sp14.makeCloud((-0.0605,-0.0605,0.1699), (0.0605,0.0605,0.1699), 
rMean=radius14, rRelFuzz=0, num=num14)
sp15.makeCloud((-0.0605,-0.0605,0.1715), (0.0605,0.0605,0.1715), 
rMean=radius15, rRelFuzz=0, num=num15)
sp16.makeCloud((-0.0605,-0.0605,0.1727), (0.0605,0.0605,0.1727), 
rMean=radius16, rRelFuzz=0, num=num16)

# add the sphere pack to the simulation
sp.toSimulation()
sp1.toSimulation()
sp2.toSimulation()
sp3.toSimulation()
sp4.toSimulation()
sp5.toSimulation()
sp6.toSimulation()
sp7.toSimulation()
sp8.toSimulation()
sp9.toSimulation()
sp10.toSimulation()
sp11.toSimulation()
sp12.toSimulation()
sp13.toSimulation()
sp14.toSimulation()
sp15.toSimulation()
sp16.toSimulation()

# add interaction of gravity of sphere and cylinder
O.engines = [ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
[Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0,0,-9.81), damping=0.4),
]
O.dt = 0.1 * PWaveTimeStep()

# run the simulation for 1000 steps
O.run(1000, wait=True)

for body in O.bodies:
   if not isinstance(body.shape, Sphere): 
   continue
   if body.