New question #706786 on Yade: https://answers.launchpad.net/yade/+question/706786
Hi, I am trying to save the position, properties, and color(haven't made yet not sure how to). Can I export it into one text file for future importing uses for example I will import the text when I implement gravity deposition? import random import math from yade import geom, pack, utils, plot, ymport, export import numpy as np # Materials Properties gravel = CohFrictMat(young = 1e7, poisson = 0.25, density = 2700, label = 'gravel') asphalt_binder = CohFrictMat(young = 1e7, poisson = 0.25, density = 1060, normalCohesion = 2e5, shearCohesion = 2e5, label = 'asphalt_binder') # add properties O.materials.append(gravel) O.materials.append(asphalt_binder) # 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) # 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) # add funnel to simulation O.bodies.append(funnel) def makeRandomBlocks(diameter, gridsize, minz, numblocks): bunkerLimit = diameter/2 # # Make grid blocks inside a bunker # grid = np.arange(-bunkerLimit, bunkerLimit, gridsize) inGrid = [] for yi in grid: for xi in grid: c = [[xi, yi], [xi+gridsize, yi], [xi+gridsize, yi+gridsize], [xi, yi+gridsize]] # # Check if the block corners are outside of the bunker or not # out = False for p in c: r = (p[0]**2 + p[1]**2)**0.5 if r > bunkerLimit: out = True # # If the block is inside the bunker, keep it # if not out: inGrid.append(c) layer = math.ceil(numblocks / len(inGrid)) blocks = [] for l in range(layer): for g in inGrid: zi = minz + l*gridsize p1 = g[0].copy() p1.append(zi) p2 = g[2].copy() p2.append(zi+gridsize) blocks.append([p1, p2]) random.shuffle(blocks) return blocks minZ = 2.35 dbunker = 0.4 gridSize = dbunker/8 numblocks = 51 blockList = makeRandomBlocks(dbunker, gridSize, minZ, numblocks) for i in range(numblocks): print("Making cloud block", i+1, "/", numblocks) corner = blockList.pop() sp = pack.SpherePack() # 15.75 mm 13 particles if (i < 13): n1 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.01575/2, num=1) # 11 mm 51 particles n2 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.011/2, num=1) # 7.125 mm 51x11 = 561 particles n3 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.007125/2, num=11) # 3.555 mm 51x100 = 5,100 particles n4 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.003555/2, num=100) # 1.77 mm 51x360 = 18,360 particles n5 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.00177/2, num=360) # 0.6 mm 51x19000 = 969,000 particles n6 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.0006/2, num=19000) # 0.3 mm 51x78510 = 4,004,010 particles n7 = sp.makeCloud(minCorner=corner[0], maxCorner=corner[1], rMean=0.0003/2, num=78510) sp.toSimulation() # give properties to sphere for i in range(n1,n6): O.bodies[i].mat = gravel for i in range(n6, n7): O.bodies[i].mat = asphalt_binder # Save body IDs and materials to a text file with open("body_properties.txt", "w") as file: for b in O.bodies: file.write(f"{b.id} {b.mat}\n") export.text("testCloud.txt") -- 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