← Back to team overview

yade-users team mailing list archive

Re: [Question #228491]: questions about the deviatoric stress

 

Question #228491 on Yade changed:
https://answers.launchpad.net/yade/+question/228491

Description changed to:
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 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.