Re: [Yade-users] [Question #700434]: InsertionSortCollider SortAxis : does axis choice make a difference to speed?
Question #700434 on Yade changed: https://answers.launchpad.net/yade/+question/700434 Status: Answered => Solved Daniel Kiracofe confirmed that the question is solved: Bruno, thank you for reply. I decided to try a few experiments. I created a highly elongated packing with an aspect ratio of 1:7:49. All particles were spheres with same diameter generated by makeCloud from yade.pack.SpherePack(). There were approximately 60,000 total particles. I used timing.stats() to pull out the time of the initial collider run. I ran both single threaded and with 4 threads to compare, but single threaded actually seemed to be a little faster so I'm reporting that here. Results: sortAxis = 0 (short axis), time = 11.8 s sortAxis = 1 (medium axis), time = 1.87 s sortAxis = 2 (long axis), time = 0.39s So actually a factor of 30 difference between the different axes. I tried a few variations on this with different aspect ratios and different number of particles, but general conclusion was that the long axis was MUCH faster. This highly elongated packing is perhaps a little uncommon in the general community, but if anyone else is using something like this, it could be useful information to know. -- 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 #700561]: Convert script to Openmpi
New question #700561 on Yade: https://answers.launchpad.net/yade/+question/700561 Dear all, I am new on running Yade on multiple nodes using openmpi. Still checking how to convert the code below to run in mpi. Runnning the code below I get the messsage: Friction: 1 porosity: 1.0 None [95mMaster: single-core, fall back to O.run() [0m Probably I am not using O.run and mpirun correctly. If anyone with more experimence see what I am duing wrong, please let me know. Cheers, #!/usr/bin/python # -*- encoding=utf-8 -*- #* # Copyright (C) 2010 by Bruno Chareyre * # bruno.chareyre_at_grenoble-inp.fr * #* # This program is free software; it is licensed under the terms of the * # GNU General Public License v2 or later. See file LICENSE for details. * #*/ import os from yade import mpy as mp from yade import pack from yade import bodiesHandling from yade import export from yade import utils from yade import ymport import math ### DEFINING VARIABLES AND MATERIALS ### # The following 5 lines will be used later for batch execution nRead=readParamsFromTable( num_spheres=3000,# number of spheres compFricDegree = 1, # contact friction during the confining phase key='_triax_base_', # put you simulation's name here unknownOk=True ) from yade.params import table num_spheres=table.num_spheres# number of spheres key=table.key targetPorosity = 0.35 #the porosity we want for the packing compFricDegree = table.compFricDegree # initial contact friction during the confining phase (will be decreased during the REFD compaction process) finalFricDegree = 30 # contact friction during the deviatoric loading rate=0 # loading rate (strain rate) damp=0.8 # damping coefficient stabilityThreshold=0.01 # we test unbalancedForce against this value in different loops (see below) #2e4+70e4medio 1e4+70e4bom 1e4+60e4bom 3e4+90e4+w3,1,-1-the best young=20e5 # contact stiffness200e4 young2=20e5 youngcoat=20e5 bondstr=0.3e3#2e7 bondstr2=0.3e3 bondstrcoat=1e3 ## create materials for spheres and plates mat=O.materials.append(JCFpmMat(type=1,young=young,poisson=0.3,frictionAngle=radians(compFricDegree),density=2000,tensileStrength=bondstr,cohesion=bondstr,jointNormalStiffness=0,jointShearStiffness=0,jointCohesion=bondstr,jointFrictionAngle=radians(0),jointDilationAngle=0.0,label='spheres')) O.materials.append(JCFpmMat(type=1,young=20e7,poisson=0.3,frictionAngle=radians(0),density=2600,tensileStrength=0,cohesion=0,jointNormalStiffness=0,jointShearStiffness=0,jointCohesion=0,jointFrictionAngle=radians(0),jointDilationAngle=0.0,label='walls')) O.materials.append(JCFpmMat(type=1,young=youngcoat,poisson=0.3,frictionAngle=radians(1),density=1500,tensileStrength=bondstrcoat,cohesion=bondstrcoat,jointNormalStiffness=0,jointShearStiffness=0,jointCohesion=bondstrcoat,jointFrictionAngle=radians(0),jointDilationAngle=0.0,label='spherescoat')) ## create walls around the packing mn,mx=Vector3(0,0,0),Vector3(0.0101,0.0101,0.0101) mnbox,mxbox=Vector3(0,0,0),Vector3(0.0101,0.0115,0.0101) walls=aabbWalls([mnbox,mxbox],thickness=0,material='walls') wallIds=O.bodies.append(walls) O.bodies.append(ymport.textExt("matrix_vtest.txt", format='x_y_z_r', shift=Vector3(0,0,0), scale=1.0,material='spherescoat',color=(0,1,1))) Particle substitution by large aggregate## bodid=[] a=[] for b in O.bodies: if b and isinstance(b.shape,Sphere): # print (b.shape.radius) if b.shape.radius==0.0005: bodid.append(b.id) a.append(b.state.pos) i=0 for p in bodid: t=a[i] f1=O.bodies.append(ymport.textExt("agg5e4_5e5.txt", format='x_y_z_r', shift=t-Vector3(0,0,0), scale=1.0,material='spheres',color=(0,1,1))) O.bodies.erase(bodid[i]) i=i+1 bodidd=[] aa=[] for bb in O.bodies:# in sp: if bb and isinstance(bb.shape,Sphere): # print (bb.shape.radius) if bb.shape.radius==0.0003: bodidd.append(bb.id) aa.append(bb.state.pos) ii=0 for pp in bodidd: tt=aa[ii] f2=O.bodies.append(ymport.textExt("agg3e4_3e5.txt", format='x_y_z_r', shift=tt-Vector3(0,0,0), scale=1.0,material='spheres',color=(0,1,1))) O.bodies.erase(bodidd[ii]) ii=ii+1 bodiddd=[] aaa=[] for bbb in O.bodies:# in sp: if bbb and isinstance(bbb.shape,Sphere): # print (bbb.shape.radius) if bbb.shape.radius==0.0002: bodiddd.append(bbb.id)
Re: [Yade-users] [Question #700315]: Open MPI - spawn processes
Question #700315 on Yade changed: https://answers.launchpad.net/yade/+question/700315 Luis Barbosa posted a new comment: Hi all, just to inform that we solved this: Solution was to install OpenMpi 4.1.0 on my home directory on the cluster. Here are the steps I performed: Download https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.0.tar.gz open a console on the cluster in your home folder: cd ~ mkdir openMPI cd openMPI > copy or download openmpi-4.1.0.tar.gz tar ball into the openMPI folder, and unpack it gtar zxf openmpi-4.1.0.tar.gz cd openmpi-4.1.0 > create a output folder mkdir /home/pires/bin/openmpi > create a build folder, and compile openMPI mkdir build cd build ../configure --prefix=/home/pires/bin/openmpi --with-slurm --with-pmi make all make install -- at this point you have openMPI 4.1.0 with slurm support installed into your home. Next step is to make your own module. mkdir /home/../privatemodules cd /home/.../privatemodules A module file is just a bunch of linux environment variables. Hope it can help someone in this situation. Luis -- 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 #700531]: Contacts in function getStress()
Question #700531 on Yade changed: https://answers.launchpad.net/yade/+question/700531 Jérôme Duriez posted a new comment: If one goes back to the analytical derivations of this "Love-Weber" formula, one should see contacts with boundary bodies should probably not be included at all. Since boundary bodies do not belong to the material whose stress we want to compute. It is somewhat discussed in https://www.icevirtuallibrary.com/doi/10.1680/jgeot.15.P.113 (or https://hal.archives-ouvertes.fr/hal-01868739), around Eq. (6) which gives a stress expression that better accounts for boundary effects, in my opinion. (Not implemented in public YADE, at the moment) -- 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 #700531]: Contacts in function getStress()
Question #700531 on Yade changed: https://answers.launchpad.net/yade/+question/700531 Jan Stránský posted a new comment: > the brach vector is calculated by the position of the two objects currently the code is like that. Therefore, it is not suitable for wall-sphere contact, where the branch should (?) be perpendicular to the wall (not related to wall.state.pos, which is some "random" point in the wall plane) Cheers Jan -- You received this question notification because your team yade-users is an answer contact for Yade. ___ Mailing list: https://launchpad.net/~yade-users Post to : yade-users@lists.launchpad.net Unsubscribe : https://launchpad.net/~yade-users More help : https://help.launchpad.net/ListHelp
Re: [Yade-users] [Question #700369]: Circular setting
Question #700369 on Yade changed: https://answers.launchpad.net/yade/+question/700369 Jan Stránský posted a new comment: '\XC2' is "Latin Capital Letter A With Circumflex" [3]. It is not present in the code I provided, so most likely you somehow added it it to the script. Cheers Jan [3] https://www.codetable.net/hex/c2 -- 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