Re: [Yade-users] [Question #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Jérôme Duriez proposed the following answer: Hello, You mix here "geometry" [1] and "physics" [2] of YADE interactions. In order to describe interactions in DEM, you need to know: - what is the relative movement between two Discrete Elements (i.e. YADE bodies), that's what's inside the "geometry" of the interaction, often denoted i.geom - how forces are associated to these relative displacements, i.e. which contact law, that's what's inside the "physics" of the interaction: i.phys Ip2_FrictMat_FrictMat_MindlinPhys, like all "Ip2_" plays a role in describing the physics of the interaction (computing e.g. the stifness parameters of the interaction from the material parameters of the bodies). It has most often nothing to do with bodies shape ! Indeed, you can still use Ip2_FrictMat_FrictMat_MindlinPhys in your simulations whatever your shapes are, the only condition is that your bodies are of "FrictMat" type. (I'm not 100% correct here, because of https://github.com/yade/trunk/blob/6d4a0d1689c6bad2dbdd6e27d1653418f7fc6498/pkg/dem/HertzMindlin.cpp#L43, but if you're new to YADE you may disregard this parenthesis that won't have any effect in your case...) The bodies shapes enter into picture through the "geom". Because the way e.g. overlap is computed depends whether we face overlap between spheres, or between a sphere and a box, or between a sphere and a facet. Your problem is thus (as Jan said: he told you about "Ig2", not "Ip2") to use in your simulation the correct "Ig2_". Look here [3] (the names do help !) to pick the right one. Once this will be done, you will have a new kind of i.geom in your simulation. For this reason, you may also have to update your "Law2_.." (as Jan suggested again) which, in the end, has to consider both i.geom and i.phys to do his job (computing and applying interaction forces) Again, you will have to choose the correct Law2 (from [4], there is a lot..., but again the names do help) to be sure it can handle the i.geom and i.phys you have in your simulation. [1] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Interaction.geom, see https://yade-dem.org/doc/yade.wrapper.html#igeom for all possible choices [2] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Interaction.phys, see https://yade-dem.org/doc/yade.wrapper.html#iphys for all possible choices [3] https://yade-dem.org/doc/yade.wrapper.html#igeomfunctor [4] https://yade-dem.org/doc/yade.wrapper.html#lawfunctor -- 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 #293295]: Want to connect all the particles in an aggregate using cohesive bond
New question #293295 on Yade: https://answers.launchpad.net/yade/+question/293295 Hello everyone, Here is a description of the problem I am trying to solve: -- I have a granular sample with spherical particles of diameters D1, D2, D3 etc. All of such big particles (lets call them agglomerates) are composed of smaller particles of diameter 'd', since d is the smallest particle size of interest. -- Initially, within each big spherical particle, all the smaller particles should be densely packed and connected with cohesive bonds (CohFrictMat). As the loading is applied, the initially defined cohesive bonds within each big sphere will break progressively leading to smaller fragments. Now, the problem I am facing: Initially, within a single big sphere itself, sometimes there are particles which are shown not to have any cohesive interaction, leaving the small individual particle free to fly. How can I alleviate this problem ? This is a follow-up question to https://answers.launchpad.net/yade/+question/292846 Here is the script: from yade import pack # # Set up run # run_name="PeriodicCohesive_MWE" data_root_dir="." # # Materials # plate_material=FrictMat( young=200e9 ,poisson=0.3 ,density=8000. ,frictionAngle=radians(30) ,label='plate_mat') O.materials.append(plate_material) sample_material=CohFrictMat( young=4e9 ,poisson=0.25 ,density=1400 ,frictionAngle=radians(30) ,normalCohesion=1e8*1.2 ,shearCohesion=.4e8*1.2 ,momentRotationLaw=True ,label='sample_mat') O.materials.append(sample_material) # # Component dimensions and operating condition # # Granular material dimension sample_diameter=2e-4 #sample_diameter=126e-6 sample_radius=sample_diameter/2.0 # Sub-particle dimension particle_diameter=74e-6 particle_radius=particle_diameter/2. # # grinding plate dimension # rotvel=2./3.*pi*(1.5+0.5)*.254 # # Periodic Geometry # # Set up periodic boundary conditions O.periodic=True xExt=4*sample_diameter yExt=3.*sample_diameter*2 #to block the periodicity in y direction zExt=xExt xLim=xExt yLim=yExt/4 zLim=zExt O.cell.hSize=Matrix3( xExt, 0, 0, 0, yExt, 0, 0, 0, zExt) length=xExt height=yExt width=zExt # Top and bottom plate thickness thickness=0.1*height bottomBoxes = [] for ix in (0,1,2): for iz in (0,1,2): bottomBoxes.append(box( # create 3x3 boxes with 1/3 cell size center=(xExt/6.*(1+2*ix),yLim - thickness/2.0,zExt/6.*(1+2*iz)) ,extents=(xExt/6.,thickness/2.0,zExt/6.) ,wire=False ,material='plate_mat' )) bottom_id,bottom_ids = O.bodies.appendClumped(bottomBoxes) # bottom_id is the clump id, O.bodies[bottom_id].state.blockedDOFs='xyzXYZ' # # Particle Packing # min_corner= (0,yLim,0) max_corner= (xLim, yExt-yLim, zLim) sp=pack.SpherePack() sp.makeCloud( min_corner,max_corner, rMean=sample_radius, periodic=False, seed=1) print "Generated ",len(sp)," aggregates" ### # Sample ### for s in sp: sphere=pack.inSphere((s[0][0],s[0][1],s[0][2]),s[1]) sp1=pack.randomDensePack( sphere ,spheresInCell=2000 ,radius=particle_radius ,memoizeDb='/tmp/triaxPackCache.sqlite' ,returnSpherePack=True ) sp1.toSimulation(material='sample_mat',color=(0.9,0.8,0.6)) print 'Generated ',len(sp1),' particles' Gl1_Sphere(stripes=True) # # Top # topBoxes = [] for ix in (0,1,2): for iz in (0,1,2): topBoxes.append(box( # create 3x3 boxes with 1/3 cell size center=(xExt/6.*(1+2*ix),yExt - yLim + thickness/2.0,zExt/6.*(1+2*iz)) ,extents=(xExt/6.,thickness/2.0,zExt/6.) ,wire=False ,material='plate_mat'
Re: [Yade-users] [Question #292846]: Particle packing - How to avoid overlap
Question #292846 on Yade changed: https://answers.launchpad.net/yade/+question/292846 Status: Answered => Open VG is still having a problem: Okay I see, Thanks 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 #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Jonathan Pergoli posted a new comment: P.S. I'm new to YADE :-) -- 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 #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Jonathan Pergoli posted a new comment: Thanks Jan, but I mean how can i modifie Ip2_FrictMat_FrictMat_MindlinPhys in order to distinguish between sphere-sphere and sphere box? :-) I'm using box now instead of polyhedra but the problem is the same. -- 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 #292846]: Particle packing - How to avoid overlap
Question #292846 on Yade changed: https://answers.launchpad.net/yade/+question/292846 Jan Stránský proposed the following answer: Hi Varun, I meant to use clumps only for the stage of defining initial packing for your actual simulation. The steps I meant are: 1) use makeCloud to create aggregates 2) use randomDensePack to divide each aggregate into a set of spherical particles 3) apply some compression to make the packing of aggregates denser 1) and 2) you do already, the rest is just to make the packing overall denser cheers Jan 2016-05-04 20:26 GMT+02:00 VG: > Question #292846 on Yade changed: > https://answers.launchpad.net/yade/+question/292846 > > VG posted a new comment: > Thanks for your response, Jan! > For the generation of big aggregates, one of the procedures you suggested > is not very clear to me: > > >"- use something like randomDensePack on already "meshed" aggregates, see > > Klaus's answer #3 in [1]" > > This procedure talks about creating clumps of spherical particles. As > far as I understand, they behave in a rigid manner and probably I can't > have breakable cohesive bonds within a clump. Also, I dint quite get > what you mean by already "meshed" aggregates ? > > I will post another question about the issue with CohFrictMat. > > -- > 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 > -- 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 #292846]: Particle packing - How to avoid overlap
Question #292846 on Yade changed: https://answers.launchpad.net/yade/+question/292846 VG posted a new comment: Thanks for your response, Jan! For the generation of big aggregates, one of the procedures you suggested is not very clear to me: >"- use something like randomDensePack on already "meshed" aggregates, see > Klaus's answer #3 in [1]" This procedure talks about creating clumps of spherical particles. As far as I understand, they behave in a rigid manner and probably I can't have breakable cohesive bonds within a clump. Also, I dint quite get what you mean by already "meshed" aggregates ? I will post another question about the issue with CohFrictMat. -- 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 #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Jan Stránský proposed the following answer: instead of using utils.polyhedron() using utils.box() :-) + changing some Ig2 and Law2 fomr Polyhedra to Box cheers Jan 2016-05-04 18:13 GMT+02:00 Jonathan Pergoli < question293...@answers.launchpad.net>: > Question #293247 on Yade changed: > https://answers.launchpad.net/yade/+question/293247 > > Jonathan Pergoli posted a new comment: > Hi Jan, > > How can be modified? > > I have only one box. > > -- > 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 > -- 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 #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Jonathan Pergoli posted a new comment: Hi Jan, How can be modified? I have only one box. -- 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 #293179]: 'Name error' while calling function
Question #293179 on Yade changed: https://answers.launchpad.net/yade/+question/293179 Jérôme Duriez posted a new comment: Regarding #6, I think your problem arose from variable scope (global or local) -- rather than modules issues. Python variables / functions may have different scope (leading to possibility or impossibility to access them) depending how you launch your python script. I bet that your python "plotAddData" function had a local scope when using execfile(...), as opposed to a global one when using yade yourScript.py There has been previous (more precise) discussion on such topic in the mailing list before, but I can not tell you where/when... -- 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 #293247]: Physic interaction betweem particles and polyhedra
Question #293247 on Yade changed: https://answers.launchpad.net/yade/+question/293247 Status: Open => Answered Jan Stránský proposed the following answer: Hi Jonathan, currently you can have only one instance (thus one set of parameters) of p2_FrictMat_FrictMat_MindlinPhys. If needed, it could be modified to distinguish between sphere-sphere and sphere-box interactions, but it would need some coding and probably would be a bit hacky.. Do you have more boxes in your simulation? If no, I would use box instead of polyhedra. cheers Jan 2016-05-04 16:52 GMT+02:00 Jonathan Pergoli < question293...@answers.launchpad.net>: > New question #293247 on Yade: > https://answers.launchpad.net/yade/+question/293247 > > Hi everybody! > > I'm trying to simulate a box falling on a cylindrical pack of spheres. The > spheres have coefficient of restitution = .1 and the box has a COR = .6. > For the spheres I have used Ip2_FrictMat_FrictMat_MindlinPhys(en=.1,es=.1) > . As regard the box, I would like to use the same but if I write: > ... > > [p2_FrictMat_FrictMat_MindlinPhys(en=.1,es=.1),p2_FrictMat_FrictMat_MindlinPhys(en=.6,es=.6)] > the former properties are overwritten by the latter. > > The box is made using utils.polyhedron(). > > I have also used Ip2_FrictMat_PolyhedraMat_CundallStrack(), but I cannot > set the COR. > > Can someone help me,please? > > Thank you :) > > -- > 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 > -- 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 #293216]: Creating Ellipse or Ellipsoid
Question #293216 on Yade changed: https://answers.launchpad.net/yade/+question/293216 Status: Open => Answered Jan Stránský proposed the following answer: Hi Felipe, > 1-> Creating one ellipse or ellpsoid; > 2-> Simulating bouncing.py changing the sphere to ellipse; > ellipsoids are currently not implemented in Yade. A workaround is to create a clump composed of overlaping spheres with surface approximating an ellipsoid. > > 3-> How is it work the function "pack.inEllipsoid"; > inEllipsoid should work in the same way like other pack.predicates, like pack.inCylinder, pack.inAlignedBox, see [1] > > 4-> Is it possible to create one ellipsoid like one pack.cylinder. I have > created a pack cylinder and right now i would like to change this pack for > one pack in ellipsoid. > did you mean pack.inCylinder? if yes, changing inCylinder to inEllipsoid (and probably the arguments) should be enough.. cheers Jan [1] https://yade-dem.org/doc/user.html#constructive-solid-geometry-csg -- 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 #292846]: Particle packing - How to avoid overlap
Question #292846 on Yade changed: https://answers.launchpad.net/yade/+question/292846 Status: Open => Answered Jan Stránský proposed the following answer: Hi Varun, > VG is still having a problem: > Thinking about this problem more, this might not actually be a bug. As you > outlined, the difference between the previous version and "fixed" version > is: > - Previous version: Pack all the smaller spheres within the predicate > (bigger sphere), such that the centers of smaller spheres are within the > boundary of predicate. > - Fixed version: Only the smaller spheres which are entirely contained > within the predicate are considered. > > What the fixed version does can also possibly be attained by > pack.inSphere((s[0][0],s[0][1],s[0][2]),(s[1]-particle_radius)). > Correct me if I am wrong. The description of previous and fixed versions is correct in pack.inSphere, it was a real bug. Of course, you can play with settings like using s[1] or s[1]-particle_radius, but this is different point. > > That still doesn't solve the physical problem I am trying to set up. I > should give a better description of the problem I am trying to solve, if > there is a better set up possible for the problem: > > -- I have a granular sample with given input particle size distribution. > Under mechanical loading, these particles will break and I want to get > the resulting particle size distribution. > > -- I am representing the input particle size distribution with spherical > particles of diameters D1, D2, D3 etc. All of such big particles are > composed of smaller particles of diameter 'd', since d is the smallest > particle size of interest. > > -- Initially, within each big spherical particle, all the smaller > particles should be densely packed and connected with cohesive bonds. As > the loading is applied, the initially defined cohesive bonds within each > big sphere will break progressively leading to smaller fragments, giving > a new particle size distribution. > thanks for clarifying, but your description was OK before :-) how you want to create the initial packing is the matter of your preferences. randomDensePack within a big agregate is a good choice. For the big aggregates, you can use: - makeCloud like now - randomDensePack to get denser packing of bigger aggrgates - use something like randomDensePack on already "meshed" aggregates, see Klaus's answer #3 in [1] > > > The major problems I am facing in the current script are: > > -- Smaller particles from two different predicates (big spheres) tend to > overlap. > this should not happen with newer version > > -- I am noticing that sometimes cohesive bond gets formed between two > smaller particles of different predicates. I would like to avoid this, > since I only want non-cohesive contact between the two different big > spheres. > > -- Initially, within a single big sphere itself, sometimes there are > particles which are shown not to have any cohesive interaction, leaving > that small single particle free to fly. > this is material model dependent. I am not very familiar with CohFrictMat, so somebody else have to help. Probably open a new question on this topic, since it is different from the original problem. cheers Jan [1] https://answers.launchpad.net/yade/+question/292672 -- 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 #293247]: Physic interaction betweem particles and polyhedra
New question #293247 on Yade: https://answers.launchpad.net/yade/+question/293247 Hi everybody! I'm trying to simulate a box falling on a cylindrical pack of spheres. The spheres have coefficient of restitution = .1 and the box has a COR = .6. For the spheres I have used Ip2_FrictMat_FrictMat_MindlinPhys(en=.1,es=.1) . As regard the box, I would like to use the same but if I write: ... [p2_FrictMat_FrictMat_MindlinPhys(en=.1,es=.1),p2_FrictMat_FrictMat_MindlinPhys(en=.6,es=.6)] the former properties are overwritten by the latter. The box is made using utils.polyhedron(). I have also used Ip2_FrictMat_PolyhedraMat_CundallStrack(), but I cannot set the COR. Can someone help me,please? Thank you :) -- 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 #293235]: Update algorithm of shear displacement
New question #293235 on Yade: https://answers.launchpad.net/yade/+question/293235 Hi everyone, My questions concern the algorithm used for the shear dispalcement update and its implementation is the class ScGeom. I would like to fully understand the update procedure but it seems like there are discrepancies between the documentation and the code. In the documentation ( https://yade-dem.org/doc/formulation.html#fig-shear-2d ), the update is said to be "done by perpendicular projection to the plane first (which might decrease |\uT|) and adding what corresponds to spatial rotation of the interaction instead". The formulae for the corresponding increments don't indicate a projection and look more like infinitesimal rotations. These 2 rotations, acting of the previous shear dispalcement vector, are eventually linearly added, not composed, to form the current shear dispalcement vector. Getting into the corresponding code from the class ScGeom ( https://github.com/yade/trunk/blob/master/pkg/dem/ScGeom.cpp ), the ScGeom::rotate function clearly performs the composition of the two approximate rotations, not the addition, about what is defined as the orthonormal axis first (line 17) and the twist axis second (line 18). The determination of these axes is performed in the ScGeom::precompute function. While the definition of the orthonormal axis (line 27) corresponds to what the documentation says, the definition of the twist angle and axis (lines 28,29) differs from the formula in the documentation in that is uses the variable "normal" for the current normal vector n° and not "currentNormal". Regarding the documentation, shouldn't the second rotation of the shear dispalcement (around the twist axis) be applied to the shear displacement already updated by the first rotation (around the orthonormal axis), as it is in the function ScGeom::rotate ? That is : (\Delta \uT)_2&=-(\prevuT + (\Delta \uT)_1) \times\left(\frac{\Delta t}{2} \currn \cdot (\pprev{\vec{\omega}}_1+\pprev{\vec{\omega}}_2)\right) \currn instead of (\Delta \uT)_2&=-\prevuT\times\left(\frac{\Delta t}{2} \currn \cdot (\pprev{\vec{\omega}}_1+\pprev{\vec{\omega}}_2)\right) \currn And keeping the summation of the 3 increments as it is. Regarding the ScGeom::precompute function, shouldn't the twist axis be around the current normal vector n° as it is in the documentation ? That is replacing the variable "normal" by "currentNormal" in lines (28,29) ? This way the rotations would be properly composed : - rotation around the orthonormal axis first brings the previous normal vector together with the current normal vector. - rotation around the twist axis (that is colinear to the current normal) then performs the remaining rotation. I would really appreciate your help and hope I have been understandable and clear. -- 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