Question #706562 on Yade changed: https://answers.launchpad.net/yade/+question/706562
Description changed to: Hello, I am confuse by the Oedometric test provided in the example: https://yade-dem.org/doc/tutorial-examples.html?highlight=oedometric I don't understand where the max and min load come. I was able to add the test to my experiment, but I decided to remove it first because after the compression the sphere would be directly bounce off through the plate. Following is my current code: import random import math from yade import geom, pack, utils, plot, ymport import pandas as pd # Define material properties youngModulus = 1e7 poissonRatio = 0.25 density = 2000 # Create material material = O.materials.append(FrictMat(young=youngModulus, poisson=poissonRatio, density=density)) # Define cylinder with funnel parameters center = (0, 0, 0) diameter = 0.102 height = 0.18 # create cylindrical body with radius 0.102 m and height 0.064 m cylinder = geom.facetCylinder(center=center, radius=diameter/2, height=height, segmentsNumber=80, wallMask=6) # assign material to each body in the cylinder for body in cylinder: body.bodyMat = material # add cylinder to simulation O.bodies.append(cylinder) # Define cylinder with funnel parameters center1 = (0,0,height/2) dBunker = 0.4 dOutput = 0.102 hBunker = 0 hOutput = 0.15 hPipe = 0 # create funnel as a bunker with diameter 0.102 m, height 0.064 m funnel = geom.facetBunker(center=center1, dBunker=dBunker, dOutput=dOutput, hBunker=hBunker,hOutput=hOutput, hPipe=hPipe, segmentsNumber=80, wallMask=4) # assign material to each body in the funnel for body in funnel: body.bodyMat = material # add funnel to simulation O.bodies.append(funnel) # define sphere parameters and number of spheres rMean1 = (0.0125+0.019)/4 rRelFuzz1 = (0.019-0.0125)/4/rMean1 num1 = 28 rMean2 = (0.0095+0.0125)/4 rRelFuzz2 = (0.0125-0.0095)/4/rMean2 num2 = 86 rMean3 = (0.00475+0.0095)/4 rRelFuzz3 = (0.0095-0.00475)/4/rMean3 num3 = 2071 rMean4 = (0.00236+0.00475)/4 rRelFuzz4 = (0.00475-0.00236)/4/rMean4 num4 = 18997 #create empty sphere packing sp = pack.SpherePack() # generate randomly sphere sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), rMean = rMean1, rRelFuzz = rRelFuzz1, num = num1) sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), rMean = rMean2, rRelFuzz = rRelFuzz2, num = num2) sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), rMean = rMean3, rRelFuzz = rRelFuzz3, num = num3) sp.makeCloud((-dBunker/4,-dBunker/4,1.3*height),(dBunker/4,dBunker/4,2*height), rMean = rMean4, rRelFuzz = rRelFuzz4, num = num4) # add the sphere pack to the simulation sp.toSimulation(material = material) ### Finding method to fix this color doesn't seems to work### for body in O.bodies: if not isinstance(body.shape, Sphere): continue if body.shape.radius == rMean1: body.shape.color = (0,0,1) #blue if body.shape.radius == rMean2: body.shape.color = (1,0,0) #red if body.shape.radius == rMean3: body.shape.color = (0,1,0) #green if body.shape.radius == rMean4: body.shape.color = (1,1,0) #yellow if body.shape.radius == rRelFuzz1: body.shape.color = (0,0,1) #blue if body.shape.radius == rRelFuzz2: body.shape.color = (1,0,0) #red if body.shape.radius == rRelFuzz3: body.shape.color = (0,1,0) #green if body.shape.radius == rRelFuzz4: body.shape.color = (1,1,0) #yellow ### Finding method to fix this color doesn't seems to work### O.engines = [ ForceResetter(), InsertionSortCollider([Bo1_Sphere_Aabb(), Bo1_Facet_Aabb()]), InteractionLoop( # handle sphere+sphere and facet+sphere collisions [Ig2_Sphere_Sphere_ScGeom(), Ig2_Facet_Sphere_ScGeom()], [Ip2_FrictMat_FrictMat_FrictPhys()], [Law2_ScGeom_FrictPhys_CundallStrack()] ), NewtonIntegrator(gravity=(0, 0, -9.81), damping=0.4), # call the checkUnbalanced function (defined below) every 2 seconds PyRunner(command='checkUnbalanced()', realPeriod=2), # call the addPlotData function every 200 steps PyRunner(command='addPlotData()', iterPeriod=100) ] O.dt = .5 * PWaveTimeStep() # enable energy tracking; any simulation parts supporting it # can create and update arbitrary energy types, which can be # accessed as O.energy['energyName'] subsequently O.trackEnergy = True # if the unbalanced forces goes below .05, the packing # is considered stabilized, therefore we stop collected # data history and stop def checkUnbalanced(): if unbalancedForce() < 1e-2: O.pause() plot.saveDataTxt('bbb.txt.bz2') # plot.saveGnuplot('bbb') is also possible # collect history of data which will be plotted def addPlotData(): # each item is given a names, by which it can be the unsed in plot.plots # the **O.energy converts dictionary-like O.energy to plot.addData arguments plot.addData(i=O.iter, unbalanced=unbalancedForce(), **O.energy) # define how to plot data: 'i' (step number) on the x-axis, unbalanced force # on the left y-axis, all energies on the right y-axis # (O.energy.keys is function which will be called to get all defined energies) # None separates left and right y-axis plot.plots = {'i': ('unbalanced', None, O.energy.keys)} # show the plot on the screen, and update while the simulation runs plot.plot() O.saveTmp() -- 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