Plate for three point bending load application
Dear all,
I'm trying to simulate three-point bending test in Yade.
I have prepared a sample with random dense pack.
In order to apply the load as a piston, I need to have a plate with 3mm in width and 50mm length parallel to xz plane in the middle of the beam.
and another two plates as rollers with the same dimensions at the bottom left and right locations?
How can I add a plate with a specific dimension?
Previously I have used facetcylinder to apply load as well as to use as rollers.
Now I need to use a single plate instead of this facet cylinder. could you please tell me how to do that?
this is my existing code,
# -*- coding: utf-8 -*-
# Code for three point bending test with crack mouth opening displacement and deflection
#Developed by S.M.C.U. Senanayake, Department of Civil Engineering, Monash University, Australia
from yade import pack
#######
### DEFINING VARIABLES AND MATERIALS ###
#######
from yade import pack, plot,qt,ymport
import os
import csv
# Damping:
damp=0.7
stabilityThresh
# material parameters
#young = 6.75e8
#poisson = .2
#frictionAngle = 0.6
#sigmaT = 1.5e6
#epsCrackOnset = 16.4e-3
#relDuctility = 1.05
#density = 2600
young = 3e9
poisson = .3
frictionAngle = 0.5
sigmaT = .3e6
epsCrackOnset = .9e-3
relDuctility = 30
density = 2600
# prestress
# axial strain rate
rate=0.01 # loading rate (strain rate)
# stress path
'''
# 3 point bending test sample preparation parameters
L= length of the sample
W= width of the sample
H= height of the sample
C=clearance from two ends(canteliver length
A= width of the notch
B= height of the notch
R=radius of the rollers/
Length along x axis, height along y axis and width along z axis
'''
#mn,mx=
L=500e-3
W=50e-3
H=100e-3
C=50e-3
A=3e-3
B=50e-3
R=7e-3
psdmean=3e-3
rmin=1.5*psdmean
prepared=0
v=.1 # applied velocity on piston
concMat=
sigmaT=
frictMat = O.materials.
if prepared<0.5:
pred=pack.
#SpherePack=
SpherePack=
sand=SpherePac
else:
O.bodies.
print ('I have previously prepared packing!!')
for b in O.bodies:
if isinstance(
b.shape.color = (0.2,0.6,0.6)# give a colour
# In order to extract the ids of each particle in the left and right hand corner of the notch and make a list out of them
leftids=[]
for i in O.bodies:
if i.state.
if i.state.pos[1]>0 and i.state.
i.shape.
leftids.
#left=
rightids=[]
c=0
for i in O.bodies:
if i.state.
if i.state.pos[1]>0 and i.state.
i.shape.
c=c+1
print i
print i.id
rightids.
#right=
print c
print rightids
#print right
# assign to a lh object all particles in the left hand side interested region of the notch
lh = [O.bodies[s] for s in sand if (O.bodies[
rh=[O.bodies[s] for s in sand if (O.bodies[
for i in rh:
print i.id
# assign global variable to total numbe rof particles in each block
global left_part
left_part=
global right_part
right_part=
piston=
left_roller=
right_roller=
newton=
enlargeFactor=1.5
for b in O.bodies:
if isinstance(
b.shape.color = (0.2,0.6,0.6)
print len(O.bodies)
O.engines=[
ForceResetter(),
InsertionSortC
Bo1_Sphere_
Bo1_Facet_Aabb()
]),
InteractionLoop(
[
Ig2_
Ig2_
],
[
Ip2_
Ip2_
Ip2_
],
[
Law2_
Law2_
],
),
## We will use the global stiffness of each body to determine an optimal timestep (see https:/
#TranslationEn
GlobalStiffnes
#VTKRecorder(
PyRunner(
PyRunner(
#PyRunner(
newton,
#CpmStateUpdat
]
#Display spheres with 2 colors for seeing rotations better
Gl1_Sphere.
qtr=yade.
qtr.bgColor=(1,1,1)
yade.qt.
O.step()
bo1s.aabbEnlarg
cylinderIds=[]
for i in range(0,
cylinderIds.
#print piston[i]
#print cylinderIds
def apply():
for i in range(0,
O.bodies[
# a function to find crack mouth opening displacement
def cmod():
sumlh=0
sumrh=0
for i in lh:
dp_left=
sumlh+=dp_left # addig all the displacement in x direction components
for j in rh:
dp_right=
sumrh+=dp_right
d1=sumlh/left_part # average displacment in left hand side of the notch
d2=sumrh/
cmodi=
return (cmodi)
def addPlotData():
f_2=utils.
delta_z=v*O.time
crackopen=cmod()
#print f_2
plot.addData(t = O.time,f_2 = f_2,delta_
#O.engines=
def pr():
presentcohesiv
for i in O.interactions:
if hasattr(i.phys, 'isCohesive'):
if i.phys.isCohesive == 0:
presentcohe
a=i.id1
b=i.id2
O.bodies[
O.bodies[
#print (i.id1, "-", i.id2)
noncohesive_
#O.engines=
#plot.plots=
plot.plots=
plot.plot()
#print (len(O.bodies))
from yade import qt
qt.Controller()
qt.View()
Question information
- Language:
- English Edit question
- Status:
- Solved
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Solved by:
- Jan Stránský
- Solved:
- Last query:
- Last reply: