yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #18644
[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.