Re: [Yade-users] [Question #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Answered => Solved ehsan benabbas 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Open => Answered Jan Stránský proposed the following answer: something like: ### with open(fileName,"w") as f: f.write("# cpx cpy cpz fnx fny fnz ...\n") for d in data: # or directly for i in O.interactions cp = d["cp"] fn = d["fn"] ... f.write("{} {} {} {} {} {} ... "\n".format(cp[0],cp[1],cp[2],fn[0],fn[1],fn[2],...) ### 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Answered => Open ehsan benabbas is still having a problem: Thank you so much Jan. Tha solved my problem. Is there any way to print those in a txt file like in a x_y_z_r format? something like that? -- 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Open => Answered Jan Stránský proposed the following answer: > but it's just a line yes, it is a data saved in JSON format. Completely satisfying the requirement "save them in a text file" > this line is so crowded and messy with overlap letters You can use json.dump(data,f,indent=3) for pretty print (the same JSON string, but with newlines). > nothing can be read from this file Anything can be read from this file, e.g. by ### import json with open("interactions.json") as f: data = json.load(f) # now data is the same as what was saved ### 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Answered => Open ehsan benabbas is still having a problem: Thank you Jan I added as a last line of the loop (right after "d = dict(cp=cp,normal=normal,branch=branch,fn=fn,fs=fs)") The txt file is not empty anymore but it's just a line and this line is so crowded and messy with overlap letters nothing can be read from this file Bests, Ehsan -- 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Open => Answered Jan Stránský proposed the following answer: sorry, since you save "data" variable, you should feed it with the data (which I missed in the answer). Just add data.append(d) at the end of for i in "O.interactions" loop 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Needs information => Open ehsan benabbas gave more information on the question: Hi Jan, Thanks for your helps This is the code: from yade import pack ### DEFINING VARIABLES AND MATERIALS ### # The following 5 lines will be used later for batch execution nRead=readParamsFromTable( num_spheres=1000,# number of spheres compFricDegree = 30, # 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.43 #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.02 # loading rate (strain rate) damp=0.2 # damping coefficient stabilityThreshold=0.01 # we test unbalancedForce against this value in different loops (see below) young=5e6 # contact stiffness mn,mx=Vector3(0,0,0),Vector3(1,1,1) # corners of the initial packing ## create materials for spheres and plates O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres')) O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,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 sp=pack.SpherePack() clumps=False #turn this true for the same example with clumps if clumps: ## approximate mean rad of the futur dense packing for latter use volume = (mx[0]-mn[0])*(mx[1]-mn[1])*(mx[2]-mn[2]) mean_rad = pow(0.09*volume/num_spheres,0.) ## define a unique clump type (we could have many, see clumpCloud documentation) c1=pack.SpherePack([((-0.2*mean_rad,0,0),0.5*mean_rad),((0.2*mean_rad,0,0),0.5*mean_rad)]) ## generate positions and input them in the simulation sp.makeClumpCloud(mn,mx,[c1],periodic=False) sp.toSimulation(material='spheres') O.bodies.updateClumpProperties()#get more accurate clump masses/volumes/inertia else: sp.makeCloud(mn,mx,-1,0.,num_spheres,False, 0.95,seed=1) #"seed" make the "random" generation always the same O.bodies.append([sphere(center,rad,material='spheres') for center,rad in sp]) #or alternatively (higher level function doing exactly the same): #sp.toSimulation(material='spheres') ### DEFINING ENGINES ### triax=TriaxialStressController( ## TriaxialStressController will be used to control stress and strain. It controls particles size and plates positions. ## this control of boundary conditions was used for instance in http://dx.doi.org/10.1016/j.ijengsci.2008.07.002 maxMultiplier=1.+2e4/young, # spheres growing factor (fast growth) finalMaxMultiplier=1.+2e3/young, # spheres growing factor (slow growth) thickness = 0, ## switch stress/strain control using a bitmask. What is a bitmask, huh?! ## Say x=1 if stess is controlled on x, else x=0. Same for for y and z, which are 1 or 0. ## Then an integer uniquely defining the combination of all these tests is: mask = x*1 + y*2 + z*4 ## to put it differently, the mask is the integer whose binary representation is xyz, i.e. ## "100" (1) means "x", "110" (3) means "x and y", "111" (7) means "x and y and z", etc. stressMask = 7, internalCompaction=True, # If true the confining pressure is generated by growing particles ) newton=NewtonIntegrator(damping=damp) 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()] ), ## We will use the global stiffness of each body to determine an optimal timestep (see https://yade-dem.org/w/images/1/1b/Chareyre_licensed.pdf) GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8), triax, TriaxialStateRecorder(iterPeriod=100,file='WallStresses'+table.key), newton ] #Display spheres with 2 colors for seeing rotations better Gl1_Sphere.stripes=0 if nRead==0: yade.qt.Controller(), yade.qt.View() ## UNCOMMENT THE FOLLOWING SECTIONS ONE BY ONE ## DEPENDING ON YOUR EDITOR, IT COULD BE DONE ## BY SELECTING THE CODE BLOCKS BETWEEN THE SUBTITLES ## AND PRESSING CTRL+SHIFT+D ### ###
Re: [Yade-users] [Question #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Open => Needs information Jan Stránský requested more information: > and made no changes > Friction: 28.5 porosity: 1.0 the printing is commented in the original script, so you must have done some changes. Please provide the actual code you are using 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Answered => Open ehsan benabbas is still having a problem: Jan thank you for your answer. When I add these commands at the end of [1], the txt file is empty and just contains "[]" . The output is as follows: ehsan@ehsan:~/Desktop$ /home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74 netmicro.py Welcome to Yade 2019-08-08.git-775ae74 Using python version: 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] TCP python prompt on localhost:9000, auth cookie `ucsekd' XMLRPC info provider on http://localhost:21000 Running script netmicro.py The constructor with a shareWidget is deprecated, use the regular contructor instead. Friction: 28.5 porosity: 1.0 Friction: 27.075 porosity: 0.908936796623662 Friction: 25.7212498 porosity: 0.8342924618140075 Friction: 24.43518749998 porosity: 0.6986014608404307 . . . Friction: 10.216848788643448 porosity: 0.4341421461248899 Friction: 9.706006349211275 porosity: 0.4316281950137172 ###Compacted state saved ### /home/ehsan/yade/install/lib/x86_64-linux-gnu/yade-2019-08-08.git-775ae74/py/yade/plot.py:444: MatplotlibDeprecationWarning: The 'verts' kwarg was deprecated in Matplotlib 3.0 and will be removed in 3.2. Use 'marker' instead. scatter=pylab.scatter(scatterPt[0] if not math.isnan(scatterPt[0]) else 0,scatterPt[1] if not math.isnan(scatterPt[1]) else 0,s=scatterSize,color=line.get_color(),**scatterMarkerKw) [[ ^L clears screen, ^U kills line. F12 controller, F11 3D view (press "h" in 3D view for help), F10 both, F9 generator, F8 plot. ]] In [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
Re: [Yade-users] [Question #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Status: Open => Answered Jan Stránský proposed the following answer: 1) plot module is not suitable for this kind of savings (also the usage in the script is wrong) "for i in O.interactions" was there to show how to "get" the data (as asked in another question), not meant that it works without any modification. To save data of all interactions, I propose creating a list of data and than save it, something like (not tested): ### data = [] for i in O.interactions: fn = i.phys.normalForce fs = i.phys.shearForce cp = i.geom.contactPoint normal = i.geom.normal b1,b2 = [O.bodies[id] for id in (i.id1,i.id2)] p1,p2 = [b.state.pos for b in (b1,b2)] branch = p2 - p1 cp,normal,branch,fn,fs = [tuple(v) for v in (cp,normal,branch,fn,fs)] # Vector3 -> tuple d = dict(cp=cp,normal=normal,branch=branch,fn=fn,fs=fs) # new data contains the information, you can save it e.g. as JSON import json with open("interactions.json","w") as f: json.dump(data,f) ### 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 #688060]: Extracting micro variables from Triaxial test
Question #688060 on Yade changed: https://answers.launchpad.net/yade/+question/688060 Description changed to: Hi everyone, I am using Ubuntu 18.04, and Yade 2019-08-08.git-775ae74 I use the Triaxial code by Bruno Chareyre [1] [1] https://gitlab.com/yade-dev/trunk/blob/master/examples/triax-tutorial/script-session1.py My goal is to get micro variables from Triaxial test and save them in a text file for the whole specimen (for all contacts). To do so, I just added the following codes at the end of [1] and made no changes: # the fabric tensor utils.fabricTensor() # inter-particle forces for i in O.interactions: fn = i.phys.normalForce fs = i.phys.shearForce # branch vectors, and contact normals for i in O.interactions: normal = i.geom.normal b1,b2 = [O.bodies[id] for id in (i.id1,i.id2)] p1,p2 = [b.state.pos for b in (b1,b2)] branch = p2 - p1 # Save Data from pprint import pprint plot.reset() plot.addData(fn,fs,normal,brach) pprint(plot.data) plot.saveDataTxt('/tmp/MicrodataFile.txt.tar.gz',vars=('fn','fs','normal','branch')) ### And the output I get is as follows: ehsan@ehsan:~/Desktop$ /home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74 netmicro.py Welcome to Yade 2019-08-08.git-775ae74 Using python version: 3.6.9 (default, Nov 7 2019, 10:44:02) [GCC 8.3.0] TCP python prompt on localhost:9000, auth cookie `sdsuay' XMLRPC info provider on http://localhost:21000 Running script netmicro.py The constructor with a shareWidget is deprecated, use the regular contructor instead. Friction: 28.5 porosity: 1.0 Friction: 27.075 porosity: 0.908936796623662 Friction: 25.7212498 porosity: 0.8342924618140075 Friction: 24.43518749998 porosity: 0.6986014608404307 . . . Friction: 10.216848788643448 porosity: 0.4341421461248899 Friction: 9.706006349211275 porosity: 0.4316281950137172 ###Compacted state saved ### /home/ehsan/yade/install/lib/x86_64-linux-gnu/yade-2019-08-08.git-775ae74/py/yade/plot.py:444: MatplotlibDeprecationWarning: The 'verts' kwarg was deprecated in Matplotlib 3.0 and will be removed in 3.2. Use 'marker' instead. scatter=pylab.scatter(scatterPt[0] if not math.isnan(scatterPt[0]) else 0,scatterPt[1] if not math.isnan(scatterPt[1]) else 0,s=scatterSize,color=line.get_color(),**scatterMarkerKw) Traceback (most recent call last): File "/home/ehsan/yade/install/bin/yade-2019-08-08.git-775ae74", line 336, in runScript execfile(script,globals()) File "/usr/lib/python3/dist-packages/past/builtins/misc.py", line 82, in execfile exec_(code, myglobals, mylocals) File "netmicro.py", line 248, in plot.addData(fn,fs,normal,brach) NameError: name 'brach' is not defined [[ ^L clears screen, ^U kills line. F12 controller, F11 3D view (press "h" in 3D view for help), F10 both, F9 generator, F8 plot. ]] In [1]: Thank you for your help, Ehsan -- 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