← Back to team overview

yade-users team mailing list archive

Re: [Question #693413]: about cohFrictMat model

 

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

    Status: Answered => Open

libby is still having a problem:
Thanks Jerome!
1. That's true. After I decrease the strain rate, the model seems to behave normally
2. thanks for pointing out the mistake. I used 'initial bond - current bond' to count the number of cracks instead and it seems working!
############
for i in O.interactions:
  initialBond+=1
print('number of initial bond=',initialBond)
currentBond=0
  for i in O.interactions:
    if i.phys.cohesionBroken==False:
      currentBond+=1
  print('crack number=',initialBond-currentBond)
#################
is that an appropriate way to track the history of interactions breakage?

3. I prepare a simple script to see the effect of how fragile works, but then error occur:' ValueError: shape mismatch: objects cannot be broadcast to a single shape'. I can't figure out why, can you help me with this ?
###########
from yade import pack,qt,plot
normalCohesion=1e9
shearCohesion=1e9
RollingStiffness=1

idConcrete=O.materials.append(CohFrictMat(young=23.1e9,poisson=0.4,frictionAngle=atan(0.5),density=2036,normalCohesion=normalCohesion,shearCohesion=shearCohesion,fragile=False))
O.bodies.append([sphere((0,0,0),.5,fixed=True,material=idConcrete),sphere((0,0,-1),.5,material=idConcrete)])

### define constant variables
factor=1.5
damping=.4
strainRateTension=5
bb=uniaxialTestFeatures() ## extract the information for the uniaxial test
negIds,posIds,axis,crossSectionArea=bb['negIds'],bb['posIds'],bb['axis'],bb['area']
O.dt=0.00005*PWaveTimeStep() ## set critical time step
O.engines=[
  ForceResetter(),
  InsertionSortCollider([
    Bo1_Sphere_Aabb(aabbEnlargeFactor=factor,label='bo1s'),]), ## expand the collision detection to creat initial interactions
      ## 
  InteractionLoop(
    [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=factor,label='ig2ss'),  ## create collision geometry
    ],
    [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False)], ## creat collision phys
    [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=False)],
   ),
  UniaxialStrainer(strainRate=strainRateTension,axis=axis,asymmetry=0,posIds=posIds,negIds=negIds,crossSectionArea=crossSectionArea,blockDisplacements=False,blockRotations=False,setSpeeds=True,label='strainer'),
  PyRunner(iterPeriod=10,command='addPlotData()'),
  NewtonIntegrator(gravity=(0.,0.,-1000)),
]
O.step() ## go one step to creat interactions
bo1s.aabbEnlargeFactor=1 ## reset the interaction radius
ig2ss.interactionDetectionFactor=1
O.interactions[0,1].phys.unpMax=-1
 
def addPlotData():
  plot.addData({'i':O.iter,'d':O.bodies[0].state.pos[2]-O.bodies[1].state.pos[2]-1,'f':O.interactions[0,1].phys.normalForce[2],'e':O.interactions[0,1].phys.unp})
plot.plots={'i':('f'),'i ':('e'),' i':('d')}
plot.plot()
O.saveTmp()
###############################

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.