Re: [Yade-users] [Question #699030]: How to set the particle size when generating particles
Question #699030 on Yade changed: https://answers.launchpad.net/yade/+question/699030 Status: Needs information => Open 黎犴dada gave more information on the question: Thank you for your answer. This is the code of my three-axis generation. When creating particles, I want to use the grading curve I already have to create particles with specific data, but I am confused about how to modify this code. # unicode: UTF-8 # For 2D biaxial simulation # 21/10/2016 # Yade version 2016.06a-24-0557faf~trusty # ### Defining parameters and variables ### # #Material constants Density = 3000 FrictionAngle = 35 PoissonRatio = 0.5 Young = 300e6 Damp = 0.5 AvgRadius = 0.0027 N_particles = 25000 #Wall constants WDensity = 0 WFrictionAngle = 0.0 WPoissonRatio = 0.5 WYoung = 50e9 #Packing variables mn = Vector3(0.,0.,0.) mx = Vector3(1.5,1.5,1.5) targetPorosity = 0.2 Porosity = 0. #Confining variables ConfPress1 = -9 #pre-compression ConfPress = -1.0e5 #Loading control LoadRate = -0.01 #time calculation startT = O.time endT = O.time timeSpent = endT - startT #import necessary packages from yade import pack,plot,os,timing import matplotlib; matplotlib.rc('axes',grid=True) import pylab ### Sample Preparing ### #Create materials for spheres and plates SphereMat = O.materials.append(FrictMat(young = Young, poisson = PoissonRatio, frictionAngle = radians(FrictionAngle), density = Density)) WallMat = O.materials.append(FrictMat(young = WYoung, poisson = WPoissonRatio, frictionAngle = radians(WFrictionAngle), density = WDensity)) #Create walls for packing wallIds = O.bodies.append(aabbWalls([mn,mx],thickness=0.001,material=WallMat)) #Use SpherePack object to generate a random loose particles packing #O.periodic = True #O.cell.setBox(8,3,8) sp = pack.SpherePack() #psdSizes,psdCumm=[.003,0.0035,0.004,0.0045,0.005,0.0055,0.006,0.0065,0.007,0.0075,0.008,0.0085,0.009],[0.,0.003,0.025,0.081,0.182,0.325,0.493,0.660,0.8,0.890,0.957,0.984,1.] #pylab.plot(psdSizes,psdCumm,label='precribed PSD') sp.makeCloud(Vector3(0,0,0.0),Vector3(1.5,1.5,1.5) ,-1,0.33,N_particles,False, 0.75) #pylab.plot(*sp.psd(bins=30,mass=True),label='PSD of (free) %d random spheres'%len(sp)) #pylab.legend() #pylab.show() sp.toSimulation(material = SphereMat) O.usesTimeStepper=True O.trackEnerty=True # #Defining triaxil engines # ###first step: compression### triax1=TriaxialStressController( #define wall ids #wall_bottom_id = wallIds[4], #wall_top_id = wallIds[5], #wall_left_id = wallIds[1], #wall_right_id = wallIds[0], #wall_back_id = wallIds[2], #wall_front_id = wallIds[3], #wall_back_activated = False, #for 2d simulation #wall_front_activated = False, thickness = 0.001, maxMultiplier=1.+1.5e5/Young, # spheres growing factor (fast growth) finalMaxMultiplier=1.+4e3/Young, #maxMultiplier = 1.002, internalCompaction = True, # If true the confining pressure is generated by growing particles #max_vel = 1.5, stressMask = 7, computeStressStrainInterval = 10, goal1 = ConfPress1, goal2 = ConfPress1, goal3 = ConfPress1, ) #O.dt=0.5*PWaveTimeStep() newton=NewtonIntegrator(damping=Damp) ###engine O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8, defaultDt=4*utils.PWaveTimeStep()), triax1, newton, PyRunner(realPeriod=10,command='checkUnbalanced()',label='check'), PyRunner(command='addPlotData()',iterPeriod=2000,label='record'), TriaxialStateRecorder(iterPeriod=2000,file='WallStresses') ] # Simulation stop conditions defination def checkUnbalanced(): unb=unbalancedForce() mStress = (triax1.stress(triax1.wall_right_id)[0]+triax1.stress(triax1.wall_top_id)[1]+triax1.stress(triax1.wall_front_id)[2])/3. s1 = triax1.stress(triax1.wall_right_id)[0] s2 = triax1.stress(triax1.wall_top_id)[1] s3 = triax1.stress(triax1.wall_front_id)[2] if unb<0.01 and abs(ConfPress1-mStress)/(-ConfPress1)<0.01: O.pause() O.save('initial.yade.bz2') ## postprocessing for simulation ## f = open("particleinfo.dat",'w') f.write('# This is the result data of 2D simulation\n\n') f.write('# There are 8 types of varibles in this data as follows:\n\n')
Re: [Yade-users] [Question #699135]: How to reduce average particle velocity of a packing
Question #699135 on Yade changed: https://answers.launchpad.net/yade/+question/699135 Status: Open => Answered Jan Stránský proposed the following answer: >>b.state.vel *= someFactor # possibly 0 > Yes, if I understand correctly, using this way can fully control the velocity > of particles yes > but the velocity of these particles will not be affected (i.e., the velocity is unchanged), which is not suitable for the case I described above. this I do not understand. You can set particle velocities to whatever value. You can also set selectively velocities according to different rules based on different regions/groups of particles. > Do you have any ideas to remove kinetic energy/ reduce velocity of particles? you can remove kinetic energy by: - reducing mass - reducing velocity as discussed above, you can set velocities to whatever values. Since you want to preserve interactions, i.e. you want no running, I see no other option than modifying state.vel Cheers Jan -- 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
Re: [Yade-users] [Question #699135]: How to reduce average particle velocity of a packing
Question #699135 on Yade changed: https://answers.launchpad.net/yade/+question/699135 Status: Answered => Open Leonard is still having a problem: Hi Jan, Thanks for your reply. >>Why do you want to reduce average particle velocity? I want to make an attempt to look at the wave propagation on a sand packing, by modelling bender element test. I.e., a part of particles are treated as the transducer (whose velocity is controlled by the input signal), and a part of particles are treated as receiver (whose velocity are monitored during the process). As it is generally mentioned, for instance see section 3.2 in [1] and section 2.2 in [2], the input amplitude velocity is a small value (e.g., 1e-3 m/s) which preserves a very small strain regime, reducing average particle velocity allows us investigating the wave propagation with less effect from the original velocity of particles. Thereby, before the wave propagation test,a relaxation stage was conducted to remove kinetic energy of particles and hold the stress state stably. >>b.state.vel *= someFactor # possibly 0 Yes, if I understand correctly, using this way can fully control the velocity of particles, but the velocity of these particles will not be affected (i.e., the velocity is unchanged), which is not suitable for the case I described above. Do you have any ideas to remove kinetic energy/ reduce velocity of particles? Thanks Leonard [1]Tang, X., and J. Yang. "Wave propagation in granular material: What is the role of particle shape?." Journal of the Mechanics and Physics of Solids 157 (2021): 104605. [2]Li, Yang, Masahide Otsubo, and Reiko Kuwano. "DEM analysis on the stress wave response of spherical particle assemblies under triaxial compression." Computers and Geotechnics 133 (2021): 104043. -- 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
Re: [Yade-users] [Question #699138]: Parameter setting problem of heating rock sample
Question #699138 on Yade changed: https://answers.launchpad.net/yade/+question/699138 Status: Open => Answered Robert Caulk proposed the following answer: Hello, >>The pore here refers to the space between particles, right? We have detailed this very carefully with figures and descriptions in our paper [1]. Yes, it is the space between the particles. >>if so, do the pore boundary conditions and particle boundary conditions refer to the state of pores and particles on the boundary (such as near the wall)? Currently, the boundary cells can be visualized using the withBoundaries=True argument of flow.saveVTK(). In paraview they are distinguished using "isFictious" flag. The boundary particles are the particles incident to those flow cells. Cheers, Robert [1]https://www.sciencedirect.com/science/article/abs/pii/S0045782520304771 -- 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
[Yade-users] [Question #699138]: Parameter setting problem of heating rock sample
New question #699138 on Yade: https://answers.launchpad.net/yade/+question/699138 Hello, I want to simulate the mechanical properties of rock under high temperature in deep underground,so I tried to use FlowEngine and ThermalEngine.But I am unclear about some of the parameters(Mainly the temperature-related part) 1.I have known that FlowEngine.thermalBndCondValue represents the pore boundary condition and ThermalEngine.thermalBndCondValue represents the particle boundary condition. My question is :The pore here refers to the space between particles, right? If so, do the pore boundary conditions and particle boundary conditions refer to the state of pores and particles on the boundary (such as near the wall)? 2.I want to simulate the heating process of a sample that is initially at room temperature,so I set the following parameters: ## flow.tZero=298.15 flow.bndCondIsTemperature=[1,1,1,1,1,1] flow.thermalBndCondValue=[573.15,573.15,573.15,573.15,573.15,573.15] thermal.bndCondIsTemperature=[0,0,0,0,0,0] thermal.thermalBndCondValue=[0,0,0,0,0,0] thermal.particleT0=298.15 # Is it correct to set the parameters like this for my purpose?If there is something inappropriate, how to modify it. Best regards. -- 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
Re: [Yade-users] [Question #699072]: About the examples/ThermalEngine
Question #699072 on Yade changed: https://answers.launchpad.net/yade/+question/699072 Robert Caulk posted a new comment: Hello, Although you have not specified what value you changed flow.useSolver to, I can tell you that anything besides 4 will not solve for advection. Hence why it is important to make sure the example scripts run as is. Cheers, Robert -- 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
Re: [Yade-users] [Question #699135]: How to reduce average particle velocity of a packing
Question #699135 on Yade changed: https://answers.launchpad.net/yade/+question/699135 Status: Open => Answered Jan Stránský proposed the following answer: Hello, firstly, WHY do you want to reduce average particle velocity? of course, if you call O.run in calmDown, the model evolves, possibly changing the interactions (as the particle move). Why not simply ### for b in O.bodies: b.state.vel *= someFactor # possibly 0 ### ? Cheers Jan -- 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