Triaxial test of flexible membrane particles flying out of the boundary
Hello, everyone.
I am doing a triaxial test on a flexible film. I need an axial strain of about 10%. When I started running the program, the particles flew out of the cylindrical flexible membrane boundary. If anyone knows please tell me how to solve this problem. Thank you!
from yade import pack, plot
import os
# default parameters or from table
readParamsFromT
# type of test ['cyl','cube']
testType = 'cyl',
# material parameters
young = 30e6,
poisson = .2,
frictionAngle = 0.27,
sigmaT = 1.5e3,
epsCrackOnset = 1e-4,
relDuctility = 10,
# prestress
preStress = -1.5e5,
# axial strain rate
strainRate = -1,
# assamlby parameters
rParticle = .075e-3, #
width = 2e-3,
height = 5e-3,
bcCoeff = 5,
# facets division
nw = 24,
nh = 15,
# output specifications
fileName = 'young = 30e6,frictionAngle = 1.5',
exportDir = '/tmp',
runGnuplot = False,
runInGui = True,
)
from yade.params.table import *
assert testType in ['cyl','cube']
# materials
concMat = O.materials.
young=
epsCrackOnset=
))
frictMat = O.materials.
young=
))
# spheres
pred = pack.inCylinder
sp=SpherePack()
sp = pack.randomDens
spheres=
# bottom and top of specimen. Will have prescribed velocity
bot = [O.bodies[s] for s in spheres if O.bodies[
top = [O.bodies[s] for s in spheres if O.bodies[
vel = strainRate*
for s in bot:
s.shape.color = (1,0,0)
s.state.
s.state.vel = (0,0,-vel)
for s in top:
s.shape.color = Vector3(0,1,0)
s.state.
s.state.vel = (0,0,vel)
print 'Number of elements: ', len(O.bodies)
print 'Timestep',O.dt
print 'young = 30e6,frictionAngle = 0.27,preStress = -1.5e5,sigmaT = 1.5e2'
# facets
facets = []
if testType == 'cyl':
rCyl2 = .5*width / cos(pi/float(nw))
for r in xrange(nw):
for h in xrange(nh):
v1 = Vector3( rCyl2*cos(
v2 = Vector3( rCyl2*cos(
v3 = Vector3( rCyl2*cos(
v4 = Vector3( rCyl2*cos(
f1 = facet((
f2 = facet((
facets.
elif testType == 'cube':
nw2 = nw/4
for r in xrange(nw2):
for h in xrange(nh):
v11 = Vector3( -.1*width + (r+0)*width/nw2, -.1*width, height*
v12 = Vector3( -.1*width + (r+1)*width/nw2, -.1*width, height*
v13 = Vector3( -.1*width + (r+1)*width/nw2, -.1*width, height*
v14 = Vector3( -.1*width + (r+0)*width/nw2, -.1*width, height*
f11 = facet((
f12 = facet((
v21 = Vector3( +.5*width, -.5*width + (r+0)*width/nw2, height*
v22 = Vector3( +.5*width, -.5*width + (r+1)*width/nw2, height*
v23 = Vector3( +.5*width, -.5*width + (r+1)*width/nw2, height*
v24 = Vector3( +.5*width, -.5*width + (r+0)*width/nw2, height*
f21 = facet((
f22 = facet((
v31 = Vector3( +.5*width - (r+0)*width/nw2, +.5*width, height*
v32 = Vector3( +.5*width - (r+1)*width/nw2, +.5*width, height*
v33 = Vector3( +.5*width - (r+1)*width/nw2, +.5*width, height*
v34 = Vector3( +.5*width - (r+0)*width/nw2, +.5*width, height*
f31 = facet((
f32 = facet((
v41 = Vector3( -.5*width, +.5*width - (r+0)*width/nw2, height*
v42 = Vector3( -.5*width, +.5*width - (r+1)*width/nw2, height*
v43 = Vector3( -.5*width, +.5*width - (r+1)*width/nw2, height*
v44 = Vector3( -.5*width, +.5*width - (r+0)*width/nw2, height*
f41 = facet((
f42 = facet((
facets.
O.bodies.
mass = O.bodies[
for f in facets:
f.state.mass = mass
f.state.
#######
plot.plots=
O.saveTmp(
O.timingEnabled
#######
# plots
plot.plots = { 'e':('s',), }
def plotAddData():
f1 = sum(O.forces.
f2 = sum(O.forces.
f = .5*(f2-f1)
s = f/(pi*.
e = (top[0]
plot.addData(
i = O.iter,
s = s,
e = e,
f1 = f1,
f2 = f2
)
# apply prestress to facets
def addForces():
for f in facets:
n = f.shape.normal
a = f.shape.area
O.forces.
# stop condition and exit of the simulation
def stopIfDamaged(
extremum = max(abs(s) for s in plot.data['s'])
s = abs(plot.
e = abs(plot.
if O.iter < 1000 or s > .5*extremum and e < maxEps:
return
f = os.path.
print 'gnuplot'
if runGnuplot:
import subprocess
os.chdir(
subprocess.
print 'Simulation finished'
O.pause()
#sys.exit(0) # results in some threading exception
O.dt=.5*
enlargeFactor=1.5
O.engines=[
ForceResetter(),
InsertionSortC
Bo1_Sphere_
Bo1_Facet_Aabb()
]),
InteractionLoop(
[
Ig2_
Ig2_
],
[
Ip2_
Ip2_
Ip2_
],
[
Law2_
Law2_
],
),
PyRunner(
NewtonIntegrat
CpmStateUpdate
PyRunner(
PyRunner(
]
# run one step
O.step()
# reset interaction detection enlargement
bo1s.aabbEnlarg
# initialize auto-updated plot
if runInGui:
plot.plot()
try:
from yade import qt
renderer=
# uncomment following line to exagerate displacement
#renderer.
except:
pass
Question information
- Language:
- English Edit question
- Status:
- Expired
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply: