Re: [Yade-users] [Question #707257]: How to set the parameters of JCFpmMat?
Question #707257 on Yade changed: https://answers.launchpad.net/yade/+question/707257 Status: Answered => Solved William confirmed that the question is solved: Thanks Luc Scholtès, 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 #707260]: The problem of material parameters.
Question #707260 on Yade changed: https://answers.launchpad.net/yade/+question/707260 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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
[Yade-users] [Question #707260]: The problem of material parameters.
New question #707260 on Yade: https://answers.launchpad.net/yade/+question/707260 Hi, everyone! There is a question bother me for a long time. That’s the particle parameters young’s modulus and poisson’s ratio. In Yade, we set the modulus and poisson’s ratio directly. kn = 2.*E*R1*E*R2/(E*R1+E*R2), Ks/Kn=P ### some people say that kn = E*R1*E*R2/(E*R1+E*R2) That’s to say the kn at different contact of the particles differs because the particle radius varies (different combination of R1 and R2). However, we can set the value of kn and ks directly in PFC, which means the kn at different contact are the same. Is my understanding above correct? Why this difference in software development? -- 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 #707257]: How to set the parameters of JCFpmMat?
New question #707257 on Yade: https://answers.launchpad.net/yade/+question/707257 Hi, everyone! I have read some literature to figure out how to set the parameters of JCFpmMat, especially the tensileStrength and the cohesion. However, I still have some problems. The tensileStrength and cohesion parameters in [1] (t=16MPa, c=16MPa) and [2] (t=4.5MPa, c=45MPa) are different. I wonder that on what basis is the ratio of tensileStrength to cohesion set and how to set their value range? Why the parameters in the two papers differ widely? [1]https://link.springer.com/article/10.1007/s00603-017-1397-6 [2]https://www.sciencedirect.com/science/article/pii/S1365160912000391 -- 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 #707090]: How to generate a cylinder?
Question #707090 on Yade changed: https://answers.launchpad.net/yade/+question/707090 William posted a new comment: Hi, Jan. Thanks for your reply. I want to create a blender to mix the particles. The cylinder I ask for can be the shaft of the blender. Multiple cylinders form an irregularly shaped blender (by using clump) William -- 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 #707090]: How to generate a cylinder?
Question #707090 on Yade changed: https://answers.launchpad.net/yade/+question/707090 Status: Answered => Open William is still having a problem: Hi, Karol. Thanks for your reply. The cylinder generated using your suggested method is hollow and I want a solid cylinder. Because I'm ready to form the solid cylinder and and other solid box into a clump later. William -- 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 #707090]: How to generate a cylinder?
New question #707090 on Yade: https://answers.launchpad.net/yade/+question/707090 Hi, everyone! A cuboid shaped stick could be generated by using the following code: box = utils.box((0.7,0.7,0),(0.03,0.03,0.5)) O.bodies.append(box) If I want to generate a cylinder by this method, how should I do? 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
[Yade-users] [Question #707043]: Does 'JCFpmPhys' have 'matchmaker'?
New question #707043 on Yade: https://answers.launchpad.net/yade/+question/707043 Hi, everyone! I want to simulate the combination of granular particles and rocks. That is to say, one part of a sample is soil particles, and the other part is rock consist of the bonded particles. Firstly, I import the particle using ‘ymport.text’. Then, I create two types of sphere materials (the tensileStrength and cohesion between the materials are different) and assign them to the particles in percentage terms. Here is the mats: mat1=JCFpmMat(type=1,young=Young,poisson=Poisson,frictionAngle=radians(compFricDegree),density=Density,tensileStrength=10e4,cohesion=45e4,label='spheres1') mat_1=O.materials.append(mat1) mat2=JCFpmMat(type=1,young=Young,poisson=Poisson,frictionAngle=radians(compFricDegree),density=Density,tensileStrength=0,cohesion=0,label='spheres2') mat_2=O.materials.append(mat2) How to set the tensileStrength and cohesion between the particles of different mats? For example, is the tensileStrength 10e4, 0 or other value between the particles of mat1 and mat2? Is the ‘matchmaker’ needed in the engine here? Here is my script. packing (previously constructed) PACKING='Position.txt' name of output files OUT=PACKING+'_1MPa_r0.02' from yade import pack, timing,ymport ### DEFINING VARIABLES AND MATERIALS ### ## Sphere material Young=300e6 Density=2650 Poisson=0.3 compFricDegree = 0 finalFricDegree = 27 AvgRadius=0.0002 intR=1 TENS=0.1e6 COH=0.45e6 TENS0=0 COH0=0 ## wall material WYoung=600e7 WPoisson=0.5 WDensity=0 WFrictionAngle=0 damp=0.7 # damping coefficient stabilityThreshold=0.001 # we test unbalancedForce against this value in different loops (see below) # corners of the initial packing size=0.05 mn,mx=Vector3(0,0,0),Vector3(size,size,size) #mn2,mx2=Vector3(0,0,0.0025),Vector3(size,1.5*size,0.0025) O.materials.append(JCFpmMat(type=0,young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) #O.materials.append(JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS,cohesion=COH,label='spheres')) walls=aabbWalls([mn,mx],thickness=0.001,material='walls') wallIds=O.bodies.append(walls) mat1=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS,cohesion=COH,label='spheres1') mat_1=O.materials.append(mat1) mat2=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS0,cohesion=COH0,label='spheres2') mat_2=O.materials.append(mat2) O.bodies.append(ymport.text(PACKING,scale=1.,shift=Vector3(0,0,0))) sphere1=[] sphere2=[] for b in O.bodies: if not isinstance(b.shape,Sphere): # change material only on spheres continue if random.random() < 0.1: b.mat = mat1 b.shape.color = (1,0,0) #b.state.mass*=mat1.density/mat1.density sphere1.append(b.id) else: b.mat = mat2 b.shape.color = (0,1,1) #b.state.mass*=mat2.density/mat1.density sphere2.append(b.id) R=0 Rmax=0 numSpheres=0. for o in O.bodies: if isinstance(o.shape,Sphere): numSpheres+=1 R+=o.shape.radius Rmean=R/numSpheres ### DEFINING ENGINES ### triax=TriaxialStressController( #wall_back_activated = False, #for 2d simulation #wall_front_activated = False, thickness = 0, stressMask = 7, internalCompaction=False, # If true the confining pressure is generated by growing particles ) newton=NewtonIntegrator(damping=damp) ### ### APPLYING CONFINING PRESSURE ### ### #the value of (isotropic) confining stress defines the target stress to be applied in all three directions ### ### REACHING A SPECIFIED POROSITY PRECISELY ### ### triax.goal1=triax.goal2=triax.goal3=-10 setContactFriction(radians(finalFricDegree)) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Box_Sphere_ScGeom()], [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')], [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, newton #PyRunner(iterPeriod=int(saveData),initRun=True,command='recorder()',label='data'), ]
Re: [Yade-users] [Question #707022]: A problem with 'JCFmpMat'
Question #707022 on Yade changed: https://answers.launchpad.net/yade/+question/707022 William confirmed that the question is solved: Thanks Luc Scholtès, 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 #707022]: A problem with 'JCFmpMat'
Question #707022 on Yade changed: https://answers.launchpad.net/yade/+question/707022 Status: Open => Solved William confirmed that the question is solved: Hi, Luc. I have read your paper and it helped me a lot. I have understood the meaning of 'aabbEnlargeFactor' and 'interactionDetectionFactor'. I set the intR to 0 and try again. the results show that the strength of the two methods is identical. Thanks for your guidance. -- 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 #707027]: How to combine 'FrictMat' with 'JCFpmMat'?
New question #707027 on Yade: https://answers.launchpad.net/yade/+question/707027 Hi, everyone! I am preparing triaxial samples. I want to study the process of gradual transition from granular materials to continuum materials (many particles — a whole rock). I will bond a part of particles ) randomly (0-100%, 0 means no bonded contact, and 100% means all particles are bonded into a rock. The material properties of particles are different. A part of particles are cohesionless (set by ‘FrictMat’) and the other part is set by ‘JCFpmMat’. However, I met the following error and I didn’t know how to handle this. The error: Body #8: Body::material type JCFpmMat doesn't correspond to Body::state type State (should be JCFpmState instead). Here is my script. > ### Positon.txt (file name) #format x_y_z_r 0.0423719 0.0423718 0.00762624 0.00762937 0.0368311 0.00762414 0.0218373 0.00762937 0.0109732 0.0274949 0.0423726 0.00762937 0.0423729 0.0196072 0.0294726 0.00762937 0.00762888 0.0076284 0.0237511 0.00762937 0.0423757 0.0213440.0143142 0.00762937 0.0423732 0.0423786 0.0381319 0.00762937 0.0423707 0.00762926 0.0389254 0.00762937 0.0277218 0.0423760.0423756 0.00762937 0.00762825 0.0221316 0.0284870.00762937 0.0183669 0.02929 0.0203510.00762937 0.00762204 0.00983953 0.00762463 0.00762937 0.0293079 0.0172139 0.00762398 0.00762937 0.0308355 0.0323899 0.00762729 0.00762937 0.0204724 0.00761678 0.0155146 0.00762937 0.0076186 0.0126170.0423748 0.00762937 0.0158864 0.0373350.00762595 0.00762937 0.0423768 0.0423791 0.0228790.00762937 0.0244463 0.0292061 0.0354264 0.00762937 0.0423718 0.00762923 0.00762641 0.00762937 0.0176763 0.0421088 0.0308980.00762937 0.0258480.0423790.0180193 0.00762937 0.00762741 0.0423712 0.0194226 0.00762937 0.0333746 0.0300839 0.0229910.00762937 0.0423771 0.0277384 0.0423761 0.00762937 0.0257761 0.0172419 0.0260697 0.00762937 0.0208973 0.00761264 0.0368250.00762937 0.0311736 0.0174043 0.0423743 0.00762937 0.00762717 0.0423745 0.0423721 0.00762937 0.00762815 0.0248273 0.0104743 0.00762937 > ### The script: # packing (previously constructed) PACKING='Position.txt' from yade import pack, timing,ymport ### DEFINING VARIABLES AND MATERIALS ### ## Sphere material Young=300e6 Density=2650 Poisson=0.3 compFricDegree = 0 finalFricDegree = 27 AvgRadius=0.0002 intR=1.25 TENS=0.1e6 COH=0.45e6 ## wall material WYoung=600e7 WPoisson=0.5 WDensity=0 WFrictionAngle=0 damp=0.7 # corners of the initial packing size=0.05 mn,mx=Vector3(0,0,0),Vector3(size,size,size) O.materials.append(FrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) mat1=JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS,cohesion=COH,label='spheres1') mat_1=O.materials.append(mat1) mat2=FrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,label='spheres2') mat_2=O.materials.append(mat2) walls=aabbWalls([mn,mx],thickness=0.001,material='walls') wallIds=O.bodies.append(walls) O.bodies.append(ymport.text(PACKING,scale=1.,shift=Vector3(0,0,0))) sphere1=[] sphere2=[] for b in O.bodies: if not isinstance(b.shape,Sphere): continue if random.random() < 0.2: b.mat = mat1 b.shape.color = (1,0,0) sphere1.append(b.id) else: b.mat = mat2 b.shape.color = (0,1,1) sphere2.append(b.id) ### DEFINING ENGINES ### triax=TriaxialStressController( thickness = 0, stressMask = 7, internalCompaction=False, ) newton=NewtonIntegrator(damping=damp) ### ### REACHING A SPECIFIED POROSITY PRECISELY ### ### triax.goal1=triax.goal2=triax.goal3=-10 setContactFriction(radians(finalFricDegree)) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Box_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')],
Re: [Yade-users] [Question #707022]: A problem with 'JCFmpMat'
Question #707022 on Yade changed: https://answers.launchpad.net/yade/+question/707022 Status: Answered => Open William is still having a problem: Hi, Luc. Thanks for your reply. > Basically, the sample is stress free at the first iteration of a JCFPM > simulation. Sorry, I don't understand what does this mean. > Also, you can define long range interactions with the JCFPM: intR>1 will > create contacts between particles not geometrically in contact. If I've given the position of the particles beforehand, and they're touching each other, what's the use of 'intR>1' in the engine? Finally, how should I edit the code if I want that the results of 'JCFpmMat' is same with 'FrictMat'? William -- 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 #706976]: Reconstruct particles from ct images
Question #706976 on Yade changed: https://answers.launchpad.net/yade/+question/706976 William posted a new comment: Hi, Karol. I wonder that what the '1' and '10' mean in the 'clumps.txt' ### input file with clumps "clumps.txt" 0.068037 0.02416 0.0017637 0.0011423 1 0.068615 0.022601 0.0014278 0.00077244 1 0.069542 0.023528 0.0017906 0.00071539 1 0.066801 0.025141 0.0019788 0.0006786 1 0.049731 0.03499 0.0017112 0.00070436 10 0.048747 0.034309 0.0013637 0.00063928 10 0.047719 0.034628 0.0014651 0.00056027 10 0.047299 0.035323 0.0020008 0.00052311 10 -- 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 #701110]: wall friction
Question #701110 on Yade changed: https://answers.launchpad.net/yade/+question/701110 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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 #701737]: How to apply stress?
Question #701737 on Yade changed: https://answers.launchpad.net/yade/+question/701737 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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 #706962]: The problem of matchmaker
Question #706962 on Yade changed: https://answers.launchpad.net/yade/+question/706962 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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 #701792]: friction coefficient between different materials
Question #701792 on Yade changed: https://answers.launchpad.net/yade/+question/701792 Status: Answered => Solved William confirmed that the question is solved: Thanks Robert Caulk, 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
[Yade-users] [Question #707022]: A problem with 'JCFmpMat'
New question #707022 on Yade: https://answers.launchpad.net/yade/+question/707022 Hi, everyone. I have a problem with ‘JCFpmMat’. What’s the difference between ‘JCFpmMat’ and ‘FrictMat’ if we set the tensileStrength and cohesion to 0? For example, there are two scripts and the difference between them (materials and contact InteractionLoop) is as follows: Script1: O.materials.append(FrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) O.materials.append(FrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,label='spheres')) 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), triax, newton ] # # # Script 2: O.materials.append(JCFpmMat(type=0,young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) O.materials.append(JCFpmMat(type=1,young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree),density = Density,tensileStrength=TENS,cohesion=COH,label='spheres')) triax.goal1=triax.goal2=triax.goal3=-10 setContactFriction(radians(finalFricDegree)) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Box_Aabb(),Bo1_Sphere_Aabb(aabbEnlargeFactor=intR,label='Saabb')]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=intR,label='SSgeom'),Ig2_Box_Sphere_ScGeom()], [Ip2_JCFpmMat_JCFpmMat_JCFpmPhys(cohesiveTresholdIteration=1,label='interactionPhys')], [Law2_ScGeom_JCFpmPhys_JointedCohesiveFrictionalPM(recordCracks=True,Key=OUT,label='interactionLaw')]), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, newton ] # # # The two scripts are same except the above content. However, the results of the two triaxal tests differed greatly. -- 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 #706962]: The problem of matchmaker
Question #706962 on Yade changed: https://answers.launchpad.net/yade/+question/706962 William posted a new comment: Hi, Jan. I have simplified the code. Yade 2021.01a > Here is the new code and the error. from yade import pack, timing #time calculation startT = O.time endT = O.time timeSpent = endT - startT time0 = time.time() ### DEFINING VARIABLES AND MATERIALS ### nRead=readParamsFromTable( num_spheres=2000, key='_triax_base_', unknownOk=True) from yade.params import table num_spheres=table.num_spheres key=table.key damp=0.7 stabilityThreshold=0.001 ## Sphere material Young=300e6 Density=2650 Poisson=0.3 compFricDegree = 0 finalFricDegree = 27 normalCohesion=100e4 shearCohesion=100e4 etaRoll=0.1 AvgRadius=0.0005 ## wall material WYoung=6000e6 WPoisson=0.5 WDensity=0 WFrictionAngle=0 # corners of the initial packing size=0.05 mn,mx=Vector3(0,0,0),Vector3(size,size,size) ## create materials for spheres and plates O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) mat1=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres1') mat_1=O.materials.append(mat1) mat2=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres2') mat_2=O.materials.append(mat2) ## create walls around the packing walls=aabbWalls([mn,mx],thickness=0,material='walls') wallIds=O.bodies.append(walls) ## use a SpherePack object to generate a random loose particles packing sp=pack.SpherePack() sp.makeCloud(mn,mx,rMean=AvgRadius,rRelFuzz=0,num=num_spheres,distributeMass=False,seed=1) sp.toSimulation() sphere1=[] sphere2=[] for b in O.bodies: if not isinstance(b.shape,Sphere): # change material only on spheres continue if random.random() < 0.9: b.mat = mat1 b.shape.color = (1,0,0) b.state.mass*=mat1.density/mat1.density sphere1.append(b.id) else: b.mat = mat2 b.shape.color = (0,1,1) b.state.mass*=mat2.density/mat1.density sphere2.append(b.id) ### DEFINING ENGINES ### triax=TriaxialStressController( maxMultiplier=1.001, finalMaxMultiplier=1.1, thickness = 0, stressMask = 7, internalCompaction=True ) newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,normalCohesion=MatchMaker(matches=((mat_1,mat_1,100),(mat_1,mat_2,normalCohesion/2),(mat_2,mat_2,normalCohesion))),shearCohesion=MatchMaker(matches=((mat_1,mat_1,100), (mat_1,mat_2,shearCohesion/2),(mat_2,mat_2,shearCohesion], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, newton ] ### ### APPLYING CONFINING PRESSURE ### ### triax.goal1=triax.goal2=triax.goal3=-9 if 1: while 1: O.run(1000, True) unb=unbalancedForce() print ('unbalanced force:',unb,' mean stress: ',triax.meanStress," porosity:",triax.porosity,) if unb error: terminate called after throwing an instance of 'std::invalid_argument' what(): MatchMaker: no match for (0,1), and values required for algo computation 'avg' not specified. -- 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 #706962]: The problem of matchmaker
New question #706962 on Yade: https://answers.launchpad.net/yade/+question/706962 When I add the 'MatchMaker' in the second engine, the error 'terminate called recursively' appears. I didn't find what's wrong with the code. If i delete the relavant code of matchmaker, it will run without the error. Ubuntu 21.10 > Here is the error: terminate called recursively terminate called recursively terminate called recursively terminate called after throwing an instance of 'std::invalid_argument' >Here is my code. this code is divided into two parts. if you are going to run >it, you have to wait a moment (about 5 min) for finishing the first part and >the start the 2nd part. the error is in the second part. from yade import pack, timing #time calculation startT = O.time endT = O.time timeSpent = endT - startT time0 = time.time() ### DEFINING VARIABLES AND MATERIALS ### nRead=readParamsFromTable( num_spheres=2000, key='_triax_base_', unknownOk=True) from yade.params import table num_spheres=table.num_spheres key=table.key damp=0.7 stabilityThreshold=0.001 ## Sphere material Young=300e6 Density=2650 Poisson=0.3 compFricDegree = 0 finalFricDegree = 27 normalCohesion=100e4 shearCohesion=100e4 etaRoll=0.1 AvgRadius=0.0005 ## wall material WYoung=6000e6 WPoisson=0.5 WDensity=0 WFrictionAngle=0 # corners of the initial packing size=0.05 mn,mx=Vector3(0,0,0),Vector3(size,size,size) ## create materials for spheres and plates O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) mat1=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres1') mat_1=O.materials.append(mat1) mat2=CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres2') mat_2=O.materials.append(mat2) print(mat_1,mat_2) # mat_1=O.materials.append(CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=100,shearCohesion=100,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres1')) # mat_2=O.materials.append(CohFrictMat(young = Young , poisson = Poisson , frictionAngle = radians(compFricDegree) ,normalCohesion=normalCohesion,shearCohesion=shearCohesion,isCohesive=True,alphaKr=0,alphaKtw=0,etaRoll=0.5,momentRotationLaw=True, density = Density,label='spheres2')) # O.materials.append(CohFrictMat(young = WYoung , poisson = WPoisson , frictionAngle = radians(WFrictionAngle) , density = WDensity,label='walls')) ## create walls around the packing walls=aabbWalls([mn,mx],thickness=0,material='walls') wallIds=O.bodies.append(walls) ## use a SpherePack object to generate a random loose particles packing #psdSizes,psdCumm=[0.00099,0.00107,0.00116,0.00143,0.00163,0.00172,0.00209,0.00251,0.00424],[0.0,0.04,0.10,0.3,0.5,0.6,0.8,0.95,1] sp=pack.SpherePack() #sp.makeCloud(mn,mx,num=num_spheres,psdSizes=psdSizes,psdCumm=psdCumm,distributeMass=True,seed=1) sp.makeCloud(mn,mx,rMean=AvgRadius,rRelFuzz=0,num=num_spheres,distributeMass=False,seed=1) #sp.toSimulation(material='spheres1') sp.toSimulation() sphere1=[] sphere2=[] for b in O.bodies: if not isinstance(b.shape,Sphere): # change material only on spheres continue if random.random() < 0.9: b.mat = mat1 b.shape.color = (1,0,0) sphere1.append(b.id) else: b.mat = mat2 b.shape.color = (0,1,1) sphere2.append(b.id) ### DEFINING ENGINES ### triax=TriaxialStressController( maxMultiplier=1.001, finalMaxMultiplier=1.1, thickness = 0, stressMask = 7, internalCompaction=True ) newton=NewtonIntegrator(damping=damp) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom6D()], [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=False,setCohesionOnNewContacts=False,label="cohesiveIp")], [Law2_ScGeom6D_CohFrictPhys_CohesionMoment(useIncrementalForm=True,always_use_moment_law=True,label='cohesiveLaw')] ), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, newton ] ### ### APPLYING CONFINING PRESSURE ### ###
Re: [Yade-users] [Question #706910]: Whether polyhedral particles are suitable for triaxial tests?
Question #706910 on Yade changed: https://answers.launchpad.net/yade/+question/706910 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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
[Yade-users] [Question #706910]: Whether polyhedral particles are suitable for triaxial tests?
New question #706910 on Yade: https://answers.launchpad.net/yade/+question/706910 Hi, everyone. Irregular particles are often used in triaxial tests and spherical particles cannot meet our needs usually. The irregular shape particles are realized by clump method in Yade. However, whether polyhedral particles are suitable for triaxial tests?How computationally efficient is it and can we extract contact information or other important information from this method? 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 #706883]: The particle deposition rate is too slow
Question #706883 on Yade changed: https://answers.launchpad.net/yade/+question/706883 Status: Answered => Solved William confirmed that the question is solved: Thanks Karol Brzezinski, 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 #706883]: The particle deposition rate is too slow
Question #706883 on Yade changed: https://answers.launchpad.net/yade/+question/706883 Status: Answered => Open William is still having a problem: Hi, Karol. Thanks for your reply. > you should change the timestep to be smaller than PWaveTimeStep() Thanks for your suggestion. > Secondly, you can decrease the young modulus of walls. I have decreased that. It didn't seem to work, still very slow. > BTW do you take advantage of multithread computing (by simply running the > simulation with -j parameter)? Yes, I used "yade -j 8 ..." Please allow me to make an addition. When I delete the "blender" and just sedimentate, the particle deposition rate is acceptable. Thus, I think the deposition rate might affected by the "blender". -- 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 #706883]: The particle deposition rate is too slow
New question #706883 on Yade: https://answers.launchpad.net/yade/+question/706883 Hi, I want to pour the particles into a container and stir. However, the particle deposition rate is too slow. How can I accelerate the process? Here is my script. import random import math from yade import geom, pack, utils, plot, ymport, export import numpy as np #particle parameters Density = 3000 FrictionAngle = 0 PoissonRatio = 0.5 Young = 300e6 Damp = 0.7 AvgRadius = 0.01 N_particles = 2 #Wall constants WDensity = 3000 WFrictionAngle = 0.0 WPoissonRatio = 0.5 WYoung = 500e9 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)) ### tank center = (0, 0, 0) diameter = 2 height = 1 cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, segmentsNumber=80, wallMask=6,material=WallMat) O.bodies.append(cylinder) ### funnel # Define cylinder with funnel parameters center2 = (0, 0, 1) diameter2 = 0.4 height2 = 1 # create cylindrical body cylinder2 = geom.facetCylinder(center=center2, radius=diameter2/2, height=height2, segmentsNumber=80, wallMask=4,material=WallMat) O.bodies.append(cylinder2) # Define cylinder with funnel parameters center1 = (0,0,height2/2+1) dBunker = 2 dOutput = 0.4 hBunker = 0 hOutput = 1 hPipe = 0 # create funnel as a bunker funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4,material=WallMat) O.bodies.append(funnel) # Define cylinder with funnel parameters center3 = (0, 0, 4.5) diameter3 = 2 height3 = 4 # create cylindrical body cylinder3 = geom.facetCylinder(center=center3, radius=diameter3/2, height=height3, segmentsNumber=80, wallMask=4,material=WallMat) O.bodies.append(cylinder3) ### blender b1=[] for i in range(60): b1.append(O.bodies.append(sphere([0.707/2,0.707/2,i*0.02-0.48],0.04))) for i in range(5): for j in range(48): b1.append(O.bodies.append(sphere([j*0.01+0.707/2,0.707/2,i*0.2-0.48],0.02))) b1.append(O.bodies.append(sphere([-j*0.01+0.707/2,0.707/2,i*0.2-0.38],0.02))) idclump1=O.bodies.clump(b1) s1=O.bodies[-1] s1.state.blockedDOFs='xyzXYZ' b2=[] for i in range(60): b2.append(O.bodies.append(sphere([-0.707/2,-0.707/2,i*0.02-0.48],0.04))) for i in range(5): for j in range(48): b2.append(O.bodies.append(sphere([-(j*0.01+0.707/2),-0.707/2,i*0.2-0.48],0.02))) b2.append(O.bodies.append(sphere([-(-j*0.01+0.707/2),-0.707/2,i*0.2-0.38],0.02))) idclump2=O.bodies.clump(b2) s2=O.bodies[-1] s2.state.blockedDOFs='xyzXYZ' b3=[] for i in range(60): b3.append(O.bodies.append(sphere([0.707/2,-0.707/2,i*0.02-0.48],0.04))) for i in range(5): for j in range(48): b3.append(O.bodies.append(sphere([(-j*0.01+0.707/2),-0.707/2,i*0.2-0.48],0.02))) b3.append(O.bodies.append(sphere([(j*0.01+0.707/2),-0.707/2,i*0.2-0.38],0.02))) idclump3=O.bodies.clump(b3) s3=O.bodies[-1] s3.state.blockedDOFs='xyzXYZ' b4=[] for i in range(60): b4.append(O.bodies.append(sphere([-0.707/2,0.707/2,i*0.02-0.48],0.04))) for i in range(5): for j in range(48): b4.append(O.bodies.append(sphere([-(-j*0.01+0.707/2),0.707/2,i*0.2-0.48],0.02))) b4.append(O.bodies.append(sphere([-(j*0.01+0.707/2),0.707/2,i*0.2-0.38],0.02))) idclump4=O.bodies.clump(b4) s4=O.bodies[-1] s4.state.blockedDOFs='xyzXYZ' for b in O.bodies: if isinstance(b.shape,Sphere): b.shape.color=(0.,1.,0.) ### particle generation mn = Vector3(0.6,-0.6,2.5) mx = Vector3(-0.6,0.6,5.5) sp = pack.SpherePack() sp.makeCloud(mn,mx,num=N_particles,rMean=AvgRadius,rRelFuzz=0,distributeMass=False) sp.toSimulation(material = SphereMat) O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), NewtonIntegrator(gravity=(0,0,-9.8),damping=0.7), CombinedKinematicEngine(ids=[s1.id],comb=[RotationEngine(angularVelocity=1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(0.707/2,0.707/2,0))]), CombinedKinematicEngine(ids=[s2.id],comb=[RotationEngine(angularVelocity=1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(-0.707/2,-0.707/2,0))]), CombinedKinematicEngine(ids=[s3.id],comb=[RotationEngine(angularVelocity=-1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(0.707/2,-0.707/2,0))]), CombinedKinematicEngine(ids=[s4.id],comb=[RotationEngine(angularVelocity=-1,rotateAroundZero=1,rotationAxis=(0,0,1),zeroPoint=(-0.707/2,0.707/2,0))]) ] O.dt=2*PWaveTimeStep() -- You received this question notification because your team yade-users is an answer contact
Re: [Yade-users] [Question #699998]: How to simulate small-strain triaxial compression test
Question #68 on Yade changed: https://answers.launchpad.net/yade/+question/68 William posted a new comment: Hi, Leonard I have read your code and the conversation. There are some questions still trouble me. I hope you or some other friends could help me. > young=5e6 # contact stiffness Many researchers adopt young=29e9 in their papers. However, the unbalanced force is nan and the mean stress is 0 all the time whlie I modfy this using your code. > Decrease TriaxialStressController.max_vel How much should TriaxialStressController.max_vel go down to? Thanks, William -- 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 #701666]: How to present the pore network model in flowengine
Question #701666 on Yade changed: https://answers.launchpad.net/yade/+question/701666 William Hoke posted a new comment: Hey, Thanks for providing such informative and useful stuff about How to present the pore network model in a flow engine. Keep it up and provide more like this. https://zarqaainteriorfitout.ae/sectors/retail-fit-out-companies-in-dubai/ Regards William -- 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 #701792]: friction coefficient between different materials
New question #701792 on Yade: https://answers.launchpad.net/yade/+question/701792 Hi, there are two kinds of sphere with different materials. The inner friction angle of the two kinds are 10 and 20 respectively. If the coefficient of friction between the two kinds of sphere is tan15, how could I set this value? ### Matrix Density1 = 2600 PoissonRatio1 = 0.5 frictionangle1 = 10 Young1 = 10e7 Num1 = 9000 ### Filler Density2 = 3000 PoissonRatio2 = 0.5 frictionangle2 = 20 Young2 = 10e7 Num2 = 8 Damp = 0.25 #Packing variables Size = 0.05 mn = Vector3(0, 0, 0) mx = Vector3(Size, Size, Size) mat1 = O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix')) mat2 = O.materials.append(FrictMat(young=Young2,poisson=PoissonRatio2,frictionAngle=radians(frictionangle2),density=Density2,label='Filler')) sp = pack.SpherePack() sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1, distributeMass = False, periodic = False) sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0005, rRelFuzz=0, num=Num2, distributeMass = False, periodic = False) sp.toSimulation() for b in O.bodies: if isinstance(b.shape,Sphere): if b.shape.radius==0.0001: b.shape.color = (0, 0, 1) b.mat=O.materials[mat1] for c in O.bodies: if isinstance(c.shape,Sphere): if c.shape.radius==0.0005: c.shape.color = (0, 0, 1) c.mat=O.materials[mat2] -- 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 #701783]: How to assign material properties?
Question #701783 on Yade changed: https://answers.launchpad.net/yade/+question/701783 Status: Answered => Solved William confirmed that the question is solved: Thanks Jan Stránský, 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 #701783]: How to assign material properties?
Question #701783 on Yade changed: https://answers.launchpad.net/yade/+question/701783 William posted a new comment: Sorry for my vague expression. The 3D model in primary view will disappear suddenly when the second script is run. -- You received this question notification because your team yade-users is an answer contact for Yade. ___ Mailing list: https://launchpad.net/~yade-users Post to : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #701783]: How to assign material properties?
Question #701783 on Yade changed: https://answers.launchpad.net/yade/+question/701783 Description changed to: Hi, I have two scripts. They are used to generate a same sample and the difference of them is the way to assign properties for the material (sphere). The first program work properly but the second one dosen't. I want to know what’s the matter with the second script. Thanks. The scripts are given below. -- 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 #701783]: How to assign material properties?
New question #701783 on Yade: https://answers.launchpad.net/yade/+question/701783 Hi, I have two scripts. They are used to generate a same sample and the difference of them is the way to assign properties for the material (sphere). The first program doesn't work properly but the second one dose. I want to know what’s the matter with the first script. Thanks. The scripts are given below. -- 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 #701783]: How to assign material properties?
Question #701783 on Yade changed: https://answers.launchpad.net/yade/+question/701783 William posted a new comment: the second script # ### Defining parameters and variables # ### Matrix material Density1 = 2600 PoissonRatio1 = 0.5 frictionangle1 = 10 Young1 = 10e7 Num1 = 9000 Damp = 0.25 #Wall constants WDensity = 0 WFrictionAngle = 0.0 WPoissonRatio = 0.5 WYoung = 50e9 #Packing variables Size = 0.05 mn = Vector3(0, 0, 0) mx = Vector3(Size, Size, Size) #Confining variables ConfPress = -190e3 ConfPress1 = ConfPress*0.9 # Pre-Compressure #import necessary packages from yade import pack,plot,os,timing import matplotlib; matplotlib.rc('axes',grid=True) import pylab ### Sample Preparing ### mat1 = O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix')) #Create materials for spheres and plates WallMat = O.materials.append(FrictMat(young = WYoung , poisson = WPoissonRatio , frictionAngle = radians(WFrictionAngle) , density = WDensity)) wallIds = O.bodies.append(aabbWalls([mn,mx] , thickness = 0.001 , material = WallMat)) sp = pack.SpherePack() sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1) sp.toSimulation() for b in O.bodies: if isinstance(b.shape,Sphere): if b.shape.radius==0.0001: b.shape.color = (0, 0, 1) b.mat=O.materials[mat1] O.usesTimeStepper=True O.trackEnerty=True # # Defining triaxil engines ## # ###First step: Compression### triax1 = TriaxialStressController( thickness = 0.001, internalCompaction = False, stressMask = 7, computeStressStrainInterval = 10, goal1 = ConfPress1, goal2 = ConfPress1, goal3 = ConfPress1, ) 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'), ] # 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 if unb<0.001 and abs(ConfPress1-mStress)/abs(ConfPress1)<0.01: print('--1 Finished--') print('--Time:'+ str((time.time()-time0)/60) + 'min--') O.save('1.yade.bz2') O.pause() -- 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 #701783]: How to assign material properties?
Question #701783 on Yade changed: https://answers.launchpad.net/yade/+question/701783 William posted a new comment: the first script # ### Defining parameters and variables ### # ### Matrix Density1 = 2600 PoissonRatio1 = 0.5 frictionangle1 = 10 Young1 = 10e7 Num1 = 9000 Damp = 0.25 #Wall constants WDensity = 0 WFrictionAngle = 0.0 WPoissonRatio = 0.5 WYoung = 50e9 #Packing variables Size = 0.05 mn = Vector3(0, 0, 0) mx = Vector3(Size, Size, Size) #Confining variables ConfPress = -190e3 ConfPress1 = ConfPress*0.9 # Pre-Compressure #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 WallMat = O.materials.append(FrictMat(young = WYoung , poisson = WPoissonRatio , frictionAngle = radians(WFrictionAngle) , density = WDensity)) wallIds = O.bodies.append(aabbWalls([mn,mx] , thickness = 0.001 , material = WallMat)) SphereMat = O.materials.append(FrictMat(young=Young1,poisson=PoissonRatio1,frictionAngle=radians(frictionangle1),density=Density1,label='Matrix')) sp = pack.SpherePack() sp.makeCloud(minCorner=mn, maxCorner=mx, rMean=0.0001, rRelFuzz=0, num=Num1) sp.toSimulation(material = SphereMat) O.usesTimeStepper=True O.trackEnerty=True # # Defining triaxil engines ## # ###First step: Compression### triax1 = TriaxialStressController( thickness = 0.001, internalCompaction = False, stressMask = 7, computeStressStrainInterval = 10, goal1 = ConfPress1, goal2 = ConfPress1, goal3 = ConfPress1, ) 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'), ] # 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 if unb<0.001 and abs(ConfPress1-mStress)/abs(ConfPress1)<0.01: print('--1 Finished--') print('--Time:'+ str((time.time()-time0)/60) + 'min--') O.save('1.yade.bz2') O.pause() -- 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 #701737]: How to apply stress?
Question #701737 on Yade changed: https://answers.launchpad.net/yade/+question/701737 William posted a new comment: Hi, Jan Thanks for your answer. ### stress = 1e7 # max stress, Pa rate = 1e8 # stress rate, Pa/s def applyForce(): f = O.time * rate # linear increase, can be whatever else f = min(f,stress) # not to excess max stress O.forces.setPermF(Boxid,(0,0,f)) O.engines = [ ... PyRunner(iterPeriod=1,command="applyForce()"), ] ### > stress = 1e7 # max stress, Pa Here what we apply is 'stress(Pa)' rather than 'force(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 #701737]: How to apply stress?
New question #701737 on Yade: https://answers.launchpad.net/yade/+question/701737 Hi, I want to know how to apply stress on the box. I used to apply a force directly but I don’t think it’s correct. For example, 100kPa should be applied in the z direction and I write next code(1e7N = 10Pa * 10m * 10m) Boxid = O.bodies.append(box((0,0,0),(10,10,1))) O.forces.setPermF(Boxid,(0,0,1e7)) The force is loaded instantaneously which cause the whole process is not quasi-static. Is there any loading method to overcome the problem? Could I control the loading rate to keep the whole process quasi-static? -- 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 #685892]: Importing Yade in other Python applications
Question #685892 on Yade changed: https://answers.launchpad.net/yade/+question/685892 Status: Open => Answered William Chevremont proposed the following answer: Hi, Did you compile yade using python3 version? According to this line : print 'Yade version: %s%s'%(version,debugbuild) it seems not. William On 15/11/2019 11:03, Rong Zhao wrote: > New question #685892 on Yade: > https://answers.launchpad.net/yade/+question/685892 > > Hi, I have a problem with importing Yade in other Python applications. The > Yade documentation provides the easiest way to import the Yade in other > Python applications. I try the provided method to create a symbolic link as > explained below. > > = > $ cd /home/zhaorong/Desktop/ > $ ln -s /home/zhaorong/myYade/build/bins/yade-2019.01a > /home/zhaorong/Desktop/yadeimport.py > = > > Then, I tried in Python2 and it succeeded. > == > zhaorong@ubuntu64:~/Desktop$ python2 > Python 2.7.16 (default, Oct 7 2019, 17:36:04) > [GCC 8.3.0] on linux2 > Type "help", "copyright", "credits" or "license" for more information. >>>> import sys >>>> sys.path.append('/home/zhaorong/Desktop/') >>>> from yadeimport import * > === > > But when I used the same method in python3, it failed. > === > zhaorong@ubuntu64:~/Desktop$ python3 > Python 3.7.3 (default, Oct 7 2019, 12:56:13) > [GCC 8.3.0] on linux > Type "help", "copyright", "credits" or "license" for more information. >>>> import sys >>>> sys.path.append('/home/zhaorong/Desktop/') >>>> from yadeimport import * > Traceback (most recent call last): >File "", line 1, in >File "/home/zhaorong/Desktop/yadeimport.py", line 71 > print 'Yade version: %s%s'%(version,debugbuild) > ^ > SyntaxError: invalid syntax > === > > I want to know whether the Yade is imported to Python2 applications only, not > Python3 applications. > > 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 #685214]: ElectrostaticPhys: equation and constants
Question #685214 on Yade changed: https://answers.launchpad.net/yade/+question/685214 William Chevremont proposed the following answer: Hi, As Bruno said, this was a work in progress and this will be deleted soon, as a more general framework will replace this stuff (generic lubricated interaction with potential between particles). For more informations, see branch "potential" on gitlab (pkg/dem/LubricationWithPotential.{cpp,hpp}) Better is to not use this contact law for now. I hope the new branch to be released within 2 weeks (after tests). William. -- 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 #684839]: PDFEngine
Hi, PDFEngine is a recent feature. Your yade version is too old. You need to update it if you want to use this engine. when I run this, here is the error: Welcome*to Yade 2018.02b * TCP python prompt on localhost:9000, auth cookie `udeyas' XMLRPC info provider on http://localhost:21000 Best Regards, William On 09/10/2019 01:32, nobody wrote: New question #684839 on Yade: https://answers.launchpad.net/yade/+question/684839 Hi All, I want to use the PDFEngine in my simulation, and I found an answer, but it seems not to work. here is my MWE: from yade import pack, plot, export import math O.bodies.append(geom.facetBox((.5,.5,.5),(.5,.5,.5),wallMask=31)) sp=pack.SpherePack() sp.makeCloud((0,0,0),(1,1,1),rMean=.05,rRelFuzz=.5) sp.toSimulation() O.engines=[ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), PyRunner(command='checkUnbalanced()',realPeriod=2), #PyRunner(command='addPlotData()',iterPeriod=100), #PyRunner(command='subbox()',iterPeriod=100), #PyRunner(command='stress_export()',iterPeriod=1000), #PyRunner(command='get_component()',iterPeriod=1000), NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4), #PDFEngine(filename="PDF.txt",iterPeriod= 1000), PDFEngine(filename="PDF.txt", iterPeriod=1000, numDiscretizeAnglePhi=20,numDiscretizeAngleTheta=20) ] O.dt=.5*PWaveTimeStep() print(len(O.bodies)) def checkUnbalanced(): if unbalancedForce()<.0001: O.pause() #plot.saveDataTxt('bbb.txt') def addPlotData(): plot.addData(i=O.iter,unbalanced=unbalancedForce()) #plot.plots={'i':('unbalanced')} #plot.plot() ### when I run this, here is the error: Welcome to Yade 2018.02b TCP python prompt on localhost:9000, auth cookie `udeyas' XMLRPC info provider on http://localhost:21000 Running script test.py Traceback (most recent call last): File "/usr/bin/yade", line 182, in runScript execfile(script,globals()) File "test.py", line 22, in PDFEngine(filename="PDF.txt", iterPeriod=1000, numDiscretizeAnglePhi=20,numDiscretizeAngleTheta=20) NameError: name 'PDFEngine' is not defined https://answers.launchpad.net/yade/+question/682859 #3, I did as they said, but the error said that I didn't define the name. best, yong ___ 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 #682859]: how to calculate anisotropy of contact normal vector
Question #682859 on Yade changed: https://answers.launchpad.net/yade/+question/682859 Status: Open => Answered William Chevremont proposed the following answer: Hi, PDFEngine do that for you. It compute the average of quantities like stress, distance, and probability of interaction for each orientation. For now, it works only for spherical particles. Just add PDFEngine(filename="PDF.txt", iterPeriod=1000, numDiscretizeAnglePhi=9,numDiscretizeAngleTheta=13, label="PDFRecorder") in your engines. This will output a PDF.txt containing the density functions, with column name like NormalStress_xy(theta, phi) Formulas: x = r sin theta sin phi y = r cos phi z = r sin theta cos phi This is a work in progress (not well documented for now) but it work as is. -- 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 #681105]: particle position
Question #681105 on Yade changed: https://answers.launchpad.net/yade/+question/681105 William Chèvremont proposed the following answer: You can read vtk data from matlab, using this function. You need first to compile it using mex: /* Convert four uint8 to float64 value */ #include "mex.h" #include "matrix.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include mxArray* readData(const char*); /* The gateway function */ void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /* variable declarations here */ if(nrhs != 1) { mexErrMsgIdAndTxt("VtkUncompresserToolBox:TooMuchInput","One input required"); } if(!mxIsChar(prhs[0])) { mexErrMsgIdAndTxt("VtkUncompresserToolBox:BadInput","Input must be a filename"); } int buflen = mxGetNumberOfElements(prhs[0]) + 1; char* buf = (char*)mxCalloc(buflen, sizeof(char)); /* Copy the string data from string_array_ptr and place it into buf. */ if (mxGetString(prhs[0], buf, buflen) != 0) mexErrMsgIdAndTxt( "VtkUncompresserToolBox:invalidStringArray", "Could not convert string data."); plhs[0] = readData(buf); /* code here */ } // // DumpXMLFile - report on the contents of an XML or legacy vtk file // Usage: DumpXMLFile XMLFile1 XMLFile2 ... // where // XMLFile is a vtk XML file of type .vtu, .vtp, .vts, .vtr, // .vti, .vto // template vtkDataSet *ReadAnXMLFile(const char*fileName) { vtkSmartPointer reader = vtkSmartPointer::New(); reader->SetFileName(fileName); reader->Update(); reader->GetOutput()->Register(reader); return vtkDataSet::SafeDownCast(reader->GetOutput()); } mxArray* readData(const char* filename) { // Process each file on the command line vtkDataSet *dataSet; std::string extension = vtksys::SystemTools::GetFilenameLastExtension(filename); // Dispatch based on the file extension if (extension == ".vtu") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vtp") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vts") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vtr") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vti") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vto") { dataSet = ReadAnXMLFile (filename); } else if (extension == ".vtk") { dataSet = ReadAnXMLFile (filename); } else { mexErrMsgIdAndTxt("VtkUncompresserToolBox:UnknownExt","Invalid extension"); return 0; } const char *fieldnames[5] = {"Points","CellCount","PointData","CellData","FieldData"}; int numberOfCells = dataSet->GetNumberOfCells(); int numberOfPoints = dataSet->GetNumberOfPoints(); mxArray* data = mxCreateStructMatrix(1,1,5,fieldnames); mxArray* points = mxCreateDoubleMatrix(numberOfPoints,3,mxREAL); double* pointsPtr = mxGetPr(points); double pos[3]; for(int i=0;iGetPoint(i,pos); pointsPtr[i] = pos[0]; pointsPtr[i+numberOfPoints] = pos[1]; pointsPtr[i+numberOfPoints*2] = pos[2]; } mxSetFieldByNumber(data,0,0,points); //mxSetFieldByNumber(data,0,0,mxCreateDoubleScalar(numberOfPoints)); mxSetFieldByNumber(data,0,1,mxCreateDoubleScalar(numberOfCells)); mxArray *PD = mxCreateStructMatrix(1,1,0,0); vtkPointData *pd = dataSet->GetPointData(); if (pd) { for (int i = 0; i < pd->GetNumberOfArrays(); i++) { int id = mxAddField(PD,pd->GetArrayName(i)); vtkAbstractArray* d = pd->GetAbstractArray(i); if(d && d->GetDataType() == VTK_DOUBLE) { mxArray* dat = mxCreateDoubleMatrix(d->GetNumberOfTuples(),d->GetNumberOfComponents(),mxREAL); double *datPtr = mxGetPr(dat); double *vtkDat = (double*)d->GetVoidPointer(0); for(int j=0;jGetNumberOfComponents();j++) { for(int k=0;kGetNumberOfTuples();k++) { datPtr[k+j*d->GetNumberOfTuples()] = vtkDat[j+k*d->GetNumberOfComponents()]; } } mxSetFieldByNumber(PD,0,id,dat);
Re: [Yade-users] [Question #681105]: particle position
Question #681105 on Yade changed: https://answers.launchpad.net/yade/+question/681105 Status: Open => Answered William Chèvremont proposed the following answer: Hi, Have a look at VTK recorder https://yade- dem.org/doc/yade.wrapper.html?highlight=vtk#yade.wrapper.VTKRecorder.recorders recorder "sphere" record position and radius of all particles. William -- 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 #679748]: Error with lubrication law solver
Question #679748 on Yade changed: https://answers.launchpad.net/yade/+question/679748 Status: Open => Answered William Chèvremont proposed the following answer: Hi, Yes and no. In fact, you have two subsystem: one when the two spheres interacts only with lubrication, and one when you have lubrication and contact. The "0" method solve the previous system then look if the results is in the right condition. If not, it divide the timestep by two and do it again on the two half timesteps, which sometimes leads to high number of recursions. The "1" and "2" solve directly the whole compound system by iterative methods, and the "3" is like the "0", but it predict the transition, thus, no recursion. Then , the "3" is most powerful in term of calculation, because it's always a fixed number of computations. -- 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 #679748]: Error with lubrication law solver
Question #679748 on Yade changed: https://answers.launchpad.net/yade/+question/679748 Status: Open => Answered William Chèvremont proposed the following answer: Hi, There are multiple solver for this contact law, but in certain case, I found that some can't give accurate results, just because of the problem's stiffness. The iteratives solvers (dichotomy and Newton- Rafson) are introduced for formulations without exact solutions. Actually, the last solver (3, dimentionless exact solution with contact prediction) will always give results, without any sub-stepping and/or iterations, and should be used by default. Note that it doesn't implement the theta-method and so, is full-implicit formulation. -- 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 #676053]: Export stress contour of interaction between polyhedra and spheres
Question #676053 on Yade changed: https://answers.launchpad.net/yade/+question/676053 Status: Open => Answered William Chevremont proposed the following answer: Hi, Full script is useless because of very specific stuff done inside, this will confuse more than explain. The only modification to be done is in the O.engines part. My looks like: engines = [ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5, label="aabb")],verletDist=-0.1,allowBiggerThanPeriod=False), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1.5,label="Ig2")], [Ip2_FrictMat_FrictMat_LubricationPhys(eta=m_viscosity,eps=m_epsilon)], [Law2_ScGeom_ImplicitLubricationPhys(activateNormalLubrication=True, activateTangencialLubrication=True, activateTwistLubrication=True, activateRollLubrication=True, debug=True, resolution = 3, theta = 1, SolutionTol = 1.e-8, MaxIter = 50)] ), NewtonIntegrator(damping=0.), GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8, defaultDt=1e-6,label="TimeStepper",viscEl=False), PDFEngine(filename="PDF.txt", virtPeriod=.1) ]; The output file (PDF.txt) is then post-proceeded with MatLab in order to plot the stress tensor component magnitude as a function of the position (theta, phi). -- 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 #676053]: Export stress contour of interaction between polyhedra and spheres
Question #676053 on Yade changed: https://answers.launchpad.net/yade/+question/676053 Status: Open => Answered Chevremont William proposed the following answer: Hi, Very recently, I introduce PDFEngine, that seems to make what you want, but I tested it only for Sphere-Sphere interaction (maybe need extra development to handle polyhedra-sphere interaction). It give you global stress repartition, distance between objects and relative velocity. To use it, you just have to add PDFEngine(filename="PDF.txt", virtPeriod=.1) to your engines. It'll write "PDF.txt" with column like normalStress_xx(theta, phi). You can change angle discretization (see options [1]) Be sure to update yade before using it (committed only 3 days ago) [1] https://yade- dem.org/doc/yade.wrapper.html?highlight=pdfengine#yade.wrapper.PDFEngine -- 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 #667236]: Distant interactions with aabbEnlargeFactor & interactionDetectionFactor
Question #667236 on Yade changed: https://answers.launchpad.net/yade/+question/667236 Status: Open => Answered William Chèvremont proposed the following answer: Hi Nicolas, What you are looking about is lubricated contact law. It's still under development but you can already use it. Here is an example of collider/interaction loop: InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=1.5, label="aabb")],verletDist=-0.1,allowBiggerThanPeriod=False), InteractionLoop( [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=1.5,label="Ig2")], [Ip2_ElastMat_ElastMat_LubricationPhys(eta=m_viscosity,eps=m_roughness)], [Law2_ScGeom_ImplicitLubricationPhys(activateNormalLubrication=True, activateTangencialLubrication=True, activateTwistLubrication=False, activateRollLubrication=False, debug=False)] ), For instance, the lubrication force is not calculated further than one particle radius. So, having a factor of more than 2 is useless. -- 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 #665387]: Compile error JointedCohesiveFrictionalPM
Question #665387 on Yade changed: https://answers.launchpad.net/yade/+question/665387 William Chèvremont posted a new comment: Solved by adding #include into JointedCohesiveFrictionalpm.hpp, Thanks 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
[Yade-users] [Question #665387]: Compile error JointedCohesiveFrictionalPM
New question #665387 on Yade: https://answers.launchpad.net/yade/+question/665387 Hi, I've just updated the source code of yade using git pull and I get this compile error, comming from code added 2 days ago: /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp: In member function ‘void Ip2_JCFpmMat_JCFpmMat_JCFpmPhys::distributeCrossSectionsWeibull(boost::shared_ptr, Real, Real)’: /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:600:7: error: ‘random_device’ is not a member of ‘std’ std::random_device rd; ^ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:600:7: note: suggested alternative: ‘random_shuffle’ std::random_device rd; ^ random_shuffle /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:601:7: error: ‘mt19937’ is not a member of ‘std’ std::mt19937 e2(rd()); ^~~ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:7: error: ‘weibull_distribution’ is not a member of ‘std’ std::weibull_distribution weibullDistribution(xSectionWeibullShapeParameter, xSectionWeibullScaleParameter); ^~~~ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:7: note: suggested alternative: ‘uniform_int_distribution’ std::weibull_distribution weibullDistribution(xSectionWeibullShapeParameter, xSectionWeibullScaleParameter); ^~~~ uniform_int_distribution /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:32: error: expected primary-expression before ‘>’ token std::weibull_distribution weibullDistribution(xSectionWeibullShapeParameter, xSectionWeibullScaleParameter); ^ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:34: error: ‘weibullDistribution’ was not declared in this scope std::weibull_distribution weibullDistribution(xSectionWeibullShapeParameter, xSectionWeibullScaleParameter); ^~~ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:602:34: note: suggested alternative: ‘weibullCutOffMin’ std::weibull_distribution weibullDistribution(xSectionWeibullShapeParameter, xSectionWeibullScaleParameter); ^~~ weibullCutOffMin /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:603:40: error: ‘e2’ was not declared in this scope Real correction = weibullDistribution(e2); ^~ /media/datas/Yade2/trunk/pkg/dem/JointedCohesiveFrictionalPM.cpp:603:40: note: suggested alternative: ‘R2’ Real correction = weibullDistribution(e2); ^~ R2 -- 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 #657790]: Electrostatic material
Question #657790 on Yade changed: https://answers.launchpad.net/yade/+question/657790 Status: Open => Answered Chevremont William proposed the following answer: Hi, This material has been created to create a potential between two spheres (only work on spheres for instance). It's already usable as is, but to enable long range interaction between particles, you have to increase aabbEnlargeFactor and interactionDetectionFactor. It implements the DLVO potential. Here is a test file that plot the potential between the two spheres: #!/usr/local/bin/yade-trunk -x # -*- coding: utf-8 -*- # encoding: utf-8 from yade import plot import math # ElectrostaticMat mat = O.materials.append(ElectrostaticMat(density=1000,young=1e7,poisson=0.3)) # add two spheres O.bodies.append([ sphere(center=(0,0,0),radius=6e-6,material=mat,fixed=True), sphere(center=(1.3e-5,0,0),radius=6e-6,material=mat, fixed=True)]); electro_interaction = Law2_ScGeom_ElectrostaticPhys(); #[Bo1_Box_Aabb(),Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()] # Set engines O.engines=[ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=10)]), InteractionLoop([Ig2_Sphere_Sphere_ScGeom(interactionDetectionFactor=10)], [Ip2_ElectrostaticMat_ElectrostaticMat_ElectrostaticPhys(DebyeLength=1e-7,Z=5e-12,A=1e-19)], [electro_interaction]), NewtonIntegrator(damping=0.2, gravity=(0,0,0)), PyRunner(command='upGraph()',iterPeriod=1000)] O.dt=1e-5; O.saveTmp(); O.bodies[1].state.vel = (-1e-7,0,0); #plot.plots={'d':('F0','F1','F2'), 't': ('d')} plot.plots={'d':('F0')} plot.plot(); def upGraph(): p1 = O.bodies[0].state.pos p2 = O.bodies[1].state.pos dist = math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2 + (p1[2]-p2[2])**2) - O.bodies[0].shape.radius - O.bodies[1].shape.radius plot.addData( d=dist/6e-6, F0=O.forces.f(1)[0], F1=O.forces.f(1)[1], F2=O.forces.f(1)[2], t=O.time); if O.forces.f(1)[0] < -1.e-10: O.bodies[1].state.pos = (1.2e-5,0,0); if O.forces.f(1)[0] > 0.: O.dt = 5e-7; if dist/6e-6 < -0.01: O.stopAtIter = O.iter +1 -- 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