← Back to team overview

yade-dev team mailing list archive

[Bug 1665973] Re: Triaxial Cohesive

 

Is there a reason you are trying to use TriaxialCompressionEngine
instead of TriaxialStressController? TCE is deprecated.

-- 
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/1665973

Title:
  Triaxial Cohesive

Status in Yade:
  New

Bug description:
  Hi all,

  I have tried below script:

  https://github.com/yade/trunk/blob/master/examples/test/triax-
  cohesive.py

  When I change
  sigmaIsoCompaction=-150e3,
   sigmaLateralConfinement=-150e3,

  to

  sigmaIsoCompaction=-50e3,
   sigmaLateralConfinement=-50e3,

  I face with below error, can you please advise

  
  ####
  Traceback (most recent call last):
    File "/usr/bin/yade", line 182, in runScript
      execfile(script,globals())
    File "/home/elaheh/Documents/triaxial/Triaxcoh.py", line 80, in <module>
      O.reload()
  RuntimeError: Simulation file to load doesn't exist: 
  [[ ^L clears screen, ^U kills line. F12 controller, F11 3d view (use h-key for showing help), F10 both, F9 generator, F8 plot. ]]
  [0;34mYade [[1;34m1[0;34m]: [0mERROR /build/yade-KKgSmd/yade-1.20.0/core/Omega.cpp:120 run: No Omega::simulationLoop? Creating one (please report bug).
  ####

  The script is as per below:

  
  # encoding: utf-8
  # 2012 ©Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx>
  # This variant of triax-basic.py shows the usage of cohesive contact laws and moments at contacts

  from yade import pack

  sp=pack.SpherePack()
  ## corners of the initial packing
  mn,mx=Vector3(0,0,0),Vector3(10,10,10)

  ## box between mn and mx, avg radius ± ½(20%), 2k spheres
  sp.makeCloud(minCorner=mn,maxCorner=mx,rRelFuzz=.2,num=1000)

  ## create material #0, which will be used as default
  O.materials.append(CohFrictMat(young=229e6,poisson=0.4,density=2600,frictionAngle=radians(36.5),normalCohesion=1e12,shearCohesion=1e12,momentRotationLaw=True,etaRoll=0.14,label='spheres'))
  O.materials.append(FrictMat(young=229e6,poisson=.4,frictionAngle=0,density=0,label='frictionlessWalls'))

  
  ## copy spheres from the packing into the scene
  O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp])
  ## create walls around the packing
  walls=aabbWalls(material='frictionlessWalls')
  wallIds=O.bodies.append(walls)

  triax=TriaxialCompressionEngine(
  	wall_bottom_id=wallIds[2],
  	wall_top_id=wallIds[3],
  	wall_left_id=wallIds[0],
  	wall_right_id=wallIds[1],
  	wall_back_id=wallIds[4],
  	wall_front_id=wallIds[5],
  	internalCompaction=False,
  	sigmaIsoCompaction=-50e3,
  	sigmaLateralConfinement=-50e3,
  	max_vel=10,
  	strainRate=0.03,
  	label="triax"
  )

  O.engines=[
  	ForceResetter(),
  	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
  	InteractionLoop(
  		#box-sphere interactions will be the simple normal-shear law, we use ScGeom for them
  		[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
  		#Boxes will be frictional (FrictMat), so the sphere-box physics is FrictMat vs. CohFrictMat, the Ip type will be found via the inheritance tree (CohFrictMat is a FrictMat) and will result in FrictPhys interaction physics
  		#and will result in a FrictPhys
  		[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label="cohesiveIp")],
  		#Finally, two different contact laws for sphere-box and sphere-sphere
  		[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
  			useIncrementalForm=True, #useIncrementalForm is turned on as we want plasticity on the contact moments
  			always_use_moment_law=False,  #if we want "rolling" friction even if the contact is not cohesive (or cohesion is broken), we will have to turn this true somewhere
  			label='cohesiveLaw')]
  	),
  	GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.5),
  	triax,
  	TriaxialStateRecorder(iterPeriod=100,file='100e3,young=229e6,poisson=0.4,density=2600,frictionAngle=radians(36.5),normalCohesion=1e6,shearCohesion=1e6,etaRoll=0.14,'),
  	NewtonIntegrator(damping=.4)
  ]

  
  from yade import plot
  O.engines=O.engines[0:5]+[PyRunner(iterPeriod=20,command='history()',label='recorder')]+O.engines[5:7]
  def history():
    	plot.addData(e11=-O.engines[4].strain[0], e22=-O.engines[4].strain[1], e33=-O.engines[4].strain[2],
  		    s11=-O.engines[4].stress(0)[0],
  		    s22=-O.engines[4].stress(2)[1],
  		    s33=-O.engines[4].stress(4)[2],
  		    i=O.iter)

  #plot.plots={'i':(('e11',"bo"),('e22',"ro"),('e33',"go"),None,('s11',"bx"),('s22',"rx"),('s33',"gx"))}
  plot.plots={'e22':'s22'}
  plot.plot()

  print "computing, be patient..."
  #First run without moment and without cohesion
  O.run(20000,True)

  #This will reload the autosaved compacted sample
  O.reload()

  #second run with rolling friction
  O.engines[2].lawDispatcher.functors[1].always_use_moment_law = True
  O.run(20000,True)
  O.reload()

  #third run with rolling friction + cohesion
  O.engines[2].lawDispatcher.functors[1].always_use_moment_law = True
  #We assign cohesion to all contacts at the next iteration
  O.engines[2].physDispatcher.functors[1].setCohesionNow = True
  O.run(30000,True)
  plot.saveDataTxt('200,45'+key)
  ##or even generate a script for gnuplot. Open another terminal and type  "gnuplot plotScriptKEY.gnuplot:
  plot.saveGnuplot('200,45'+key)

  Thanks,
  Seti

To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/1665973/+subscriptions


References