← Back to team overview

yade-users team mailing list archive

[Question #677194]: Unstable clump

 

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

Hi guys,

I tried to model a single particle crushing test form a clump (used CohfrictMat contact model), for initial step, everything looks good but when I run the model the Clump (cluster) collapses immediately in initial stages. Does anyone know how I can settle this issue?

Many thanks in advance.
Hessam

Part of my code:

# encoding: utf-8

from yade import pack, utils, ymport, export
import numpy as np
import yade.timing
import matplotlib.pyplot as plt
import os.path


try:
    os.mkdir('VTKFiles')
except:
    pass

#cell geomtry
# cell dimentions
sp=ymport.textExt('ClumpSpheres-57Spheres.spheres', 'x_y_z_r',color=(0,0.3,0.6))

mn=[]; mx=[]
for i in [0,1,2]:
    mn.append(min([b.state.pos[i]-1.02*b.shape.radius for b in sp]))
    mx.append(max([b.state.pos[i]+1.02*b.shape.radius for b in sp]))
    

#Approximate center of Clump
CirRad=max([(-mn[b]+mx[b])/2 for b in [0,1,2]])/2
Circen=((mn[0]+mx[0])/2,(mn[1]+mx[1])/2,(mn[2]+mx[2])/2)

#Changing the dimension of the CLump to desired size.
particleRad = 2e-3
SizeR=particleRad/CirRad

# changing the positions, radiuses of the spheres and the cell dimentions to desired scale.
for b in sp:
    b.state.pos*=SizeR
    b.shape.radius*=SizeR

mn=[SizeR*b for b in mn]
mx=[SizeR*b for b in mx]


#  M.A: Hessam you should be more confident about the selection of loading rate. Note to have enough reasons.
displacementRate = 1.6667e-6 # m/s
strainRate = displacementRate/particleRad # m/s


young =3e8
poisson = 0.25
density = 1950
frictionAngle = 20
normalCohesion = 70e9
identifier=str(particleRad)
output='./out/'+identifier
rate = abs(mn[1]-mx[1])*0.01# you should change it
stabilityThreshold=0.01
iterper=1000
shearCohesion=20e9

CohFrictMat=O.materials.append(CohFrictMat(alphaKr=0.6,young=young,poisson=poisson,frictionAngle=radians(20),normalCohesion=70.5e9,shearCohesion=shearCohesion,fragile=True, momentRotationLaw=True,etaRoll=0.1,density=density,isCohesive=True,label='CohFrictMat'))

#frictionless walls
wallmat = O.materials.append(FrictMat(young=80e9,poisson=.25,frictionAngle=radians(frictionAngle),density=7000,label='frictionlessWalls'))

## create walls around the packing
walls=aabbWalls([mn,mx],thickness=0,material='frictionlessWalls')
wallIds=O.bodies.append(walls)

# M.A: Hessam you can not use your previous command yimport .... since the bodies geometry has been changed.
for b in sp:
    O.bodies.append(sphere(b.state.pos,b.shape.radius,material='CohFrictMat'))


triax = TriaxialStressController(	
	thickness=0,
	stressMask=7,
	internalCompaction=False,
	)


O.engines=[
        ForceResetter(),
        InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
        InteractionLoop(
                [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
                [Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label="cohesiveIp")],
                [Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom_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,
	VTKRecorder(iterPeriod=iterper,initRun=True, Key=identifier, fileName='VTKFiles/'+'-', recorders=['all']),
	NewtonIntegrator(damping=0.9)
]

O.dt = 0.3 * utils.PWaveTimeStep()

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