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. _______________________________________________ Mailing list: https://launchpad.net/~yade-users Post to : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp