← Back to team overview

yade-users team mailing list archive

[Question #707221]: How to obtain obvious fragments in a single particles simulation with bonded subparticles

 

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

Hello, all
Thank you for your help all the time. Now, I want to simulate the single particle breakage,  and the particles are made of bonds sub-particles with JCF materials, and is loaded by 2 clump sphere.
The problem is that I want to get obvious fragment with compression test so that I can track the failure surface. In my simulation, the bonds will break and the peak force also will suddenly drop, but the particle can not break into 2 or 3 obvious fragments, they still keep connection. Even if I did a sufficiently long simulation, the particle can not break into fragments and the failure of particles become very strange,   the particle had collapsed but will not split.
I try many way to improve the simulation, change the material properties, use other Coh materials, but nothing works.
I hope to obtain some advises, Thanks for any help.
The code is as following,
#################################################
from __future__ import print_function
import sys
import math
import os
import itertools
from os.path import expanduser
import numpy as np
from yade import plot, pack, utils

# generate paremters,
Magnification=2.5*100 #speed times
frictionAngle0 = radians(30)
frictionAngle1 = radians(30)
damping=0.8
# paramters for JCFpmMat
young_JCF=6e9
tensileStrength_JCF = 2.605e6 #2.85e6
cohesion_JCF = tensileStrength_JCF
poisson_JCF=0.4
ratio=1
# Sphere model setting
intRadius = 1.3
dtSafety = .8
strainRate = 1
specimenLength = .15
specimenRadius = 5e-3  #1.91e-3
sphereRadius = 0.23e-3 #0.07e-3  0.09e-3 0.12e-3 for #2.5m  0.23e-3 for 5mm

# material
plate_material = JCFpmMat(young=young_JCF*100, density=8000, frictionAngle=frictionAngle0, poisson=0.4, label='plate_mat')
sphere_material = JCFpmMat(young=young_JCF, cohesion=ratio*cohesion_JCF, density=2615, frictionAngle=frictionAngle1,
                           tensileStrength=tensileStrength_JCF, poisson=poisson_JCF, label='sample_mat')

O.materials.append(plate_material)
O.materials.append(sphere_material)


# spheres
pred = pack.inSphere(center=(0, 0, 0), radius=specimenRadius)
sp = pack.randomDensePack(pred, radius=sphereRadius, spheresInCell=2000, memoizeDb = '/home/gx8/myYade/install/bin/Breakage/multi_Loading/2/packing-sphere.db', returnSpherePack=True, seed=1) #
sample_list=sp.toSimulation(material="sample_mat")
print("the  num of particles: ", len(O.bodies))
global dis0
# loading part
zMin, zMax = [pt[2] for pt in aabbExtrema()]


top_loading_plate_1 = []
top_loading_plate_2 = []
top_loading_plate_3 = []
top_loading_plate_1.append(sphere(center=(0, 0, zMax + specimenRadius), radius=specimenRadius, wire=False,material='plate_mat',color=(1,0,0)))
top_loading_plate_2.append(sphere(center=(0, 0, zMin - specimenRadius), radius=specimenRadius, wire=False,material='plate_mat',color=(0,1,0)))
LoadID_1, LoadIDs_1 = O.bodies.appendClumped(top_loading_plate_1)  # top_id is the clump id,
LoadID_2, LoadIDs_2 = O.bodies.appendClumped(top_loading_plate_2)  # top_id is the clump id,

LoadIDs=LoadIDs_1+LoadIDs_2
InterID_load=list(itertools.combinations(LoadIDs, 2))
f_dict = dict(zip(LoadIDs,[0]*len(LoadIDs)))
O.bodies[LoadID_1].state.blockedDOFs = 'xyzXYZ'
O.bodies[LoadID_2].state.blockedDOFs = 'xyzXYZ'

v = strainRate * 2 * specimenRadius
print("v: ", Magnification *v)
O.bodies[LoadID_2].state.vel = np.array([0, 0, Magnification * v])
O.bodies[LoadID_1].state.vel = np.array([0, 0, Magnification * -v])

###########################################################
# engines
O.engines = [
    ForceResetter(),
    InsertionSortCollider(
        [Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius, label='is2aabb'), Bo1_Box_Aabb()]),
    # InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius,label='is2aabb'),Bo1_Wall_Aabb(),Bo1_Box_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intRadius, label='ss2sc'), Ig2_Box_Sphere_ScGeom6D()],
        [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1, label='jcf')],
        [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(cracksFileExist=True, smoothJoint=False,
                                                           label='interactionLaw', neverErase=True, recordMoments=False,
                                                           recordCracks=True,
                                                           )]
    ),

    GlobalStiffnessTimeStepper(),
    #VTKRecorder(iterPeriod=3000, initRun=True, recorders=['jcfpm', 'cracks', 'spheres'], label='vtk'),
    NewtonIntegrator(damping=damping, label="integrator"),
]

O.dt = 0.
O.step()  # to create initial contacts
# now reset the interaction radius and go ahead
ss2sc.interactionDetectionFactor = 1.
is2aabb.aabbEnlargeFactor = 1.

# time step
O.dt = dtSafety * PWaveTimeStep()
# run simulation
#O.run()









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