initial mean stress in Triaxial compaction when I used clumps

Asked by Alireza Sadeghi on 2019-11-28

Hello All,

I have a problem when I am using triaxial compaction on clumps particles. The initial mean stress is not zero, it means when I run the code, at the first steps in which porosity is near 1, the mean stress is not zero. For example in my code [1], the initial mean stress is near 1 kPa. This can cause problems when I increase the number of particles. For example, when I used 10000 particles, the initial mean stress is more that 2 MPa, whereas my target confining pressure is 100 kPa. Do you have any experiences like this?
Thank you very much.

Best Regards,

Alireza

[1]

#####code#####
O.reset()

from yade import utils, plot
from yade import pack, qt
from datetime import datetime

#==================================COKE AGGREGATE CLUMP TEMPLATES================================================================

radz1=[0.355155e-3,0.505113e-3,0.397713e-3,0.465286e-3,0.484395e-3,0.394534e-3,0.493151e-3,0.487328e-3,0.613619e-3,0.413455e-3]
poz1= [[1.13418e-3,-0.703895e-3,-1.20338e-3],[-0.390408e-3,0.476061e-3,-0.150612e-3],[-0.556545e-3,0.451341e-3,1.1495e-3],[-0.633942e-3,0.498253e-3,0.348231e-3],[0.0256934e-3,0.388855e-3,-0.733445e-3],[-0.218563e-3,0.504478e-3,1.54117e-3],[-0.319601e-3,0.104778e-3,0.742895e-3],[0.650678e-3,-0.76675e-3,-0.289908e-3],[0.0113115e-3,-0.207684e-3,0.00255944e-3],[0.594902e-3,-0.301473e-3,-0.878654e-3]]
template1= []
template1.append(clumpTemplate(relRadii=radz1,relPositions=poz1))

radz2=[0.330164e-3,0.504115e-3,0.399587e-3,0.614205e-3,0.466444e-3,0.495302e-3,0.394324e-3,0.486898e-3,0.444037e-3,0.489396e-3]
poz2= [[1.16386e-3,-0.70706e-3,-1.25222e-3],[-0.39596e-3,0.482385e-3,-0.144097e-3],[-0.554928e-3,0.448475e-3,1.14685e-3],[-0.00361766e-3,-0.198211e-3, 0.00106559e-3],[-0.633362e-3,0.490424e-3,0.357391e-3],[0.0434148e-3,0.367924e-3,-0.736319e-3],[-0.218749e-3,0.504703e-3,1.54165e-3],[-0.311777e-3, 0.101954e-3,0.750235e-3],[0.621565e-3,-0.779387e-3,-0.179029e-3],[0.711114e-3,-0.503202e-3,-0.795602e-3]]
template2= []
template2.append(clumpTemplate(relRadii=radz2,relPositions=poz2))

#================= define the materials =======================

O.materials.append(CohFrictMat(normalCohesion= 1e20, shearCohesion= 1e20, isCohesive= True, young=1.95e7,
density=1532.2, poisson=0.3, frictionAngle= 0.0, fragile=False, label='aggregate-814'))

O.materials.append(CohFrictMat(normalCohesion= 1e20, shearCohesion= 1e20, isCohesive= False, young=4e9,
density=1523.6, poisson=0.3, frictionAngle= 0.0, fragile=False, label='wall'))

#========= creating walls ======================

walls=aabbWalls([(-15e-3,-15e-3,-15e-3),(15e-3,15e-3,15e-3)],thickness=0.0003,oversizeFactor=1.0,material='wall')
wallIds=O.bodies.append(walls)

############################
### DEFINING ENGINES ###
############################

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb(),Bo1_Facet_Aabb()]),
 InteractionLoop([Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom6D()],
 [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
 [Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
 ),
 NewtonIntegrator(damping=0.4,gravity=[0,0,-10])
 ,PyRunner(command='calm()',iterPeriod=10,label='calmEngine')
]

#=========Generating the aggregates==========

coke=((4.303694e-04,500),(3.971601e-04,500))

nums=['t','t']

temps=[template1,template2]

mats=['aggregate-814','aggregate-814']

for i in range(len(nums)):
    nums[i]=pack.SpherePack()
    nums[i].makeCloud((-0.0145,-0.0145,-0.0145),(0.0145,0.0145,0.0145),rMean=coke[i][0],rRelFuzz=0.0,num=coke[i][1])
    O.bodies.append([utils.sphere(c,r,material=mats[i]) for c,r in nums[i]])
    O.bodies.replaceByClumps(temps[i],[1.0],discretization=5)

#===============================================
#=============== Compaction ====================
#===============================================

triax=TriaxialStressController(

 maxMultiplier=1.000,
 finalMaxMultiplier=1.000,
 thickness = 0,
 stressMask = 7,
 internalCompaction=False,
)

O.engines=O.engines+[triax]

triax.goal1=-1.0e5
triax.goal2=-1.0e5
triax.goal3=-1.0e5
triax.wall_back_activated=True

O.dt=2e-6

while 1:
  O.run(100, True)
  unb=unbalancedForce()
  meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
  print 'mean Stress:',triax.meanStress,'porosity:', triax.porosity,'meanS:',unb
  if triax.porosity<0.4 and abs(-1e5-triax.meanStress)/abs(-1e5)<0.01:

    print 'Isotropic strain1:',-triax.strain[0], 'Isotropic strain 2:',-triax.strain[1], 'Isotropic strain 3:',-triax.strain[2]
    break
    print "### Isotropic state saved ###"

triax.depth0=triax.depth
triax.height0=triax.height
triax.width0=triax.width
O.save('RVE-sizeDis-solid-Isoe5-Isopart.yade')

#====================================================================
#===================== DEVIATORIC LOADING =======================
#====================================================================

triax.stressMask = 3
triax.goal1 = -1e5
triax.goal2 = -1e5
triax.goal3 = -1

O.saveTmp()

calmEngine.dead=True
checkEngine.dead=True

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Alireza Sadeghi
Solved:
2019-12-06
Last query:
2019-12-06
Last reply:
Alireza Sadeghi (asadeghime) said : #1

Also, I have the same problem when I am using PeriTriaxController.

Jérôme Duriez (jduriez) said : #2

Hi,

Non zero initial mean stress means you have non zero interaction forces initially, hence no real gas-like "cloud" as we usually want to have for such triaxial compaction
=>
if I were you I would check your initial creation of sample to check things are as you want them to be.

Alireza Sadeghi (asadeghime) said : #3

Dear Jerome,

Thank you very much for your answer. For particles (instead of clumps) the initial stress is zero, but when I use clumps, the initial stress is zo high. The clumps did not touch the boundaries at the first time. why does it show 1 kPa mean stress?

=>if I were you I would check your initial creation of sample to check things are as you want them to be.
What does it mean?do you mean that I should check each clumps individually?

Thank you very much.

Best Regards,

Alireza

Jérôme Duriez (jduriez) said : #4

I disagree with/do not understand your description that "clumps did not touch the boundaries" and "initial stress is so high".

If the stress you're referring to is your
meanS=(triax.stress(triax.wall_right_id)[0]+triax.stress(triax.wall_top_id)[1]+triax.stress(triax.wall_front_id)[2])/3
or
triax.meanStress

a non zero value necessary implies forces on surrounding walls, hence wall-packing interactions.

You can check it with eg
O.interactions.withBody(triax.wall_right_id)

Alireza Sadeghi (asadeghime) said : #5

Hello Jerome,

Thank you very much for your reply. I checked it and my problem is solved. Thank you again.

Best Regards,

Alireza