Errors during step-by-step particle deletion of consolidated specimen
Hi all,
I am simulating the step-by-step fine particle deletion process of a consolidated gap-graded specimen in 2D case. The confining pressure is maintained constant during the deletion process. The initial fine content by mass is FC = 25%, and the 1% of fine particles are randomly deleted at each loop. After 25 loops, all fine particles should be deleted as expected.
At the first several loop of my case, fine particles can be deleted correctly. However, the simulation suspend after fine loss = 8% though there still many fines in the specimen. It seems that the confining pressure cannot be re-achieved after several particle deletions? Attached please see a simple case to reproduce the ERROR. Could you please help to see where is the problem.
Many thanks and best regards,
Zheng
#### Code below ####
from yade import pack,plot,export
import matplotlib.pyplot as plt
import numpy as np
import random
O.materials.
sigmaIso=-1e5
sp = pack.SpherePack()
size = 0.24
# 25% fines in 2d case.
sp.makeCloud(
maxFine = 0.0012 # maximum diameter of fine particles
sp.toSimulation()
O.cell.hSize = Matrix3(size,0,0, 0,size,0, 0,0,.1) # used for periodic boundaries.
massAll = 0
massEroded = 0
for p in O.bodies:
p.state.
p.state.mass = 2650 * 0.1 * pi * p.shape.radius**2 # 0.1 = thickness
inertia = 0.5 * p.state.mass * p.shape.radius**2
p.state.inertia = (.5*inertia,
massAll += p.state.mass # mass of all particles
O.dt = utils.PWaveTime
O.engines = [
ForceResetter(),
InsertionSor
InteractionLoop(
[
[
[
),
PeriTriaxCon
dynCell=True,
goal=
stressMask=3,
relStress
maxUnbala
maxStrain
doneHook=
label='biax'
),
NewtonIntegr
]
delperc = range(1,25,1)
delperc = [x/100 for x in delperc]
n = 0
def delFine():
global delperc,
#global n
#global massEroded
if n < len(delperc):
print(
setContac
bodyRadius=[]
for b in O.bodies:
if b.shape.
bodyRadiu
i = 0
for b in bodyRadius:
if massEroded <= delperc[n]*massAll:
global massEroded
i+=1
else:
break
print('The amount of fines loss by number, ',i)
print(
# when the simulation finish?
if i == 0:
n += 1
if n == len(delperc):
biax.
def Finished():
print('Test Finished')
O.pause()
O.run()
O.wait()
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Bruno Chareyre
- Solved:
- Last query:
- Last reply: