Stress remains 0 during the simulation of a direct shear test
Hi! In this simulation, the stress of the top plate(u1) is not increasing in the consolidation phase(before the shearing) although a velocity is imposed. Inside the shear box there is a compact parking of spheres. Can you please tell me if I am doing something wrong?
# -*- coding: utf-8 -*-
from yade import ymport, utils, plot,pack
################## Parâmetros
## copy spheres from the packing into the scene
D_CILINDRO = 59.92e-3
H_CILINDRO = 26.8e-3
X_CUBO = D_CILINDRO
Y_CUBO = H_CILINDRO
Z_CUBO = D_CILINDRO
# Parâmetros das partículas
RAIO = 8e-4
VAR_RAIO = 10e-2 # 10% do Raio
ESFERAS_CELULA = 2000
COR = (0,0,1)
CORPO_DE_PROVA = 'cubo'
PACKING = 'cilindro_
DAMPING = 0.5
dtCOEFF = 0.5
normalSTRESS = 50e3 # Pa
normalVEL = 1e-3
shearVEL = 10e-5*X_CUBO # try different values to ensure quasi-static conditions
intR=1#1.263 for X1Y1Z1_5k
DENS=1600
YOUNG=40e6
FRICT=40
ALPHA=0.3
TENS=45e5
COH=45e6
iterMAX=40000
Output=
#######
### material definition
def sphereMat():
return CohFrictMat(
young = YOUNG,
frictionAngle = radians(FRICT),
normalCohesion = 1,
shearCohesion = 1,
density = DENS,
fragile = False)
def wallMat():
return CohFrictMat(
young = YOUNG,
frictionAngle = 0,
density = DENS,
fragile = False)
pred = pack.inAlignedB
#O.cell.hSize = Matrix3(D_CILINDRO, 0, 0,
# 0,D_CILINDRO, 0,
# 0, 0, H_CILINDRO)
sp = SpherePack()
memoizeDb = f'{CORPO_
sp = pack.randomDens
rRelFuzz = VAR_RAIO,
memoizeDb = memoizeDb,
spheres = sp.toSimulation
## preprocessing to get dimensions
dim=utils.
xinf=dim[0][0]
xsup=dim[1][0]
X=xsup-xinf
yinf=dim[0][1]
ysup=dim[1][1]
Y=ysup-yinf
zinf=dim[0][2]
zsup=dim[1][2]
Z=zsup-zinf
## initial surface
S0=X*Z
## spheres factory
R=0
Rmax=0
numSpheres=0.
for o in O.bodies:
if isinstance(
o.shape.
numSpheres+=1
R+=o.
if o.shape.
Rmax=
Rmean=R/numSpheres
#######
thickness=Y/100
oversizeFactor=1.3
### Placas de carregamento
### loading platens
O.bodies.
l1 =O.bodies[-1]
O.bodies.
u1=O.bodies[-1]
### add top box
O.bodies.
u2=O.bodies[-1]
O.bodies.
u3=O.bodies[-1]
O.bodies.
u4=O.bodies[-1]
O.bodies.
u5=O.bodies[-1]
### add bottom box
O.bodies.
l2=O.bodies[-1]
O.bodies.
l3=O.bodies[-1]
O.bodies.
l4=O.bodies[-1]
O.bodies.
l5=O.bodies[-1]
#######
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
Ig2_Box_
[Ip2_
[Law2_
),
GlobalStiffnes
TranslationEng
TranslationEng
TranslationEng
PyRunner(
NewtonIntegrat
PyRunner(
]
#######
shearing=False
sigmaN=0
tau=0
Fs1=0
Fs2=0
Xdispl=0
px0=0
Ydispl=0
py0=l1.state.pos[1]
px0=l2.state.pos[0]
py0=l1.state.pos[1]
prevTranslation=0
n=0
F0 = normalSTRESS
def servoController():
global px0, py0, sigmaN, n, Fn1, Fn2, shearing,u1, u2,u3,l1, l2, l3,Xdispl, Ydispl, tau,F0
sigmaN= abs(O.forces.
Xdispl = abs(l2.
tau = 0.0
placas = [u1,u2,
for placa in placas:
tau += abs(O.forces.
tau = tau/(2*S0)
if abs(sigmaN-
if sigmaN < normalSTRESS:
if sigmaN>
if abs((normalSTRE
shearing = True
print(f"sigmaN (Pa) = {sigmaN:.2f};",
f"dif percentual (%) = {(normalSTRESS-
f"tau (Pa) = {tau:.5f}")
if shearing:
u_
l_
def dataCollector():
global Xdispl, Ydispl, tau,sigmaN
Xdispl = abs(l2.
Ydispl = abs(l1.
yade.
plot.
# defines window plot
plot.plots=
plot.plot()
################# graphical intervace
from yade import qt
qt.Controller()
qt.View()
v=qt.Renderer()
v.dispScale=(1,1,1) # displacements are scaled for visualization purpose
################# to manage interaction detection factor during the first timestep
O.step()
################# initializes the interaction detection factor to its default value (new contacts will be created between strictly contacting particles only)
ss2d3dg.
aabb.aabbEnlarg
################# simulation starts here
O.run(iterMAX)
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask Vinicius de Souza Lima for more information if necessary.