TriaxialStressController

Asked by jsonscript on 2020-08-04

Hello everyone .. I have two questions about triaxial test using TriaxialStressController..

First...If the particle size is much smaller than the box size, during the consolidation process, the particle will pass through the wall boundary and fly out.could you explain the reason?

Second.. If the number of particles is too small, during the consolidation process, the normal stress of the three directions does not gradually increase from 0 to the target stress. The initial stress is extremely high, and then it gradually decreases and adjusts to the target stress. Why is that?how can we achieve stable structure every moment during consolidation?

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2020-08-04
Last reply:
2020-08-05
jsonscript (jsonscript) said : #1

Hello everyone:

Here are my codes..I try different max velocity of wall during consolidation..but the initial normal stress on three directions is still very large..Hope you can help check this..

from yade import plot
from yade import qt
from yade.pack import *

Centroid_X=[-0.092447, -0.069173, -0.27585, -0.043333, -0.311997, -0.030057, 0.309978, 0.368362, 0.132105, 0.403417, 0.398405, 0.394845, 0.115757, 0.177633, -0.354947, -0.366737, -0.113036, -0.350854, -0.188196, 0.224647, -0.195432, 0.228807, 0.390975, -0.18349, 0.163522, -0.321283, -0.098903, 0.129782, -0.010825, -0.367059, -0.382682, -0.353875, -0.405821, -0.402318, 0.3965, 0.256225, 0.403996, 0.390108, 0.097005, -0.062893, 0.392252]
Centroid_Y=[0.5999, -0.096868, 0.166983, -0.304628, 0.32389, 0.37278, -0.132354, 0.37821, -0.311325, -0.415205, -0.057077, 0.5006, 0.31917, 0.089013, -0.178724, 0.04522, 0.526631, 0.42096, 0.58706, 0.54971, 0.48997, -0.414162, 0.12819, -0.247131, 0.01415, -0.342179, -0.006503, 0.031844, 0.34549, 0.02605, -0.393463, -0.391638, -0.409767, 0.50673, -0.408674, -0.212701, -0.408868, -0.385581, -0.416159, 0.15939, 0.154113]
Centroid_Z=[-0.337109, 0.035291, 0.274027, -0.300666, -0.28512, -0.36685, -0.007652, -0.163221, 0.289719, 0.202803, -0.281833, 0.039395, 0.093978, -0.137465, -0.216228, -0.376156, -0.014532, 0.009707, 0.167293, -0.349804, 0.376997, -0.229445, 0.377528, 0.364034, -0.36308, 0.072812, -0.390037, 0.344641, 0.398662, -0.040234, 0.352715, -0.384614, -0.174679, 0.272686, 0.39796, -0.302071, -0.046035, -0.360983, 0.003109, -0.180008, -0.089793]
Radius=[0.1177, 0.2097, 0.2484, 0.2195, 0.1807, 0.1495, 0.2126, 0.1376, 0.2126, 0.1016, 0.1137, 0.1242, 0.2426, 0.1048, 0.1619, 0.1458, 0.1172, 0.1657, 0.1088, 0.1915, 0.142, 0.09959, 0.1277, 0.1498, 0.1561, 0.1845, 0.1329, 0.1802, 0.1191, 0.1391, 0.1281, 0.1293, 0.1069, 0.1135, 0.1094, 0.1224, 0.1092, 0.1293, 0.1001, 0.1647, 0.125]

mn,mx=Vector3(-0.50,-0.50,-0.50),Vector3(0.50,0.725,0.50)

O.materials.append(FrictMat(young=5e11,poisson=0.,frictionAngle=0.,density=2650,label='spheres'))#Wei- Density=2650*1e4
O.materials.append(FrictMat(young=5e11,poisson=0.,frictionAngle=0.,density=0.,label='walls'))

walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)

O.bodies.append([
 sphere(Vector3(Centroid_X[i],Centroid_Y[i],Centroid_Z[i]),Radius[i],material='spheres')
    for i in range(41)
])

print(len(O.bodies))
stabilityThreshold=2e-3

young=5e11
triax=TriaxialStressController(
 maxMultiplier=1.0+2e5/young,
 finalMaxMultiplier=1.0+2e4/young,
 thickness=0,
 stressMask=7,
 internalCompaction=False,
 max_vel=0.01,
        label='triax'
)

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_MindlinPhys()],
  [Law2_ScGeom_MindlinPhys_Mindlin(includeMoment=False)]
 ),
 triax,
        GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.8),
 TriaxialStateRecorder(iterPeriod=100,file='WallStresses'),
 NewtonIntegrator(damping=.2),
 PyRunner(iterPeriod=100,command='chenkshear()',label='recorder')

]
qt.View()
triax.goal1=triax.goal2=triax.goal3=-500000
O.dt=.5*PWaveTimeStep()

def chenkshear():
 unb=unbalancedForce()
 print ('unbalanced force: ',unb,'mean stress: ',triax.meanStress)
 if unb<stabilityThreshold and abs(-500000-triax.meanStress)/500000<0.001:
  O.save('Phase1.xml.bz2')
  O.pause()

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

Hello,

Please do not mix 2 questions into 1. Some remarks considering your second one:

DEM is a simulation method being dynamic by nature (Cundall & Strack, 1979). As such, having a stable structure at every moment (i.e. a quasistatic evolution) requires extra care from the user.

If you're compressing an initial cloud with very few particles, it's probably even more difficult to ensure permanent quasi-staticity and "smooth" macro-curves:
- going from a cloud to a solid-like packing is a quite dramatic process between two very different states
- with very few particles, macro-curves can certainly be much more affected by discrete events on 1 or 2 (or ..) particles

Can you help with this problem?

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

To post a message you must log in.