Re: [Yade-users] [Question #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Status: Answered => Open Paul Pircher is still having a problem: Hi there, currently I am not sure whether to keep that question open or if I should close it. Apparently, there are several issues with PFacets that will be worked on by the dev team. So how may I proceed? Was there already an update that I missed for PFacets? Cheers, Paul -- 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 #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Paul Pircher posted a new comment: Hi there, now I got some details and screenshots ( https://imgur.com/a/3CQHT1G ). I was right: All interactions were real. I plotted O.interactions.countReal() and it showed either 18 or 21 interactions. 18 for no external interaction is clear as the cube I used should have 18 interactions since each gridConnection enables one gridNode-gridNode interaction. Hence, the sphere contact leads to 3 interactions at that edge position. Also as seen on the screenshots, the interacting bodies are only PFacets with one not even close to the contact. I only did very few changes in the script but for completeness in paste the script I used to generate these screenshots. Please note the iteration period for the plot is an odd number. ### from yade import plot, qt import os, sys, time from yade.gridpfacet import * import numpy as np, math """ All manual entries for the simulation """ O.dt = 1e-8 # timestep node_mat_name = 'gridNodeMat' node_r = 10 * 1e-3 # radius for the nodes, cylinders and pfacets node_E = 52.*1e9 # (concrete) node_poisson = 0.167 node_rho = 2750 node_phi = 35. node_normal_coh = 3e1000 # high values to not lose node interactions. total elasticity, no plasticity node_shear_coh = 3e1000 pfacet_mat_name = 'pFacetMat' # this material has no influence on the beam stiffness, only for contacts pfacet_E = node_E pfacet_poisson = node_poisson pfacet_rho = node_rho pfacet_phi = node_phi color = [0, 0, 1] # color for certain bodies (PFacets) sphere_mat_name = 'sphereMat' sphere_poisson = 0.2 sphere_phi = 24. sphere_E = 30.*1e6 sphere_rho = 2660 sphere_r = 40 * 1e-3 # radius of the penetrationg sphere sphere_v = -0.1*100 # velocity of the penetrating sphere dim_x = 0.5 # length in x-direction of the cuboid dim_y = 0.6 # width of the cuboid dim_z = 0.7 # height of the cuboid # initial position of the penetrating sphere sphere_x = (1/2) * dim_x sphere_y = 0 sphere_z = dim_z + sphere_r + node_r engine_gravity = (0,0,0)# gravity acceleration engine_damping = 0.0# general damping factor plot_label = "plotter" plotData_period = 51# iterations, uneven for changing nr of interactions """" The simulation engine """ O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Node_Aabb(), Bo1_GridConnection_Aabb(), Bo1_PFacet_Aabb(), ]), InteractionLoop( [Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_PFacet_PFacet_ScGeom(), Ig2_Sphere_GridConnection_ScGridCoGeom(), Ig2_Sphere_Sphere_ScGeom(), ], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), ] ), NewtonIntegrator( gravity=engine_gravity, damping=engine_damping), PyRunner( command = 'addPlotData()', iterPeriod = plotData_period), ] """ Materials """ O.materials.append( CohFrictMat( young = node_E, poisson = node_poisson, density = node_rho, frictionAngle = radians(node_phi), normalCohesion = node_normal_coh, shearCohesion = node_shear_coh, momentRotationLaw = True, label = node_mat_name ) ) O.materials.append( FrictMat( young = pfacet_E, poisson = pfacet_poisson, density = pfacet_rho, frictionAngle = radians(pfacet_phi), label = pfacet_mat_name ) ) O.materials.append( FrictMat( young = sphere_E , poisson = sphere_poisson, density = sphere_rho, frictionAngle = radians(sphere_phi), label = sphere_mat_name ) ) """ Bodies """ # adding the 8 corner nodes of the cuboid nodesIds = [] # holds all gridnode ids nodesIds.append( O.bodies.append( gridNode( [0,0,0], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode( [dim_x,0,0], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode( [0,dim_y,0], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode( [dim_x,dim_y,0], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode( [0,0,dim_z], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode( [dim_x,0,dim_z], node_r, wire=False, fixed=True, material='gridNodeMat' ) ) ) nodesIds.append( O.bodies.append( gridNode(
Re: [Yade-users] [Question #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Paul Pircher posted a new comment: Hi Bruno, thanks for your answer! Only a short response from my side as well. The last time I checked all 3 interactions were real at the contact. The corresponding bodies in contact with the penetrating sphere were only pfacets. One of the pfacet wasn't even close to the contact location. No interaction with a grid-connection that might be expected. I found out that the case for zero interactions is more complex. At even iteration numbers there were 0 interactions, at odd iteration numbers there were 3 interactions. I noticed the post where general PFacet problems are discussed and had a look at it. The thing is that I am often not sure if I found something of serious interest (bug, unintended feature, etc.) or my limited knowledge is the issue. I am not a software engineer and therefore I struggle with too complex code especially with C++. So I rather post general questions here. I will prepare my examples, get some screenshots and post them here again. Maybe that helps. > From the top of my head: if you assign another material to the PFacets and to the spheres, and if you use the corresponding functors (just like for changing the sphere-sphere contact model) then it should change the contact model. I need to try that again. If this works it would save me a ton of work. Although I am using a contact model that was developed at my departement. So it isn't implemented in YADE straight away and therefore might cause some issues. Best regards, Paul -- 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 #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Status: Expired => Open Paul Pircher is still having a problem: Can someone give me more insight here? :) -- 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 #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Paul Pircher gave more information on the question: Since I just had a look at more positions: It seems like that only the contact of the sphere at the position of a gridconnection at the edge of the cuboid is an issue. Depending from what direction the sphere penetrates the cuboid I either get zero or three interactions. At any other position on the cuboid (somewhere in the middle of a side of the cuboid or even at the corner) I receive the expected 1 interaction. I am still clueless about that edge contact though. With zero interactions I don't know where my wanted data is stored (e.g. penetration depth). With 3 interactions I don't know what interaction is the "right" one or how those multiple but similar contacts are handled. As always: The contact behaviour according to position and velocity of the sphere works perfectly fine at every location. Cheers! -- 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 #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Status: Answered => Open Paul Pircher is still having a problem: Hi and thanks for your input! I know how I am supposed to receive parameters of interactions. In my case, as can be seen in the code in the "PyRunner Function" - section, I am using len( O.bodies[idSphere].intrs() ) to count the number of interactions (which should return the number of all interactions with the sphere). Furthermore I am extracting the phys-norm-force from the first interaction with the sphere via O.bodies[idSphere].intrs()[0].phys.normalForce.norm(). Same method for the penetrationDepth. I also had a look at O.forces.f(idSphere)[2] to obtain the force on the sphere in Z-direction with a different method. However, the problem that I am facing in this particular example with PFacets is, that using this approach does NOT provide correct data that are in accordance with the visual observations. NO INTERACTION can be found in here. Which is why I do not receive a penetrationDepth parameter. Since I am using the same approach and functions as you mentioned, I assume that I the data mining itself would be correct, but my data is found somewhere else. And I don't know where. Since the observation of position and velocity does show correct behaviour, somewhere the contact has to be computed. Although there seems to be no interaction for that. I hope that this is understandable. > I do not see one that would properly fit YADE design. Alright, thank you. This is also what I concluded. Seems like I am going to have a look at the pfacet source code in order to know what I need to adapt or add to obtain the behaviour of a different contact model. Since the pfacet approach works fine for me so far (except that data mining issue mentioned above) I think, that only few adaptations need to be done to change the physical computations of the contact itself. Thanks! -- 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 #696480]: PFacet model - contact data mining
Question #696480 on Yade changed: https://answers.launchpad.net/yade/+question/696480 Paul Pircher posted a new comment: I assume that this is just spam, but I find nothing to report it. Hopefully that message will get attention .Cheers. -- 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 #696480]: PFacet model - contact data mining
New question #696480 on Yade: https://answers.launchpad.net/yade/+question/696480 Hello there! Recently I've been working a lot with the PFacet approach to obtain an elastic model for bigger but simple bodies in DEM simulations. I managed to obtain correct mechanical behaviour of my elastic body. Now I am researching the contact with external particles. I made up a simple example of a PFacet cuboid that is penetrated by a sphere. The goal is to do that at every different position on the cuboid (edge, corner, intersection...) to verify that at all positions the same contact behaviour (penetration depth, force etc.) appears. I do this in order to get a better understanding of how exactly the model works (coding wise) as I want to change the contact model to an adapted hertz-mindlin model afterwards. When I perform this penetration test e.g. within the area of a PFacet and on the intersection of 2 PFacets (so directly on a cylinder connection) I can see that the behaviour is according to the Cundall Strack law, which was expected, and that I only have 1 interaction on the sphere. However, if I perform this test on the very edge of the cuboid, like the following script shows, I get unexpected results. Mostly there is no interaction with the sphere, but according to the position and velocity of the sphere it behaves correctly and identical to other sphere positions (as mentioned before). If I go through the simulation step by step, at some timesteps 3 interactions are found. Those 3 interactions are between the sphere and 3 different PFacets, one of them should be not even close to the sphere. If 3 interactions are found, I would have expected that there are 2 interactions with PFacets and 1 with the cylindrical connection. Still, this isn't in accordance with the other tests where the sphere is at a different position and I am still not able to extract the wanted data. So my question is: How can I correctly mine the contact parameters like penetration depth, force on the sphere and number of interactions for my penetration tests? Am I using the wrong functions or am I looking at the wrong spot? Thanks in advance! P.S.: Since it will be needed in the future: If there is an "easy" way (only changing python code, not c++ source code) to change the contact law for the PFacet - external particles interactions, I would be happy to receive hints. Working with YADE 2020.01a on Ubuntu 20.04.2 LTS ## from yade import plot, qt import os, sys, time from yade.gridpfacet import * import numpy as np, math """ All manual entries for the simulation """ O.dt = 1e-8 # timestep node_mat_name = 'gridNodeMat' node_r = 10 * 1e-3 # radius for the nodes, cylinders and pfacets node_E = 52.*1e9 # (concrete) node_poisson = 0.167 node_rho = 2750 node_phi = 35. node_normal_coh = 3e1000 # high values to not lose node interactions. total elasticity, no plasticity node_shear_coh = 3e1000 pfacet_mat_name = 'pFacetMat' # this material has no influence on the beam stiffness, only for contacts pfacet_E = node_E pfacet_poisson = node_poisson pfacet_rho = node_rho pfacet_phi = node_phi color = [0, 0, 1] # color for certain bodies (PFacets) sphere_mat_name = 'sphereMat' sphere_poisson = 0.2 sphere_phi = 24. sphere_E = 30.*1e6 sphere_rho = 2660 sphere_r = 40 * 1e-3 # radius of the penetrationg sphere sphere_v = -0.1*100 # velocity of the penetrating sphere dim_x = 0.5 # length in x-direction of the cuboid dim_y = 0.6 # width of the cuboid dim_z = 0.7 # height of the cuboid # initial position of the penetrating sphere sphere_x = (1/2) * dim_x sphere_y = 0 sphere_z = dim_z + sphere_r + node_r engine_gravity = (0,0,0)# gravity acceleration engine_damping = 0.0# general damping factor plot_label = "plotter" plotData_period = 50# iterations The simulation engine """ O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Node_Aabb(), Bo1_GridConnection_Aabb(), Bo1_PFacet_Aabb(), ]), InteractionLoop( [Ig2_GridNode_GridNode_GridNodeGeom6D(), Ig2_GridConnection_GridConnection_GridCoGridCoGeom(), Ig2_Sphere_PFacet_ScGridCoGeom(), Ig2_PFacet_PFacet_ScGeom(), Ig2_Sphere_GridConnection_ScGridCoGeom(), Ig2_Sphere_Sphere_ScGeom(), ], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True), Ip2_FrictMat_FrictMat_FrictPhys() ], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(), Law2_ScGeom_FrictPhys_CundallStrack(), Law2_ScGridCoGeom_FrictPhys_CundallStrack(), Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(), ] ), NewtonIntegrator( gravity=engine_gravity, damping=engine_damping), PyRunner( command = 'addPlotData()', iterPeriod = plotData_period), ] """ Materials """ O.materials.append( CohFrictMat( young = node_E, poisson = node_poisson, density = node_rho, frictionAngle =
Re: [Yade-users] [Question #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Paul Pircher posted a new comment: > The rotational and normal/shear springs are together in between two nodes. Alright, thanks for your input! I am starting to get the hang of it. Cheers, Paul -- 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 #694945]: How to run deformableBodies examples
Question #694945 on Yade changed: https://answers.launchpad.net/yade/+question/694945 Paul Pircher posted a new comment: And I again forgot something: [1] https://answers.launchpad.net/yade/+question/695058 [2] https://answers.launchpad.net/yade/+question/694146 -- 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 #694945]: How to run deformableBodies examples
Question #694945 on Yade changed: https://answers.launchpad.net/yade/+question/694945 Status: Open => Solved Paul Pircher confirmed that the question is solved: Hey there, thanks Bruno for the insight information. That helps. As you know from my other questions (bending beam mass computation [1] ) I am trying to model a simple elastic cuboid. On my way to find literature and possible methods I also wanted to try out the approach on this deformable elements, but I got stuck really quick. Knowing that this might be too experimental for my current project, I will remain on using the node - connection - pfacet approach for now. :) I gave a little more insight into my application in this launchpad question if anyone is interested [2]. > You are welcome to modify DeformableElement as you see fit, and become a new > expert in the field. Haha thanks Janek. I am currently trying to do so, but I am still in my very beginning and focusing to progess in my project/master thesis, as I rely on that. As mentioned above, I will remain with the "simplier" PFacet approach for deformable bodies for now. If the time and need allows it I will continue on deformable elements. I basically wanted to make sure I at least tried the examples of all approaches I found, so I can decide on what to focus. I hope that is understandable :) > I just started examples/deformableelem/MinimalTensileTest.py and I see that the box is getting deformed. I see. I tried it with testDeformableBodies.py and I received that error at the preprocessing. I will give it another try. Thanks to both of you for you input! Your help is very much appreciated! I will definitely need some more help in the future on that topic so stay tuned - I am gonna annoy you! :) I will mark this thread as solved for now. Cheers, Paul -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Paul Pircher posted a new comment: What I forgot: > Currently the only option is to do that in your script. If you make it in a python function we can include it to source alongside the cylinderConnection(). I am totally happy for now if I am able to set the total mass of the body correctly so I do not need to consider the volume of the PFacets as I already know the total mass that the body should have. If it becomes important for me I will provide an helper function for that! Cheers -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Paul Pircher posted a new comment: > You are welcome, nice to hear that someone is using it. I can guarantee you that it will not be the last time I post questions on this topic on the yade launchpad. For simple deformable bodies, my team and I will most likely use it a lot in the future as soon as I know exactly how to use it and managed to properly simulate correct beahviour of a simple body. > Set the mass of its nodes. That's all. Alright, thanks. Just applying the correct node density to achieve the same total mass that I want it to have. Total node mass = wanted total mass. Got it! > I would say they are two alias for the same thing. Am I confused? have seen one or the other in different scripts? As far as I know they are multiple similar approaches in the “More examples” section of the yade documentation. Just to summarize: - Chained-cylinders - Cylinders (or cylinder-connections. The example I initially used to open this question thread.) - Grids - PFacet (although this uses creators and gridNodes and gridConnections and only adds the PFacet) Since I am a newbie, I am not yet able to tell what the exact differences are, but they are more or less used for the same things (I believe). > if cohesion is small you can get get plastic deformation of the beam Ah I see. So, it is kind of needed to apply resistance to pulling. As particles only “generate” a force when moving towards, but not when moving away from each other. Linear elastic behaviour is totally fine for my use for now. Let’s see where the journey goes. > Bending is defined for interactions, based on the differential rotation of two nodes. It is not defined "per node". Since I had a look in the paper you linked: Is it correct to imagine the bending behaviour as a rotational spring like in figure 3 of [3]? This what I initially meant when I proposed the question on how the bending behaviour “in a node” is computed. As a node itself can’t bend it is somewhat clear that it needs to happen in the interactions as this links multiple nodes. > Effeindzourou PhD dissertation Nevertheless it is a good summary, thanks for the hint! > There is an old 2D version of the same thing described in [3] As in the question above this gave some basic insights (probably). So this is still of value. Thanks for the suggestion! Best regards and thanks again, Paul [3] https://www.yade- dem.org/w/images/1/1b/Chareyre%26Villard2005_licensed.pdf -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Status: Answered => Solved Paul Pircher confirmed that the question is solved: Thanks Bruno Chareyre, that solved my question. -- 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 #694945]: How to run deformableBodies examples
Question #694945 on Yade changed: https://answers.launchpad.net/yade/+question/694945 Paul Pircher gave more information on the question: Hi Robert, I did recompile yade recently and also installed yadedaily to try out if the example for deformable elements now works. Sadly I still receive the same error as in the original question. Details below: In [1]: printAllVersions() ``` Yade version : 20210124-4946~5bc75e5~focal1 Yade features : BoostLog RealHP mpmath PrecisionDouble Odeint VTK OpenMP GTS GUI-Qt5 CGAL PFVFLOW PFVFLOW LINSOLV MPI TWOPHASEFLOW FEMLIKE GL2PS LBMFLOW THERMAL PARTIALSAT PotentialParticles PotentialBlocks Yade config dir: ~/.yadedaily Yade precision : 53 bits, 15 decimal places, with mpmath Yade RealHP<…> : (15, 33, 45, 60, 120, 150, 300) decimal digits in C++, (15, 33) decimal digits accessible from python ``` Libraries used : | library | cmake| C++| | - | | -- | | boost | 1.71.0 | 1.71.0 | | cgal | | 5.0.2 | | clp | 1.17.5 | 1.17.5 | | cmake | 3.16.3 || | coinutils | 2.11.4 | 2.11.4 | | compiler | /usr/bin/c++ 9.3.0 | gcc 9.3.0 | | eigen | 3.3.7| 3.3.7 | | freeglut | 2.8.1|| | gl| | 20190805 | | ipython | 7.13.0 || | metis | | 5.1.0 | | mpi | 3.1 | ompi:4.0.3 | | mpi4py| 3.0.3|| | mpmath| 1.1.0|| | openblas | | OpenBLAS 0.3.8| | python| 3.8.5| 3.8.5 | | qglviewer | | 2.6.3 | | qt| | 5.12.8 | | sphinx| 1.8.5-final-0|| | sqlite| | 3.31.1 | | suitesparse | 5.7.1| 5.7.1 | | vtk | 6.3.0| 6.3.0 | ``` Linux version : Ubuntu 20.04.1 LTS Architecture : amd64 Little endian : True DeformableCohesiveElement:52 bool yade::DeformableCohesiveElement::nodepair::operator<(const yade::DeformableCohesiveElement::nodepair&) const: Incomplete 'if' sequence Did you have a look into the code? Thanks and best regards, Paul -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Status: Answered => Open Paul Pircher is still having a problem: Thanks for your detailed answer Bruno! Nice to hear from one of the authors of the papers that build the foundation on my current research/work. To make sure I understood it correctly: The mass of the cylinders can be completely ignored. Only the mass of the nodes is relevant for the simulation and its results (total mass, deflection, deformation, forces etc). Hence, I only need to set the right density for the CohFrictMat for the nodes and I should be good to go in terms of correct body mass (if nodes have a different material than cylinders). To avoid confusion, setting the density of the cylinderConnection material to zero manually won’t do anything. Right? Or do I need to set the density of both materials (for nodes and connections) to the same value, so the computation does not get messed up and I simply ignore cylinder-mass afterwards? I am reffering here to one of the creator-functions e.g. gmshPFacet(). In other words, what do I need to do in order to set the mass of a body, that is made out of nodes and cylinders (and maybe PFacets), to a certain value? Seems like I am overthinking this and it might be just a simple comparison between wanted mass and mass of all nodes and setting the density of all influenced bodies to corresponding value, but I just want to be sure and safe about that. For my application I want to simulate a beam with a rectangular cross- section. So, I will be using many nodes, cylinder/grid connections and PFacets. Hence it will not be a very short object and I should be “safe” as small inaccuracies like the spherical caps won’t bother my results. Furthermore, PFacets seem to never receive a mass, but also the mass of the nodes does not increase as it did when connections were added. Thanks again for you answer. Since I work a lot with deformable structures in yade based on these to papers [1][2] I would have several more questions according that approach. Can you recommend or provide resources for that topic? Any further papers, examples or theory? That would help me a lot. As an example, what interests me I will write down some questions. Nevertheless, they have nothing to do with mass computation, so this is off-topic. - What’s the difference between grid- and cylinder-connections. - Why is it important to set a cohesive material for the nodes with super high cohesive values? - How is the bending/mechanical behaviour in a node that connects 2 cylinders computed? (Same thing along a connection that connects 2 PFacets) Thanks Bruno and I hope I did not flood you with questions. Your help is and was very much appreciated! Best regards, Paul [1] https://www.researchgate.net/publication/282996677_A_general_method_for_modelling_deformable_structures_in_DEM [2] https://doi.org/10.1016/j.geotexmem.2015.07.015 -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Status: Answered => Open Paul Pircher is still having a problem: Hello, thanks for you thoughts and sorry for the late reply. I tried several things to see how the mass is computed. It turns out there might be even more confusion. If only nodes are added to the simulation, none of them have any mass at all (0.0kg). As soon as CylinderConnections are added the nodes and the cylinders receive a mass, that is "incorrectly" computed as shown above. The point that they overlap is a good one. This might be the reason for a higher mass in the simulation, but as you already have shown this doesn't lead to a valid result either. I found a paper that deals with those connections in yade [1]. In there it is told that "The mass of the cylinder element is lumped into its two nodes." Which would explain the higher masses of the nodes, but on the other hand would mean that the cylinders don't have any mass at all. Did I intrepret that correctly? Is the paper acutally refering to this exact yade-functions or did they use something else? Since they used nodes and cylinder connections I thought this might be the same approach. Would you mind sharing your thoughts on that? Thanks for your help and best regards, Paul [1] https://www.researchgate.net/publication/282996677_A_general_method_for_modelling_deformable_structures_in_DEM -- 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 #695058]: Bending beams mass computation
Question #695058 on Yade changed: https://answers.launchpad.net/yade/+question/695058 Paul Pircher gave more information on the question: Here the complete code for copy pasta: # encoding: utf-8 "An example showing various bending beams." from builtins import range from yade.gridpfacet import * Parameter L=10. # length of the beam n=12# number of nodes used to generate the beam r=L/50. # radius of the beam element Engines O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_GridConnection_Aabb()]), InteractionLoop( [Ig2_GridNode_GridNode_GridNodeGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=False)], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()] ), NewtonIntegrator(gravity=(0,0,-10),damping=0.5,label='newton') ] Create materials and set different properties O.materials.append(CohFrictMat(young=1e6,poisson=0.3,density=1e1,frictionAngle=radians(10),normalCohesion=1e7,shearCohesion=1e7,momentRotationLaw=False,label='mat1')) O.materials.append(CohFrictMat(young=1e6,poisson=0.3,density=1e1,frictionAngle=radians(10),normalCohesion=1e7,shearCohesion=1e7,momentRotationLaw=True,label='mat2')) O.materials.append(CohFrictMat(young=3e6,poisson=0.3,density=1e1,frictionAngle=radians(10),normalCohesion=1e7,shearCohesion=1e7,momentRotationLaw=True,label='mat3')) O.materials.append(CohFrictMat(young=1e7,poisson=0.3,density=1e1,frictionAngle=radians(10),normalCohesion=1e7,shearCohesion=1e7,momentRotationLaw=True,label='mat4')) Vertices vertices1=[] vertices2=[] vertices3=[] vertices4=[] for i in range(0,n): vertices1.append( [i*L/n,0,0] ) vertices2.append( [i*L/n,1,0] ) vertices3.append( [i*L/n,2,0] ) vertices4.append( [i*L/n,3,0] ) Create cylinder connections nodesIds=[] cylIds=[] cylinderConnection(vertices1,r,nodesIds,cylIds,color=[1,0,0],highlight=False,intMaterial='mat1') cylinderConnection(vertices2,r,nodesIds,cylIds,color=[0,1,0],highlight=False,intMaterial='mat2') cylinderConnection(vertices3,r,nodesIds,cylIds,color=[0,0,1],highlight=False,intMaterial='mat3') cylinderConnection(vertices4,r,nodesIds,cylIds,color=[1,1,1],highlight=False,intMaterial='mat4') Set boundary conditions for i in range(0,4): O.bodies[nodesIds[i*n]].dynamic=False # O.bodies[nodesIds[i*n]].state.blockedDOFs='xyzXYZ' # O.bodies[nodesIds[i*n]].state.blockedDOFs='xyz' For viewing from yade import qt qt.View() Set a time step O.dt=1e-05 Allows to reload the simulation O.saveTmp() Added mass computation print(f"\nBody zero is a {O.bodies[0].shape} with a mass of {round(O.bodies[0].state.mass,3)}.") ana_node_mass = (4/3)* r**3 * math.pi * O.bodies[0].material.density print(f"The mass of a Node/sphere is {round(ana_node_mass,3)} if analytically computed.") sim_total_mass = sum( [b.state.mass for b in O.bodies] ) print(f"\nSimulation total mass: {round(sim_total_mass,3)} kg.") ana_beam_mass = r**2 * math.pi * L * O.bodies[0].material.density + ana_node_mass # because the cylinders/beam include a half-sphere at the top and bottom ana_total_mass = 4*ana_beam_mass # because there are 4 beams print(f"Analytic total mass: {round(ana_total_mass,3)} kg.\n") -- 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 #695058]: Bending beams mass computation
New question #695058 on Yade: https://answers.launchpad.net/yade/+question/695058 Hi there, I had a look at the bending beams example from the cylinder section in yade's "more examples". [1][2] I was interested in the mechanical behaviour and analysed the mass of the beams to see if they are computed correctly. That is important if correct mechanical behaviour of the simulation is expected, because it has significant influence on the deflection of the beams. I just added the following lines at the end of the example code. I changed nothing in the code. I just added these lines at the very end: Added mass computation print(f"\nBody zero is a {O.bodies[0].shape} with a mass of {round(O.bodies[0].state.mass,3)}.") ana_node_mass = (4/3)* r**3 * math.pi * O.bodies[0].material.density print(f"The mass of a Node/sphere is {round(ana_node_mass,3)} if analytically computed.") sim_total_mass = sum( [b.state.mass for b in O.bodies] ) print(f"\nSimulation total mass: {round(sim_total_mass,3)} kg.") ana_beam_mass = r**2 * math.pi * L * O.bodies[0].material.density + ana_node_mass # because the cylinders/beam include a half-sphere at the top and bottom ana_total_mass = 4*ana_beam_mass # because there are 4 beams print(f"Analytic total mass: {round(ana_total_mass,3)} kg.\n") ## This led to the following output: Body zero is a with a mass of 0.524. The mass of a Node is 0.335 if analytically computed. Simulation total mass: 69.115 kg. Analytic total mass: 51.606 kg. Also printAllVersion() returns the following: In [1]: printAllVersions() ``` Yade version : 2020.01a Yade features : BoostLog Odeint VTK OpenMP GTS GUI-Qt5 CGAL MPI FEMLIKE GL2PS PotentialParticles PotentialBlocks Yade config dir: ~/.yade-2020.01a ``` Libraries used : | library | cmake| C++| | - | | -- | | boost | 1.71.0 | 1.71.0 | | cgal | | 5.0.2 | | clp | | 1.17.5 | | cmake | 3.16.3 || | compiler | /usr/bin/c++ 9.3.0 | gcc 9.3.0 | | eigen | 3.3.7| 3.3.7 | | freeglut | 2.8.1|| | gl| | 20190805 | | ipython | 7.13.0 || | metis | | 5.1.0 | | mpi | 3.1 | ompi:4.0.3 | | mpi4py| 3.0.3|| | openblas | | OpenBLAS 0.3.8| | python| 3.8.5| 3.8.5 | | qglviewer | | 2.6.3 | | qt| | 5.12.8 | | sphinx| 1.8.5-final-0|| | sqlite| | 3.31.1 | | vtk | 6.3.0| 6.3.0 | Linux version: Ubuntu 20.04.1 LTS Can someone explain to me how the mass is computed in the simulation and why it differs quite a lot to my analytical computation? To ensure correct behavior (e.g. the deflection of the beam, forces acting on the beam like gravity) it would be necessary to obtain the correct mass of the whole body (and also the correct mass distribution). Thanks in advance! Best regards! [1] https://gitlab.com/yade-dev/trunk/blob/master/examples/cylinders/bendingbeams.py [2] https://yade-dem.org/doc/tutorial-more-examples-fast.html#cylinders -- 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 #694945]: How to run deformableBodies examples
Question #694945 on Yade changed: https://answers.launchpad.net/yade/+question/694945 Status: Answered => Open Paul Pircher is still having a problem: Thank you for your answer and for your time! Is there something I can do in the meantime? The approach with deformable elements would be really interesting and helpful for my project. Until now I tried playing around with Nodes, CylinderConnections and PFacets to model a simple deformable cantilever beam. Quite similar to one of the PFacets examples [1] [2]. Since it seams that it is not quite possible to achieve correct mechanical (or phyiscal) behaviour, I wanted to try out deformable elements to compare it with my previous approach. Thanks and best regards! [1] https://gitlab.com/yade-dev/trunk/blob/master/examples/pfacet/mesh-pfacet.py [2] https://yade-dem.org/doc/tutorial-more-examples-fast.html?highlight=more%20examples#pfacet -- 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 #694945]: How to run deformableBodies examples
Question #694945 on Yade changed: https://answers.launchpad.net/yade/+question/694945 Status: Needs information => Open Paul Pircher gave more information on the question: Sorry, that I missed that. It works and here is the output: In [1]: printAllVersions() ``` Yade version : 2020.01a Yade features : BoostLog Odeint VTK OpenMP GTS GUI-Qt5 CGAL MPI FEMLIKE GL2PS PotentialParticles PotentialBlocks Yade config dir: ~/.yade-2020.01a ``` Libraries used : | library | cmake| C++| | - | | -- | | boost | 1.71.0 | 1.71.0 | | cgal | | 5.0.2 | | clp | | 1.17.5 | | cmake | 3.16.3 || | compiler | /usr/bin/c++ 9.3.0 | gcc 9.3.0 | | eigen | 3.3.7| 3.3.7 | | freeglut | 2.8.1|| | gl| | 20190805 | | ipython | 7.13.0 || | metis | | 5.1.0 | | mpi | 3.1 | ompi:4.0.3 | | mpi4py| 3.0.3|| | openblas | | OpenBLAS 0.3.8| | python| 3.8.5| 3.8.5 | | qglviewer | | 2.6.3 | | qt| | 5.12.8 | | sphinx| 1.8.5-final-0|| | sqlite| | 3.31.1 | | vtk | 6.3.0| 6.3.0 | Linux version: Ubuntu 20.04.1 LTS -- 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 #694945]: How to run deformableBodies examples
New question #694945 on Yade: https://answers.launchpad.net/yade/+question/694945 Hi there, lately I tried to run some of the examples for deformable elements from the more-examples section. To be precise: The testDeformableBodies.py file. [1] Apparently something has to be done in order to run those examples as there is already a hint: "Did you compile yade with cmake option -DENABLE_FEMLIKE=1 ?" It's is kinda straight forward, but I still some more detailed instruction for that. What exactly is that command doing? Do I need to reinstall yade completely? Or just run the command? Does running that command do anything that needs to be considered for future use? When I run the script without doing anything prior (like the cmake command) I receive the following error message multiple times: DeformableCohesiveElement:54 bool yade::DeformableCohesiveElement::nodepair::operator<(const yade::DeformableCohesiveElement::nodepair&) const: Incomplete 'if' sequence Is that the error message to expect when running the script without recompiling it first or is this something different? The simulation still builds up and the body is shown. It kinda looks like in the video of the example. When starting the simulation the following error occurs: IndexErrorTraceback (most recent call last) ~/yade2020/install/bin/yade2020 in ~/yade2020/install/bin/yade2020 in addplot() 104 105 def addplot(): --> 106 plot.addData(force=O.forces.f(forcebodies[1])[0],pos=(O.bodies[forcebodies[1]].state.pos[0]-initialpositions[forcebodies[1]][0]),vel=O.bodies[forcebodies[1]].state.vel[0],t=O.time,time=O.time,tm=O.time) 107 108 for i in forcebodies: IndexError: list index out of range Can someone please help me to run that example? This could be really helpful to me if I understand that approach and can start to try out my own deformable element stuff. [1] https://yade-dem.org/doc/tutorial-more-examples-fast.html#deformableelem -- 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 #694146]: Simulating an elastic beam/cuboid
Question #694146 on Yade changed: https://answers.launchpad.net/yade/+question/694146 Status: Expired => Open Paul Pircher is still having a problem: Hi Jan, thanks for your reply. Same as you I reply kinda late so no worries about that. I read through your suggestions and tried several (new) approaches and extended my code versions in order to be able to formulate new questions. But first let me answer to your points: Q: what is "bed of particles"? spherical particles? A: Yes the bed of particles consists of clumped spherical particles. Q: You can create cohesive packing of overlapping spheres. The overlapping would make the surface smoother than distinct spheres, but not perfectly flat A: It seems like I don't have to deal with the geometrical roughness since the approach with PFacets (from the paper I linked) builds a flat surface. Nevertheless, thanks for the suggestion! Q: have a look at DeformableElement stuff [1]. I have no experience with it, but sounds relevant to your problem. A: I had a first look at it and it seemed to be completely different to my approach so far. Therefore, I remained in modelling my elastic cuboid with Nodes, GridConnections and PFacets. Further down I explain my current modelling status. Q: Also, as PFacets are present, something like PTetrahedron would solve your problem. A: I just had a 2-minute search for PTetrahedron, but I did not find any information for that in the documentation or launchpad. Would you mind linking me something that explains your suggestion? Q: Theoretically yes. But I doubt it is currently implemented. A: Yes, I thought so, but right now it does not seem to be relevant. My current modelling status: General: I tried to model a simple beam that is fixed on one end and free on the other. That should lead to a bend beam like in [1] that can be compared to the analytic version. The only force acting on the beam is its own weight. What I exactly mean is shown in [1] in the section “Beam deflection tables” for a cantilever with uniform distributed load. I followed the approach of the papers [2] and [3] in two different ways. For the first one, I developed my own algorithms for creating my beam. First, all the nodes a created with given distance in between them. Then a grid is built up connecting them, but at first only a cuboid grid. This means that the complete beam is a big grid of little cubes. So, there are no cross-connections implemented yet that would divide the grid areas into triangles for putting PFacets in there. In the next step I developed code for implementing cross-connections on the surfaces of the beam (so not inside) and creating PFacets in between them. That leads to a beam, that has a smooth surface thanks to the PFacets and still has a grid structure inside (without PFacets, only grid connections). According to my ideas that should lead to a simple but solid structure. Right now, it only leads to an error message as follows: InteractionLoop:135 virtual void yade::InteractionLoop::action(): IGeomFunctor returned false on existing interaction! Segmentation fault (core dumped) I did not research that error yet, but if someone has an idea where I might want to start looking for details, I would not mind. Furthermore, I do not have a publishable code yet as it is not well commented, fuzzy and my comments are in german. I will upload the script if that error proceeds to exist. For the second approach I designed a meshed beam in the software “gmsh”, meshed it there, exported it as a .mesh-file and imported it to yade via the gmshPFacet()-function. It works smoothly and leads to a fully working simulation. The only issue I have is that even if I create a 3D- mesh in gmsh, it will only form a surface-structure in yade. That means it will break it down to a 2D-surface mesh again. For comparison, I plottet the deflection of the beam at the very end. Not surprisingly it does not lead to the same deflection as the analytical version, neither the mass nor mass-distribution is correct. Though these two points are other problems. Right now, I am focusing to get my scripts to work and the beam to behave like it is supposed to be. Without PFacets on the surface the beam shows completely wrong mechanical behaviour that would not be acceptable. Furthermore, it only works for small forces and small deflections as for higher density or higher gravity (the two ways of increasing the load on the beam that I tried) the surface breaks down and/or starts to buckle. That is the reason why I want to have a volume grid/mesh with connections on the inside of the beam to prevent surface crashes and being able to load it with higher forces. Hopefully, I will be able to collect some picture of the simulation soon. Together with a code sample I could image that I would be easier to understand what I am doing. I still wanted to answer “in time” and before holidays. Best regards! [1] https://me
[Yade-users] [Question #694146]: Simulating an elastic beam/cuboid
New question #694146 on Yade: https://answers.launchpad.net/yade/+question/694146 Dear Yade community, I am kinda new to Yade and I am still learning about all the possibilities that Yade offers to simulation complex material behaviour. However, it seems I want to try something that was not used a lot before (or I am bad in researching) and I need some guidance on how to proceed. What is my application: I want to simulate an elastic beam in Yade with the discrete element method. What I found out so far: There are already examples for this like "fast bending beams" [1] which uses nodes and cylinderConnection together with high cohesion parameter values to simulate bending "sticks". Other examples show the use of gridNodes and gridConnection like "simple_grid_falling" [2]. Furthermore there is a paper for deformable structures in yade aswell from the Particles2015 conference. [3] What I want to achieve: I want my elastic beam to be an actual cuboid with a cross-section of a rectangle and not a cylinder with spheres at the top and the bottom. To be more precise: The surface of the beam has to be (kind of) flat and edges and corners should be somewhat accurate. This beam or cuboid is then loaded with a force and presses onto a bed of particles. The beam deformation and the particles displacement would be of interest. Some ideas so far: First thought: Coupling DEM with FEM, but this will consume way too much computational power (and time) that I don't have. Furthermore as I saw how fast these connection approaches could work in Yade I kind of want to stay in DEM solely. I thought about building up my wanted beam with lots of gridNodes and gridConnections so it builds a 3D-mesh as commonly seen in finite element method simulations. However, I won't achieve a smooth surface without any grooves where spherical particles will be pushed into as soon as force is applied. This effect would highly influence the simulation outcome as friction becomes higher, because of this geometrical effect. The actual questions: A. Are there further methods in yade on simulating deformable bodies that could work for that application? B. What is the actual difference between the cylinder-connection approach and the grid-connection approach if there is any? C. Why is cohesion/the connections so important here? I know that the particles aren't bonded, but if they stick together because of cohesion why do I need a connection between them? Or vice-versa. Where does the actual stiffness of the beam-element come from? D. Is it possible to use boxes or cubes instead of spherical nodes and cylinders as connection? If yes, how? [1] https://yade-dem.org/doc/tutorial-more-examples-fast.html#reffastbendingbeams [2] https://yade-dem.org/doc/tutorial-more-examples-fast.html#reffastsimple-grid-falling [3] https://www.researchgate.net/publication/282996677_A_general_method_for_modelling_deformable_structures_in_DEM -- 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