New question #685604 on Yade: https://answers.launchpad.net/yade/+question/685604
Hello everyone, I am trying to simulate the rock cutting process with a disk cutter. During the cut the disk translates and rotates. I have done that by using Kinematic Engine. The problem is with the geometry. When disk rotates, deforms. The facets forming the disk seem to detach. I have created the geometry (Solid), with 3 different ways (Blender, 3d builder and Autocad) without solving the problem. Any suggestions on how can I fix it; I am wondering it might affect forces exerted on the disk. I am using Ubuntu 18.04 and Yade 2018.02b. Thank you I am sending the following: A file of the disk geometry in .stl format, and my code. https://1drv.ms/u/s!AiKcYaY3wMDqgV9IE7I2RFUWVTxp from __future__ import print_function from __future__ import division from yade import pack, plot, geom, pack,utils,ymport,export,bodiesHandling from yade.pack import * from yade import _packPredicates import math from yade import * ################# SIMULATIONS DEFINED HERE #### Simulation OUT='LinearCutTest_JCFPM' #### Simulation Control saveVTK=10000 # saving output files for paraview #### Material microproperties readParamsFromTable(noTableOk=True, # unknownOk=True, Sphere_Radius = 1.5e-3, intR=1.25, # allows near neighbour interaction (GammaInt) DENSITY=2700, # Density of the material (kg/m^3),could be adapted to match material density: dens_DEM=dens_rock*(V_rock/V_particles)=dens_rock*1/(1-poro_DEM) -> packing porosity as to be computed? YOUNG=68e9, # Eeq(GPa),elastic modulus FRICTION_ANGLE=12, #(Degrees),Contact friction angle POISSON=1, TENS=22e6, #(Tensile Strenght T (MPa)),Defines the maximum admissible normal force in traction in the matrix (FnMax = tensileStrength * crossSection). (Pa) COH=220e6, #(Local Cohesion C (MPa)),Defines the maximum admissible tangential force in shear, for Fn=0, in the matrix (FsMax = cohesion * crossSection). (Pa) ### Cutting_Specimen_dimensions X = 54.85e-3, Y=54.85e-3, Z=180e-3, ) from yade.params.table import * #### material definition Sample = O.materials.append(JCFpmMat( young=YOUNG, poisson=POISSON, frictionAngle=radians(FRICTION_ANGLE), cohesion=COH, tensileStrength=TENS, density = DENSITY, label='spheres' )) #### create the specimen specimen=pack.randomDensePack( pack.inAlignedBox((0,0,0),(X,Y,Z)), radius = Sphere_Radius, spheresInCell = 1000, material=Sample, rRelFuzz=0.34, memoizeDb = '/tmp/Linear-Cutting_Test.db', returnSpherePack = True, ) specimen.toSimulation() #### Disk Creation Disk=ymport.stl('./p(5mm).stl') O.bodies.append(Disk) ids = [b.id for b in Disk] ################# ENGINES DEFINED HERE O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb'),Bo1_Facet_Aabb()],verletDist=.05*Sphere_Radius), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Facet_Sphere_ScGeom()], [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')], [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=10,timestepSafetyCoefficient=0.5,defaultDt=utils.PWaveTimeStep()), NewtonIntegrator(damping=0.5,label='newton'), PyRunner(iterPeriod=int(100),initRun=True,command='recorder()',label='data'), VTKRecorder(iterPeriod=int(saveVTK),initRun=True,fileName=OUT+'-',recorders=['spheres','jcfpm','cracks','facets'],Key=OUT,label='vtk'), PyRunner(iterPeriod=int(100), command='Stop()',label='data'), CombinedKinematicEngine(ids=ids,comb=[ TranslationEngine(translationAxis=[0,0,1],velocity=-580), RotationEngine(angularVelocity=6700,rotationAxis=[1,0,0],rotateAroundZero=False)],label='Eng') ] ################# RECORDER DEFINED HERE def recorder(): global Fz, Fx, Fy global dz Fz = 0.0 Fz = abs(sum(O.forces.f(facet.id)[2] for facet in Disk)) Fx = abs(sum(O.forces.f(facet.id)[0] for facet in Disk)) Fy = abs(sum(O.forces.f(facet.id)[1] for facet in Disk)) yade.plot.addData({'i':O.iter, 'FS':Fx, 'FN':Fy, 'FR':Fz, 'dz': abs(Disk[2].state.pos[2]), 'tc':interactionLaw.nbTensCracks, 'sc':interactionLaw.nbShearCracks, 'te':interactionLaw.totalTensCracksE, 'se':interactionLaw.totalShearCracksE, 'unbF':utils.unbalancedForce()}) plot.saveDataTxt(OUT) def Stop(): if Disk[2].state.pos[2] == 0: O.pause() # if you want to plot during simulation plot.plots={'dz':('FR','FN')} plot.plot() #### manage interaction detection factor during the first timestep and then set default interaction range ((cf. A DEM model for soft and hard rock, Scholtes & Donze, JMPS 2013)) O.step(); ### initializes the interaction detection factor SSgeom.interactionDetectionFactor=1. Saabb.aabbEnlargeFactor=1. # run simulation plot.plot() #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 : [email protected] Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp

