Calibrating model with Triaxial test

Asked by M.Meidani

Hi,

I am trying to calibrate the model with the triaxial test.
I used CohFricMat as a material and Cohesionmoment for the contact law.
The soil is sand without any cohesion.
So I have to work with 5 parameters to match the result of experimental test with triaxial test.
These parameters are E, Ks/Kn, Phi, eTaRoll and alphaKr.
I found in a published paper an algorithm to calibrate a model with these parameters.
eTaRoll should has an effect on peak stress value.
I tried various values for eTalRoll, but the results were similar and the peak stress was not changed.
 YADE documentations mention that eTaRoll is used to define a maximum moment resistance in the model. So it should changes the results of triaxial test.

Do you have any idea about why eTaRoll has not any effect on the results?

thanks.

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
wangxiaoliang (wangxiaoliang) said :
#1

Relationship between macroscopic properties such as friction angle and dilatancy on phi eTaRoll and alphaKr depends on the initial packing, so you should be
careful about generating the sample. I think Plassiard's calibration is only for Lebenne sand, not for all granular material.

From: M.Meidani
Date: 2014-12-06 05:21
To: yade-users
Subject: [Yade-users] [Question #258686]: Calibrating model with Triaxial test
New question #258686 on Yade:
https://answers.launchpad.net/yade/+question/258686

Hi,

I am trying to calibrate the model with the triaxial test.
I used CohFricMat as a material and Cohesionmoment for the contact law.
The soil is sand without any cohesion.
So I have to work with 5 parameters to match the result of experimental test with triaxial test.
These parameters are E, Ks/Kn, Phi, eTaRoll and alphaKr.
I found in a published paper an algorithm to calibrate a model with these parameters.
eTaRoll should has an effect on peak stress value.
I tried various values for eTalRoll, but the results were similar and the peak stress was not changed.
YADE documentations mention that eTaRoll is used to define a maximum moment resistance in the model. So it should changes the results of triaxial test.

Do you have any idea about why eTaRoll has not any effect on the results?

thanks.

--
You received this question notification because you are a member of
yade-users, which is an answer contact for Yade.

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : <email address hidden>
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp

Revision history for this message
M.Meidani (masood-meidani) said :
#2

Thanks wangxiaoliang for your response.

Absolutely packing preparation has an effect on results.
The porosity of sample is almost similar to experimental one.

The point is that changing eTaRoll did not change anything!!

Revision history for this message
Luc Sibille (luc-sibille) said :
#3

Have you tried eTaRoll = 0 and eTaRoll = 1e20? Does it change something for such values?
Luc

Revision history for this message
Luc Sibille (luc-sibille) said :
#4

In addition have you tried to change eTaRoll for different values of alphaKr? If alphaKr is too small the treshold of the bending moment defined by eTaRoll will be never reached and changing this threshold (by changing eTaRoll) will have no effect.
Luc

Revision history for this message
M.Meidani (masood-meidani) said :
#5

Thanks Luc for your response.

I got surprised with the results.
I found that also friction angle is effect less.
I used the code in tutorial 1 of Triaxial test in github except that I changed confining method from internal to external (wall movement), I think there is a problem in my code but I don't now what!

I just copy the code below. Please let me know if you find any mistakes.

Thanks

from yade import pack

L_xmin = 0
L_ymin = 0
L_zmin = 0
L_xmax = 0
L_ymax = 0
L_zmax = 0

Density = 2720
Young = 80e6
Poi = 0.25
Friction = 28

O.materials.append(CohFrictMat(density=Density,young=Young,poisson = Poi ,frictionAngle= radians(Friction),momentRotationLaw=True,alphaKr=2,etaRoll=1,label='spheres'))

O.materials.append(CohFrictMat(density=Density,young=Young*100,poisson = Poi ,frictionAngle= 0.0,label='walls'))

sphere_input_file_name = "Pack-Tri-2.txt"
infile = open(sphere_input_file_name,"r")
lines = infile.readlines()
infile.readline()

for line in lines:
    data = line.split()
    center = Vector3(float(data[0]),float(data[1]),float(data[2]))
    radius = float(data[3])
    if center[0] + radius >= L_xmax:
 L_xmax = (center[0] + radius)

    if (center[1] + radius ) >= L_ymax:
 L_ymax = (center[1] + radius)

    if center[2] + radius >= L_zmax:
       L_zmax = (center[2] + radius)

    if center[0] - radius <= L_xmin:
 L_xmin = (center[0] - radius)

    if (center[1] - radius) <= L_ymin:
 L_ymin = (center[1] - radius)

    if center[2] - radius <= L_zmin:
 L_zmin = (center[2] - radius)

## corners of the initial packing
mn,mx=Vector3(L_xmin,L_ymin,L_zmin),Vector3(L_xmax,L_ymax,L_zmax)
print L_xmin,L_xmax,L_ymin,L_ymax,L_zmin,L_zmax
thick = 0.0001

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=thick,material='walls')
wallIds=O.bodies.append(walls)

infile = open(sphere_input_file_name,"r")
lines = infile.readlines()
infile.readline()
for line in lines:
    data = line.split()
    center = Vector3(float(data[0]),float(data[1]),float(data[2]))
    radius = float(data[3])
    O.bodies.append([utils.sphere(center,radius,material='spheres')])

triax=TriaxialStressController(
       stressMask = 7,
       goal1=35e3,
       goal2=35e3,
       goal3=35e3,
       max_vel=1,
       internalCompaction=False,
)

newton=NewtonIntegrator(damping=0.2)

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()],
  [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
  [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True)]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8, defaultDt=4*PWaveTimeStep()),
 triax,
 TriaxialStateRecorder(iterPeriod=100,file='WallStresses'),
 newton
]

yade.qt.Controller(), yade.qt.View()

while 1:
  O.run(1500, True)
    unb=unbalancedForce()
  #average stress
    meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
  print 'unbalanced force:',unb,' mean stress: ',meanS
  if unb<stabilityThreshold and abs(meanS-35000)/35000<0.001:
    break

O.save('compressedState.xml')
print "### Isotropic state saved ###"

triax.stressMask = 5
triax.goal2=-0.05
triax.goal1=35000
triax.goal3=35000

Revision history for this message
Luc Sibille (luc-sibille) said :
#6

It will be difficult for me to check in detail your script, in addition to identify clearly the problem a 3D view and plots could help.
After a rapid check I see the variable stabilityThreshold is not defined, thus I guess you can even not run this script?

When you've got such problems with a script, one solution is to come back to the previous script which was working, and then add changes one by one and run the simulation after each change, to find which changing leads to an independance of the response with respect to the friction angle.

Luc

Can you help with this problem?

Provide an answer of your own, or ask M.Meidani for more information if necessary.

To post a message you must log in.