Friction between walls and 'rock'
Hello everyone,
I am trying to simulate an indirect tensile test. I would like
to take in account the friction between the walls and ‘rock’.
Even thought i assign properties to the walls the results
do not differ.
Could you point what am i doing wrong. Thanx
Here is the code.
from __future__ import print_function
from yade import pack, plot
################# BRAZILIAN SIMULATION DEFINED HERE
####Material microproperties from table
readParamsFromT
Specimen_Radius = 0.02735,
Specimen_Thickness = 0.025,
Sphere_Radius = 1e-3,
intR=1.15,
DENSITY=2700,
YOUNG=100e9,
FRICTION_ANGLE=30,
POISSON=1,
TENS=10e6,
COH=100e6,
)
from yade.params.table import *
#### material definition
Sample = O.materials.
young=YOUNG,
poisson=POISSON,
frictionAngle=
cohesion=COH,
tensileStrength
density = DENSITY,
label='spheres'
))
#### create the specimen
sp=pack.
pack.inCylinde
radius = Sphere_Radius,
spheresInCell = 1000,
material=Sample,
rRelFuzz=0.2,
memoizeDb = '/tmp/packing-
returnSpherePack = True,
)
sp.toSimulation()
# walls
zMin,zMax=[pt[2] for pt in aabbExtrema()]
wallIDs = O.bodies.
O.materials.
walls = wallMin,wallMax = [O.bodies[i] for i in wallIDs]
v =1
wallMin.state.vel = (0,0,+v)
wallMax.state.vel = (0,0,-v)
#engines
O.engines=[
ForceResetter(),
InsertionSortC
InteractionLoop(
[Ig2_
[Ip2_
[Law2_
),
GlobalStif
NewtonIntegrat
PyRunner(
PyRunner(
]
# stop condition
def stopIfDamaged():
if O.iter < 10: # do nothing at the beginning
return
SMax = max(plot.
S = plot.data[
if S<(0.8*SMax):
print("Damaged, stopping.")
print("ft = ",max(plot.
O.pause()
# plot stuff
def addPlotData():
# forces of walls. f1 is "down", f2 is "up" (f1 needs to be negated for evlauation)
f1,f2 = [O.forces.f(i)[2] for i in wallIDs]
f1*=-1
# average force
f = 0.5*(f1+f2)
# displacement (2 times each wall)
wall = O.bodies[
dspl = 2*wall.
# stress (according to standard brazilian test evaluation formula)
stress = f/(pi*Specimen_
# store values
yade.plot.addData(
t = O.time,
i = O.iter,
dspl = dspl,
stress = stress,
te = interactionLaw.
se = interactionLaw.
)
# plot dspl on x axis, stress on y1 axis and f,f1,f2 in y2 axis
plot.plots=
O.step();
ss2sc.interacti
is2aabb.
plot.plot()
O.run()
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Luc Scholtès
- Solved:
- Last query:
- Last reply: