yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #23135
[Question #690836]: Phi (volume fraction) returned from getDepthProfiles were far too low
New question #690836 on Yade:
https://answers.launchpad.net/yade/+question/690836
Hey all,
At this point, I am perplexed to see volume fraction (phi) from getDepthProfile returned from each cell (10 cells total) so incredibly low (roughly 2%) when the simulation of the cylindrical model shows extensive compaction of the spheres and should be much higher. Here is a few snippets of code to show where the work process has gone. I believe that this has something to do with the direction or perhaps the void volume fraction? Maybe the ram motion (for compaction) triggers this anomaly?
Start of code:
from yade import ymport, plot, utils
import time
import numpy as np
#Constants
utils.readParamsFromTable(descriptionIn = 'ram',
frIn = 0.5, enIn=0.01, etIn=0.01, tcIn=0.0001, # Frictionangle (rad), strength-parameter
rhoIn = 2300.0, # Density
dumpVTKIn = 1000, # Periods of dumps
ram_vel = 1E-1, ram_mov = 0.1E-3 # Ram Velocity and Distance
)
#Sweep Parameters using Table
from yade.params.table import *
import shutil
try:
shutil.rmtree('step2')
except OSError:
pass
os.mkdir('step2')
#Create Folder
folderNameBase = 'step2/' + str(descriptionIn)
folderName = folderNameBase
os.mkdir(folderNameBase)
#Initialize
o = Omega()
o.dt = 0.05*1E-7
#Read in previous step
o.load('save1.xml')
#remember start time
starttime = o.time #start time
stoptime = starttime+ram_mov/ram_vel #stop time
iterstop=o.iter+int((ram_mov/ram_vel)/o.dt)
print('start,stop,steps=',starttime,stoptime,iterstop)
#Define Next Scene
#o.addScene()
#Build Geometry
ram=o.bodies.append(ymport.stl('coax_ram.STL'))
o.engines = [
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()],sortThenCollide=False,verletDist=-0.5,label='collider'),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()],
),
NewtonIntegrator(damping=0.5,gravity=Vector3(0,-90.81,0), label='newt'),
#Record output to VTK Files, Spheres,Interactions,Facets
VTKRecorder(iterPeriod=dumpVTKIn,fileName=folderName+'/spheres-',
recorders=['spheres','velocity','colors','intr','ids','mask','materialId','stress'], label='VTK_sphere'),
VTKRecorder(iterPeriod=dumpVTKIn,fileName=folderName+'/facetB-',
recorders=['facets','colors'],label='VTK_OD'),
#FIXME Snapshot Taker
# SnapshotEngine(iterPeriod=dumpVTKIn,fileBase=folderName+'/spheres-',viewNo=0,label='snapshooter'),
#Execute Python Commands
PyRunner(iterPeriod=10000,initRun=True,command='stop_condition()'),
PyRunner(iterPeriod=iterstop,command='o.save(\'save2.xml\')'),
PyRunner(iterPeriod=10000,initRun=True,command='addPlotPhi()')
#Enable Track Energy - Can be used to determine if sim is done
o.trackEnergy=True
#Run Yade Simulation
#o.stopAtIter=2150001 #Maximum Iterations
o.stopAtIter=iterstop+1
#o.stopAtTime=stoptime+1E-8
o.run()
def stop_condition():
o.dt=0.5*utils.PWaveTimeStep() #auto timesetup
phiavg=calcPhi()
print('iter,time,dt,iter/sec,phi=',o.iter,o.iter*o.dt,o.dt,o.speed,phiavg) #print to screen iteration number
def calcPhi():
CN=utils.getDepthProfiles(6.28E-8,10,2.0E-4,0.00,False,1E-6,2)
return np.mean(CN[0])
def addPlotData():
plot.addData(i=o.iter,unbalanced=unbalancedForce(),**o.energy)
--------------------------------------------------------------------------------------------------------------------------------
######Now this is the part of the code that I think may be why the phiPart returned is so low:
----------------------------------------------------------------------------------------------------------------------------------
def addPlotPhi():
#getDepthProfiles(double volume, int nCell, double dz, double zRef, bool activateCond, double radiusPy, int direction)
CN=utils.getDepthProfiles(6.28E-8,10,2.0E-4,0.00,False,1E-6,2)
phiavg=np.mean(CN[0])
zarray=np.linspace(0,2e-3,10,endpoint=True)
fname='ramvolfrac_'+str(O.iter)+'.csv'
phidata = np.column_stack((zarray, CN[0]))
np.savetxt(fname, phidata, delimiter=',')
------------------------------------------------------------------------------------------------------------------------------------
As for the parameters, they are listed in meters for inner and outer cylinder (outer_cylinder_radius=0.007m, inner_cylinder_radius=0.003m) with a height of 0.0015 m. I would like to have 10 cells (as seen in the addPlotPhi) and hopefully a realistic approximation of solid volume fraction. Thank you for any help!
-Kevin
--
You received this question notification because your team yade-users is
an answer contact for Yade.