← Back to team overview

yade-users team mailing list archive

[Question #656214]: problem replacing TriaxialStressController with PeriTriaxController

 

New question #656214 on Yade:
https://answers.launchpad.net/yade/+question/656214

Hi All,

I am trying to compress a packing of aggregates periodically. The packing contains sets of clumps which are rigid.

I originally compressed the volume using the TriaxialStressController, and now I want a periodic packing and am trying to use the PeriTriaxController. However, the simulation doesnt want to run. I get one timestep where the periodic spheres appear at the boarder and then nothing moves. I have been trying to read through the documentation for PeriTriaxController but nothing stands out. 

Could someone please point me in the right direction here? Is the problem the rigidclumps which is then immediately stopping the simulation? 

The code for the triax controller is below in comments along with the PeriTriax controller. 

Thank you in advance!
Jesse



########################
from yade import export,ymport
	import random
	random.seed(1)

	dim = Vector3(2e-6,2e-6,2e-6)
	#walls = aabbWalls((-dim,dim))
	#wallIds = O.bodies.append(walls)
	
	#print(wallIds)
	#for wall in wallIds:
	#	print(O.bodies[wall].state.pos)
	

	O.materials.append(FrictMat(density=1e6,frictionAngle=0))
	O.periodic=True
	O.cell.setBox(2e-6,2e-6,2e-6)
	
	attrs = []
	sp = ymport.textExt('/tmp/divided.txt',format='x_y_z_r_attrs',attrs=attrs)
	n = max(int(a[0]) for a in attrs)+1
	colors = [randomColor() for _ in xrange(n)]
	agglomerates = [[] for _ in xrange(n)]
	for s,a in zip(sp,attrs):
	   aa = int(a[0])
	   s.agglomerate = aa
	   s.shape.color = colors[aa]
	   agglomerates[aa].append(s)
	for a in agglomerates:
	   O.bodies.appendClumped(a)
	   
	print('Number of particles = ' , len(O.bodies))

	O.engines = [
	   ForceResetter(),
	   InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	   InteractionLoop(
		  #[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], ##triax only
		  [Ig2_Sphere_Sphere_ScGeom()],
		  [Ip2_FrictMat_FrictMat_FrictPhys()],
		  [Law2_ScGeom_FrictPhys_CundallStrack()]
	   ),
	   #TriaxialStressController(
		  #thickness = 0,
		  #stressMask = 7,
		  #internalCompaction = False,
		  #label = 'compressor',
	   #),
	   PeriTriaxController(
		  #thickness = 0,
		  stressMask = 7,
		  #internalCompaction = False,

		  # type of servo-control
		  dynCell=True,
		  #maxStrainRate=(10,10,10),
		  # wait until the unbalanced force goes below this value
		  maxUnbalanced=.1,relStressTol=1e-9,
		  # call this function when goal is reached and the packing is stable
		  doneHook='compactionFinished()',
		  label = 'compressor'
	   ),
	   #NewtonIntegrator(damping=.6), ##Triaxonly
	   NewtonIntegrator(damping=.2),
	]
	factor = .5
	O.dt = factor * PWaveTimeStep()
	
	#compressor.allowBiggerThanPeriod=True
	
	#print(compressor.height)
	#compressor.goal1 = compressor.goal2 = compressor.goal3 = -1e-3
	#compressor.goal1 = compressor.goal2 = compressor.goal3 = -1e-5
	
	sigmaIso = -1e-10
	compressor.goal = (sigmaIso,sigmaIso,sigmaIso)
	
	O.run(50000,True)

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