yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #13724
Re: [Question #404135]: intRadius(aabbenlargefactor) doesn't work
Question #404135 on Yade changed:
https://answers.launchpad.net/yade/+question/404135
Status: Answered => Open
weijy is still having a problem:
Thank Bruno Chareyre and Jerome!
When I said "strength" in #4 I actually meant "force", sorry for the language mistake.
I tried to use this JCMpm model. But there is still something wrong. Firstly the isotropic state is reached by internal compaction. Then the cohesiveTresholdIteration is set two steps ahead of current step, so that new contact could be set cohesive. Meanwhile intR is set to 1.5. But when cohesive contact is checked at next step, it turn out that:
1. Only new contacts(created by sphere enlarge factor) is set cohesive. Other contacts are still frictional. Is there a way to set all interaction between particles cohesive?
2. When intR is set to 1.5, the coordination number remains to be about 9.8(almost the same with intr=1.25). Expected coord number should be 13. How might this be explained?
More about question 1. I tried to set the cohesiveTresholdIteration a
big number(like 100000) to ensure that this number exceeds the
compaction-finish timestep, then reset it as soon as compaction process
finish. But in this way, some cohesive contacts break during compaction
process. So it might be best if all contacts can be set within one
single timestep.
Here is the code. Many thanks!
*************************************************
from yade import pack
num_intr = 0
O.materials.append(JCFpmMat(young=5e6, poisson=0.333,frictionAngle=0,cohesion = 4500, tensileStrength = 4500, density=2600, label='spheres'))
O.materials.append(FrictMat(young=5e6, poisson=0.333,frictionAngle=0,density=0,label='walls'))
O.bodies.append(aabbWalls([Vector3(0,0,0),Vector3(0.15,0.3,0.15)],thickness=0,material='walls'))
sp = pack.SpherePack()
sp.makeCloud(Vector3(0,0,0),Vector3(0.15,0.3,0.15),-1,0.3333,500)
O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
triax=TriaxialStressController(maxMultiplier=1.+4e-3,finalMaxMultiplier=1.+1e-4,stressMask = 7,internalCompaction=True)
triax.goal1=triax.goal2=triax.goal3=-1e4
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(label = 'bo1s'),Bo1_Box_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(label = 'ig2ss'),Ig2_Box_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(label = 'ip2jj')],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM()]
),
GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
triax,
NewtonIntegrator(damping=0.2),
PyRunner(command = 'isotropic_compaction()', iterPeriod = 1000, label = 'checker'),
]
#############################
#######Key Part Below############
#############################
def isotropic_compaction():
global num_intr
if unbalancedForce()<0.01 and abs(-1e4-triax.meanStress)/1e4<0.001:
for i in O.interactions:
if isinstance(O.bodies[i.id1].shape,Sphere) and isinstance(O.bodies[i.id2].shape,Sphere):
num_intr += 1
triax.internalCompaction=False
print '*************************************************'
print 'current step is ',O.iter
print 'total interactions before reset intR is ', num_intr
ip2jj.cohesiveTresholdIteration = O.iter + 2
bo1s.aabbEnlargeFactor = 1.5
ig2ss.interactionDetectionFactor = 1.5
num_intr = 0
checker.iterPeriod = 1
checker.command = 'set_interaction()'
O.pause()
def set_interaction():
O.pause()
print '************************************************'
print 'current step is ',O.iter
bo1s.aabbEnlargeFactor = -1
ig2ss.interactionDetectionFactor = -1
print 'coordn = ',utils.avgNumInteractions()
num_intr=0
num_coh=0
for i in O.interactions:
if isinstance(O.bodies[i.id1].shape,Sphere) and isinstance(O.bodies[i.id2].shape,Sphere):
num_intr += 1
if i.phys.isCohesive:
num_coh +=1
print 'num_coh = ', num_coh
print 'total interactions after set intR is ', num_intr
--
You received this question notification because your team yade-users is
an answer contact for Yade.