File: clump.py

package info (click to toggle)
yade 2026.1.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,448 kB
  • sloc: cpp: 97,645; python: 52,173; sh: 677; makefile: 162
file content (27 lines) | stat: -rw-r--r-- 1,127 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- encoding=utf-8 -*-
O.engines = [
        ForceResetter(),
        InsertionSortCollider([
                Bo1_Sphere_Aabb(),
                Bo1_Box_Aabb(),
        ]),
        InteractionLoop([Ig2_Sphere_Sphere_ScGeom(), Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()]),
        NewtonIntegrator(damping=.2, exactAsphericalRot=True, gravity=[0, 0, -9.81])
]
# support
O.bodies.append(box([0, 0, -1.5], [3, 3, .2], fixed=True))
# stand-alone sphere
O.bodies.append(sphere([0, 0, 0], .5))
# clumps
relPos = [(0, -.5, -.5), (0, .5, 0), (.5, 0, 0), (0, 0, .5)]
coords = [(-2, 0, 0), (2, 0, 0), (0, 2, 0), (0, -2, 0)]
for i, cc in enumerate(coords):
	# This shorthand command does something like this:
	# O.bodies.appendClumped([sphere(...),sphere(...),sphere(...)])
	# and returns tuple of clumpId,[bodyId1,bodyId2,bodyId3]
	clump, spheres = O.bodies.appendClumped(
	        [sphere([relPos[j][0] + coords[i][0], relPos[j][1] + coords[i][1], relPos[j][2] + coords[i][2]], .5) for j in range(0, i + 1)]
	)
	print(clump, spheres)
O.dt = PWaveTimeStep()
O.saveTmp('init')