← Back to team overview

yade-users team mailing list archive

[Question #694997]: Am I incorrectly using O.Periodic=True?

 

New question #694997 on Yade:
https://answers.launchpad.net/yade/+question/694997

I have been using the open source "Periodic Simple Shear" file (https://gitlab.com/yade-dev/trunk/-/blob/master/doc/sphinx/tutorial/04-periodic-simple-shear.py) to help me create a 2D shear simulation in Yade.

I have started writing my own script using the "Periodic Simple Shear" as inspiration. My model differs because I only want to shear the representative volume element, as opposed to tri-axially compressing, and then shearing, as seen in the link above. However, I  am finding myself confused whether or not if I am appropriating the following lines of code to simulate periodic boundary conditions:

> O.Periodic=True?
>O.cell.hSize=Matrix3(0.03,0,0, 0,1,0, 0,0,1)
>O.bodies.append(geom.facetBox((0,0,0),(0.03,1,1),wallMask=31))
>sp=pack.SpherePack()
>sp.makeCloud((0,-1,-1),(0.03,1,1),rMean=.03,rRelFuzz=0,periodic=True)

Without considering periodic conditions, I am able to simulate a box (nearly flat, but allowing a mono-layer particle pack) with a free top and can create loose packing inside of the box. 

I want to create a randomly simulated particle packing which is why I am favoring this method, as too:

>pack.regularHexa(pack.inAlignedBox((0,0,0),(2,0.3,2)),radius=.1,gap=0,color=(0,0,1))

as seen in "Periodic Simple Shear".

Any advice on how to simulate PBCs for the loose packing inside of the flat box? The documentation I have found has been limited on Yade-DEM.org. 

My full script can be seen here:

# gravity deposition, continuing with oedometric test after stabilization
# shows also how to run parametric studies with yade-batch

# The components of the batch are:
# 1. table with parameters, one set of parameters per line (ccc.table)
# 2. readParamsFromTable which reads respective line from the parameter file
# 3. the simulation muse be run using yade-batch, not yade
#
# $ yade-batch --job-threads=1 03-oedometric-test.table 03-oedometric-test.py
#

# load parameters from file if run in batch
# default values are used if not run from batch
#readParamsFromTable(rMean=.03,rRelFuzz=0,maxLoad=1.5e4,minLoad=1e4) 
# make rMean, rRelFuzz, maxLoad accessible directly as variables later


O.periodic=True	# Is this neccessary?
O.cell.hSize=Matrix3(0.03,0,0, 0,1,0, 0,0,1) # Is this neccessary?

# create box with free top, and ceate loose packing inside the box
from yade import pack, plot
O.bodies.append(geom.facetBox((0,0,0),(0.03,1,1),wallMask=31))
sp=pack.SpherePack()
sp.makeCloud((0,-1,-1),(0.03,1,1),rMean=.03,rRelFuzz=0,periodic=True) #Do I need periodic=True, or has this been established above?
sp.toSimulation()

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,-9.81),damping=0.5),
	# 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=.5*PWaveTimeStep()







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