← Back to team overview

yade-dev team mailing list archive

Re: trying triaxial with clumps..

 

Václav Šmilauer said:     (by the date of Thu, 06 May 2010 11:37:13 +0200)

> > Aha, now it is crashing at
> > 
> > InsertionSortCollider.cpp:32
> Can you post the script? This is not normal. You had the same crash also
> for the bulldozer that you reported. It works all fine here.

sure. It's a little modified compared to previous script. See attachment.
I am running it with -j5 and let me see at which iteration it crashes....

Hold on. It doesn't.

To trigger the crash I have to generate with this script. I can run
it for a while. Then save to .xml, then restart yade, then load the
saved .xml, run it, and then it crashes.



that's my config. 

PREFIX = '/home/janek/40-Yade/Bin/HEAD-fast'
debug = True
optimize = False
exclude = 'none'
features = 'gts,log4cxx,opengl,openmp,python,vtk'
jobs = 12
linkStrategy = 'per-class'
version = 'trunk'
CXX = 'colorgcc'
CXXFLAGS = []
SHCCFLAGS = ['-fPIC']


-- 
Janek Kozicki                               http://janek.kozicki.pl/  |
# encoding: utf-8
from yade import pack
from numpy import arange
import itertools
import random

## corners of the initial packing
mn,mx=Vector3(0,0,0),Vector3(10,10,10)

## create material #0, which will be used as default
O.materials.append(FrictMat(young=150e6,poisson=.4,frictionAngle=.4,density=2600))
O.materials.append(FrictMat(young=150e6,poisson=.4,frictionAngle=.2,density=2600,label='frictionless'))

d=14

# clumps
for xyz in itertools.product(arange(0,d),arange(0,d),arange(0,d)):
	ids_spheres=O.bodies.appendClumped(pack.regularHexa(pack.inEllipsoid((mn[0]+xyz[0]*(mx[0]-mn[0])/d,mn[0]+xyz[1]*(mx[1]-mn[1])/d,mn[2]+xyz[2]*(mx[2]-mn[2])/d),(0.45+random.random()*0.1,0.45+random.random()*0.1,0.45+random.random()*0.1)),radius=0.15+random.random()*0.05,gap=0,color=[random.random(),random.random(),random.random()]))

## create walls around the packing
walls=utils.aabbWalls(thickness=.1,material='frictionless')
wallIds=O.bodies.append(walls)

## hope that we got the ids right?!
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],
	## important! (otherwise it sets inertia to infinity and crashes??)
	internalCompaction=False,
	## define the rest of triax params here
	## see in pkg/dem/PreProcessor/TriaxialTest.cpp:524 etc
	## which are assigned in the c++ preprocessor actually
	sigmaIsoCompaction=50e3,
	sigmaLateralConfinement=50e3,
	max_vel=10,
)

O.engines=[
	ForceResetter(),
	BoundDispatcher([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	#SpatialQuickSortCollider(),
	InsertionSortCollider(nBins=5,sweepLength=.05),
	InteractionDispatchers(
		[Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
		[Ip2_FrictMat_FrictMat_FrictPhys()],
		[Law2_ScGeom_FrictPhys_Basic()]
	),
	GlobalStiffnessTimeStepper(),
	triax,
	# you can add TriaxialStateRecorder and such here…
	NewtonIntegrator(damping=.4)
]

O.dt=.5*utils.PWaveTimeStep() # initial timestep, to not explode right away

O.saveTmp()

Follow ups

References