Polyhedra splitting with Mohr-Coulomb-Weibull criterion
Dear Yade Users,
I am trying to understand and use an implementation of a combined Mohr-Coulomb–
I have created an example based on the "splitter.py" example prepared by François Kneib. My example consists of a cube compressed between two walls. I created a polyhedraMat, which is splittable and has defined all the properties of Mohr-Coulomb–
Yade version is 2018.02b
The major issue is:
- Do I have to activate the MCW criterion somehow (or deactivate the previous one [2])?
And there are two minor issues that I do not understand:
- Do I have to set "Wei_S0". From what I understood from [1] it is some general value that could be used if the tension and compression strengths were the same. But if I declare both strengths (sigmaCD, sigmaCZ), I expect that Wei_S0 is calculated based on them. Am I right?
- Since the default "strength" is 100, why do I get 1.6e5 in my "experiment"? The scale effect should even decrease strength. In the experiment, the contact force between the wall and the cube is divided by crosssection area (1m2) to calculate stress.
Cheers,
Karol
[1] Gladkyy, A., & Kuna, M. (2017). DEM simulation of polyhedral particle cracking using a combined Mohr-Coulomb–
[2] Eliáš, J. (2014). Simulation of railway ballast using crushable polyhedral particles. Powder Technology, 264, 458-465.
-------
from yade import polyhedra_utils
from yade import plot
# FUNCTION DENINITIONS
def myAddData():
force = O.forces.f(1)[1]# cube wall interaction
sig = force/(d**2)
plot.addData(t = O.time, force = force, sig = sig)
d = 1 # cube length
#cube material
gravel1 = PolyhedraMat()
gravel1.IsSplitable = True
gravel1.Wei_P = 0.63
gravel1.Wei_m = 1000
gravel1.Wei_S0 = 1
gravel1.Wei_V0 = d**3
gravel1.sigmaCD = 1
gravel1.sigmaCZ = 1
#wall material
steel = PolyhedraMat()
steel.young = 1e10
steel.frictionAngle = 0
# create cube
p1 = polyhedra_
w1 = utils.wall(
w2 = utils.wall(
v = 5e-4
w1.state.vel = (0,-v,0)
O.bodies.
O.engines=[
ForceResetter(),
InsertionSor
InteractionLoop(
[
[
[
),
NewtonIntegr
PolyhedraSplit
PyRunner(
]
O.dt= 0.1*polyhedra_
plot.plots=
plot.plot(subPlots =False)
try:
from yade import qt
qt.Controller()
v = qt.View()
v.ortho = True
except:
pass
O.run(50000),
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Karol Brzezinski
- Solved:
- Last query:
- Last reply: