yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #07541
[Question #228491]: questions about the deviatoric stress
New question #228491 on Yade:
https://answers.launchpad.net/yade/+question/228491
Dear Jan Stránsky and Bruno Chareyre and all users:
Thanks for helping me last time, now in order to determine how the class "TriaxialStressController" works, I decide to consult the article named "theoretical versus experimental modeling of the anchorage capacity of geotextiles in trenches", which can provide me a clear example for texting this class. But after the script being operated, the calculation results bring me confused that they are not inconsistent with what this paper showed. My whole script is at the end of this ask and some important details are as follows:
(1).# material defination
spheremat = O.materials.append(FrictMat(poisson=0.5,density=1500,young=1.48e8,frictionAngle=0.7))
wallmat = O.materials.append(FrictMat(poisson=0.5,density=1500,young=1.48e8,frictionAngle=0))
(2).# walls defination
mn,mx=Vector3(0,0,0),Vector3(0.07,0.14,0.1)
wallIds=O.bodies.append(utils.aabbWalls([mn,mx],thickness=.00001,material=wallmat))
(3).# initial-state determination(the first calculation step)
triax01=TriaxialStressController(
wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
wall_left_id=wallIds[0],wall_right_id=wallIds[1],
wall_back_id=wallIds[4],wall_front_id=wallIds[5],
wall_front_activated = False,wall_back_activated = False,
internalCompaction=False,
stressMask=3,
goal1=7000,
goal2=7000,
max_vel=5,
(4). # triaxial compression determination(the second calculation step)
triax02=TriaxialStressController(
wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
wall_left_id=wallIds[0],wall_right_id=wallIds[1],
wall_back_id=wallIds[4],wall_front_id=wallIds[5],
wall_front_activated = False,wall_back_activated = False,
internalCompaction=False,
stressMask = 1,
goal2=-0.25,
goal1=10000, # (lateral pressure=10KPa)
(5). # particles generation
O.periodic=1
O.cell.setBox(0.07,0.14,0.07)
sp=pack.SpherePack()
sp.makeCloud((0,0,.05),(0.07,0.14,.05),rMean=-1,rRelFuzz=0,num=600,periodic=True)
sp.toSimulation(material=spheremat)
O.periodic=0
for b in O.bodies:
if isinstance(b.shape,Sphere):
b.state.blockedDOFs='zXY' # DOF for 2D simulation
(6). axial-strain defination
axialstrain=triax02.strain[1]
(7). deviatoric stress defination
DeviatorS=(triax02.stress(triax02.wall_top_id)[1]-triax02.stress(triax02.wall_right_id)[0])
In this calculation results, there are two obvious mistakes which are now confusing me:
(1). At the beginning of the second-step simulation, the numerical values of deviatoric stress are negative, just like:
iter axialstrain porosity DeviatorS
20000 2.12201e-314 0.200573 0
20000 0 0.200516 -0.000997575
21000 0.00081899 0.196946 -941.986
22000 0.0017244 0.196543 -390.04
(2). when the axial-strain is approximately equal to 1.5%, the numerical value of deviatoric stress is approximately equal to 4500, just like:
iter axialstrain porosity DeviatorS
36000 0.0144002 0.192956 4368.57
37000 0.0153057 0.192815 4681.97
This has much difference with the exsiting result given by Prof.B.Chareyre(Fig.10)that the deviatoric stress should be approximately 4 times larger than lateral stress when the axial-strain is approximately equal to 1.5%. It is only just I think that the characters of "deviatoric stress versus axial-strain" can only used to describe the macroscopic mechanism of materials and are insensitive to the special attributes of particles. In other words, the relationship between deviatoric stress and axial-strain can be determined when only the axial-strain rate and the lateral pressure are sure.I do not understand why this problem occurs.
SEEKING your help!
the whole script:
### fundamental details of application ###
# unicode: UTF-8
Filename='2D-simulation'
from yade import pack,os
################################# preprocessing for simulation ##########################################
### prescribing variables and functions for simulation controller ###
# material defination
spheremat = O.materials.append(FrictMat(poisson=0.5,density=1500,young=1.48e8,frictionAngle=0.7))
wallmat = O.materials.append(FrictMat(poisson=0.5,density=1500,young=1.48e8,frictionAngle=0))
# walls defination
mn,mx=Vector3(0,0,0),Vector3(0.07,0.14,0.1)
wallIds=O.bodies.append(utils.aabbWalls([mn,mx],thickness=.00001,material=wallmat))
# initial-state determination(the first calculation step)
triax01=TriaxialStressController(
wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
wall_left_id=wallIds[0],wall_right_id=wallIds[1],
wall_back_id=wallIds[4],wall_front_id=wallIds[5],
wall_front_activated = False,wall_back_activated = False,
internalCompaction=False,
stressMask=3,
goal1=7000,
goal2=7000,
max_vel=5,
)
# triaxial compression(the second calculation step)
triax02=TriaxialStressController(
wall_bottom_id=wallIds[2],wall_top_id=wallIds[3],
wall_left_id=wallIds[0],wall_right_id=wallIds[1],
wall_back_id=wallIds[4],wall_front_id=wallIds[5],
wall_front_activated = False,wall_back_activated = False,
internalCompaction=False,
stressMask = 1,
goal2=-0.25,
goal1=10000,
)
################################# control flow for simulation ##########################################
# particles generation
O.periodic=1
O.cell.setBox(0.07,0.14,0.07)
sp=pack.SpherePack()
sp.makeCloud((0,0,.05),(0.07,0.14,.05),rMean=-1,rRelFuzz=0,num=600,periodic=True)
sp.toSimulation(material=spheremat)
O.periodic=0
# blockedDOFs
for b in O.bodies:
if isinstance(b.shape,Sphere):
b.state.blockedDOFs='zXY'
# Simulation assembly for the first step
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Wall_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax01,
NewtonIntegrator(damping=.1),
]
# first step of simulation startting with a correct inheriting for the next step
O.dt = 3e-4
O.run(20000,True);
O.save('first-step.xml')
O.wait()
# loading inheriting
O.load('first-step.xml')
f=file("/home/macro.dat",'a')
f.write('%-16s %-16s %-16s %-16s\n'%('iter','axialstrain','porosity','DeviatorS')),
f.close()
# Simulation assembly for the second step
def macroresults():
wall_left = O.bodies[0].state.pos[0]
wall_right = O.bodies[1].state.pos[0]
wall_bottom = O.bodies[2].state.pos[1]
wall_top = O.bodies[3].state.pos[1]
wall_back = O.bodies[4].state.pos[2]
wall_front = O.bodies[5].state.pos[2]
x_dimension = wall_right - wall_left
y_dimension = wall_top - wall_bottom
#z_dimension = wall_front - wall_back
area = x_dimension * y_dimension
porosity = 1-sum(pi*b.shape.radius**2 for b in O.bodies if isinstance(b.shape,Sphere))/area
axialstrain =triax02.strain[1]
DeviatorS= (triax02.stress(triax02.wall_top_id)[1]-triax02.stress(triax02.wall_right_id)[0])
f=file("/home/macro.dat",'a')
f.write('%-16g %-16g %-16g %-16g\n'%(O.iter,axialstrain,porosity,DeviatorS)),
f.close()
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Wall_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax02,
NewtonIntegrator(damping=.1),
PyRunner(iterPeriod=1000,command='macroresults()')
]
# second step of simulation startting
O.dt = 0.5e-4
O.run(50000,True);
# whole task over
O.save('final-step.xml'.format(Filename));
O.wait()
###################################################################
the whole results of simulation
iter axialstrain porosity DeviatorS
20000 0 0.200516 -0.000997575
21000 0.00081899 0.196946 -941.986
22000 0.0017244 0.196543 -390.04
23000 0.00262982 0.196164 126.202
24000 0.00353524 0.195834 554.132
25000 0.00444065 0.195508 1007.06
26000 0.00534607 0.195213 1414.56
27000 0.00625149 0.194991 1592.68
28000 0.00715691 0.194725 1982.89
29000 0.00806232 0.194521 2278.36
30000 0.00896774 0.194303 2598.24
31000 0.00987316 0.194078 2873.91
32000 0.0107786 0.193844 3096.61
33000 0.011684 0.193562 3458.89
34000 0.0125894 0.193278 3857.76
35000 0.0134948 0.193049 4222.75
36000 0.0144002 0.192956 4368.57
37000 0.0153057 0.192815 4681.97
38000 0.0162111 0.192755 4755.47
39000 0.0171165 0.192607 4943.7
40000 0.0180219 0.192465 5227.46
41000 0.0189273 0.192434 5375.82
42000 0.0198327 0.192419 5556.92
43000 0.0207382 0.192107 4264.72
44000 0.0216436 0.191932 4752.27
45000 0.022549 0.191877 5103.16
46000 0.0234544 0.191776 5504.06
47000 0.0243903 0.191758 5790.65
48000 0.0253694 0.191316 5951.75
49000 0.0262748 0.191307 6276.2
50000 0.0271802 0.191315 6607.22
51000 0.0280856 0.191323 6946.03
52000 0.028991 0.19133 7202.16
53000 0.0298965 0.191321 7500.48
54000 0.0308019 0.191386 7712.01
55000 0.0317073 0.191573 7555.82
56000 0.0326127 0.191684 7776.26
57000 0.0335181 0.191743 7939.87
58000 0.0344235 0.191653 8236.3
59000 0.035329 0.191634 8390.24
60000 0.0362344 0.19155 8191.78
61000 0.0371398 0.191668 8471.56
62000 0.0380452 0.191825 8204.21
63000 0.0389506 0.191777 8638.58
64000 0.039856 0.191992 8410.42
65000 0.0407615 0.19208 8824.25
66000 0.0416669 0.192309 8826.71
67000 0.0425723 0.192643 8120.11
68000 0.0434777 0.192446 8329.3
69000 0.0443831 0.192519 8433.68
--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.