The distribution of contact normal direction and contact normal force are not uniform after isotropic consolidation
After isotropic consolidation, I check the contact normal direction and contact normal force distribution which should be evenly distributed in all directions, and I found they are not uniform. I don't know what's wrong, can you help me, thank you!
1. The code of isotropic consolidation is as follows:
##______________ First section, generate sample_________
from __future__ import print_function
from yade import pack, qt, plot
from math import *
import matplotlib; matplotlib.
import pylab
nRead=readParam
## model parameters
## material parameters
young=2e8,
poisson=.2,
alphaKtw=0,
competaRoll=.1,
etaTwist=0,
## fluid parameters
## control parameters
damp=0,
## output specifications
)
from yade.params.table import *
mn,mx=Vector3(
psdSizes=
psdCumm=
# create materials for spheres
#shear strength is the sum of friction and adhesion, so the momentRotationL
O.materials.
O.materials.
walls=aabbWalls
wallIds=
# generate particles packing
sp=pack.
sp.makeCloud(
sp.toSimulation
O.engines=[
),
# specify target values and whether they are strains or stresses
# type of servo-control, external walls compaction
),
]
qt.View()
O.dt=0.
import sys
while True:
O.run(
unb=
print(
if unb<stabilityTh
break
# reaching a specified porosity precisely
while triax.porosity>
compFricDeg
setContactF
print(
sys.
while True:
if unb<stabilityTh
break
# check the position of spheres
maxX=O.
minX=O.
maxY=O.
minY=O.
maxZ=O.
minZ=O.
ball_out_
for b in O.bodies:
if b.state.pos[0]>maxX or b.state.
print('the walls or balls are moving too fast, the time step is too big')
elif b.state.pos[1]>maxY or b.state.
print('the walls or balls are moving too fast, the time step is too big')
if b.state.pos[2]>maxZ or b.state.
print('the walls or balls are moving too fast, the time step is too big')
print(ball_
# change the contact parameters to the final calibration value
setContactFrict
for b in O.bodies:
b.mat.
for i in O.interactions:
i.phys.
O.save(
print('Compacted state saved')
binsSizes, binsProc, binsSumCum=
pylab.semilogx(
pylab.show()
2. The code of contact normal distribution is as follows:
O.load(
def plotdirections(
"""Plot 3 histograms for distribution of interaction directions, in yz,xz and xy planes and
(optional but default) histogram of number of interactions per body. If sphSph only sphere-sphere interactions are considered for the 3 directions histograms.
:returns: If *noShow* is ``False``, displays the figure and returns nothing. If *noShow*, the figure object is returned without being displayed (works the same way as :yref:`
"""
import pylab,math
from yade import utils
for axis in [0,1,2]:
fc=[0,0,0]
fc[axis]=1.
theta1=d[0]
radii=d[1]
# 1.1 makes small gaps between values (but the column is a bit decentered)
if numHist:
if noShow: return pylab.gcf()
else:
pylab.ion()
plotdirections(
3. The code of contact normal force distribution is as follows:
import pylab,math
O.load(
nBins=20
def contact_
'''calculate the contact normal force distribution
param nBins: the number of histograms
return:
*
'''
contact_
contact_
contact_
contact_nXY=[0 for i in range(nBins)]
contact_nXZ=[0 for i in range(nBins)]
contact_nYZ=[0 for i in range(nBins)]
# use only sphere-sphere contacts
for i in O.interactions:
if not isinstance(
if not isinstance(
if angleXY<0:
if angleXZ<0:
if angleYZ<0:
if nXY==nBins:
if nXZ==nBins:
if nYZ==nBins:
for i in range(nBins):
return contact_
contact_
theta1=[0 for i in range(nBins)]
for i in range(nBins):
theta1[
theta2=[x+math.pi for x in theta1]
theta=theta1+theta2
contact_
contact_
contact_
contact_
contact_
contact_
contact_
for axis in [0,1,2]:
fc=[0,0,0]
fc[axis]=1.
subp=
pylab.
pylab.
pylab.savefig(
pylab.ion()
pylab.show()
The figure links of contact normal distribution and contact normal force distribution are as follows:
1. https:/
2. https:/
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Zhicheng Gao
- Solved:
- Last query:
- Last reply: